@bloopjs/web 0.0.36 → 0.0.38

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/App.d.ts CHANGED
@@ -19,21 +19,19 @@ export declare class App {
19
19
  constructor(sim: Sim, game: Bloop<any>);
20
20
  get sim(): Sim;
21
21
  set sim(sim: Sim);
22
- beforeFrame: {
23
- subscribe: (callback: (args_0: number) => void) => () => void;
24
- notify: (args_0: number) => void;
25
- unsubscribeAll: () => void;
26
- };
27
- afterFrame: {
28
- subscribe: (callback: (args_0: number) => void) => () => void;
29
- notify: (args_0: number) => void;
30
- unsubscribeAll: () => void;
31
- };
22
+ beforeFrame: ReturnType<typeof createListener>;
23
+ afterFrame: ReturnType<typeof createListener>;
32
24
  /** Subscribe to the browser events and start the render loop */
33
25
  subscribe(): void;
34
26
  /** Clean up wasm resources and event listeners */
35
27
  cleanup(): void;
36
28
  acceptHmr(module: any, opts?: Partial<MountOpts>): Promise<void>;
37
29
  }
30
+ declare function createListener<T extends any[]>(): {
31
+ subscribe: (callback: (...args: T) => void) => UnsubscribeFn;
32
+ notify: (...args: T) => void;
33
+ unsubscribeAll: UnsubscribeFn;
34
+ };
38
35
  export type UnsubscribeFn = () => void;
36
+ export {};
39
37
  //# sourceMappingURL=App.d.ts.map
