File size: 2,173 Bytes
6c2bcb4
 
 
 
 
 
 
 
 
 
 
 
2f65818
6c2bcb4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2f65818
 
 
 
 
 
 
 
 
 
 
6c2bcb4
2f65818
 
 
 
6c2bcb4
 
2f65818
 
6c2bcb4
 
 
 
 
 
2f65818
 
 
 
6c2bcb4
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
import { renderToString } from "react-dom/server";

export const wrappers: Record<"js" | "html" | "css" | "miniHtml", (content?: string) => string> = {
	html(content) {
		return `<!DOCTYPE html>
<!-- generated with https://failfa.st -->
${renderToString(
	<html lang="en">
		<head>
			<meta charSet="utf-8" />
			<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
			<title>{content}</title>
			<script defer src="/script.js" type="module" />
			<link rel="stylesheet" href="/style.css" />
		</head>
		<body>
			<canvas id="canvas" />
		</body>
	</html>
)}`;
	},
	miniHtml() {
		return `
<!-- generated with https://failfa.st -->
${renderToString(
	<>
		<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />

		<canvas id="canvas" />
	</>
)}`;
	},
	css() {
		return `/**
 * generated with https://failfa.st
 */

* {
	margin: 0;
	padding: 0;
	box-sizing: border-box;
}
html, body {
	height: 100%;
	width: 100%;
	overflow: hidden;
	background: #a9a9a9;
}
.failfast {
	position: fixed;
	display: "flex";
	align-items: center;
	align-content: center;
	z-index: 1;
	top: 0;
	left: 0;
	margin: 8px;
	padding: 6px 16px;
	background: black;
	color: white;
	text-decoration: none;
	border-radius: 4px;
	font-family: sans-serif;
}
.failfast svg {
	height: 1em;
	width: 1em;
	font-size: 24px;
	margin: 0 0 -4px 4px;
}
`;
	},
	js(content) {
		return `
/**
 * generated with https://failfa.st
 */


/**
 * Global imports
 */
import Mousetrap from "https://cdn.skypack.dev/mousetrap@1.6.5";
import confetti from "https://cdn.skypack.dev/canvas-confetti@1.4.0";

/**
 * Helper to handle the resize of the window > canvas automatically
 */
function __2DGameGPT__ResizeHelper(){
	const _canvas = document.querySelector("canvas")
	_canvas.width = window.innerWidth;
	_canvas.height = window.innerHeight;

	function handleResize() {
		requestAnimationFrame(() => {
			_canvas.width = window.innerWidth;
			_canvas.height = window.innerHeight;
		});
	}
	handleResize();
	window.addEventListener("resize", handleResize, { passive: true });
}
__2DGameGPT__ResizeHelper()

/**
 * Generated 2D game
 */
${content}
`;
	},
};