PageSourceSearch

https://captaineth.replit.app/src/App.tsx?v=vOEqndtSqSpCSAWxJpDQZ

js captaineth.replit.app collected 2026-10-03 03:48:48 UTC 14,227 bytes, 164 lines download raw bytes

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.