package/dist/App.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../src/App.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAE,KAAK,SAAS,EAAS,KAAK,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAI7E,MAAM,MAAM,YAAY,GAAG;IACzB,4BAA4B;IAC5B,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IACjB,yEAAyE;IACzE,GAAG,CAAC,EAAE,GAAG,CAAC;IACV,sDAAsD;IACtD,aAAa,CAAC,EAAE,GAAG,CAAC;IACpB,qFAAqF;IACrF,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,wFAAwF;IACxF,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF,oCAAoC;AACpC,wBAAsB,KAAK,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,CAY5D;AAED,qBAAa,GAAG;;IAEd,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;gBAML,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC;IAWtC,IAAI,GAAG,IAAI,GAAG,CAEb;IAED,IAAI,GAAG,CAAC,GAAG,EAAE,GAAG,EAEf;IAED,WAAW;kDAgJkC,IAAI,WAAU,IAAI;oCASlC,IAAI;;MAzJQ;IACzC,UAAU;kDA+ImC,IAAI,WAAU,IAAI;oCASlC,IAAI;;MAxJO;IAExC,gEAAgE;IAChE,SAAS,IAAI,IAAI;IA2GjB,kDAAkD;IAClD,OAAO,IAAI,IAAI;IAOT,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;CAoBvE;AA2BD,MAAM,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC"}
1
+ {"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../src/App.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAE,KAAK,SAAS,EAAS,KAAK,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAI7E,MAAM,MAAM,YAAY,GAAG;IACzB,4BAA4B;IAC5B,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IACjB,yEAAyE;IACzE,GAAG,CAAC,EAAE,GAAG,CAAC;IACV,sDAAsD;IACtD,aAAa,CAAC,EAAE,GAAG,CAAC;IACpB,qFAAqF;IACrF,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,wFAAwF;IACxF,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF,oCAAoC;AACpC,wBAAsB,KAAK,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,CAY5D;AAED,qBAAa,GAAG;;IAEd,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;gBAML,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC;IAWtC,IAAI,GAAG,IAAI,GAAG,CAEb;IAED,IAAI,GAAG,CAAC,GAAG,EAAE,GAAG,EAEf;IAED,WAAW,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAA8B;IAC5E,UAAU,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAA8B;IAE3E,gEAAgE;IAChE,SAAS,IAAI,IAAI;IA2GjB,kDAAkD;IAClD,OAAO,IAAI,IAAI;IAOT,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;CAoBvE;AAED,iBAAS,cAAc,CAAC,CAAC,SAAS,GAAG,EAAE,KAAK;IAC1C,SAAS,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,IAAI,KAAK,aAAa,CAAC;IAC7D,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;IAC7B,cAAc,EAAE,aAAa,CAAC;CAC/B,CAuBA;AAED,MAAM,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC"}
package/dist/mod.js.map CHANGED
@@ -4,9 +4,9 @@
4
4
  "sourcesContent": [
5
5
  "var __defProp = Object.defineProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, {\n get: all[name],\n enumerable: true,\n configurable: true,\n set: (newValue) => all[name] = () => newValue\n });\n};\n\n// src/util.ts\nvar exports_util = {};\n__export(exports_util, {\n unwrap: () => unwrap,\n toHexString: () => toHexString,\n logPerSecond: () => logPerSecond,\n logOnce: () => logOnce,\n logEvery: () => logEvery,\n assert: () => assert\n});\nfunction toHexString(dataView, length) {\n length ??= dataView.byteLength;\n let hexString = \"\";\n for (let i = 0;i < length; i++) {\n const byte = dataView.getUint8(i);\n hexString += `${byte.toString(16).padStart(2, \"0\")} `;\n }\n return hexString.trim();\n}\nfunction assert(condition, message) {\n if (condition == null || condition === false) {\n throw new Error(message ?? \"Assertion failed\");\n }\n}\nvar backpressureLogs = new Map;\nfunction logOnce(...args) {\n const key = args.map((a) => String(a)).join(\" \");\n if (!backpressureLogs.has(key)) {\n console.log(...args);\n backpressureLogs.set(key, 1);\n }\n}\nfunction logPerSecond(now, ...args) {\n logEvery(now, 1000, ...args);\n}\nfunction logEvery(now, interval = 10, ...args) {\n const key = args.map((a) => String(a)).join(\" \");\n const lastLogged = backpressureLogs.get(key) ?? -Infinity;\n if (now - lastLogged >= interval) {\n console.log(...args);\n backpressureLogs.set(key, now);\n }\n}\nfunction unwrap(value, message) {\n assert(value != null, message ?? `Unwrap failed: value is ${value}`);\n return value;\n}\n// ../engine/dist/engine.js\nvar exports_engine = {};\n__export(exports_engine, {\n mouseButtonToMouseButtonCode: () => mouseButtonToMouseButtonCode,\n mouseButtonCodeToMouseButton: () => mouseButtonCodeToMouseButton,\n keyToKeyCode: () => keyToKeyCode,\n keyCodeToKey: () => keyCodeToKey,\n TimeContext: () => TimeContext,\n TIME_CTX_OFFSET: () => TIME_CTX_OFFSET,\n SNAPSHOT_HEADER_USER_LEN_OFFSET: () => SNAPSHOT_HEADER_USER_LEN_OFFSET,\n SNAPSHOT_HEADER_LEN: () => SNAPSHOT_HEADER_LEN,\n SNAPSHOT_HEADER_ENGINE_LEN_OFFSET: () => SNAPSHOT_HEADER_ENGINE_LEN_OFFSET,\n MouseContext: () => MouseContext,\n MOUSE_OFFSET: () => MOUSE_OFFSET,\n MOUSE_BUTTONS_OFFSET: () => MOUSE_BUTTONS_OFFSET,\n KeyboardContext: () => KeyboardContext,\n KEYBOARD_OFFSET: () => KEYBOARD_OFFSET,\n InputContext: () => InputContext,\n INPUT_CTX_OFFSET: () => INPUT_CTX_OFFSET,\n Enums: () => exports_enums,\n EVENT_PAYLOAD_SIZE: () => EVENT_PAYLOAD_SIZE,\n EVENT_PAYLOAD_ALIGN: () => EVENT_PAYLOAD_ALIGN,\n EVENTS_OFFSET: () => EVENTS_OFFSET,\n DEFAULT_WASM_URL: () => DEFAULT_WASM_URL\n});\nvar __defProp2 = Object.defineProperty;\nvar __export2 = (target, all) => {\n for (var name in all)\n __defProp2(target, name, {\n get: all[name],\n enumerable: true,\n configurable: true,\n set: (newValue) => all[name] = () => newValue\n });\n};\nvar exports_enums = {};\n__export2(exports_enums, {\n MouseButton: () => MouseButton,\n Key: () => Key,\n EventType: () => EventType\n});\nvar EventType;\n((EventType2) => {\n EventType2[EventType2[\"None\"] = 0] = \"None\";\n EventType2[EventType2[\"KeyDown\"] = 1] = \"KeyDown\";\n EventType2[EventType2[\"KeyUp\"] = 2] = \"KeyUp\";\n EventType2[EventType2[\"MouseMove\"] = 3] = \"MouseMove\";\n EventType2[EventType2[\"MouseDown\"] = 4] = \"MouseDown\";\n EventType2[EventType2[\"MouseUp\"] = 5] = \"MouseUp\";\n EventType2[EventType2[\"MouseWheel\"] = 6] = \"MouseWheel\";\n EventType2[EventType2[\"FrameStart\"] = 7] = \"FrameStart\";\n})(EventType ||= {});\nvar MouseButton;\n((MouseButton2) => {\n MouseButton2[MouseButton2[\"None\"] = 0] = \"None\";\n MouseButton2[MouseButton2[\"Left\"] = 1] = \"Left\";\n MouseButton2[MouseButton2[\"Middle\"] = 2] = \"Middle\";\n MouseButton2[MouseButton2[\"Right\"] = 3] = \"Right\";\n MouseButton2[MouseButton2[\"X1\"] = 4] = \"X1\";\n MouseButton2[MouseButton2[\"X2\"] = 5] = \"X2\";\n MouseButton2[MouseButton2[\"X3\"] = 6] = \"X3\";\n MouseButton2[MouseButton2[\"X4\"] = 7] = \"X4\";\n MouseButton2[MouseButton2[\"X5\"] = 8] = \"X5\";\n})(MouseButton ||= {});\nvar Key;\n((Key2) => {\n Key2[Key2[\"None\"] = 0] = \"None\";\n Key2[Key2[\"Backquote\"] = 1] = \"Backquote\";\n Key2[Key2[\"Backslash\"] = 2] = \"Backslash\";\n Key2[Key2[\"BracketLeft\"] = 3] = \"BracketLeft\";\n Key2[Key2[\"BracketRight\"] = 4] = \"BracketRight\";\n Key2[Key2[\"Comma\"] = 5] = \"Comma\";\n Key2[Key2[\"Digit0\"] = 6] = \"Digit0\";\n Key2[Key2[\"Digit1\"] = 7] = \"Digit1\";\n Key2[Key2[\"Digit2\"] = 8] = \"Digit2\";\n Key2[Key2[\"Digit3\"] = 9] = \"Digit3\";\n Key2[Key2[\"Digit4\"] = 10] = \"Digit4\";\n Key2[Key2[\"Digit5\"] = 11] = \"Digit5\";\n Key2[Key2[\"Digit6\"] = 12] = \"Digit6\";\n Key2[Key2[\"Digit7\"] = 13] = \"Digit7\";\n Key2[Key2[\"Digit8\"] = 14] = \"Digit8\";\n Key2[Key2[\"Digit9\"] = 15] = \"Digit9\";\n Key2[Key2[\"Equal\"] = 16] = \"Equal\";\n Key2[Key2[\"IntlBackslash\"] = 17] = \"IntlBackslash\";\n Key2[Key2[\"IntlRo\"] = 18] = \"IntlRo\";\n Key2[Key2[\"IntlYen\"] = 19] = \"IntlYen\";\n Key2[Key2[\"KeyA\"] = 20] = \"KeyA\";\n Key2[Key2[\"KeyB\"] = 21] = \"KeyB\";\n Key2[Key2[\"KeyC\"] = 22] = \"KeyC\";\n Key2[Key2[\"KeyD\"] = 23] = \"KeyD\";\n Key2[Key2[\"KeyE\"] = 24] = \"KeyE\";\n Key2[Key2[\"KeyF\"] = 25] = \"KeyF\";\n Key2[Key2[\"KeyG\"] = 26] = \"KeyG\";\n Key2[Key2[\"KeyH\"] = 27] = \"KeyH\";\n Key2[Key2[\"KeyI\"] = 28] = \"KeyI\";\n Key2[Key2[\"KeyJ\"] = 29] = \"KeyJ\";\n Key2[Key2[\"KeyK\"] = 30] = \"KeyK\";\n Key2[Key2[\"KeyL\"] = 31] = \"KeyL\";\n Key2[Key2[\"KeyM\"] = 32] = \"KeyM\";\n Key2[Key2[\"KeyN\"] = 33] = \"KeyN\";\n Key2[Key2[\"KeyO\"] = 34] = \"KeyO\";\n Key2[Key2[\"KeyP\"] = 35] = \"KeyP\";\n Key2[Key2[\"KeyQ\"] = 36] = \"KeyQ\";\n Key2[Key2[\"KeyR\"] = 37] = \"KeyR\";\n Key2[Key2[\"KeyS\"] = 38] = \"KeyS\";\n Key2[Key2[\"KeyT\"] = 39] = \"KeyT\";\n Key2[Key2[\"KeyU\"] = 40] = \"KeyU\";\n Key2[Key2[\"KeyV\"] = 41] = \"KeyV\";\n Key2[Key2[\"KeyW\"] = 42] = \"KeyW\";\n Key2[Key2[\"KeyX\"] = 43] = \"KeyX\";\n Key2[Key2[\"KeyY\"] = 44] = \"KeyY\";\n Key2[Key2[\"KeyZ\"] = 45] = \"KeyZ\";\n Key2[Key2[\"Minus\"] = 46] = \"Minus\";\n Key2[Key2[\"Period\"] = 47] = \"Period\";\n Key2[Key2[\"Quote\"] = 48] = \"Quote\";\n Key2[Key2[\"Semicolon\"] = 49] = \"Semicolon\";\n Key2[Key2[\"Slash\"] = 50] = \"Slash\";\n Key2[Key2[\"AltLeft\"] = 51] = \"AltLeft\";\n Key2[Key2[\"AltRight\"] = 52] = \"AltRight\";\n Key2[Key2[\"Backspace\"] = 53] = \"Backspace\";\n Key2[Key2[\"CapsLock\"] = 54] = \"CapsLock\";\n Key2[Key2[\"ContextMenu\"] = 55] = \"ContextMenu\";\n Key2[Key2[\"ControlLeft\"] = 56] = \"ControlLeft\";\n Key2[Key2[\"ControlRight\"] = 57] = \"ControlRight\";\n Key2[Key2[\"Enter\"] = 58] = \"Enter\";\n Key2[Key2[\"MetaLeft\"] = 59] = \"MetaLeft\";\n Key2[Key2[\"MetaRight\"] = 60] = \"MetaRight\";\n Key2[Key2[\"ShiftLeft\"] = 61] = \"ShiftLeft\";\n Key2[Key2[\"ShiftRight\"] = 62] = \"ShiftRight\";\n Key2[Key2[\"Space\"] = 63] = \"Space\";\n Key2[Key2[\"Tab\"] = 64] = \"Tab\";\n Key2[Key2[\"Convert\"] = 65] = \"Convert\";\n Key2[Key2[\"KanaMode\"] = 66] = \"KanaMode\";\n Key2[Key2[\"Lang1\"] = 67] = \"Lang1\";\n Key2[Key2[\"Lang2\"] = 68] = \"Lang2\";\n Key2[Key2[\"Lang3\"] = 69] = \"Lang3\";\n Key2[Key2[\"Lang4\"] = 70] = \"Lang4\";\n Key2[Key2[\"Lang5\"] = 71] = \"Lang5\";\n Key2[Key2[\"NonConvert\"] = 72] = \"NonConvert\";\n Key2[Key2[\"Delete\"] = 73] = \"Delete\";\n Key2[Key2[\"End\"] = 74] = \"End\";\n Key2[Key2[\"Help\"] = 75] = \"Help\";\n Key2[Key2[\"Home\"] = 76] = \"Home\";\n Key2[Key2[\"Insert\"] = 77] = \"Insert\";\n Key2[Key2[\"PageDown\"] = 78] = \"PageDown\";\n Key2[Key2[\"PageUp\"] = 79] = \"PageUp\";\n Key2[Key2[\"ArrowDown\"] = 80] = \"ArrowDown\";\n Key2[Key2[\"ArrowLeft\"] = 81] = \"ArrowLeft\";\n Key2[Key2[\"ArrowRight\"] = 82] = \"ArrowRight\";\n Key2[Key2[\"ArrowUp\"] = 83] = \"ArrowUp\";\n Key2[Key2[\"NumLock\"] = 84] = \"NumLock\";\n Key2[Key2[\"Numpad0\"] = 85] = \"Numpad0\";\n Key2[Key2[\"Numpad1\"] = 86] = \"Numpad1\";\n Key2[Key2[\"Numpad2\"] = 87] = \"Numpad2\";\n Key2[Key2[\"Numpad3\"] = 88] = \"Numpad3\";\n Key2[Key2[\"Numpad4\"] = 89] = \"Numpad4\";\n Key2[Key2[\"Numpad5\"] = 90] = \"Numpad5\";\n Key2[Key2[\"Numpad6\"] = 91] = \"Numpad6\";\n Key2[Key2[\"Numpad7\"] = 92] = \"Numpad7\";\n Key2[Key2[\"Numpad8\"] = 93] = \"Numpad8\";\n Key2[Key2[\"Numpad9\"] = 94] = \"Numpad9\";\n Key2[Key2[\"NumpadAdd\"] = 95] = \"NumpadAdd\";\n Key2[Key2[\"NumpadBackspace\"] = 96] = \"NumpadBackspace\";\n Key2[Key2[\"NumpadClear\"] = 97] = \"NumpadClear\";\n Key2[Key2[\"NumpadClearEntry\"] = 98] = \"NumpadClearEntry\";\n Key2[Key2[\"NumpadComma\"] = 99] = \"NumpadComma\";\n Key2[Key2[\"NumpadDecimal\"] = 100] = \"NumpadDecimal\";\n Key2[Key2[\"NumpadDivide\"] = 101] = \"NumpadDivide\";\n Key2[Key2[\"NumpadEnter\"] = 102] = \"NumpadEnter\";\n Key2[Key2[\"NumpadEqual\"] = 103] = \"NumpadEqual\";\n Key2[Key2[\"NumpadHash\"] = 104] = \"NumpadHash\";\n Key2[Key2[\"NumpadMemoryAdd\"] = 105] = \"NumpadMemoryAdd\";\n Key2[Key2[\"NumpadMemoryClear\"] = 106] = \"NumpadMemoryClear\";\n Key2[Key2[\"NumpadMemoryRecall\"] = 107] = \"NumpadMemoryRecall\";\n Key2[Key2[\"NumpadMemoryStore\"] = 108] = \"NumpadMemoryStore\";\n Key2[Key2[\"NumpadMemorySubtract\"] = 109] = \"NumpadMemorySubtract\";\n Key2[Key2[\"NumpadMultiply\"] = 110] = \"NumpadMultiply\";\n Key2[Key2[\"NumpadParenLeft\"] = 111] = \"NumpadParenLeft\";\n Key2[Key2[\"NumpadParenRight\"] = 112] = \"NumpadParenRight\";\n Key2[Key2[\"NumpadStar\"] = 113] = \"NumpadStar\";\n Key2[Key2[\"NumpadSubtract\"] = 114] = \"NumpadSubtract\";\n Key2[Key2[\"Escape\"] = 115] = \"Escape\";\n Key2[Key2[\"Fn\"] = 116] = \"Fn\";\n Key2[Key2[\"FnLock\"] = 117] = \"FnLock\";\n Key2[Key2[\"PrintScreen\"] = 118] = \"PrintScreen\";\n Key2[Key2[\"ScrollLock\"] = 119] = \"ScrollLock\";\n Key2[Key2[\"Pause\"] = 120] = \"Pause\";\n Key2[Key2[\"BrowserBack\"] = 121] = \"BrowserBack\";\n Key2[Key2[\"BrowserFavorites\"] = 122] = \"BrowserFavorites\";\n Key2[Key2[\"BrowserForward\"] = 123] = \"BrowserForward\";\n Key2[Key2[\"BrowserHome\"] = 124] = \"BrowserHome\";\n Key2[Key2[\"BrowserRefresh\"] = 125] = \"BrowserRefresh\";\n Key2[Key2[\"BrowserSearch\"] = 126] = \"BrowserSearch\";\n Key2[Key2[\"BrowserStop\"] = 127] = \"BrowserStop\";\n Key2[Key2[\"Eject\"] = 128] = \"Eject\";\n Key2[Key2[\"LaunchApp1\"] = 129] = \"LaunchApp1\";\n Key2[Key2[\"LaunchApp2\"] = 130] = \"LaunchApp2\";\n Key2[Key2[\"LaunchMail\"] = 131] = \"LaunchMail\";\n Key2[Key2[\"MediaPlayPause\"] = 132] = \"MediaPlayPause\";\n Key2[Key2[\"MediaSelect\"] = 133] = \"MediaSelect\";\n Key2[Key2[\"MediaStop\"] = 134] = \"MediaStop\";\n Key2[Key2[\"MediaTrackNext\"] = 135] = \"MediaTrackNext\";\n Key2[Key2[\"MediaTrackPrevious\"] = 136] = \"MediaTrackPrevious\";\n Key2[Key2[\"Power\"] = 137] = \"Power\";\n Key2[Key2[\"Sleep\"] = 138] = \"Sleep\";\n Key2[Key2[\"AudioVolumeDown\"] = 139] = \"AudioVolumeDown\";\n Key2[Key2[\"AudioVolumeMute\"] = 140] = \"AudioVolumeMute\";\n Key2[Key2[\"AudioVolumeUp\"] = 141] = \"AudioVolumeUp\";\n Key2[Key2[\"WakeUp\"] = 142] = \"WakeUp\";\n Key2[Key2[\"Hyper\"] = 143] = \"Hyper\";\n Key2[Key2[\"Super\"] = 144] = \"Super\";\n Key2[Key2[\"Turbo\"] = 145] = \"Turbo\";\n Key2[Key2[\"Abort\"] = 146] = \"Abort\";\n Key2[Key2[\"Resume\"] = 147] = \"Resume\";\n Key2[Key2[\"Suspend\"] = 148] = \"Suspend\";\n Key2[Key2[\"Again\"] = 149] = \"Again\";\n Key2[Key2[\"Copy\"] = 150] = \"Copy\";\n Key2[Key2[\"Cut\"] = 151] = \"Cut\";\n Key2[Key2[\"Find\"] = 152] = \"Find\";\n Key2[Key2[\"Open\"] = 153] = \"Open\";\n Key2[Key2[\"Paste\"] = 154] = \"Paste\";\n Key2[Key2[\"Props\"] = 155] = \"Props\";\n Key2[Key2[\"Select\"] = 156] = \"Select\";\n Key2[Key2[\"Undo\"] = 157] = \"Undo\";\n Key2[Key2[\"Hiragana\"] = 158] = \"Hiragana\";\n Key2[Key2[\"Katakana\"] = 159] = \"Katakana\";\n Key2[Key2[\"F1\"] = 160] = \"F1\";\n Key2[Key2[\"F2\"] = 161] = \"F2\";\n Key2[Key2[\"F3\"] = 162] = \"F3\";\n Key2[Key2[\"F4\"] = 163] = \"F4\";\n Key2[Key2[\"F5\"] = 164] = \"F5\";\n Key2[Key2[\"F6\"] = 165] = \"F6\";\n Key2[Key2[\"F7\"] = 166] = \"F7\";\n Key2[Key2[\"F8\"] = 167] = \"F8\";\n Key2[Key2[\"F9\"] = 168] = \"F9\";\n Key2[Key2[\"F10\"] = 169] = \"F10\";\n Key2[Key2[\"F11\"] = 170] = \"F11\";\n Key2[Key2[\"F12\"] = 171] = \"F12\";\n Key2[Key2[\"F13\"] = 172] = \"F13\";\n Key2[Key2[\"F14\"] = 173] = \"F14\";\n Key2[Key2[\"F15\"] = 174] = \"F15\";\n Key2[Key2[\"F16\"] = 175] = \"F16\";\n Key2[Key2[\"F17\"] = 176] = \"F17\";\n Key2[Key2[\"F18\"] = 177] = \"F18\";\n Key2[Key2[\"F19\"] = 178] = \"F19\";\n Key2[Key2[\"F20\"] = 179] = \"F20\";\n Key2[Key2[\"F21\"] = 180] = \"F21\";\n Key2[Key2[\"F22\"] = 181] = \"F22\";\n Key2[Key2[\"F23\"] = 182] = \"F23\";\n Key2[Key2[\"F24\"] = 183] = \"F24\";\n Key2[Key2[\"F25\"] = 184] = \"F25\";\n Key2[Key2[\"F26\"] = 185] = \"F26\";\n Key2[Key2[\"F27\"] = 186] = \"F27\";\n Key2[Key2[\"F28\"] = 187] = \"F28\";\n Key2[Key2[\"F29\"] = 188] = \"F29\";\n Key2[Key2[\"F30\"] = 189] = \"F30\";\n Key2[Key2[\"F31\"] = 190] = \"F31\";\n Key2[Key2[\"F32\"] = 191] = \"F32\";\n Key2[Key2[\"F33\"] = 192] = \"F33\";\n Key2[Key2[\"F34\"] = 193] = \"F34\";\n Key2[Key2[\"F35\"] = 194] = \"F35\";\n})(Key ||= {});\nvar MOUSE_OFFSET = 256;\nvar MOUSE_BUTTONS_OFFSET = 16;\nvar KEYBOARD_OFFSET = 0;\nvar EVENT_PAYLOAD_SIZE = 8;\nvar EVENT_PAYLOAD_ALIGN = 4;\nfunction keyToKeyCode(key) {\n return Key[key];\n}\nfunction keyCodeToKey(code) {\n return Key[code];\n}\nfunction mouseButtonToMouseButtonCode(button) {\n return MouseButton[button];\n}\nfunction mouseButtonCodeToMouseButton(code) {\n return MouseButton[code];\n}\n\nclass InputContext {\n #dataView;\n #keys;\n #mouse;\n constructor(dataView) {\n if (dataView) {\n this.#dataView = dataView;\n }\n }\n get dataView() {\n if (!this.#dataView) {\n throw new Error(\"DataView is not initialized on InputContext\");\n }\n return this.#dataView;\n }\n set dataView(dataView) {\n this.#dataView = dataView;\n this.#keys = undefined;\n this.#mouse = undefined;\n }\n get keys() {\n if (!this.#keys) {\n this.#keys = new KeyboardContext(new DataView(this.dataView.buffer, this.dataView.byteOffset + KEYBOARD_OFFSET));\n }\n return this.#keys;\n }\n get mouse() {\n if (!this.#mouse) {\n this.#mouse = new MouseContext(new DataView(this.dataView.buffer, this.dataView.byteOffset + MOUSE_OFFSET));\n }\n return this.#mouse;\n }\n}\n\nclass MouseContext {\n #dataView;\n #buttonStates = new Map;\n constructor(dataView) {\n this.#dataView = dataView;\n }\n get x() {\n return this.#dataView.getFloat32(0, true);\n }\n get y() {\n return this.#dataView.getFloat32(4, true);\n }\n get wheel() {\n return { x: this.wheelX, y: this.wheelY };\n }\n get wheelX() {\n return this.#dataView.getFloat32(8, true);\n }\n get wheelY() {\n return this.#dataView.getFloat32(12, true);\n }\n get left() {\n return this.#buttonState(1);\n }\n get right() {\n return this.#buttonState(3);\n }\n get middle() {\n return this.#buttonState(2);\n }\n #buttonState(code) {\n let state;\n if (this.#buttonStates.has(code)) {\n state = this.#buttonStates.get(code);\n } else {\n state = { down: false, held: false, up: false };\n this.#buttonStates.set(code, state);\n }\n const offset = MOUSE_BUTTONS_OFFSET;\n state.held = !!(this.#dataView.getUint8(offset + code) & 1);\n state.down = state.held && !(this.#dataView.getUint8(offset + code) & 2);\n state.up = !state.held && !!(this.#dataView.getUint8(offset + code) & 2);\n return state;\n }\n}\n\nclass KeyboardContext {\n #dataView;\n #keystates = new Map;\n constructor(dataView) {\n this.#dataView = dataView;\n }\n get shift() {\n return this.shiftLeft || this.shiftRight;\n }\n get alt() {\n return this.altLeft || this.altRight;\n }\n get control() {\n return this.controlLeft || this.controlRight;\n }\n get meta() {\n return this.metaLeft || this.metaRight;\n }\n get backquote() {\n return this.#keystate(1);\n }\n get backslash() {\n return this.#keystate(2);\n }\n get bracketLeft() {\n return this.#keystate(3);\n }\n get bracketRight() {\n return this.#keystate(4);\n }\n get comma() {\n return this.#keystate(5);\n }\n get digit0() {\n return this.#keystate(6);\n }\n get digit1() {\n return this.#keystate(7);\n }\n get digit2() {\n return this.#keystate(8);\n }\n get digit3() {\n return this.#keystate(9);\n }\n get digit4() {\n return this.#keystate(10);\n }\n get digit5() {\n return this.#keystate(11);\n }\n get digit6() {\n return this.#keystate(12);\n }\n get digit7() {\n return this.#keystate(13);\n }\n get digit8() {\n return this.#keystate(14);\n }\n get digit9() {\n return this.#keystate(15);\n }\n get equal() {\n return this.#keystate(16);\n }\n get intlBackslash() {\n return this.#keystate(17);\n }\n get intlRo() {\n return this.#keystate(18);\n }\n get intlYen() {\n return this.#keystate(19);\n }\n get a() {\n return this.#keystate(20);\n }\n get b() {\n return this.#keystate(21);\n }\n get c() {\n return this.#keystate(22);\n }\n get d() {\n return this.#keystate(23);\n }\n get e() {\n return this.#keystate(24);\n }\n get f() {\n return this.#keystate(25);\n }\n get g() {\n return this.#keystate(26);\n }\n get h() {\n return this.#keystate(27);\n }\n get i() {\n return this.#keystate(28);\n }\n get j() {\n return this.#keystate(29);\n }\n get k() {\n return this.#keystate(30);\n }\n get l() {\n return this.#keystate(31);\n }\n get m() {\n return this.#keystate(32);\n }\n get n() {\n return this.#keystate(33);\n }\n get o() {\n return this.#keystate(34);\n }\n get p() {\n return this.#keystate(35);\n }\n get q() {\n return this.#keystate(36);\n }\n get r() {\n return this.#keystate(37);\n }\n get s() {\n return this.#keystate(38);\n }\n get t() {\n return this.#keystate(39);\n }\n get u() {\n return this.#keystate(40);\n }\n get v() {\n return this.#keystate(41);\n }\n get w() {\n return this.#keystate(42);\n }\n get x() {\n return this.#keystate(43);\n }\n get y() {\n return this.#keystate(44);\n }\n get z() {\n return this.#keystate(45);\n }\n get minus() {\n return this.#keystate(46);\n }\n get period() {\n return this.#keystate(47);\n }\n get quote() {\n return this.#keystate(48);\n }\n get semicolon() {\n return this.#keystate(49);\n }\n get slash() {\n return this.#keystate(50);\n }\n get altLeft() {\n return this.#keystate(51);\n }\n get altRight() {\n return this.#keystate(52);\n }\n get backspace() {\n return this.#keystate(53);\n }\n get capsLock() {\n return this.#keystate(54);\n }\n get contextMenu() {\n return this.#keystate(55);\n }\n get controlLeft() {\n return this.#keystate(56);\n }\n get controlRight() {\n return this.#keystate(57);\n }\n get enter() {\n return this.#keystate(58);\n }\n get metaLeft() {\n return this.#keystate(59);\n }\n get metaRight() {\n return this.#keystate(60);\n }\n get shiftLeft() {\n return this.#keystate(61);\n }\n get shiftRight() {\n return this.#keystate(62);\n }\n get space() {\n return this.#keystate(63);\n }\n get tab() {\n return this.#keystate(64);\n }\n get convert() {\n return this.#keystate(65);\n }\n get kanaMode() {\n return this.#keystate(66);\n }\n get lang1() {\n return this.#keystate(67);\n }\n get lang2() {\n return this.#keystate(68);\n }\n get lang3() {\n return this.#keystate(69);\n }\n get lang4() {\n return this.#keystate(70);\n }\n get lang5() {\n return this.#keystate(71);\n }\n get nonConvert() {\n return this.#keystate(72);\n }\n get delete() {\n return this.#keystate(73);\n }\n get end() {\n return this.#keystate(74);\n }\n get help() {\n return this.#keystate(75);\n }\n get home() {\n return this.#keystate(76);\n }\n get insert() {\n return this.#keystate(77);\n }\n get pageDown() {\n return this.#keystate(78);\n }\n get pageUp() {\n return this.#keystate(79);\n }\n get arrowDown() {\n return this.#keystate(80);\n }\n get arrowLeft() {\n return this.#keystate(81);\n }\n get arrowRight() {\n return this.#keystate(82);\n }\n get arrowUp() {\n return this.#keystate(83);\n }\n get numLock() {\n return this.#keystate(84);\n }\n get numpad0() {\n return this.#keystate(85);\n }\n get numpad1() {\n return this.#keystate(86);\n }\n get numpad2() {\n return this.#keystate(87);\n }\n get numpad3() {\n return this.#keystate(88);\n }\n get numpad4() {\n return this.#keystate(89);\n }\n get numpad5() {\n return this.#keystate(90);\n }\n get numpad6() {\n return this.#keystate(91);\n }\n get numpad7() {\n return this.#keystate(92);\n }\n get numpad8() {\n return this.#keystate(93);\n }\n get numpad9() {\n return this.#keystate(94);\n }\n get numpadAdd() {\n return this.#keystate(95);\n }\n get numpadBackspace() {\n return this.#keystate(96);\n }\n get numpadClear() {\n return this.#keystate(97);\n }\n get numpadClearEntry() {\n return this.#keystate(98);\n }\n get numpadComma() {\n return this.#keystate(99);\n }\n get numpadDecimal() {\n return this.#keystate(100);\n }\n get numpadDivide() {\n return this.#keystate(101);\n }\n get numpadEnter() {\n return this.#keystate(102);\n }\n get numpadEqual() {\n return this.#keystate(103);\n }\n get numpadHash() {\n return this.#keystate(104);\n }\n get numpadMemoryAdd() {\n return this.#keystate(105);\n }\n get numpadMemoryClear() {\n return this.#keystate(106);\n }\n get numpadMemoryRecall() {\n return this.#keystate(107);\n }\n get numpadMemoryStore() {\n return this.#keystate(108);\n }\n get numpadMemorySubtract() {\n return this.#keystate(109);\n }\n get numpadMultiply() {\n return this.#keystate(110);\n }\n get numpadParenLeft() {\n return this.#keystate(111);\n }\n get numpadParenRight() {\n return this.#keystate(112);\n }\n get numpadStar() {\n return this.#keystate(113);\n }\n get numpadSubtract() {\n return this.#keystate(114);\n }\n get escape() {\n return this.#keystate(115);\n }\n get fn() {\n return this.#keystate(116);\n }\n get fnLock() {\n return this.#keystate(117);\n }\n get printScreen() {\n return this.#keystate(118);\n }\n get scrollLock() {\n return this.#keystate(119);\n }\n get pause() {\n return this.#keystate(120);\n }\n get browserBack() {\n return this.#keystate(121);\n }\n get browserFavorites() {\n return this.#keystate(122);\n }\n get browserForward() {\n return this.#keystate(123);\n }\n get browserHome() {\n return this.#keystate(124);\n }\n get browserRefresh() {\n return this.#keystate(125);\n }\n get browserSearch() {\n return this.#keystate(126);\n }\n get browserStop() {\n return this.#keystate(127);\n }\n get eject() {\n return this.#keystate(128);\n }\n get launchApp1() {\n return this.#keystate(129);\n }\n get launchApp2() {\n return this.#keystate(130);\n }\n get launchMail() {\n return this.#keystate(131);\n }\n get mediaPlayPause() {\n return this.#keystate(132);\n }\n get mediaSelect() {\n return this.#keystate(133);\n }\n get mediaStop() {\n return this.#keystate(134);\n }\n get mediaTrackNext() {\n return this.#keystate(135);\n }\n get mediaTrackPrevious() {\n return this.#keystate(136);\n }\n get power() {\n return this.#keystate(137);\n }\n get sleep() {\n return this.#keystate(138);\n }\n get audioVolumeDown() {\n return this.#keystate(139);\n }\n get audioVolumeMute() {\n return this.#keystate(140);\n }\n get audioVolumeUp() {\n return this.#keystate(141);\n }\n get wakeUp() {\n return this.#keystate(142);\n }\n get hyper() {\n return this.#keystate(143);\n }\n get super() {\n return this.#keystate(144);\n }\n get turbo() {\n return this.#keystate(145);\n }\n get abort() {\n return this.#keystate(146);\n }\n get resume() {\n return this.#keystate(147);\n }\n get suspend() {\n return this.#keystate(148);\n }\n get again() {\n return this.#keystate(149);\n }\n get copy() {\n return this.#keystate(150);\n }\n get cut() {\n return this.#keystate(151);\n }\n get find() {\n return this.#keystate(152);\n }\n get open() {\n return this.#keystate(153);\n }\n get paste() {\n return this.#keystate(154);\n }\n get props() {\n return this.#keystate(155);\n }\n get select() {\n return this.#keystate(156);\n }\n get undo() {\n return this.#keystate(157);\n }\n get hiragana() {\n return this.#keystate(158);\n }\n get katakana() {\n return this.#keystate(159);\n }\n get f1() {\n return this.#keystate(160);\n }\n get f2() {\n return this.#keystate(161);\n }\n get f3() {\n return this.#keystate(162);\n }\n get f4() {\n return this.#keystate(163);\n }\n get f5() {\n return this.#keystate(164);\n }\n get f6() {\n return this.#keystate(165);\n }\n get f7() {\n return this.#keystate(166);\n }\n get f8() {\n return this.#keystate(167);\n }\n get f9() {\n return this.#keystate(168);\n }\n get f10() {\n return this.#keystate(169);\n }\n get f11() {\n return this.#keystate(170);\n }\n get f12() {\n return this.#keystate(171);\n }\n get f13() {\n return this.#keystate(172);\n }\n get f14() {\n return this.#keystate(173);\n }\n get f15() {\n return this.#keystate(174);\n }\n get f16() {\n return this.#keystate(175);\n }\n get f17() {\n return this.#keystate(176);\n }\n get f18() {\n return this.#keystate(177);\n }\n get f19() {\n return this.#keystate(178);\n }\n get f20() {\n return this.#keystate(179);\n }\n get f21() {\n return this.#keystate(180);\n }\n get f22() {\n return this.#keystate(181);\n }\n get f23() {\n return this.#keystate(182);\n }\n get f24() {\n return this.#keystate(183);\n }\n get f25() {\n return this.#keystate(184);\n }\n get f26() {\n return this.#keystate(185);\n }\n get f27() {\n return this.#keystate(186);\n }\n get f28() {\n return this.#keystate(187);\n }\n get f29() {\n return this.#keystate(188);\n }\n get f30() {\n return this.#keystate(189);\n }\n get f31() {\n return this.#keystate(190);\n }\n get f32() {\n return this.#keystate(191);\n }\n get f33() {\n return this.#keystate(192);\n }\n get f34() {\n return this.#keystate(193);\n }\n get f35() {\n return this.#keystate(194);\n }\n #keystate(code) {\n let state;\n if (this.#keystates.has(code)) {\n state = this.#keystates.get(code);\n } else {\n state = { down: false, held: false, up: false };\n this.#keystates.set(code, state);\n }\n state.held = !!(this.#dataView.getUint8(code) & 1);\n state.down = state.held && !(this.#dataView.getUint8(code) & 2);\n state.up = !state.held && !!(this.#dataView.getUint8(code) & 2);\n return state;\n }\n}\n\nclass TimeContext {\n dataView;\n constructor(dataView) {\n this.dataView = dataView;\n }\n get frame() {\n if (!this.dataView) {\n throw new Error(\"TimeContext DataView is not initialized\");\n }\n return this.dataView.getUint32(0, true);\n }\n get dt() {\n if (!this.dataView) {\n throw new Error(\"TimeContext DataView is not initialized\");\n }\n return this.dataView.getUint32(4, true) / 1000;\n }\n get time() {\n if (!this.dataView) {\n throw new Error(\"TimeContext DataView is not initialized\");\n }\n return this.dataView.getUint32(8, true) / 1000;\n }\n}\nvar DEFAULT_WASM_URL = new URL(\"../wasm/bloop.wasm\", import.meta.url);\nvar TIME_CTX_OFFSET = 0;\nvar INPUT_CTX_OFFSET = TIME_CTX_OFFSET + 4;\nvar EVENTS_OFFSET = INPUT_CTX_OFFSET + 4;\nvar SNAPSHOT_HEADER_LEN = 16;\nvar SNAPSHOT_HEADER_USER_LEN_OFFSET = 4;\nvar SNAPSHOT_HEADER_ENGINE_LEN_OFFSET = 8;\n// src/sim.ts\nvar originalConsole = globalThis.console;\nvar noop = () => {};\nvar stubConsole = Object.fromEntries(Object.keys(originalConsole).map((key) => [key, noop]));\nfunction muteConsole() {\n globalThis.console = stubConsole;\n}\nfunction unmuteConsole() {\n globalThis.console = originalConsole;\n}\n\nclass Sim {\n wasm;\n id;\n #memory;\n #time;\n #serialize;\n #isPaused = false;\n constructor(wasm, memory, opts) {\n this.wasm = wasm;\n this.#memory = memory;\n this.#time = new TimeContext(new DataView(this.#memory.buffer, this.wasm.get_time_ctx()));\n this.id = `${Math.floor(Math.random() * 1e6)}`;\n this.#serialize = opts?.serialize;\n }\n step(ms) {\n if (this.#isPaused && !this.isReplaying) {\n return 0;\n }\n return this.wasm.step(ms ?? 16);\n }\n tick() {\n this.wasm.tick();\n }\n cloneSession(source) {\n this.loadTape(source.saveTape());\n this.restore(source.snapshot());\n }\n pause() {\n this.#isPaused = true;\n }\n unpause() {\n this.#isPaused = false;\n }\n get isPaused() {\n return this.#isPaused;\n }\n stepBack() {\n if (this.time.frame === 0) {\n return;\n }\n this.seek(this.time.frame - 1);\n }\n seek(frame, inclusive) {\n assert(this.hasHistory, \"Not recording or playing back, can't seek to frame\");\n const targetFrame = inclusive ? frame + 1 : frame;\n const shouldMute = frame < this.time.frame;\n if (shouldMute) {\n muteConsole();\n }\n this.wasm.seek(targetFrame);\n if (shouldMute) {\n unmuteConsole();\n }\n }\n record() {\n const serializer = this.#serialize ? this.#serialize() : null;\n const size = serializer ? serializer.size : 0;\n const result = this.wasm.start_recording(size, 1024);\n if (result !== 0) {\n throw new Error(`failed to start recording, error code=${result}`);\n }\n }\n snapshot() {\n const serializer = this.#serialize ? this.#serialize() : null;\n const size = serializer ? serializer.size : 0;\n const ptr = this.wasm.take_snapshot(size);\n const header = new Uint32Array(this.#memory.buffer, ptr, 4);\n const userLenIndex = SNAPSHOT_HEADER_USER_LEN_OFFSET / Uint32Array.BYTES_PER_ELEMENT;\n const engineLenIndex = SNAPSHOT_HEADER_ENGINE_LEN_OFFSET / Uint32Array.BYTES_PER_ELEMENT;\n assert(header[userLenIndex], `header user length missing`);\n assert(header[engineLenIndex], `header engine length missing`);\n const length = header[userLenIndex] + header[engineLenIndex];\n const memoryView = new Uint8Array(this.#memory.buffer, ptr, length);\n const copy = new Uint8Array(length);\n copy.set(memoryView);\n return copy;\n }\n saveTape() {\n const tapeLen = this.wasm.get_tape_len();\n const tapePtr = this.wasm.get_tape_ptr();\n const memoryView = new Uint8Array(this.#memory.buffer, tapePtr, tapeLen);\n const copy = new Uint8Array(tapeLen);\n copy.set(memoryView);\n return copy;\n }\n loadTape(tape) {\n const tapePtr = this.wasm.alloc(tape.byteLength);\n assert(tapePtr > 0, `failed to allocate ${tape.byteLength} bytes for tape load, pointer=${tapePtr}`);\n const memoryView = new Uint8Array(this.#memory.buffer, tapePtr, tape.byteLength);\n memoryView.set(tape);\n this.wasm.stop_recording();\n const result = this.wasm.load_tape(tapePtr, tape.byteLength);\n assert(result === 0, `failed to load tape, error code=${result}`);\n this.wasm.free(tapePtr, tape.byteLength);\n }\n restore(snapshot) {\n const dataPtr = this.wasm.alloc(snapshot.byteLength);\n assert(dataPtr > 0, `failed to allocate ${snapshot.byteLength} bytes for snapshot restore, pointer=${dataPtr}`);\n const memoryView = new Uint8Array(this.#memory.buffer, dataPtr, snapshot.byteLength);\n memoryView.set(snapshot);\n this.wasm.restore(dataPtr);\n this.wasm.free(dataPtr, snapshot.byteLength);\n }\n unmount() {\n this.wasm.deinit();\n }\n get time() {\n if (!this.#time.dataView || this.#time.dataView.buffer !== this.#memory.buffer) {\n this.#time.dataView = new DataView(this.#memory.buffer, this.wasm.get_time_ctx());\n }\n return this.#time;\n }\n get buffer() {\n return this.#memory.buffer;\n }\n get isRecording() {\n return this.wasm.is_recording();\n }\n get isReplaying() {\n return this.wasm.is_replaying();\n }\n get hasHistory() {\n return this.isRecording || this.isReplaying;\n }\n emit = {\n keydown: (key) => {\n this.wasm.emit_keydown(keyToKeyCode(key));\n },\n keyup: (key) => {\n this.wasm.emit_keyup(keyToKeyCode(key));\n },\n mousemove: (x, y) => {\n this.wasm.emit_mousemove(x, y);\n },\n mousedown: (button) => {\n this.wasm.emit_mousedown(mouseButtonToMouseButtonCode(button));\n },\n mouseup: (button) => {\n this.wasm.emit_mouseup(mouseButtonToMouseButtonCode(button));\n },\n mousewheel: (x, y) => {\n this.wasm.emit_mousewheel(x, y);\n }\n };\n}\n\n// src/mount.ts\nasync function mount(opts) {\n const bytes = await fetch(opts.wasmUrl ?? DEFAULT_WASM_URL).then((res) => res.arrayBuffer()).catch((e) => {\n console.error(`Failed to fetch wasm at ${opts.wasmUrl ?? DEFAULT_WASM_URL}`, e);\n throw e;\n });\n const memory = new WebAssembly.Memory({ initial: 17, maximum: 1000 });\n const wasmInstantiatedSource = await WebAssembly.instantiate(bytes, {\n env: {\n memory,\n __cb: function(system_handle, ptr) {\n opts.hooks.setBuffer(memory.buffer);\n opts.hooks.systemsCallback(system_handle, ptr);\n },\n __before_frame: function(frame) {\n try {\n opts.hooks.beforeFrame?.(frame);\n } catch (e) {\n console.error(\"Error in beforeFrame hook:\", e);\n }\n },\n console_log: function(ptr, len) {\n const bytes2 = new Uint8Array(memory.buffer, ptr, len);\n const string = new TextDecoder(\"utf-8\").decode(bytes2);\n console.log(string);\n },\n user_data_len: function() {\n const serializer = opts.hooks.serialize();\n return serializer ? serializer.size : 0;\n },\n user_data_serialize: function(ptr, len) {\n const serializer = opts.hooks.serialize();\n assert(len === serializer.size, `user_data_serialize length mismatch, expected=${serializer.size} got=${len}`);\n serializer.write(memory.buffer, ptr);\n },\n user_data_deserialize: function(ptr, len) {\n opts.hooks.deserialize(memory.buffer, ptr, len);\n }\n }\n });\n const wasm = wasmInstantiatedSource.instance.exports;\n const enginePointer = wasm.initialize();\n const sim = new Sim(wasm, memory, {\n serialize: opts.hooks.serialize\n });\n if (opts.startRecording ?? true) {\n sim.record();\n }\n opts.hooks.setBuffer(memory.buffer);\n opts.hooks.setContext(enginePointer);\n return {\n sim\n };\n}\n// src/bloop.ts\nclass Bloop {\n #systems = [];\n #context;\n #engineBuffer = new ArrayBuffer(0);\n static create(opts = {}) {\n return new Bloop(opts, \"dontCallMeDirectly\");\n }\n constructor(opts = {}, dontCallMeDirectly) {\n if (dontCallMeDirectly !== \"dontCallMeDirectly\") {\n throw new Error(\"Bloop constructor is private. Use Bloop.create() to create a new game instance.\");\n }\n this.#context = {\n bag: opts.bag ?? {},\n time: new TimeContext,\n inputs: new InputContext,\n rawPointer: -1\n };\n }\n get bag() {\n return this.#context.bag;\n }\n get context() {\n return this.#context;\n }\n system(label, system) {\n system.label ??= label;\n this.#systems.push(system);\n return this.#systems.length;\n }\n hooks = {\n serialize: () => {\n const str = JSON.stringify(this.#context.bag);\n const encoder = new TextEncoder;\n const textBytes = encoder.encode(str);\n return {\n size: textBytes.byteLength,\n write: (buffer, ptr) => {\n const memoryView = new Uint8Array(buffer, ptr, textBytes.byteLength);\n memoryView.set(textBytes);\n }\n };\n },\n deserialize: (buffer, ptr, len) => {\n const bagBytes = new Uint8Array(buffer, ptr, len);\n const decoder = new TextDecoder;\n const str = decoder.decode(bagBytes);\n try {\n this.#context.bag = JSON.parse(str);\n } catch (e) {\n console.error(\"failed to deserialize bag\", { json: str, error: e });\n }\n },\n setBuffer: (buffer) => {\n this.#engineBuffer = buffer;\n },\n setContext: (ptr) => {\n if (!this.#engineBuffer) {\n throw new Error(\"Tried to set context before engine buffer\");\n }\n const dv = new DataView(this.#engineBuffer, ptr);\n const timeCtxPtr = dv.getUint32(TIME_CTX_OFFSET, true);\n const inputCtxPtr = dv.getUint32(INPUT_CTX_OFFSET, true);\n this.#context.rawPointer = ptr;\n this.#context.inputs.dataView = new DataView(this.#engineBuffer, inputCtxPtr);\n this.#context.time.dataView = new DataView(this.#engineBuffer, timeCtxPtr);\n },\n systemsCallback: (system_handle, ptr) => {\n this.hooks.setContext(ptr);\n const dv = new DataView(this.#engineBuffer, ptr);\n const eventsPtr = dv.getUint32(EVENTS_OFFSET, true);\n const eventsDataView = new DataView(this.#engineBuffer, eventsPtr);\n for (const system of this.#systems) {\n system.update?.(this.#context);\n const eventCount = eventsDataView.getUint32(0, true);\n let offset = Uint32Array.BYTES_PER_ELEMENT;\n for (let i = 0;i < eventCount; i++) {\n const eventType = eventsDataView.getUint8(offset);\n const payloadSize = EVENT_PAYLOAD_SIZE;\n const payloadByte = eventsDataView.getUint8(offset + EVENT_PAYLOAD_ALIGN);\n const payloadVec2 = {\n x: eventsDataView.getFloat32(offset + EVENT_PAYLOAD_ALIGN, true),\n y: eventsDataView.getFloat32(offset + EVENT_PAYLOAD_ALIGN + Float32Array.BYTES_PER_ELEMENT, true)\n };\n switch (eventType) {\n case exports_enums.EventType.KeyDown: {\n system.keydown?.(attachEvent(this.#context, {\n key: keyCodeToKey(payloadByte)\n }));\n break;\n }\n case exports_enums.EventType.KeyUp:\n system.keyup?.(attachEvent(this.#context, {\n key: keyCodeToKey(payloadByte)\n }));\n break;\n case exports_enums.EventType.MouseDown:\n system.mousedown?.(attachEvent(this.#context, {\n button: mouseButtonCodeToMouseButton(payloadByte)\n }));\n break;\n case exports_enums.EventType.MouseUp:\n system.mouseup?.(attachEvent(this.#context, {\n button: mouseButtonCodeToMouseButton(payloadByte)\n }));\n break;\n case exports_enums.EventType.MouseMove:\n system.mousemove?.(attachEvent(this.#context, {\n x: payloadVec2.x,\n y: payloadVec2.y\n }));\n break;\n case exports_enums.EventType.MouseWheel:\n system.mousewheel?.(attachEvent(this.#context, {\n x: payloadVec2.x,\n y: payloadVec2.y\n }));\n break;\n default:\n throw new Error(`Unknown event type: ${eventType}`);\n }\n offset += EVENT_PAYLOAD_ALIGN + EVENT_PAYLOAD_SIZE;\n }\n this.#context.event = undefined;\n }\n }\n };\n}\nfunction attachEvent(context, event) {\n context.event = event;\n return context;\n}\nexport {\n unwrap,\n mount,\n assert,\n exports_util as Util,\n Sim,\n exports_engine as Engine,\n Bloop\n};\n\n//# debugId=7CF5EBB522CCF56A64756E2164756E21\n//# sourceMappingURL=mod.js.map\n",
6
6
  "var __defProp = Object.defineProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, {\n get: all[name],\n enumerable: true,\n configurable: true,\n set: (newValue) => all[name] = () => newValue\n });\n};\n\n// js/codegen/enums.ts\nvar exports_enums = {};\n__export(exports_enums, {\n MouseButton: () => MouseButton,\n Key: () => Key,\n EventType: () => EventType\n});\nvar EventType;\n((EventType2) => {\n EventType2[EventType2[\"None\"] = 0] = \"None\";\n EventType2[EventType2[\"KeyDown\"] = 1] = \"KeyDown\";\n EventType2[EventType2[\"KeyUp\"] = 2] = \"KeyUp\";\n EventType2[EventType2[\"MouseMove\"] = 3] = \"MouseMove\";\n EventType2[EventType2[\"MouseDown\"] = 4] = \"MouseDown\";\n EventType2[EventType2[\"MouseUp\"] = 5] = \"MouseUp\";\n EventType2[EventType2[\"MouseWheel\"] = 6] = \"MouseWheel\";\n EventType2[EventType2[\"FrameStart\"] = 7] = \"FrameStart\";\n})(EventType ||= {});\nvar MouseButton;\n((MouseButton2) => {\n MouseButton2[MouseButton2[\"None\"] = 0] = \"None\";\n MouseButton2[MouseButton2[\"Left\"] = 1] = \"Left\";\n MouseButton2[MouseButton2[\"Middle\"] = 2] = \"Middle\";\n MouseButton2[MouseButton2[\"Right\"] = 3] = \"Right\";\n MouseButton2[MouseButton2[\"X1\"] = 4] = \"X1\";\n MouseButton2[MouseButton2[\"X2\"] = 5] = \"X2\";\n MouseButton2[MouseButton2[\"X3\"] = 6] = \"X3\";\n MouseButton2[MouseButton2[\"X4\"] = 7] = \"X4\";\n MouseButton2[MouseButton2[\"X5\"] = 8] = \"X5\";\n})(MouseButton ||= {});\nvar Key;\n((Key2) => {\n Key2[Key2[\"None\"] = 0] = \"None\";\n Key2[Key2[\"Backquote\"] = 1] = \"Backquote\";\n Key2[Key2[\"Backslash\"] = 2] = \"Backslash\";\n Key2[Key2[\"BracketLeft\"] = 3] = \"BracketLeft\";\n Key2[Key2[\"BracketRight\"] = 4] = \"BracketRight\";\n Key2[Key2[\"Comma\"] = 5] = \"Comma\";\n Key2[Key2[\"Digit0\"] = 6] = \"Digit0\";\n Key2[Key2[\"Digit1\"] = 7] = \"Digit1\";\n Key2[Key2[\"Digit2\"] = 8] = \"Digit2\";\n Key2[Key2[\"Digit3\"] = 9] = \"Digit3\";\n Key2[Key2[\"Digit4\"] = 10] = \"Digit4\";\n Key2[Key2[\"Digit5\"] = 11] = \"Digit5\";\n Key2[Key2[\"Digit6\"] = 12] = \"Digit6\";\n Key2[Key2[\"Digit7\"] = 13] = \"Digit7\";\n Key2[Key2[\"Digit8\"] = 14] = \"Digit8\";\n Key2[Key2[\"Digit9\"] = 15] = \"Digit9\";\n Key2[Key2[\"Equal\"] = 16] = \"Equal\";\n Key2[Key2[\"IntlBackslash\"] = 17] = \"IntlBackslash\";\n Key2[Key2[\"IntlRo\"] = 18] = \"IntlRo\";\n Key2[Key2[\"IntlYen\"] = 19] = \"IntlYen\";\n Key2[Key2[\"KeyA\"] = 20] = \"KeyA\";\n Key2[Key2[\"KeyB\"] = 21] = \"KeyB\";\n Key2[Key2[\"KeyC\"] = 22] = \"KeyC\";\n Key2[Key2[\"KeyD\"] = 23] = \"KeyD\";\n Key2[Key2[\"KeyE\"] = 24] = \"KeyE\";\n Key2[Key2[\"KeyF\"] = 25] = \"KeyF\";\n Key2[Key2[\"KeyG\"] = 26] = \"KeyG\";\n Key2[Key2[\"KeyH\"] = 27] = \"KeyH\";\n Key2[Key2[\"KeyI\"] = 28] = \"KeyI\";\n Key2[Key2[\"KeyJ\"] = 29] = \"KeyJ\";\n Key2[Key2[\"KeyK\"] = 30] = \"KeyK\";\n Key2[Key2[\"KeyL\"] = 31] = \"KeyL\";\n Key2[Key2[\"KeyM\"] = 32] = \"KeyM\";\n Key2[Key2[\"KeyN\"] = 33] = \"KeyN\";\n Key2[Key2[\"KeyO\"] = 34] = \"KeyO\";\n Key2[Key2[\"KeyP\"] = 35] = \"KeyP\";\n Key2[Key2[\"KeyQ\"] = 36] = \"KeyQ\";\n Key2[Key2[\"KeyR\"] = 37] = \"KeyR\";\n Key2[Key2[\"KeyS\"] = 38] = \"KeyS\";\n Key2[Key2[\"KeyT\"] = 39] = \"KeyT\";\n Key2[Key2[\"KeyU\"] = 40] = \"KeyU\";\n Key2[Key2[\"KeyV\"] = 41] = \"KeyV\";\n Key2[Key2[\"KeyW\"] = 42] = \"KeyW\";\n Key2[Key2[\"KeyX\"] = 43] = \"KeyX\";\n Key2[Key2[\"KeyY\"] = 44] = \"KeyY\";\n Key2[Key2[\"KeyZ\"] = 45] = \"KeyZ\";\n Key2[Key2[\"Minus\"] = 46] = \"Minus\";\n Key2[Key2[\"Period\"] = 47] = \"Period\";\n Key2[Key2[\"Quote\"] = 48] = \"Quote\";\n Key2[Key2[\"Semicolon\"] = 49] = \"Semicolon\";\n Key2[Key2[\"Slash\"] = 50] = \"Slash\";\n Key2[Key2[\"AltLeft\"] = 51] = \"AltLeft\";\n Key2[Key2[\"AltRight\"] = 52] = \"AltRight\";\n Key2[Key2[\"Backspace\"] = 53] = \"Backspace\";\n Key2[Key2[\"CapsLock\"] = 54] = \"CapsLock\";\n Key2[Key2[\"ContextMenu\"] = 55] = \"ContextMenu\";\n Key2[Key2[\"ControlLeft\"] = 56] = \"ControlLeft\";\n Key2[Key2[\"ControlRight\"] = 57] = \"ControlRight\";\n Key2[Key2[\"Enter\"] = 58] = \"Enter\";\n Key2[Key2[\"MetaLeft\"] = 59] = \"MetaLeft\";\n Key2[Key2[\"MetaRight\"] = 60] = \"MetaRight\";\n Key2[Key2[\"ShiftLeft\"] = 61] = \"ShiftLeft\";\n Key2[Key2[\"ShiftRight\"] = 62] = \"ShiftRight\";\n Key2[Key2[\"Space\"] = 63] = \"Space\";\n Key2[Key2[\"Tab\"] = 64] = \"Tab\";\n Key2[Key2[\"Convert\"] = 65] = \"Convert\";\n Key2[Key2[\"KanaMode\"] = 66] = \"KanaMode\";\n Key2[Key2[\"Lang1\"] = 67] = \"Lang1\";\n Key2[Key2[\"Lang2\"] = 68] = \"Lang2\";\n Key2[Key2[\"Lang3\"] = 69] = \"Lang3\";\n Key2[Key2[\"Lang4\"] = 70] = \"Lang4\";\n Key2[Key2[\"Lang5\"] = 71] = \"Lang5\";\n Key2[Key2[\"NonConvert\"] = 72] = \"NonConvert\";\n Key2[Key2[\"Delete\"] = 73] = \"Delete\";\n Key2[Key2[\"End\"] = 74] = \"End\";\n Key2[Key2[\"Help\"] = 75] = \"Help\";\n Key2[Key2[\"Home\"] = 76] = \"Home\";\n Key2[Key2[\"Insert\"] = 77] = \"Insert\";\n Key2[Key2[\"PageDown\"] = 78] = \"PageDown\";\n Key2[Key2[\"PageUp\"] = 79] = \"PageUp\";\n Key2[Key2[\"ArrowDown\"] = 80] = \"ArrowDown\";\n Key2[Key2[\"ArrowLeft\"] = 81] = \"ArrowLeft\";\n Key2[Key2[\"ArrowRight\"] = 82] = \"ArrowRight\";\n Key2[Key2[\"ArrowUp\"] = 83] = \"ArrowUp\";\n Key2[Key2[\"NumLock\"] = 84] = \"NumLock\";\n Key2[Key2[\"Numpad0\"] = 85] = \"Numpad0\";\n Key2[Key2[\"Numpad1\"] = 86] = \"Numpad1\";\n Key2[Key2[\"Numpad2\"] = 87] = \"Numpad2\";\n Key2[Key2[\"Numpad3\"] = 88] = \"Numpad3\";\n Key2[Key2[\"Numpad4\"] = 89] = \"Numpad4\";\n Key2[Key2[\"Numpad5\"] = 90] = \"Numpad5\";\n Key2[Key2[\"Numpad6\"] = 91] = \"Numpad6\";\n Key2[Key2[\"Numpad7\"] = 92] = \"Numpad7\";\n Key2[Key2[\"Numpad8\"] = 93] = \"Numpad8\";\n Key2[Key2[\"Numpad9\"] = 94] = \"Numpad9\";\n Key2[Key2[\"NumpadAdd\"] = 95] = \"NumpadAdd\";\n Key2[Key2[\"NumpadBackspace\"] = 96] = \"NumpadBackspace\";\n Key2[Key2[\"NumpadClear\"] = 97] = \"NumpadClear\";\n Key2[Key2[\"NumpadClearEntry\"] = 98] = \"NumpadClearEntry\";\n Key2[Key2[\"NumpadComma\"] = 99] = \"NumpadComma\";\n Key2[Key2[\"NumpadDecimal\"] = 100] = \"NumpadDecimal\";\n Key2[Key2[\"NumpadDivide\"] = 101] = \"NumpadDivide\";\n Key2[Key2[\"NumpadEnter\"] = 102] = \"NumpadEnter\";\n Key2[Key2[\"NumpadEqual\"] = 103] = \"NumpadEqual\";\n Key2[Key2[\"NumpadHash\"] = 104] = \"NumpadHash\";\n Key2[Key2[\"NumpadMemoryAdd\"] = 105] = \"NumpadMemoryAdd\";\n Key2[Key2[\"NumpadMemoryClear\"] = 106] = \"NumpadMemoryClear\";\n Key2[Key2[\"NumpadMemoryRecall\"] = 107] = \"NumpadMemoryRecall\";\n Key2[Key2[\"NumpadMemoryStore\"] = 108] = \"NumpadMemoryStore\";\n Key2[Key2[\"NumpadMemorySubtract\"] = 109] = \"NumpadMemorySubtract\";\n Key2[Key2[\"NumpadMultiply\"] = 110] = \"NumpadMultiply\";\n Key2[Key2[\"NumpadParenLeft\"] = 111] = \"NumpadParenLeft\";\n Key2[Key2[\"NumpadParenRight\"] = 112] = \"NumpadParenRight\";\n Key2[Key2[\"NumpadStar\"] = 113] = \"NumpadStar\";\n Key2[Key2[\"NumpadSubtract\"] = 114] = \"NumpadSubtract\";\n Key2[Key2[\"Escape\"] = 115] = \"Escape\";\n Key2[Key2[\"Fn\"] = 116] = \"Fn\";\n Key2[Key2[\"FnLock\"] = 117] = \"FnLock\";\n Key2[Key2[\"PrintScreen\"] = 118] = \"PrintScreen\";\n Key2[Key2[\"ScrollLock\"] = 119] = \"ScrollLock\";\n Key2[Key2[\"Pause\"] = 120] = \"Pause\";\n Key2[Key2[\"BrowserBack\"] = 121] = \"BrowserBack\";\n Key2[Key2[\"BrowserFavorites\"] = 122] = \"BrowserFavorites\";\n Key2[Key2[\"BrowserForward\"] = 123] = \"BrowserForward\";\n Key2[Key2[\"BrowserHome\"] = 124] = \"BrowserHome\";\n Key2[Key2[\"BrowserRefresh\"] = 125] = \"BrowserRefresh\";\n Key2[Key2[\"BrowserSearch\"] = 126] = \"BrowserSearch\";\n Key2[Key2[\"BrowserStop\"] = 127] = \"BrowserStop\";\n Key2[Key2[\"Eject\"] = 128] = \"Eject\";\n Key2[Key2[\"LaunchApp1\"] = 129] = \"LaunchApp1\";\n Key2[Key2[\"LaunchApp2\"] = 130] = \"LaunchApp2\";\n Key2[Key2[\"LaunchMail\"] = 131] = \"LaunchMail\";\n Key2[Key2[\"MediaPlayPause\"] = 132] = \"MediaPlayPause\";\n Key2[Key2[\"MediaSelect\"] = 133] = \"MediaSelect\";\n Key2[Key2[\"MediaStop\"] = 134] = \"MediaStop\";\n Key2[Key2[\"MediaTrackNext\"] = 135] = \"MediaTrackNext\";\n Key2[Key2[\"MediaTrackPrevious\"] = 136] = \"MediaTrackPrevious\";\n Key2[Key2[\"Power\"] = 137] = \"Power\";\n Key2[Key2[\"Sleep\"] = 138] = \"Sleep\";\n Key2[Key2[\"AudioVolumeDown\"] = 139] = \"AudioVolumeDown\";\n Key2[Key2[\"AudioVolumeMute\"] = 140] = \"AudioVolumeMute\";\n Key2[Key2[\"AudioVolumeUp\"] = 141] = \"AudioVolumeUp\";\n Key2[Key2[\"WakeUp\"] = 142] = \"WakeUp\";\n Key2[Key2[\"Hyper\"] = 143] = \"Hyper\";\n Key2[Key2[\"Super\"] = 144] = \"Super\";\n Key2[Key2[\"Turbo\"] = 145] = \"Turbo\";\n Key2[Key2[\"Abort\"] = 146] = \"Abort\";\n Key2[Key2[\"Resume\"] = 147] = \"Resume\";\n Key2[Key2[\"Suspend\"] = 148] = \"Suspend\";\n Key2[Key2[\"Again\"] = 149] = \"Again\";\n Key2[Key2[\"Copy\"] = 150] = \"Copy\";\n Key2[Key2[\"Cut\"] = 151] = \"Cut\";\n Key2[Key2[\"Find\"] = 152] = \"Find\";\n Key2[Key2[\"Open\"] = 153] = \"Open\";\n Key2[Key2[\"Paste\"] = 154] = \"Paste\";\n Key2[Key2[\"Props\"] = 155] = \"Props\";\n Key2[Key2[\"Select\"] = 156] = \"Select\";\n Key2[Key2[\"Undo\"] = 157] = \"Undo\";\n Key2[Key2[\"Hiragana\"] = 158] = \"Hiragana\";\n Key2[Key2[\"Katakana\"] = 159] = \"Katakana\";\n Key2[Key2[\"F1\"] = 160] = \"F1\";\n Key2[Key2[\"F2\"] = 161] = \"F2\";\n Key2[Key2[\"F3\"] = 162] = \"F3\";\n Key2[Key2[\"F4\"] = 163] = \"F4\";\n Key2[Key2[\"F5\"] = 164] = \"F5\";\n Key2[Key2[\"F6\"] = 165] = \"F6\";\n Key2[Key2[\"F7\"] = 166] = \"F7\";\n Key2[Key2[\"F8\"] = 167] = \"F8\";\n Key2[Key2[\"F9\"] = 168] = \"F9\";\n Key2[Key2[\"F10\"] = 169] = \"F10\";\n Key2[Key2[\"F11\"] = 170] = \"F11\";\n Key2[Key2[\"F12\"] = 171] = \"F12\";\n Key2[Key2[\"F13\"] = 172] = \"F13\";\n Key2[Key2[\"F14\"] = 173] = \"F14\";\n Key2[Key2[\"F15\"] = 174] = \"F15\";\n Key2[Key2[\"F16\"] = 175] = \"F16\";\n Key2[Key2[\"F17\"] = 176] = \"F17\";\n Key2[Key2[\"F18\"] = 177] = \"F18\";\n Key2[Key2[\"F19\"] = 178] = \"F19\";\n Key2[Key2[\"F20\"] = 179] = \"F20\";\n Key2[Key2[\"F21\"] = 180] = \"F21\";\n Key2[Key2[\"F22\"] = 181] = \"F22\";\n Key2[Key2[\"F23\"] = 182] = \"F23\";\n Key2[Key2[\"F24\"] = 183] = \"F24\";\n Key2[Key2[\"F25\"] = 184] = \"F25\";\n Key2[Key2[\"F26\"] = 185] = \"F26\";\n Key2[Key2[\"F27\"] = 186] = \"F27\";\n Key2[Key2[\"F28\"] = 187] = \"F28\";\n Key2[Key2[\"F29\"] = 188] = \"F29\";\n Key2[Key2[\"F30\"] = 189] = \"F30\";\n Key2[Key2[\"F31\"] = 190] = \"F31\";\n Key2[Key2[\"F32\"] = 191] = \"F32\";\n Key2[Key2[\"F33\"] = 192] = \"F33\";\n Key2[Key2[\"F34\"] = 193] = \"F34\";\n Key2[Key2[\"F35\"] = 194] = \"F35\";\n})(Key ||= {});\n// js/inputs.ts\nvar MOUSE_OFFSET = 256;\nvar MOUSE_BUTTONS_OFFSET = 16;\nvar KEYBOARD_OFFSET = 0;\nvar EVENT_PAYLOAD_SIZE = 8;\nvar EVENT_PAYLOAD_ALIGN = 4;\nfunction keyToKeyCode(key) {\n return Key[key];\n}\nfunction keyCodeToKey(code) {\n return Key[code];\n}\nfunction mouseButtonToMouseButtonCode(button) {\n return MouseButton[button];\n}\nfunction mouseButtonCodeToMouseButton(code) {\n return MouseButton[code];\n}\n\n// js/contexts/inputContext.ts\nclass InputContext {\n #dataView;\n #keys;\n #mouse;\n constructor(dataView) {\n if (dataView) {\n this.#dataView = dataView;\n }\n }\n get dataView() {\n if (!this.#dataView) {\n throw new Error(\"DataView is not initialized on InputContext\");\n }\n return this.#dataView;\n }\n set dataView(dataView) {\n this.#dataView = dataView;\n this.#keys = undefined;\n this.#mouse = undefined;\n }\n get keys() {\n if (!this.#keys) {\n this.#keys = new KeyboardContext(new DataView(this.dataView.buffer, this.dataView.byteOffset + KEYBOARD_OFFSET));\n }\n return this.#keys;\n }\n get mouse() {\n if (!this.#mouse) {\n this.#mouse = new MouseContext(new DataView(this.dataView.buffer, this.dataView.byteOffset + MOUSE_OFFSET));\n }\n return this.#mouse;\n }\n}\n\nclass MouseContext {\n #dataView;\n #buttonStates = new Map;\n constructor(dataView) {\n this.#dataView = dataView;\n }\n get x() {\n return this.#dataView.getFloat32(0, true);\n }\n get y() {\n return this.#dataView.getFloat32(4, true);\n }\n get wheel() {\n return { x: this.wheelX, y: this.wheelY };\n }\n get wheelX() {\n return this.#dataView.getFloat32(8, true);\n }\n get wheelY() {\n return this.#dataView.getFloat32(12, true);\n }\n get left() {\n return this.#buttonState(1 /* Left */);\n }\n get right() {\n return this.#buttonState(3 /* Right */);\n }\n get middle() {\n return this.#buttonState(2 /* Middle */);\n }\n #buttonState(code) {\n let state;\n if (this.#buttonStates.has(code)) {\n state = this.#buttonStates.get(code);\n } else {\n state = { down: false, held: false, up: false };\n this.#buttonStates.set(code, state);\n }\n const offset = MOUSE_BUTTONS_OFFSET;\n state.held = !!(this.#dataView.getUint8(offset + code) & 1);\n state.down = state.held && !(this.#dataView.getUint8(offset + code) & 2);\n state.up = !state.held && !!(this.#dataView.getUint8(offset + code) & 2);\n return state;\n }\n}\n\nclass KeyboardContext {\n #dataView;\n #keystates = new Map;\n constructor(dataView) {\n this.#dataView = dataView;\n }\n get shift() {\n return this.shiftLeft || this.shiftRight;\n }\n get alt() {\n return this.altLeft || this.altRight;\n }\n get control() {\n return this.controlLeft || this.controlRight;\n }\n get meta() {\n return this.metaLeft || this.metaRight;\n }\n get backquote() {\n return this.#keystate(1 /* Backquote */);\n }\n get backslash() {\n return this.#keystate(2 /* Backslash */);\n }\n get bracketLeft() {\n return this.#keystate(3 /* BracketLeft */);\n }\n get bracketRight() {\n return this.#keystate(4 /* BracketRight */);\n }\n get comma() {\n return this.#keystate(5 /* Comma */);\n }\n get digit0() {\n return this.#keystate(6 /* Digit0 */);\n }\n get digit1() {\n return this.#keystate(7 /* Digit1 */);\n }\n get digit2() {\n return this.#keystate(8 /* Digit2 */);\n }\n get digit3() {\n return this.#keystate(9 /* Digit3 */);\n }\n get digit4() {\n return this.#keystate(10 /* Digit4 */);\n }\n get digit5() {\n return this.#keystate(11 /* Digit5 */);\n }\n get digit6() {\n return this.#keystate(12 /* Digit6 */);\n }\n get digit7() {\n return this.#keystate(13 /* Digit7 */);\n }\n get digit8() {\n return this.#keystate(14 /* Digit8 */);\n }\n get digit9() {\n return this.#keystate(15 /* Digit9 */);\n }\n get equal() {\n return this.#keystate(16 /* Equal */);\n }\n get intlBackslash() {\n return this.#keystate(17 /* IntlBackslash */);\n }\n get intlRo() {\n return this.#keystate(18 /* IntlRo */);\n }\n get intlYen() {\n return this.#keystate(19 /* IntlYen */);\n }\n get a() {\n return this.#keystate(20 /* KeyA */);\n }\n get b() {\n return this.#keystate(21 /* KeyB */);\n }\n get c() {\n return this.#keystate(22 /* KeyC */);\n }\n get d() {\n return this.#keystate(23 /* KeyD */);\n }\n get e() {\n return this.#keystate(24 /* KeyE */);\n }\n get f() {\n return this.#keystate(25 /* KeyF */);\n }\n get g() {\n return this.#keystate(26 /* KeyG */);\n }\n get h() {\n return this.#keystate(27 /* KeyH */);\n }\n get i() {\n return this.#keystate(28 /* KeyI */);\n }\n get j() {\n return this.#keystate(29 /* KeyJ */);\n }\n get k() {\n return this.#keystate(30 /* KeyK */);\n }\n get l() {\n return this.#keystate(31 /* KeyL */);\n }\n get m() {\n return this.#keystate(32 /* KeyM */);\n }\n get n() {\n return this.#keystate(33 /* KeyN */);\n }\n get o() {\n return this.#keystate(34 /* KeyO */);\n }\n get p() {\n return this.#keystate(35 /* KeyP */);\n }\n get q() {\n return this.#keystate(36 /* KeyQ */);\n }\n get r() {\n return this.#keystate(37 /* KeyR */);\n }\n get s() {\n return this.#keystate(38 /* KeyS */);\n }\n get t() {\n return this.#keystate(39 /* KeyT */);\n }\n get u() {\n return this.#keystate(40 /* KeyU */);\n }\n get v() {\n return this.#keystate(41 /* KeyV */);\n }\n get w() {\n return this.#keystate(42 /* KeyW */);\n }\n get x() {\n return this.#keystate(43 /* KeyX */);\n }\n get y() {\n return this.#keystate(44 /* KeyY */);\n }\n get z() {\n return this.#keystate(45 /* KeyZ */);\n }\n get minus() {\n return this.#keystate(46 /* Minus */);\n }\n get period() {\n return this.#keystate(47 /* Period */);\n }\n get quote() {\n return this.#keystate(48 /* Quote */);\n }\n get semicolon() {\n return this.#keystate(49 /* Semicolon */);\n }\n get slash() {\n return this.#keystate(50 /* Slash */);\n }\n get altLeft() {\n return this.#keystate(51 /* AltLeft */);\n }\n get altRight() {\n return this.#keystate(52 /* AltRight */);\n }\n get backspace() {\n return this.#keystate(53 /* Backspace */);\n }\n get capsLock() {\n return this.#keystate(54 /* CapsLock */);\n }\n get contextMenu() {\n return this.#keystate(55 /* ContextMenu */);\n }\n get controlLeft() {\n return this.#keystate(56 /* ControlLeft */);\n }\n get controlRight() {\n return this.#keystate(57 /* ControlRight */);\n }\n get enter() {\n return this.#keystate(58 /* Enter */);\n }\n get metaLeft() {\n return this.#keystate(59 /* MetaLeft */);\n }\n get metaRight() {\n return this.#keystate(60 /* MetaRight */);\n }\n get shiftLeft() {\n return this.#keystate(61 /* ShiftLeft */);\n }\n get shiftRight() {\n return this.#keystate(62 /* ShiftRight */);\n }\n get space() {\n return this.#keystate(63 /* Space */);\n }\n get tab() {\n return this.#keystate(64 /* Tab */);\n }\n get convert() {\n return this.#keystate(65 /* Convert */);\n }\n get kanaMode() {\n return this.#keystate(66 /* KanaMode */);\n }\n get lang1() {\n return this.#keystate(67 /* Lang1 */);\n }\n get lang2() {\n return this.#keystate(68 /* Lang2 */);\n }\n get lang3() {\n return this.#keystate(69 /* Lang3 */);\n }\n get lang4() {\n return this.#keystate(70 /* Lang4 */);\n }\n get lang5() {\n return this.#keystate(71 /* Lang5 */);\n }\n get nonConvert() {\n return this.#keystate(72 /* NonConvert */);\n }\n get delete() {\n return this.#keystate(73 /* Delete */);\n }\n get end() {\n return this.#keystate(74 /* End */);\n }\n get help() {\n return this.#keystate(75 /* Help */);\n }\n get home() {\n return this.#keystate(76 /* Home */);\n }\n get insert() {\n return this.#keystate(77 /* Insert */);\n }\n get pageDown() {\n return this.#keystate(78 /* PageDown */);\n }\n get pageUp() {\n return this.#keystate(79 /* PageUp */);\n }\n get arrowDown() {\n return this.#keystate(80 /* ArrowDown */);\n }\n get arrowLeft() {\n return this.#keystate(81 /* ArrowLeft */);\n }\n get arrowRight() {\n return this.#keystate(82 /* ArrowRight */);\n }\n get arrowUp() {\n return this.#keystate(83 /* ArrowUp */);\n }\n get numLock() {\n return this.#keystate(84 /* NumLock */);\n }\n get numpad0() {\n return this.#keystate(85 /* Numpad0 */);\n }\n get numpad1() {\n return this.#keystate(86 /* Numpad1 */);\n }\n get numpad2() {\n return this.#keystate(87 /* Numpad2 */);\n }\n get numpad3() {\n return this.#keystate(88 /* Numpad3 */);\n }\n get numpad4() {\n return this.#keystate(89 /* Numpad4 */);\n }\n get numpad5() {\n return this.#keystate(90 /* Numpad5 */);\n }\n get numpad6() {\n return this.#keystate(91 /* Numpad6 */);\n }\n get numpad7() {\n return this.#keystate(92 /* Numpad7 */);\n }\n get numpad8() {\n return this.#keystate(93 /* Numpad8 */);\n }\n get numpad9() {\n return this.#keystate(94 /* Numpad9 */);\n }\n get numpadAdd() {\n return this.#keystate(95 /* NumpadAdd */);\n }\n get numpadBackspace() {\n return this.#keystate(96 /* NumpadBackspace */);\n }\n get numpadClear() {\n return this.#keystate(97 /* NumpadClear */);\n }\n get numpadClearEntry() {\n return this.#keystate(98 /* NumpadClearEntry */);\n }\n get numpadComma() {\n return this.#keystate(99 /* NumpadComma */);\n }\n get numpadDecimal() {\n return this.#keystate(100 /* NumpadDecimal */);\n }\n get numpadDivide() {\n return this.#keystate(101 /* NumpadDivide */);\n }\n get numpadEnter() {\n return this.#keystate(102 /* NumpadEnter */);\n }\n get numpadEqual() {\n return this.#keystate(103 /* NumpadEqual */);\n }\n get numpadHash() {\n return this.#keystate(104 /* NumpadHash */);\n }\n get numpadMemoryAdd() {\n return this.#keystate(105 /* NumpadMemoryAdd */);\n }\n get numpadMemoryClear() {\n return this.#keystate(106 /* NumpadMemoryClear */);\n }\n get numpadMemoryRecall() {\n return this.#keystate(107 /* NumpadMemoryRecall */);\n }\n get numpadMemoryStore() {\n return this.#keystate(108 /* NumpadMemoryStore */);\n }\n get numpadMemorySubtract() {\n return this.#keystate(109 /* NumpadMemorySubtract */);\n }\n get numpadMultiply() {\n return this.#keystate(110 /* NumpadMultiply */);\n }\n get numpadParenLeft() {\n return this.#keystate(111 /* NumpadParenLeft */);\n }\n get numpadParenRight() {\n return this.#keystate(112 /* NumpadParenRight */);\n }\n get numpadStar() {\n return this.#keystate(113 /* NumpadStar */);\n }\n get numpadSubtract() {\n return this.#keystate(114 /* NumpadSubtract */);\n }\n get escape() {\n return this.#keystate(115 /* Escape */);\n }\n get fn() {\n return this.#keystate(116 /* Fn */);\n }\n get fnLock() {\n return this.#keystate(117 /* FnLock */);\n }\n get printScreen() {\n return this.#keystate(118 /* PrintScreen */);\n }\n get scrollLock() {\n return this.#keystate(119 /* ScrollLock */);\n }\n get pause() {\n return this.#keystate(120 /* Pause */);\n }\n get browserBack() {\n return this.#keystate(121 /* BrowserBack */);\n }\n get browserFavorites() {\n return this.#keystate(122 /* BrowserFavorites */);\n }\n get browserForward() {\n return this.#keystate(123 /* BrowserForward */);\n }\n get browserHome() {\n return this.#keystate(124 /* BrowserHome */);\n }\n get browserRefresh() {\n return this.#keystate(125 /* BrowserRefresh */);\n }\n get browserSearch() {\n return this.#keystate(126 /* BrowserSearch */);\n }\n get browserStop() {\n return this.#keystate(127 /* BrowserStop */);\n }\n get eject() {\n return this.#keystate(128 /* Eject */);\n }\n get launchApp1() {\n return this.#keystate(129 /* LaunchApp1 */);\n }\n get launchApp2() {\n return this.#keystate(130 /* LaunchApp2 */);\n }\n get launchMail() {\n return this.#keystate(131 /* LaunchMail */);\n }\n get mediaPlayPause() {\n return this.#keystate(132 /* MediaPlayPause */);\n }\n get mediaSelect() {\n return this.#keystate(133 /* MediaSelect */);\n }\n get mediaStop() {\n return this.#keystate(134 /* MediaStop */);\n }\n get mediaTrackNext() {\n return this.#keystate(135 /* MediaTrackNext */);\n }\n get mediaTrackPrevious() {\n return this.#keystate(136 /* MediaTrackPrevious */);\n }\n get power() {\n return this.#keystate(137 /* Power */);\n }\n get sleep() {\n return this.#keystate(138 /* Sleep */);\n }\n get audioVolumeDown() {\n return this.#keystate(139 /* AudioVolumeDown */);\n }\n get audioVolumeMute() {\n return this.#keystate(140 /* AudioVolumeMute */);\n }\n get audioVolumeUp() {\n return this.#keystate(141 /* AudioVolumeUp */);\n }\n get wakeUp() {\n return this.#keystate(142 /* WakeUp */);\n }\n get hyper() {\n return this.#keystate(143 /* Hyper */);\n }\n get super() {\n return this.#keystate(144 /* Super */);\n }\n get turbo() {\n return this.#keystate(145 /* Turbo */);\n }\n get abort() {\n return this.#keystate(146 /* Abort */);\n }\n get resume() {\n return this.#keystate(147 /* Resume */);\n }\n get suspend() {\n return this.#keystate(148 /* Suspend */);\n }\n get again() {\n return this.#keystate(149 /* Again */);\n }\n get copy() {\n return this.#keystate(150 /* Copy */);\n }\n get cut() {\n return this.#keystate(151 /* Cut */);\n }\n get find() {\n return this.#keystate(152 /* Find */);\n }\n get open() {\n return this.#keystate(153 /* Open */);\n }\n get paste() {\n return this.#keystate(154 /* Paste */);\n }\n get props() {\n return this.#keystate(155 /* Props */);\n }\n get select() {\n return this.#keystate(156 /* Select */);\n }\n get undo() {\n return this.#keystate(157 /* Undo */);\n }\n get hiragana() {\n return this.#keystate(158 /* Hiragana */);\n }\n get katakana() {\n return this.#keystate(159 /* Katakana */);\n }\n get f1() {\n return this.#keystate(160 /* F1 */);\n }\n get f2() {\n return this.#keystate(161 /* F2 */);\n }\n get f3() {\n return this.#keystate(162 /* F3 */);\n }\n get f4() {\n return this.#keystate(163 /* F4 */);\n }\n get f5() {\n return this.#keystate(164 /* F5 */);\n }\n get f6() {\n return this.#keystate(165 /* F6 */);\n }\n get f7() {\n return this.#keystate(166 /* F7 */);\n }\n get f8() {\n return this.#keystate(167 /* F8 */);\n }\n get f9() {\n return this.#keystate(168 /* F9 */);\n }\n get f10() {\n return this.#keystate(169 /* F10 */);\n }\n get f11() {\n return this.#keystate(170 /* F11 */);\n }\n get f12() {\n return this.#keystate(171 /* F12 */);\n }\n get f13() {\n return this.#keystate(172 /* F13 */);\n }\n get f14() {\n return this.#keystate(173 /* F14 */);\n }\n get f15() {\n return this.#keystate(174 /* F15 */);\n }\n get f16() {\n return this.#keystate(175 /* F16 */);\n }\n get f17() {\n return this.#keystate(176 /* F17 */);\n }\n get f18() {\n return this.#keystate(177 /* F18 */);\n }\n get f19() {\n return this.#keystate(178 /* F19 */);\n }\n get f20() {\n return this.#keystate(179 /* F20 */);\n }\n get f21() {\n return this.#keystate(180 /* F21 */);\n }\n get f22() {\n return this.#keystate(181 /* F22 */);\n }\n get f23() {\n return this.#keystate(182 /* F23 */);\n }\n get f24() {\n return this.#keystate(183 /* F24 */);\n }\n get f25() {\n return this.#keystate(184 /* F25 */);\n }\n get f26() {\n return this.#keystate(185 /* F26 */);\n }\n get f27() {\n return this.#keystate(186 /* F27 */);\n }\n get f28() {\n return this.#keystate(187 /* F28 */);\n }\n get f29() {\n return this.#keystate(188 /* F29 */);\n }\n get f30() {\n return this.#keystate(189 /* F30 */);\n }\n get f31() {\n return this.#keystate(190 /* F31 */);\n }\n get f32() {\n return this.#keystate(191 /* F32 */);\n }\n get f33() {\n return this.#keystate(192 /* F33 */);\n }\n get f34() {\n return this.#keystate(193 /* F34 */);\n }\n get f35() {\n return this.#keystate(194 /* F35 */);\n }\n #keystate(code) {\n let state;\n if (this.#keystates.has(code)) {\n state = this.#keystates.get(code);\n } else {\n state = { down: false, held: false, up: false };\n this.#keystates.set(code, state);\n }\n state.held = !!(this.#dataView.getUint8(code) & 1);\n state.down = state.held && !(this.#dataView.getUint8(code) & 2);\n state.up = !state.held && !!(this.#dataView.getUint8(code) & 2);\n return state;\n }\n}\n// js/contexts/timeContext.ts\nclass TimeContext {\n dataView;\n constructor(dataView) {\n this.dataView = dataView;\n }\n get frame() {\n if (!this.dataView) {\n throw new Error(\"TimeContext DataView is not initialized\");\n }\n return this.dataView.getUint32(0, true);\n }\n get dt() {\n if (!this.dataView) {\n throw new Error(\"TimeContext DataView is not initialized\");\n }\n return this.dataView.getUint32(4, true) / 1000;\n }\n get time() {\n if (!this.dataView) {\n throw new Error(\"TimeContext DataView is not initialized\");\n }\n return this.dataView.getUint32(8, true) / 1000;\n }\n}\n\n// js/engine.ts\nvar DEFAULT_WASM_URL = new URL(\"../wasm/bloop.wasm\", import.meta.url);\nvar TIME_CTX_OFFSET = 0;\nvar INPUT_CTX_OFFSET = TIME_CTX_OFFSET + 4;\nvar EVENTS_OFFSET = INPUT_CTX_OFFSET + 4;\nvar SNAPSHOT_HEADER_LEN = 16;\nvar SNAPSHOT_HEADER_USER_LEN_OFFSET = 4;\nvar SNAPSHOT_HEADER_ENGINE_LEN_OFFSET = 8;\nexport {\n mouseButtonToMouseButtonCode,\n mouseButtonCodeToMouseButton,\n keyToKeyCode,\n keyCodeToKey,\n TimeContext,\n TIME_CTX_OFFSET,\n SNAPSHOT_HEADER_USER_LEN_OFFSET,\n SNAPSHOT_HEADER_LEN,\n SNAPSHOT_HEADER_ENGINE_LEN_OFFSET,\n MouseContext,\n MOUSE_OFFSET,\n MOUSE_BUTTONS_OFFSET,\n KeyboardContext,\n KEYBOARD_OFFSET,\n InputContext,\n INPUT_CTX_OFFSET,\n exports_enums as Enums,\n EVENT_PAYLOAD_SIZE,\n EVENT_PAYLOAD_ALIGN,\n EVENTS_OFFSET,\n DEFAULT_WASM_URL\n};\n\n//# debugId=C8014A483C57B10D64756E2164756E21\n//# sourceMappingURL=engine.js.map\n",
7
- "import { type Bloop, type MountOpts, mount, type Sim } from \"@bloopjs/bloop\";\nimport type { Key } from \"@bloopjs/engine\";\nimport { mouseButtonCodeToMouseButton } from \"@bloopjs/engine\";\n\nexport type StartOptions = {\n /** A bloop game instance */\n game: Bloop<any>;\n /** A pre-mounted sim instance, defaults to mount with default options */\n sim?: Sim;\n /** An override url to use to fetch the engine wasm */\n engineWasmUrl?: URL;\n /** Whether the sim should pause before running the first frame, defaults to false */\n startPaused?: boolean;\n /** Whether the sim should be recording to tape from initialization, defaults to true */\n startRecording?: boolean;\n};\n\n/** Start a bloop game on the web */\nexport async function start(opts: StartOptions): Promise<App> {\n if (!opts.sim) {\n const { sim } = await mount({\n hooks: opts.game.hooks,\n startRecording: opts.startRecording ?? true,\n wasmUrl: opts.engineWasmUrl,\n });\n opts.sim = sim;\n }\n\n const app = new App(opts.sim, opts.game);\n return app;\n}\n\nexport class App {\n #sim: Sim;\n game: Bloop<any>;\n /** RequestAnimationFrame handle for cancelling */\n #rafHandle: number | null = null;\n #unsubscribe: UnsubscribeFn | null = null;\n #now: number = performance.now();\n\n constructor(sim: Sim, game: Bloop<any>) {\n this.#sim = sim;\n this.game = game;\n\n this.game.hooks.beforeFrame = (frame: number) => {\n this.beforeFrame.notify(frame);\n };\n\n this.subscribe();\n }\n\n get sim(): Sim {\n return this.#sim;\n }\n\n set sim(sim: Sim) {\n this.#sim = sim;\n }\n\n beforeFrame = createListener<[number]>();\n afterFrame = createListener<[number]>();\n\n /** Subscribe to the browser events and start the render loop */\n subscribe(): void {\n const handleKeydown = (event: KeyboardEvent) => {\n this.sim.emit.keydown(event.code as Key);\n };\n window.addEventListener(\"keydown\", handleKeydown);\n\n const handleKeyup = (event: KeyboardEvent) => {\n this.sim.emit.keyup(event.code as Key);\n };\n window.addEventListener(\"keyup\", handleKeyup);\n\n const handleMousemove = (event: MouseEvent) => {\n this.sim.emit.mousemove(event.clientX, event.clientY);\n };\n window.addEventListener(\"mousemove\", handleMousemove);\n\n const handleMousedown = (event: MouseEvent) => {\n this.sim.emit.mousedown(mouseButtonCodeToMouseButton(event.button + 1));\n };\n window.addEventListener(\"mousedown\", handleMousedown);\n\n const handleMouseup = (event: MouseEvent) => {\n this.sim.emit.mouseup(mouseButtonCodeToMouseButton(event.button + 1));\n };\n window.addEventListener(\"mouseup\", handleMouseup);\n\n const handleMousewheel = (event: WheelEvent) => {\n this.sim.emit.mousewheel(event.deltaX, event.deltaY);\n };\n window.addEventListener(\"wheel\", handleMousewheel);\n\n // Touch events for mobile support\n const handleTouchstart = (event: TouchEvent) => {\n const touch = event.touches[0];\n if (touch) {\n this.sim.emit.mousemove(touch.clientX, touch.clientY);\n this.sim.emit.mousedown(\"Left\");\n }\n };\n window.addEventListener(\"touchstart\", handleTouchstart);\n\n const handleTouchend = () => {\n this.sim.emit.mouseup(\"Left\");\n };\n window.addEventListener(\"touchend\", handleTouchend);\n\n const handleTouchmove = (event: TouchEvent) => {\n const touch = event.touches[0];\n if (touch) {\n this.sim.emit.mousemove(touch.clientX, touch.clientY);\n }\n };\n window.addEventListener(\"touchmove\", handleTouchmove);\n\n const playbarHotkeys = (event: KeyboardEvent) => {\n const isPauseHotkey =\n event.key === \"Enter\" && (event.ctrlKey || event.metaKey);\n if (isPauseHotkey || event.key === \"6\") {\n this.sim.isPaused ? this.sim.unpause() : this.sim.pause();\n }\n\n if (this.sim.isPaused) {\n switch (event.key) {\n case \",\":\n case \"5\":\n this.sim.stepBack();\n break;\n case \".\":\n case \"7\":\n this.sim.step();\n break;\n }\n }\n };\n window.addEventListener(\"keydown\", playbarHotkeys);\n\n const frame = () => {\n this.sim.step(performance.now() - this.#now);\n if (!this.sim.isPaused) {\n try {\n this.afterFrame.notify(this.sim.time.frame);\n } catch (e) {\n console.error(\"Error in afterFrame listeners:\", e);\n }\n }\n this.#now = performance.now();\n this.#rafHandle = requestAnimationFrame(frame);\n };\n frame();\n\n this.#unsubscribe = () => {\n window.removeEventListener(\"keydown\", handleKeydown);\n window.removeEventListener(\"keyup\", handleKeyup);\n window.removeEventListener(\"mousemove\", handleMousemove);\n window.removeEventListener(\"mousedown\", handleMousedown);\n window.removeEventListener(\"mouseup\", handleMouseup);\n window.removeEventListener(\"wheel\", handleMousewheel);\n window.removeEventListener(\"keydown\", playbarHotkeys);\n window.removeEventListener(\"touchstart\", handleTouchstart);\n window.removeEventListener(\"touchend\", handleTouchend);\n window.removeEventListener(\"touchmove\", handleTouchmove);\n if (this.#rafHandle != null) {\n cancelAnimationFrame(this.#rafHandle);\n }\n };\n }\n\n /** Clean up wasm resources and event listeners */\n cleanup(): void {\n this.#unsubscribe?.();\n this.sim.unmount();\n this.beforeFrame.unsubscribeAll();\n this.afterFrame.unsubscribeAll();\n }\n\n async acceptHmr(module: any, opts?: Partial<MountOpts>): Promise<void> {\n const game = (module.game ?? module) as Bloop<any>;\n if (!game.hooks) {\n throw new Error(\n `HMR: missing game.hooks export on module: ${JSON.stringify(module)}`\n );\n }\n\n // load session from the current sim\n this.sim.pause();\n const { sim } = await mount({\n hooks: game.hooks,\n wasmUrl: new URL(\"/bloop-wasm/bloop.wasm\", window.location.href),\n ...opts,\n });\n sim.cloneSession(this.sim);\n this.sim.unmount();\n this.sim = sim;\n this.game = game;\n }\n}\n\nfunction createListener<T extends any[]>() {\n const listeners = new Set<(...args: T) => void>();\n\n const subscribe = (callback: (...args: T) => void): (() => void) => {\n listeners.add(callback);\n\n // Return unsubscribe function\n return () => {\n listeners.delete(callback);\n };\n };\n\n const notify = (...args: T): void => {\n listeners.forEach((callback) => {\n callback(...args);\n });\n };\n\n return {\n subscribe,\n notify,\n unsubscribeAll: () => listeners.clear(),\n };\n}\n\nexport type UnsubscribeFn = () => void;\n"
7
+ "import { type Bloop, type MountOpts, mount, type Sim } from \"@bloopjs/bloop\";\nimport type { Key } from \"@bloopjs/engine\";\nimport { mouseButtonCodeToMouseButton } from \"@bloopjs/engine\";\n\nexport type StartOptions = {\n /** A bloop game instance */\n game: Bloop<any>;\n /** A pre-mounted sim instance, defaults to mount with default options */\n sim?: Sim;\n /** An override url to use to fetch the engine wasm */\n engineWasmUrl?: URL;\n /** Whether the sim should pause before running the first frame, defaults to false */\n startPaused?: boolean;\n /** Whether the sim should be recording to tape from initialization, defaults to true */\n startRecording?: boolean;\n};\n\n/** Start a bloop game on the web */\nexport async function start(opts: StartOptions): Promise<App> {\n if (!opts.sim) {\n const { sim } = await mount({\n hooks: opts.game.hooks,\n startRecording: opts.startRecording ?? true,\n wasmUrl: opts.engineWasmUrl,\n });\n opts.sim = sim;\n }\n\n const app = new App(opts.sim, opts.game);\n return app;\n}\n\nexport class App {\n #sim: Sim;\n game: Bloop<any>;\n /** RequestAnimationFrame handle for cancelling */\n #rafHandle: number | null = null;\n #unsubscribe: UnsubscribeFn | null = null;\n #now: number = performance.now();\n\n constructor(sim: Sim, game: Bloop<any>) {\n this.#sim = sim;\n this.game = game;\n\n this.game.hooks.beforeFrame = (frame: number) => {\n this.beforeFrame.notify(frame);\n };\n\n this.subscribe();\n }\n\n get sim(): Sim {\n return this.#sim;\n }\n\n set sim(sim: Sim) {\n this.#sim = sim;\n }\n\n beforeFrame: ReturnType<typeof createListener> = createListener<[number]>();\n afterFrame: ReturnType<typeof createListener> = createListener<[number]>();\n\n /** Subscribe to the browser events and start the render loop */\n subscribe(): void {\n const handleKeydown = (event: KeyboardEvent) => {\n this.sim.emit.keydown(event.code as Key);\n };\n window.addEventListener(\"keydown\", handleKeydown);\n\n const handleKeyup = (event: KeyboardEvent) => {\n this.sim.emit.keyup(event.code as Key);\n };\n window.addEventListener(\"keyup\", handleKeyup);\n\n const handleMousemove = (event: MouseEvent) => {\n this.sim.emit.mousemove(event.clientX, event.clientY);\n };\n window.addEventListener(\"mousemove\", handleMousemove);\n\n const handleMousedown = (event: MouseEvent) => {\n this.sim.emit.mousedown(mouseButtonCodeToMouseButton(event.button + 1));\n };\n window.addEventListener(\"mousedown\", handleMousedown);\n\n const handleMouseup = (event: MouseEvent) => {\n this.sim.emit.mouseup(mouseButtonCodeToMouseButton(event.button + 1));\n };\n window.addEventListener(\"mouseup\", handleMouseup);\n\n const handleMousewheel = (event: WheelEvent) => {\n this.sim.emit.mousewheel(event.deltaX, event.deltaY);\n };\n window.addEventListener(\"wheel\", handleMousewheel);\n\n // Touch events for mobile support\n const handleTouchstart = (event: TouchEvent) => {\n const touch = event.touches[0];\n if (touch) {\n this.sim.emit.mousemove(touch.clientX, touch.clientY);\n this.sim.emit.mousedown(\"Left\");\n }\n };\n window.addEventListener(\"touchstart\", handleTouchstart);\n\n const handleTouchend = () => {\n this.sim.emit.mouseup(\"Left\");\n };\n window.addEventListener(\"touchend\", handleTouchend);\n\n const handleTouchmove = (event: TouchEvent) => {\n const touch = event.touches[0];\n if (touch) {\n this.sim.emit.mousemove(touch.clientX, touch.clientY);\n }\n };\n window.addEventListener(\"touchmove\", handleTouchmove);\n\n const playbarHotkeys = (event: KeyboardEvent) => {\n const isPauseHotkey =\n event.key === \"Enter\" && (event.ctrlKey || event.metaKey);\n if (isPauseHotkey || event.key === \"6\") {\n this.sim.isPaused ? this.sim.unpause() : this.sim.pause();\n }\n\n if (this.sim.isPaused) {\n switch (event.key) {\n case \",\":\n case \"5\":\n this.sim.stepBack();\n break;\n case \".\":\n case \"7\":\n this.sim.step();\n break;\n }\n }\n };\n window.addEventListener(\"keydown\", playbarHotkeys);\n\n const frame = () => {\n this.sim.step(performance.now() - this.#now);\n if (!this.sim.isPaused) {\n try {\n this.afterFrame.notify(this.sim.time.frame);\n } catch (e) {\n console.error(\"Error in afterFrame listeners:\", e);\n }\n }\n this.#now = performance.now();\n this.#rafHandle = requestAnimationFrame(frame);\n };\n frame();\n\n this.#unsubscribe = () => {\n window.removeEventListener(\"keydown\", handleKeydown);\n window.removeEventListener(\"keyup\", handleKeyup);\n window.removeEventListener(\"mousemove\", handleMousemove);\n window.removeEventListener(\"mousedown\", handleMousedown);\n window.removeEventListener(\"mouseup\", handleMouseup);\n window.removeEventListener(\"wheel\", handleMousewheel);\n window.removeEventListener(\"keydown\", playbarHotkeys);\n window.removeEventListener(\"touchstart\", handleTouchstart);\n window.removeEventListener(\"touchend\", handleTouchend);\n window.removeEventListener(\"touchmove\", handleTouchmove);\n if (this.#rafHandle != null) {\n cancelAnimationFrame(this.#rafHandle);\n }\n };\n }\n\n /** Clean up wasm resources and event listeners */\n cleanup(): void {\n this.#unsubscribe?.();\n this.sim.unmount();\n this.beforeFrame.unsubscribeAll();\n this.afterFrame.unsubscribeAll();\n }\n\n async acceptHmr(module: any, opts?: Partial<MountOpts>): Promise<void> {\n const game = (module.game ?? module) as Bloop<any>;\n if (!game.hooks) {\n throw new Error(\n `HMR: missing game.hooks export on module: ${JSON.stringify(module)}`\n );\n }\n\n // load session from the current sim\n this.sim.pause();\n const { sim } = await mount({\n hooks: game.hooks,\n wasmUrl: new URL(\"/bloop-wasm/bloop.wasm\", window.location.href),\n ...opts,\n });\n sim.cloneSession(this.sim);\n this.sim.unmount();\n this.sim = sim;\n this.game = game;\n }\n}\n\nfunction createListener<T extends any[]>(): {\n subscribe: (callback: (...args: T) => void) => UnsubscribeFn;\n notify: (...args: T) => void;\n unsubscribeAll: UnsubscribeFn;\n} {\n const listeners = new Set<(...args: T) => void>();\n\n const subscribe = (callback: (...args: T) => void): (() => void) => {\n listeners.add(callback);\n\n // Return unsubscribe function\n return () => {\n listeners.delete(callback);\n };\n };\n\n const notify = (...args: T): void => {\n listeners.forEach((callback) => {\n callback(...args);\n });\n };\n\n return {\n subscribe,\n notify,\n unsubscribeAll: () => listeners.clear(),\n };\n}\n\nexport type UnsubscribeFn = () => void;\n"
8
8
  ],
