1import { createHotContext as __vite__createHotContext } from "/@vite/client";import.meta.hot = __vite__createHotContext("/src/App.tsx?v=3amaRncjyhLDgstuv7C0o");import __vite__cjsImport0_react_jsxDevRuntime from "/@fs/home/runner/workspace/node_modules/.vite/deps/react_jsx-dev-runtime.js?v=50bf458b"; const jsxDEV = __vite__cjsImport0_react_jsxDevRuntime["jsxDEV"]; 2import RefreshRuntime from "/@react-refresh"; 3const inWebWorker = typeof WorkerGlobalScope !== "undefined" && self instanceof WorkerGlobalScope; 4let prevRefreshReg; 5let prevRefreshSig; 6if (import.meta.hot && !inWebWorker) { 7 if (!window.__vite_plugin_react_preamble_installed__) { 8 throw new Error("@vitejs/plugin-react can't detect preamble. Something is wrong. See https://github.com/vitejs/vite-plugin-react/pull/11#discussion_r430879201"); 9 } 10 prevRefreshReg = window.$RefreshReg$; 11 prevRefreshSig = window.$RefreshSig$; 12 window.$RefreshReg$ = (type, id) => { 13 RefreshRuntime.register(type, "/home/runner/workspace/client/src/App.tsx " + id); 14 }; 15 window.$RefreshSig$ = RefreshRuntime.createSignatureFunctionForTransform; 16} 17var _s = $RefreshSig$(); 18import { Canvas } from "/@fs/home/runner/workspace/node_modules/.vite/deps/@react-three_fiber.js?v=50bf458b"; 19import __vite__cjsImport4_react from "/@fs/home/runner/workspace/node_modules/.vite/deps/react.js?v=50bf458b"; const Suspense = __vite__cjsImport4_react["Suspense"]; const useEffect = __vite__cjsImport4_react["useEffect"]; const useState = __vite__cjsImport4_react["useState"]; 20import { KeyboardControls } from "/@fs/home/runner/workspace/node_modules/.vite/deps/@react-three_drei.js?v=50bf458b"; 21import { useAudio } from "/src/lib/stores/useAudio.tsx"; 22import "/@fs/home/runner/workspace/node_modules/@fontsource/inter/index.css"; 23import { Character } from "/src/components/game/Character.tsx"; 24import { Environment } from "/src/components/game/Environment.tsx"; 25import { GameUI } from "/src/components/game/GameUI.tsx"; 26import { GameLogic } from "/src/components/game/GameLogic.tsx"; 27import { useRunner } from "/src/lib/stores/useRunner.tsx"; 28import { Controls } from "/src/lib/constants.ts"; 29const keyMap = [ 30 { name: Controls.jump, keys: ["Space", "KeyW", "ArrowUp"] }, 31 { name: Controls.left, keys: ["ArrowLeft", "KeyA"] }, 32 { name: Controls.right, keys: ["ArrowRight", "KeyD"] } 33]; 34function App() { 35 _s(); 36 const { gamePhase, initGame } = useRunner(); 37 const [showCanvas, setShowCanvas] = useState(false); 38 const { setBackgroundMusic, setHitSound, setSuccessSound } = useAudio(); 39 useEffect(() => { 40 const backgroundMusic = new Audio("/sounds/background.mp3"); 41 backgroundMusic.loop = true; 42 backgroundMusic.volume = 0.5; 43 setBackgroundMusic(backgroundMusic); 44 const hitSound = new Audio("/sounds/hit.mp3"); 45 setHitSound(hitSound); 46 const successSound = new Audio("/sounds/success.mp3"); 47 setSuccessSound(successSound); 48 initGame(); 49 setShowCanvas(true); 50 }, [setBackgroundMusic, setHitSound, setSuccessSound, initGame]); 51 return /* @__PURE__ */ jsxDEV("div", { className: "w-full h-screen overflow-hidden touch-none", children: showCanvas && /* @__P
51URE__ */ jsxDEV(KeyboardControls, { map: keyMap, children: [ 52 /* @__PURE__ */ jsxDEV( 53 Canvas, 54 { 55 shadows: true, 56 camera: { 57 position: [0, 5, 15], 58 fov: 60, 59 near: 0.1, 60 far: 1e3 61 }, 62 gl: { 63 antialias: true, 64 alpha: true 65 }, 66 children: [ 67 /* @__PURE__ */ jsxDEV("color", { attach: "background", args: ["#000000"] }, void 0, false, { 68 fileName: "/home/runner/workspace/client/src/App.tsx", 69 lineNumber: 62, 70 columnNumber: 13 71 }, this), 72 /* @__PURE__ */ jsxDEV("ambientLight", { intensity: 0.5 }, void 0, false, { 73 fileName: "/home/runner/workspace/client/src/App.tsx", 74 lineNumber: 65, 75 columnNumber: 13 76 }, this), 77 /* @__PURE__ */ jsxDEV( 78 "directionalLight", 79 { 80 position: [10, 10, 5], 81 intensity: 1, 82 castShadow: true, 83 "shadow-mapSize-width": 2048, 84 "shadow-mapSize-height": 2048 85 }, 86 void 0, 87 false, 88 { 89 fileName: "/home/runner/workspace/client/src/App.tsx", 90 lineNumber: 66, 91 columnNumber: 13 92 }, 93 this 94 ),
95 /* @__PURE__ */ jsxDEV(Suspense, { fallback: null, children: [ 96 /* @__PURE__ */ jsxDEV(Environment, {}, void 0, false, { 97 fileName: "/home/runner/workspace/client/src/App.tsx", 98 lineNumber: 75, 99 columnNumber: 15 100 }, this), 101 gamePhase !== "game_over" && /* @__PURE__ */ jsxDEV(Character, {}, void 0, false, { 102 fileName: "/home/runner/workspace/client/src/App.tsx", 103 lineNumber: 76, 104 columnNumber: 45 105 }, this), 106 /* @__PURE__ */ jsxDEV(GameLogic, {}, void 0, false, { 107 fileName: "/home/runner/workspace/client/src/App.tsx", 108 lineNumber: 77, 109 columnNumber: 15 110 }, this) 111 ] }, void 0, true, { 112 fileName: "/home/runner/workspace/client/src/App.tsx", 113 lineNumber: 74, 114 columnNumber: 13 115 }, this) 116 ] 117 }, 118 void 0, 119 true, 120 { 121 fileName: "/home/runner/workspace/client/src/App.tsx", 122 lineNumber: 49, 123 columnNumber: 11 124 }, 125 this 126 ), 127 /* @__PURE__ */ jsxDEV(GameUI, {}, void 0, false, { 128 fileName: "/home/runner/workspace/client/src/App.tsx", 129 lineNumber: 81, 130 columnNumber: 11 131 }, this) 132 ] }, void 0, true, { 133 fileName: "/home/runner/workspace/client/src/App.tsx", 134 lineNumber: 48, 135 columnNumber: 7 136 }, this) }, void 0, false, { 137 fileName: "/home/runner/workspace/client/src/App.tsx", 138 lineNumber: 46, 139 columnNumber: 5 140 }, this); 141} 142_s(App, "uQlkwhkUZXp6MSCcBEWBKMcvlLc=", false, function() { 143 return [useRunner, useAudio]; 144}); 145_c = App; 146export default App; 147var _c; 148$RefreshReg$(_c, "App"); 149if (import.meta.hot && !inWebWorker) { 150 window.$RefreshReg$ = prevRefreshReg; 151 window.$RefreshSig$ = prevRefreshSig; 152} 153if (import.meta.hot && !inWebWorker) { 154 RefreshRuntime.__hmr_import(import.meta.url).then((currentExports) => { 155 RefreshRuntime.registerExportsForReactRefresh("/home/runner/workspace/client/src/App.tsx", currentExports); 156 import.meta.hot.accept((nextExports) => { 157 if (!nextExports) return; 158 const invalidateMessage = RefreshRuntime.validateRefreshBoundaryAndEnqueueUpdate("/home/runner/workspace/client/src/App.tsx", currentExports, nextExports); 159 if (invalidateMessage) import.meta.hot.invalidate(invalidateMessage); 160 }); 161 }); 162} 163 164//# sourceMappingURL=data:application/json;base64,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0FBQUE7QUFBQTtBQUFBLG1CQUFZO0FBQUEsWUFDWGxCLGNBQWMsZUFBZSx1QkFBQyxlQUFEO0FBQUE7QUFBQTtBQUFBO0FBQUEsbUJBQVU7QUFBQSxZQUN4Qyx1QkFBQyxlQUFEO0FBQUE7QUFBQTtBQUFBO0FBQUEsbUJBQVU7QUFBQSxlQUhaO0FBQUE7QUFBQTtBQUFBO0FBQUEsaUJBSUE7QUFBQTtBQUFBO0FBQUEsTUE3QkY7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBOEJBO0FBQUEsSUFFQSx1QkFBQyxZQUFEO0FBQUE7QUFBQTtBQUFBO0FBQUEsV0FBTztBQUFBLE9BakNUO0FBQUE7QUFBQTtBQUFBO0FBQUEsU0FrQ0EsS0FwQ0o7QUFBQTtBQUFBO0FBQUE7QUFBQSxTQXNDQTtBQUVKO0FBQUNELEdBakVRRCxLQUFHO0FBQUEsVUFDc0JSLFdBRTZCTCxRQUFRO0FBQUE7QUFBQWtDLEtBSDlEckI7QUFtRVQsZUFBZUE7QUFBSSxJQUFBcUI7QUFBQUMsYUFBQUQsSUFBQSIsIm5hbWVzIjpbIlN1c3BlbnNlIiwidXNlRWZmZWN0IiwidXNlU3RhdGUiLCJLZXlib2FyZENvbnRyb2xzIiwidXNlQXVkaW8iLCJDaGFyYWN0ZXIiLCJFbnZpcm9ubWVudCIsIkdhbWVVSSIsIkdhbWVMb2dpYyIsInVzZVJ1bm5lciIsIkNvbnRyb2xzIiwia2V5TWFwIiwibmFtZSIsImp1bXAiLCJrZXlzIiwibGVmdCIsInJpZ2h0IiwiQXBwIiwiX3MiLCJnYW1lUGhhc2UiLCJpbml0R2FtZSIsInNob3dDYW52YXMiLCJzZXRTaG93Q2FudmFzIiwic2V0QmFja2dyb3VuZE11c2ljIiwic2V0SGl0U291bmQiLCJzZXRTdWNjZXNzU291bmQiLCJiYWNrZ3JvdW5kTXVzaWMiLCJBdWRpbyIsImxvb3AiLCJ2b2x1bWUiLCJoaXRTb3VuZCIsInN1Y2Nlc3NTb3VuZCIsInBvc2l0aW9uIiwiZm92IiwibmVhciIsImZhciIsImFudGlhbGlhcyIsImFscGhhIiwiX2MiLCIkUmVmcmVzaFJlZyQiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZXMiOlsiQXBwLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDYW52YXMgfSBmcm9tIFwiQHJlYWN0LXRocmVlL2ZpYmVyXCI7XG5pbXBvcnQgeyBTdXNwZW5zZSwgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgS2V5Ym9hcmRDb250cm9scyB9IGZyb20gXCJAcmVhY3QtdGhyZWUvZHJlaVwiO1xuaW1wb3J0IHsgdXNlQXVkaW8gfSBmcm9tIFwiLi9saWIvc3RvcmVzL3VzZUF1ZGlvXCI7XG5pbXBvcnQgXCJAZm9udHNvdXJjZS9pbnRlclwiO1xuaW1wb3J0IHsgQ2hhcmFjdGVyIH0gZnJvbSBcIi4vY29tcG9uZW50cy9nYW1lL0NoYXJhY3RlclwiO1xuaW1wb3J0IHsgRW52aXJvbm1lbnQgfSBmcm9tIFwiLi9jb21wb25lbnRzL2dhbWUvRW52aXJvbm1lbnRcIjtcbmltcG9ydCB7IEdhbWVVSSB9IGZyb20gXCIuL2NvbXBvbmVudHMvZ2FtZS9HYW1lVUlcIjtcbmltcG9ydCB7IEdhbWVMb2dpYyB9IGZyb20gXCIuL2NvbXBvbmVudHMvZ2FtZS9HYW1lTG9naWNcIjtcbmltcG9ydCB7IHVzZVJ1bm5lciB9IGZyb20gXCIuL2xpYi9zdG9yZXMvdXNlUnVubmVyXCI7XG5pbXBvcnQgeyBDb250cm9scyB9IGZyb20gXCIuL2xpYi9jb25zdGFudHNcIjtcblxuLy8gRGVmaW5lIGNvbnRyb2wga2V5cyBmb3IgdGhlIGdhbWVcbmNvbnN0IGtleU1hcCA9IFtcbiAgeyBuYW1lOiBDb250cm9scy5qdW1wLCBrZXlzOiBbXCJTcGFjZVwiLCBcIktleVdcIiwgXCJBcnJvd1VwXCJdIH0sXG4gIHsgbmFtZTogQ29udHJvbHMubGVmdCwga2V5czogW1wiQXJyb3dMZWZ0XCIsIFwiS2V5QVwiXSB9LFxuICB7IG5hbWU6IENvbnRyb2xzLnJpZ2h0LCBrZXlzOiBbXCJBcnJvd1JpZ2h0XCIsIFwiS2V5RFwiXSB9XG5dO1xuXG4vLyBNYWluIEFwcCBjb21wb25lbnRcbmZ1bmN0aW9uIEFwcCgpIHtcbiAgY29uc3QgeyBnYW1lUGhhc2UsIGluaXRHYW1lIH0gPSB1c2VSdW5uZXIoKTtcbiAgY29uc3QgW3Nob3dDYW52YXMsIHNldFNob3dDYW52YXNdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCB7IHNldEJhY2tncm91bmRNdXNpYywgc2V0SGl0U291bmQsIHNldFN1Y2Nlc3NTb3VuZCB9ID0gdXNlQXVkaW8oKTtcblxuICAvLyBJbml0aWFsaXplIGF1ZGlvIGVsZW1lbnRzXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgYmFja2dyb3VuZE11c2ljID0gbmV3IEF1ZGlvKFwiL3NvdW5kcy9iYWNrZ3JvdW5kLm1wM1wiKTtcbiAgICBiYWNrZ3JvdW5kTXVzaWMubG9vcCA9IHRydWU7XG4gICAgYmFja2dyb3VuZE11c2ljLnZvbHVtZSA9IDAuNTtcbiAgICBzZXRCYWNrZ3JvdW5kTXVzaWMoYmFja2dyb3VuZE11c2ljKTtcblxuICAgIGNvbnN0IGhpdFNvdW5kID0gbmV3IEF1ZGlvKFwiL3NvdW5kcy9oaXQubXAzXCIpO1xuICAgIHNldEhpdFNvdW5kKGhpdFNvdW5kKTtcblxuICAgIGNvbnN0IHN1Y2Nlc3NTb3VuZCA9IG5ldyBBdWRpbyhcIi9zb3VuZHMvc3VjY2Vzcy5tcDNcIik7XG4gICAgc2V0U3VjY2Vzc1NvdW5kKHN1Y2Nlc3NTb3VuZCk7XG5cbiAgICBpbml0R2FtZSgpO1xuICAgIFxuICAgIC8vIFNob3cgdGhlIGNhbnZhcyBvbmNlIGV2ZXJ5dGhpbmcgaXMgbG9hZGVkXG4gICAgc2V0U2hvd0NhbnZhcyh0cnVlKTtcbiAgfSwgW3NldEJhY2tncm91bmRNdXNpYywgc2V0SGl0U291bmQsIHNldFN1Y2Nlc3NTb3VuZCwgaW5pdEdhbWVdKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwidy1mdWxsIGgtc2NyZWVuIG92ZXJmbG93LWhpZGRlbiB0b3VjaC1ub25lXCI+XG4gICAgICB7c2hvd0NhbnZhcyAmJiAoXG4gICAgICAgIDxLZXlib2FyZENvbnRyb2xzIG1hcD17a2V5TWFwfT5cbiAgICAgICAgICA8Q2FudmFzXG4gICAgICAgICAgICBzaGFkb3dzXG4gICAgICAgICAgICBjYW1lcmE9e3tcbiAgICAgICAgICAgICAgcG9zaXRpb246IFswLCA1LCAxNV0sXG4gICAgICAgICAgICAgIGZvdjogNjAsXG4gICAgICAgICAgICAgIG5lYXI6IDAuMSxcbiAgICAgICAgICAgICAgZmFyOiAxMDAwXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgZ2w9e3tcbiAgICAgICAgICAgICAgYW50aWFsaWFzOiB0cnVlLFxuICAgICAgICAgICAgICBhbHBoYTogdHJ1ZVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8Y29sb3IgYXR0YWNoPVwiYmFja2dyb3VuZFwiIGFyZ3M9e1tcIiMwMDAwMDBcIl19IC8+XG4gICAgICAgICAgICBcbiAgICAgICAgICAgI
164HsvKiBMaWdodGluZyAqL31cbiAgICAgICAgICAgIDxhbWJpZW50TGlnaHQgaW50ZW5zaXR5PXswLjV9IC8+XG4gICAgICAgICAgICA8ZGlyZWN0aW9uYWxMaWdodCBcbiAgICAgICAgICAgICAgcG9zaXRpb249e1sxMCwgMTAsIDVdfSBcbiAgICAgICAgICAgICAgaW50ZW5zaXR5PXsxfSBcbiAgICAgICAgICAgICAgY2FzdFNoYWRvdyBcbiAgICAgICAgICAgICAgc2hhZG93LW1hcFNpemUtd2lkdGg9ezIwNDh9IFxuICAgICAgICAgICAgICBzaGFkb3ctbWFwU2l6ZS1oZWlnaHQ9ezIwNDh9IFxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgPFN1c3BlbnNlIGZhbGxiYWNrPXtudWxsfT5cbiAgICAgICAgICAgICAgPEVudmlyb25tZW50IC8+XG4gICAgICAgICAgICAgIHtnYW1lUGhhc2UgIT09ICdnYW1lX292ZXInICYmIDxDaGFyYWN0ZXIgLz59XG4gICAgICAgICAgICAgIDxHYW1lTG9naWMgLz5cbiAgICAgICAgICAgIDwvU3VzcGVuc2U+XG4gICAgICAgICAgPC9DYW52YXM+XG4gICAgICAgICAgXG4gICAgICAgICAgPEdhbWVVSSAvPlxuICAgICAgICA8L0tleWJvYXJkQ29udHJvbHM+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBBcHA7XG4iXSwiZmlsZSI6Ii9ob21lL3J1bm5lci93b3Jrc3BhY2UvY2xpZW50L3NyYy9BcHAudHN4In0=
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.