9
- "mappings": "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",
9
+ "mappings": "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",
10
10
  "debugId": "6903EE465E71BF4D64756E2164756E21",
11
11
  "names": []
12
12
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bloopjs/web",
3
- "version": "0.0.36",
3
+ "version": "0.0.38",
4
4
  "author": "Neil Sarkar",
5
5
  "type": "module",
6
6
  "repository": {
@@ -33,7 +33,7 @@
33
33
  "typescript": "^5"
34
34
  },
35
35
  "dependencies": {
36
- "@bloopjs/bloop": "0.0.36",
37
- "@bloopjs/engine": "0.0.36"
36
+ "@bloopjs/bloop": "0.0.38",
37
+ "@bloopjs/engine": "0.0.38"
38
38
  }
39
39
  }
package/src/App.ts CHANGED
@@ -57,8 +57,8 @@ export class App {
57
57
  this.#sim = sim;
58
58
  }
59
59
 
60
- beforeFrame = createListener<[number]>();
61
- afterFrame = createListener<[number]>();
60
+ beforeFrame: ReturnType<typeof createListener> = createListener<[number]>();
61
+ afterFrame: ReturnType<typeof createListener> = createListener<[number]>();
62
62
 
63
63
  /** Subscribe to the browser events and start the render loop */
64
64
  subscribe(): void {
@@ -198,7 +198,11 @@ export class App {
198
198
  }
199
199
  }
200
200
 
201
- function createListener<T extends any[]>() {
201
+ function createListener<T extends any[]>(): {
202
+ subscribe: (callback: (...args: T) => void) => UnsubscribeFn;
203
+ notify: (...args: T) => void;
204
+ unsubscribeAll: UnsubscribeFn;
205
+ } {
202
206
  const listeners = new Set<(...args: T) => void>();
203
207
 
204
208
  const subscribe = (callback: (...args: T) => void): (() => void) => {