@bloopjs/web 0.0.0 → 0.0.27

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/mod.d.ts CHANGED
@@ -1,2 +1,3 @@
1
- export declare function sum(a: number, b: number): number;
1
+ import { type Runtime } from "@bloopjs/bloop";
2
+ export declare function connect(runtime: Runtime): () => void;
2
3
  //# sourceMappingURL=mod.d.ts.map
package/dist/mod.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../src/mod.ts"],"names":[],"mappings":"AAAA,wBAAgB,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAEhD"}
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../src/mod.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAG9C,wBAAgB,OAAO,CAAC,OAAO,EAAE,OAAO,cAsEvC"}
package/dist/mod.js CHANGED
@@ -1,10 +1,1012 @@
1
+ // node_modules/@bloopjs/engine/dist/engine.js
2
+ var __defProp = Object.defineProperty;
3
+ var __export = (target, all) => {
4
+ for (var name in all)
5
+ __defProp(target, name, {
6
+ get: all[name],
7
+ enumerable: true,
8
+ configurable: true,
9
+ set: (newValue) => all[name] = () => newValue
10
+ });
11
+ };
12
+ var exports_enums = {};
13
+ __export(exports_enums, {
14
+ MouseButton: () => MouseButton,
15
+ Key: () => Key,
16
+ EventType: () => EventType
17
+ });
18
+ var EventType;
19
+ ((EventType2) => {
20
+ EventType2[EventType2["None"] = 0] = "None";
21
+ EventType2[EventType2["KeyDown"] = 1] = "KeyDown";
22
+ EventType2[EventType2["KeyUp"] = 2] = "KeyUp";
23
+ EventType2[EventType2["MouseMove"] = 3] = "MouseMove";
24
+ EventType2[EventType2["MouseDown"] = 4] = "MouseDown";
25
+ EventType2[EventType2["MouseUp"] = 5] = "MouseUp";
26
+ EventType2[EventType2["MouseWheel"] = 6] = "MouseWheel";
27
+ EventType2[EventType2["FrameStart"] = 7] = "FrameStart";
28
+ })(EventType ||= {});
29
+ var MouseButton;
30
+ ((MouseButton2) => {
31
+ MouseButton2[MouseButton2["None"] = 0] = "None";
32
+ MouseButton2[MouseButton2["Left"] = 1] = "Left";
33
+ MouseButton2[MouseButton2["Middle"] = 2] = "Middle";
34
+ MouseButton2[MouseButton2["Right"] = 3] = "Right";
35
+ MouseButton2[MouseButton2["X1"] = 4] = "X1";
36
+ MouseButton2[MouseButton2["X2"] = 5] = "X2";
37
+ MouseButton2[MouseButton2["X3"] = 6] = "X3";
38
+ MouseButton2[MouseButton2["X4"] = 7] = "X4";
39
+ MouseButton2[MouseButton2["X5"] = 8] = "X5";
40
+ })(MouseButton ||= {});
41
+ var Key;
42
+ ((Key2) => {
43
+ Key2[Key2["None"] = 0] = "None";
44
+ Key2[Key2["Backquote"] = 1] = "Backquote";
45
+ Key2[Key2["Backslash"] = 2] = "Backslash";
46
+ Key2[Key2["BracketLeft"] = 3] = "BracketLeft";
47
+ Key2[Key2["BracketRight"] = 4] = "BracketRight";
48
+ Key2[Key2["Comma"] = 5] = "Comma";
49
+ Key2[Key2["Digit0"] = 6] = "Digit0";
50
+ Key2[Key2["Digit1"] = 7] = "Digit1";
51
+ Key2[Key2["Digit2"] = 8] = "Digit2";
52
+ Key2[Key2["Digit3"] = 9] = "Digit3";
53
+ Key2[Key2["Digit4"] = 10] = "Digit4";
54
+ Key2[Key2["Digit5"] = 11] = "Digit5";
55
+ Key2[Key2["Digit6"] = 12] = "Digit6";
56
+ Key2[Key2["Digit7"] = 13] = "Digit7";
57
+ Key2[Key2["Digit8"] = 14] = "Digit8";
58
+ Key2[Key2["Digit9"] = 15] = "Digit9";
59
+ Key2[Key2["Equal"] = 16] = "Equal";
60
+ Key2[Key2["IntlBackslash"] = 17] = "IntlBackslash";
61
+ Key2[Key2["IntlRo"] = 18] = "IntlRo";
62
+ Key2[Key2["IntlYen"] = 19] = "IntlYen";
63
+ Key2[Key2["KeyA"] = 20] = "KeyA";
64
+ Key2[Key2["KeyB"] = 21] = "KeyB";
65
+ Key2[Key2["KeyC"] = 22] = "KeyC";
66
+ Key2[Key2["KeyD"] = 23] = "KeyD";
67
+ Key2[Key2["KeyE"] = 24] = "KeyE";
68
+ Key2[Key2["KeyF"] = 25] = "KeyF";
69
+ Key2[Key2["KeyG"] = 26] = "KeyG";
70
+ Key2[Key2["KeyH"] = 27] = "KeyH";
71
+ Key2[Key2["KeyI"] = 28] = "KeyI";
72
+ Key2[Key2["KeyJ"] = 29] = "KeyJ";
73
+ Key2[Key2["KeyK"] = 30] = "KeyK";
74
+ Key2[Key2["KeyL"] = 31] = "KeyL";
75
+ Key2[Key2["KeyM"] = 32] = "KeyM";
76
+ Key2[Key2["KeyN"] = 33] = "KeyN";
77
+ Key2[Key2["KeyO"] = 34] = "KeyO";
78
+ Key2[Key2["KeyP"] = 35] = "KeyP";
79
+ Key2[Key2["KeyQ"] = 36] = "KeyQ";
80
+ Key2[Key2["KeyR"] = 37] = "KeyR";
81
+ Key2[Key2["KeyS"] = 38] = "KeyS";
82
+ Key2[Key2["KeyT"] = 39] = "KeyT";
83
+ Key2[Key2["KeyU"] = 40] = "KeyU";
84
+ Key2[Key2["KeyV"] = 41] = "KeyV";
85
+ Key2[Key2["KeyW"] = 42] = "KeyW";
86
+ Key2[Key2["KeyX"] = 43] = "KeyX";
87
+ Key2[Key2["KeyY"] = 44] = "KeyY";
88
+ Key2[Key2["KeyZ"] = 45] = "KeyZ";
89
+ Key2[Key2["Minus"] = 46] = "Minus";
90
+ Key2[Key2["Period"] = 47] = "Period";
91
+ Key2[Key2["Quote"] = 48] = "Quote";
92
+ Key2[Key2["Semicolon"] = 49] = "Semicolon";
93
+ Key2[Key2["Slash"] = 50] = "Slash";
94
+ Key2[Key2["AltLeft"] = 51] = "AltLeft";
95
+ Key2[Key2["AltRight"] = 52] = "AltRight";
96
+ Key2[Key2["Backspace"] = 53] = "Backspace";
97
+ Key2[Key2["CapsLock"] = 54] = "CapsLock";
98
+ Key2[Key2["ContextMenu"] = 55] = "ContextMenu";
99
+ Key2[Key2["ControlLeft"] = 56] = "ControlLeft";
100
+ Key2[Key2["ControlRight"] = 57] = "ControlRight";
101
+ Key2[Key2["Enter"] = 58] = "Enter";
102
+ Key2[Key2["MetaLeft"] = 59] = "MetaLeft";
103
+ Key2[Key2["MetaRight"] = 60] = "MetaRight";
104
+ Key2[Key2["ShiftLeft"] = 61] = "ShiftLeft";
105
+ Key2[Key2["ShiftRight"] = 62] = "ShiftRight";
106
+ Key2[Key2["Space"] = 63] = "Space";
107
+ Key2[Key2["Tab"] = 64] = "Tab";
108
+ Key2[Key2["Convert"] = 65] = "Convert";
109
+ Key2[Key2["KanaMode"] = 66] = "KanaMode";
110
+ Key2[Key2["Lang1"] = 67] = "Lang1";
111
+ Key2[Key2["Lang2"] = 68] = "Lang2";
112
+ Key2[Key2["Lang3"] = 69] = "Lang3";
113
+ Key2[Key2["Lang4"] = 70] = "Lang4";
114
+ Key2[Key2["Lang5"] = 71] = "Lang5";
115
+ Key2[Key2["NonConvert"] = 72] = "NonConvert";
116
+ Key2[Key2["Delete"] = 73] = "Delete";
117
+ Key2[Key2["End"] = 74] = "End";
118
+ Key2[Key2["Help"] = 75] = "Help";
119
+ Key2[Key2["Home"] = 76] = "Home";
120
+ Key2[Key2["Insert"] = 77] = "Insert";
121
+ Key2[Key2["PageDown"] = 78] = "PageDown";
122
+ Key2[Key2["PageUp"] = 79] = "PageUp";
123
+ Key2[Key2["ArrowDown"] = 80] = "ArrowDown";
124
+ Key2[Key2["ArrowLeft"] = 81] = "ArrowLeft";
125
+ Key2[Key2["ArrowRight"] = 82] = "ArrowRight";
126
+ Key2[Key2["ArrowUp"] = 83] = "ArrowUp";
127
+ Key2[Key2["NumLock"] = 84] = "NumLock";
128
+ Key2[Key2["Numpad0"] = 85] = "Numpad0";
129
+ Key2[Key2["Numpad1"] = 86] = "Numpad1";
130
+ Key2[Key2["Numpad2"] = 87] = "Numpad2";
131
+ Key2[Key2["Numpad3"] = 88] = "Numpad3";
132
+ Key2[Key2["Numpad4"] = 89] = "Numpad4";
133
+ Key2[Key2["Numpad5"] = 90] = "Numpad5";
134
+ Key2[Key2["Numpad6"] = 91] = "Numpad6";
135
+ Key2[Key2["Numpad7"] = 92] = "Numpad7";
136
+ Key2[Key2["Numpad8"] = 93] = "Numpad8";
137
+ Key2[Key2["Numpad9"] = 94] = "Numpad9";
138
+ Key2[Key2["NumpadAdd"] = 95] = "NumpadAdd";
139
+ Key2[Key2["NumpadBackspace"] = 96] = "NumpadBackspace";
140
+ Key2[Key2["NumpadClear"] = 97] = "NumpadClear";
141
+ Key2[Key2["NumpadClearEntry"] = 98] = "NumpadClearEntry";
142
+ Key2[Key2["NumpadComma"] = 99] = "NumpadComma";
143
+ Key2[Key2["NumpadDecimal"] = 100] = "NumpadDecimal";
144
+ Key2[Key2["NumpadDivide"] = 101] = "NumpadDivide";
145
+ Key2[Key2["NumpadEnter"] = 102] = "NumpadEnter";
146
+ Key2[Key2["NumpadEqual"] = 103] = "NumpadEqual";
147
+ Key2[Key2["NumpadHash"] = 104] = "NumpadHash";
148
+ Key2[Key2["NumpadMemoryAdd"] = 105] = "NumpadMemoryAdd";
149
+ Key2[Key2["NumpadMemoryClear"] = 106] = "NumpadMemoryClear";
150
+ Key2[Key2["NumpadMemoryRecall"] = 107] = "NumpadMemoryRecall";
151
+ Key2[Key2["NumpadMemoryStore"] = 108] = "NumpadMemoryStore";
152
+ Key2[Key2["NumpadMemorySubtract"] = 109] = "NumpadMemorySubtract";
153
+ Key2[Key2["NumpadMultiply"] = 110] = "NumpadMultiply";
154
+ Key2[Key2["NumpadParenLeft"] = 111] = "NumpadParenLeft";
155
+ Key2[Key2["NumpadParenRight"] = 112] = "NumpadParenRight";
156
+ Key2[Key2["NumpadStar"] = 113] = "NumpadStar";
157
+ Key2[Key2["NumpadSubtract"] = 114] = "NumpadSubtract";
158
+ Key2[Key2["Escape"] = 115] = "Escape";
159
+ Key2[Key2["Fn"] = 116] = "Fn";
160
+ Key2[Key2["FnLock"] = 117] = "FnLock";
161
+ Key2[Key2["PrintScreen"] = 118] = "PrintScreen";
162
+ Key2[Key2["ScrollLock"] = 119] = "ScrollLock";
163
+ Key2[Key2["Pause"] = 120] = "Pause";
164
+ Key2[Key2["BrowserBack"] = 121] = "BrowserBack";
165
+ Key2[Key2["BrowserFavorites"] = 122] = "BrowserFavorites";
166
+ Key2[Key2["BrowserForward"] = 123] = "BrowserForward";
167
+ Key2[Key2["BrowserHome"] = 124] = "BrowserHome";
168
+ Key2[Key2["BrowserRefresh"] = 125] = "BrowserRefresh";
169
+ Key2[Key2["BrowserSearch"] = 126] = "BrowserSearch";
170
+ Key2[Key2["BrowserStop"] = 127] = "BrowserStop";
171
+ Key2[Key2["Eject"] = 128] = "Eject";
172
+ Key2[Key2["LaunchApp1"] = 129] = "LaunchApp1";
173
+ Key2[Key2["LaunchApp2"] = 130] = "LaunchApp2";
174
+ Key2[Key2["LaunchMail"] = 131] = "LaunchMail";
175
+ Key2[Key2["MediaPlayPause"] = 132] = "MediaPlayPause";
176
+ Key2[Key2["MediaSelect"] = 133] = "MediaSelect";
177
+ Key2[Key2["MediaStop"] = 134] = "MediaStop";
178
+ Key2[Key2["MediaTrackNext"] = 135] = "MediaTrackNext";
179
+ Key2[Key2["MediaTrackPrevious"] = 136] = "MediaTrackPrevious";
180
+ Key2[Key2["Power"] = 137] = "Power";
181
+ Key2[Key2["Sleep"] = 138] = "Sleep";
182
+ Key2[Key2["AudioVolumeDown"] = 139] = "AudioVolumeDown";
183
+ Key2[Key2["AudioVolumeMute"] = 140] = "AudioVolumeMute";
184
+ Key2[Key2["AudioVolumeUp"] = 141] = "AudioVolumeUp";
185
+ Key2[Key2["WakeUp"] = 142] = "WakeUp";
186
+ Key2[Key2["Hyper"] = 143] = "Hyper";
187
+ Key2[Key2["Super"] = 144] = "Super";
188
+ Key2[Key2["Turbo"] = 145] = "Turbo";
189
+ Key2[Key2["Abort"] = 146] = "Abort";
190
+ Key2[Key2["Resume"] = 147] = "Resume";
191
+ Key2[Key2["Suspend"] = 148] = "Suspend";
192
+ Key2[Key2["Again"] = 149] = "Again";
193
+ Key2[Key2["Copy"] = 150] = "Copy";
194
+ Key2[Key2["Cut"] = 151] = "Cut";
195
+ Key2[Key2["Find"] = 152] = "Find";
196
+ Key2[Key2["Open"] = 153] = "Open";
197
+ Key2[Key2["Paste"] = 154] = "Paste";
198
+ Key2[Key2["Props"] = 155] = "Props";
199
+ Key2[Key2["Select"] = 156] = "Select";
200
+ Key2[Key2["Undo"] = 157] = "Undo";
201
+ Key2[Key2["Hiragana"] = 158] = "Hiragana";
202
+ Key2[Key2["Katakana"] = 159] = "Katakana";
203
+ Key2[Key2["F1"] = 160] = "F1";
204
+ Key2[Key2["F2"] = 161] = "F2";
205
+ Key2[Key2["F3"] = 162] = "F3";
206
+ Key2[Key2["F4"] = 163] = "F4";
207
+ Key2[Key2["F5"] = 164] = "F5";
208
+ Key2[Key2["F6"] = 165] = "F6";
209
+ Key2[Key2["F7"] = 166] = "F7";
210
+ Key2[Key2["F8"] = 167] = "F8";
211
+ Key2[Key2["F9"] = 168] = "F9";
212
+ Key2[Key2["F10"] = 169] = "F10";
213
+ Key2[Key2["F11"] = 170] = "F11";
214
+ Key2[Key2["F12"] = 171] = "F12";
215
+ Key2[Key2["F13"] = 172] = "F13";
216
+ Key2[Key2["F14"] = 173] = "F14";
217
+ Key2[Key2["F15"] = 174] = "F15";
218
+ Key2[Key2["F16"] = 175] = "F16";
219
+ Key2[Key2["F17"] = 176] = "F17";
220
+ Key2[Key2["F18"] = 177] = "F18";
221
+ Key2[Key2["F19"] = 178] = "F19";
222
+ Key2[Key2["F20"] = 179] = "F20";
223
+ Key2[Key2["F21"] = 180] = "F21";
224
+ Key2[Key2["F22"] = 181] = "F22";
225
+ Key2[Key2["F23"] = 182] = "F23";
226
+ Key2[Key2["F24"] = 183] = "F24";
227
+ Key2[Key2["F25"] = 184] = "F25";
228
+ Key2[Key2["F26"] = 185] = "F26";
229
+ Key2[Key2["F27"] = 186] = "F27";
230
+ Key2[Key2["F28"] = 187] = "F28";
231
+ Key2[Key2["F29"] = 188] = "F29";
232
+ Key2[Key2["F30"] = 189] = "F30";
233
+ Key2[Key2["F31"] = 190] = "F31";
234
+ Key2[Key2["F32"] = 191] = "F32";
235
+ Key2[Key2["F33"] = 192] = "F33";
236
+ Key2[Key2["F34"] = 193] = "F34";
237
+ Key2[Key2["F35"] = 194] = "F35";
238
+ })(Key ||= {});
239
+ var MOUSE_OFFSET = 256;
240
+ var MOUSE_BUTTONS_OFFSET = 16;
241
+ var KEYBOARD_OFFSET = 0;
242
+ function mouseButtonCodeToMouseButton(code) {
243
+ return MouseButton[code];
244
+ }
245
+
246
+ class InputContext {
247
+ #dataView;
248
+ #keys;
249
+ #mouse;
250
+ constructor(dataView) {
251
+ if (dataView) {
252
+ this.#dataView = dataView;
253
+ }
254
+ }
255
+ get dataView() {
256
+ if (!this.#dataView) {
257
+ throw new Error("DataView is not initialized on InputContext");
258
+ }
259
+ return this.#dataView;
260
+ }
261
+ set dataView(dataView) {
262
+ this.#dataView = dataView;
263
+ this.#keys = undefined;
264
+ this.#mouse = undefined;
265
+ }
266
+ get keys() {
267
+ if (!this.#keys) {
268
+ this.#keys = new KeyboardContext(new DataView(this.dataView.buffer, this.dataView.byteOffset + KEYBOARD_OFFSET));
269
+ }
270
+ return this.#keys;
271
+ }
272
+ get mouse() {
273
+ if (!this.#mouse) {
274
+ this.#mouse = new MouseContext(new DataView(this.dataView.buffer, this.dataView.byteOffset + MOUSE_OFFSET));
275
+ }
276
+ return this.#mouse;
277
+ }
278
+ }
279
+
280
+ class MouseContext {
281
+ #dataView;
282
+ #buttonStates = new Map;
283
+ constructor(dataView) {
284
+ this.#dataView = dataView;
285
+ }
286
+ get x() {
287
+ return this.#dataView.getFloat32(0, true);
288
+ }
289
+ get y() {
290
+ return this.#dataView.getFloat32(4, true);
291
+ }
292
+ get wheel() {
293
+ return { x: this.wheelX, y: this.wheelY };
294
+ }
295
+ get wheelX() {
296
+ return this.#dataView.getFloat32(8, true);
297
+ }
298
+ get wheelY() {
299
+ return this.#dataView.getFloat32(12, true);
300
+ }
301
+ get left() {
302
+ return this.#buttonState(1);
303
+ }
304
+ get right() {
305
+ return this.#buttonState(3);
306
+ }
307
+ get middle() {
308
+ return this.#buttonState(2);
309
+ }
310
+ #buttonState(code) {
311
+ let state;
312
+ if (this.#buttonStates.has(code)) {
313
+ state = this.#buttonStates.get(code);
314
+ } else {
315
+ state = { down: false, held: false, up: false };
316
+ this.#buttonStates.set(code, state);
317
+ }
318
+ const offset = MOUSE_BUTTONS_OFFSET;
319
+ state.held = !!(this.#dataView.getUint8(offset + code) & 1);
320
+ state.down = state.held && !(this.#dataView.getUint8(offset + code) & 2);
321
+ state.up = !state.held && !!(this.#dataView.getUint8(offset + code) & 2);
322
+ return state;
323
+ }
324
+ }
325
+
326
+ class KeyboardContext {
327
+ #dataView;
328
+ #keystates = new Map;
329
+ constructor(dataView) {
330
+ this.#dataView = dataView;
331
+ }
332
+ get shift() {
333
+ return this.shiftLeft || this.shiftRight;
334
+ }
335
+ get alt() {
336
+ return this.altLeft || this.altRight;
337
+ }
338
+ get control() {
339
+ return this.controlLeft || this.controlRight;
340
+ }
341
+ get meta() {
342
+ return this.metaLeft || this.metaRight;
343
+ }
344
+ get backquote() {
345
+ return this.#keystate(1);
346
+ }
347
+ get backslash() {
348
+ return this.#keystate(2);
349
+ }
350
+ get bracketLeft() {
351
+ return this.#keystate(3);
352
+ }
353
+ get bracketRight() {
354
+ return this.#keystate(4);
355
+ }
356
+ get comma() {
357
+ return this.#keystate(5);
358
+ }
359
+ get digit0() {
360
+ return this.#keystate(6);
361
+ }
362
+ get digit1() {
363
+ return this.#keystate(7);
364
+ }
365
+ get digit2() {
366
+ return this.#keystate(8);
367
+ }
368
+ get digit3() {
369
+ return this.#keystate(9);
370
+ }
371
+ get digit4() {
372
+ return this.#keystate(10);
373
+ }
374
+ get digit5() {
375
+ return this.#keystate(11);
376
+ }
377
+ get digit6() {
378
+ return this.#keystate(12);
379
+ }
380
+ get digit7() {
381
+ return this.#keystate(13);
382
+ }
383
+ get digit8() {
384
+ return this.#keystate(14);
385
+ }
386
+ get digit9() {
387
+ return this.#keystate(15);
388
+ }
389
+ get equal() {
390
+ return this.#keystate(16);
391
+ }
392
+ get intlBackslash() {
393
+ return this.#keystate(17);
394
+ }
395
+ get intlRo() {
396
+ return this.#keystate(18);
397
+ }
398
+ get intlYen() {
399
+ return this.#keystate(19);
400
+ }
401
+ get a() {
402
+ return this.#keystate(20);
403
+ }
404
+ get b() {
405
+ return this.#keystate(21);
406
+ }
407
+ get c() {
408
+ return this.#keystate(22);
409
+ }
410
+ get d() {
411
+ return this.#keystate(23);
412
+ }
413
+ get e() {
414
+ return this.#keystate(24);
415
+ }
416
+ get f() {
417
+ return this.#keystate(25);
418
+ }
419
+ get g() {
420
+ return this.#keystate(26);
421
+ }
422
+ get h() {
423
+ return this.#keystate(27);
424
+ }
425
+ get i() {
426
+ return this.#keystate(28);
427
+ }
428
+ get j() {
429
+ return this.#keystate(29);
430
+ }
431
+ get k() {
432
+ return this.#keystate(30);
433
+ }
434
+ get l() {
435
+ return this.#keystate(31);
436
+ }
437
+ get m() {
438
+ return this.#keystate(32);
439
+ }
440
+ get n() {
441
+ return this.#keystate(33);
442
+ }
443
+ get o() {
444
+ return this.#keystate(34);
445
+ }
446
+ get p() {
447
+ return this.#keystate(35);
448
+ }
449
+ get q() {
450
+ return this.#keystate(36);
451
+ }
452
+ get r() {
453
+ return this.#keystate(37);
454
+ }
455
+ get s() {
456
+ return this.#keystate(38);
457
+ }
458
+ get t() {
459
+ return this.#keystate(39);
460
+ }
461
+ get u() {
462
+ return this.#keystate(40);
463
+ }
464
+ get v() {
465
+ return this.#keystate(41);
466
+ }
467
+ get w() {
468
+ return this.#keystate(42);
469
+ }
470
+ get x() {
471
+ return this.#keystate(43);
472
+ }
473
+ get y() {
474
+ return this.#keystate(44);
475
+ }
476
+ get z() {
477
+ return this.#keystate(45);
478
+ }
479
+ get minus() {
480
+ return this.#keystate(46);
481
+ }
482
+ get period() {
483
+ return this.#keystate(47);
484
+ }
485
+ get quote() {
486
+ return this.#keystate(48);
487
+ }
488
+ get semicolon() {
489
+ return this.#keystate(49);
490
+ }
491
+ get slash() {
492
+ return this.#keystate(50);
493
+ }
494
+ get altLeft() {
495
+ return this.#keystate(51);
496
+ }
497
+ get altRight() {
498
+ return this.#keystate(52);
499
+ }
500
+ get backspace() {
501
+ return this.#keystate(53);
502
+ }
503
+ get capsLock() {
504
+ return this.#keystate(54);
505
+ }
506
+ get contextMenu() {
507
+ return this.#keystate(55);
508
+ }
509
+ get controlLeft() {
510
+ return this.#keystate(56);
511
+ }
512
+ get controlRight() {
513
+ return this.#keystate(57);
514
+ }
515
+ get enter() {
516
+ return this.#keystate(58);
517
+ }
518
+ get metaLeft() {
519
+ return this.#keystate(59);
520
+ }
521
+ get metaRight() {
522
+ return this.#keystate(60);
523
+ }
524
+ get shiftLeft() {
525
+ return this.#keystate(61);
526
+ }
527
+ get shiftRight() {
528
+ return this.#keystate(62);
529
+ }
530
+ get space() {
531
+ return this.#keystate(63);
532
+ }
533
+ get tab() {
534
+ return this.#keystate(64);
535
+ }
536
+ get convert() {
537
+ return this.#keystate(65);
538
+ }
539
+ get kanaMode() {
540
+ return this.#keystate(66);
541
+ }
542
+ get lang1() {
543
+ return this.#keystate(67);
544
+ }
545
+ get lang2() {
546
+ return this.#keystate(68);
547
+ }
548
+ get lang3() {
549
+ return this.#keystate(69);
550
+ }
551
+ get lang4() {
552
+ return this.#keystate(70);
553
+ }
554
+ get lang5() {
555
+ return this.#keystate(71);
556
+ }
557
+ get nonConvert() {
558
+ return this.#keystate(72);
559
+ }
560
+ get delete() {
561
+ return this.#keystate(73);
562
+ }
563
+ get end() {
564
+ return this.#keystate(74);
565
+ }
566
+ get help() {
567
+ return this.#keystate(75);
568
+ }
569
+ get home() {
570
+ return this.#keystate(76);
571
+ }
572
+ get insert() {
573
+ return this.#keystate(77);
574
+ }
575
+ get pageDown() {
576
+ return this.#keystate(78);
577
+ }
578
+ get pageUp() {
579
+ return this.#keystate(79);
580
+ }
581
+ get arrowDown() {
582
+ return this.#keystate(80);
583
+ }
584
+ get arrowLeft() {
585
+ return this.#keystate(81);
586
+ }
587
+ get arrowRight() {
588
+ return this.#keystate(82);
589
+ }
590
+ get arrowUp() {
591
+ return this.#keystate(83);
592
+ }
593
+ get numLock() {
594
+ return this.#keystate(84);
595
+ }
596
+ get numpad0() {
597
+ return this.#keystate(85);
598
+ }
599
+ get numpad1() {
600
+ return this.#keystate(86);
601
+ }
602
+ get numpad2() {
603
+ return this.#keystate(87);
604
+ }
605
+ get numpad3() {
606
+ return this.#keystate(88);
607
+ }
608
+ get numpad4() {
609
+ return this.#keystate(89);
610
+ }
611
+ get numpad5() {
612
+ return this.#keystate(90);
613
+ }
614
+ get numpad6() {
615
+ return this.#keystate(91);
616
+ }
617
+ get numpad7() {
618
+ return this.#keystate(92);
619
+ }
620
+ get numpad8() {
621
+ return this.#keystate(93);
622
+ }
623
+ get numpad9() {
624
+ return this.#keystate(94);
625
+ }
626
+ get numpadAdd() {
627
+ return this.#keystate(95);
628
+ }
629
+ get numpadBackspace() {
630
+ return this.#keystate(96);
631
+ }
632
+ get numpadClear() {
633
+ return this.#keystate(97);
634
+ }
635
+ get numpadClearEntry() {
636
+ return this.#keystate(98);
637
+ }
638
+ get numpadComma() {
639
+ return this.#keystate(99);
640
+ }
641
+ get numpadDecimal() {
642
+ return this.#keystate(100);
643
+ }
644
+ get numpadDivide() {
645
+ return this.#keystate(101);
646
+ }
647
+ get numpadEnter() {
648
+ return this.#keystate(102);
649
+ }
650
+ get numpadEqual() {
651
+ return this.#keystate(103);
652
+ }
653
+ get numpadHash() {
654
+ return this.#keystate(104);
655
+ }
656
+ get numpadMemoryAdd() {
657
+ return this.#keystate(105);
658
+ }
659
+ get numpadMemoryClear() {
660
+ return this.#keystate(106);
661
+ }
662
+ get numpadMemoryRecall() {
663
+ return this.#keystate(107);
664
+ }
665
+ get numpadMemoryStore() {
666
+ return this.#keystate(108);
667
+ }
668
+ get numpadMemorySubtract() {
669
+ return this.#keystate(109);
670
+ }
671
+ get numpadMultiply() {
672
+ return this.#keystate(110);
673
+ }
674
+ get numpadParenLeft() {
675
+ return this.#keystate(111);
676
+ }
677
+ get numpadParenRight() {
678
+ return this.#keystate(112);
679
+ }
680
+ get numpadStar() {
681
+ return this.#keystate(113);
682
+ }
683
+ get numpadSubtract() {
684
+ return this.#keystate(114);
685
+ }
686
+ get escape() {
687
+ return this.#keystate(115);
688
+ }
689
+ get fn() {
690
+ return this.#keystate(116);
691
+ }
692
+ get fnLock() {
693
+ return this.#keystate(117);
694
+ }
695
+ get printScreen() {
696
+ return this.#keystate(118);
697
+ }
698
+ get scrollLock() {
699
+ return this.#keystate(119);
700
+ }
701
+ get pause() {
702
+ return this.#keystate(120);
703
+ }
704
+ get browserBack() {
705
+ return this.#keystate(121);
706
+ }
707
+ get browserFavorites() {
708
+ return this.#keystate(122);
709
+ }
710
+ get browserForward() {
711
+ return this.#keystate(123);
712
+ }
713
+ get browserHome() {
714
+ return this.#keystate(124);
715
+ }
716
+ get browserRefresh() {
717
+ return this.#keystate(125);
718
+ }
719
+ get browserSearch() {
720
+ return this.#keystate(126);
721
+ }
722
+ get browserStop() {
723
+ return this.#keystate(127);
724
+ }
725
+ get eject() {
726
+ return this.#keystate(128);
727
+ }
728
+ get launchApp1() {
729
+ return this.#keystate(129);
730
+ }
731
+ get launchApp2() {
732
+ return this.#keystate(130);
733
+ }
734
+ get launchMail() {
735
+ return this.#keystate(131);
736
+ }
737
+ get mediaPlayPause() {
738
+ return this.#keystate(132);
739
+ }
740
+ get mediaSelect() {
741
+ return this.#keystate(133);
742
+ }
743
+ get mediaStop() {
744
+ return this.#keystate(134);
745
+ }
746
+ get mediaTrackNext() {
747
+ return this.#keystate(135);
748
+ }
749
+ get mediaTrackPrevious() {
750
+ return this.#keystate(136);
751
+ }
752
+ get power() {
753
+ return this.#keystate(137);
754
+ }
755
+ get sleep() {
756
+ return this.#keystate(138);
757
+ }
758
+ get audioVolumeDown() {
759
+ return this.#keystate(139);
760
+ }
761
+ get audioVolumeMute() {
762
+ return this.#keystate(140);
763
+ }
764
+ get audioVolumeUp() {
765
+ return this.#keystate(141);
766
+ }
767
+ get wakeUp() {
768
+ return this.#keystate(142);
769
+ }
770
+ get hyper() {
771
+ return this.#keystate(143);
772
+ }
773
+ get super() {
774
+ return this.#keystate(144);
775
+ }
776
+ get turbo() {
777
+ return this.#keystate(145);
778
+ }
779
+ get abort() {
780
+ return this.#keystate(146);
781
+ }
782
+ get resume() {
783
+ return this.#keystate(147);
784
+ }
785
+ get suspend() {
786
+ return this.#keystate(148);
787
+ }
788
+ get again() {
789
+ return this.#keystate(149);
790
+ }
791
+ get copy() {
792
+ return this.#keystate(150);
793
+ }
794
+ get cut() {
795
+ return this.#keystate(151);
796
+ }
797
+ get find() {
798
+ return this.#keystate(152);
799
+ }
800
+ get open() {
801
+ return this.#keystate(153);
802
+ }
803
+ get paste() {
804
+ return this.#keystate(154);
805
+ }
806
+ get props() {
807
+ return this.#keystate(155);
808
+ }
809
+ get select() {
810
+ return this.#keystate(156);
811
+ }
812
+ get undo() {
813
+ return this.#keystate(157);
814
+ }
815
+ get hiragana() {
816
+ return this.#keystate(158);
817
+ }
818
+ get katakana() {
819
+ return this.#keystate(159);
820
+ }
821
+ get f1() {
822
+ return this.#keystate(160);
823
+ }
824
+ get f2() {
825
+ return this.#keystate(161);
826
+ }
827
+ get f3() {
828
+ return this.#keystate(162);
829
+ }
830
+ get f4() {
831
+ return this.#keystate(163);
832
+ }
833
+ get f5() {
834
+ return this.#keystate(164);
835
+ }
836
+ get f6() {
837
+ return this.#keystate(165);
838
+ }
839
+ get f7() {
840
+ return this.#keystate(166);
841
+ }
842
+ get f8() {
843
+ return this.#keystate(167);
844
+ }
845
+ get f9() {
846
+ return this.#keystate(168);
847
+ }
848
+ get f10() {
849
+ return this.#keystate(169);
850
+ }
851
+ get f11() {
852
+ return this.#keystate(170);
853
+ }
854
+ get f12() {
855
+ return this.#keystate(171);
856
+ }
857
+ get f13() {
858
+ return this.#keystate(172);
859
+ }
860
+ get f14() {
861
+ return this.#keystate(173);
862
+ }
863
+ get f15() {
864
+ return this.#keystate(174);
865
+ }
866
+ get f16() {
867
+ return this.#keystate(175);
868
+ }
869
+ get f17() {
870
+ return this.#keystate(176);
871
+ }
872
+ get f18() {
873
+ return this.#keystate(177);
874
+ }
875
+ get f19() {
876
+ return this.#keystate(178);
877
+ }
878
+ get f20() {
879
+ return this.#keystate(179);
880
+ }
881
+ get f21() {
882
+ return this.#keystate(180);
883
+ }
884
+ get f22() {
885
+ return this.#keystate(181);
886
+ }
887
+ get f23() {
888
+ return this.#keystate(182);
889
+ }
890
+ get f24() {
891
+ return this.#keystate(183);
892
+ }
893
+ get f25() {
894
+ return this.#keystate(184);
895
+ }
896
+ get f26() {
897
+ return this.#keystate(185);
898
+ }
899
+ get f27() {
900
+ return this.#keystate(186);
901
+ }
902
+ get f28() {
903
+ return this.#keystate(187);
904
+ }
905
+ get f29() {
906
+ return this.#keystate(188);
907
+ }
908
+ get f30() {
909
+ return this.#keystate(189);
910
+ }
911
+ get f31() {
912
+ return this.#keystate(190);
913
+ }
914
+ get f32() {
915
+ return this.#keystate(191);
916
+ }
917
+ get f33() {
918
+ return this.#keystate(192);
919
+ }
920
+ get f34() {
921
+ return this.#keystate(193);
922
+ }
923
+ get f35() {
924
+ return this.#keystate(194);
925
+ }
926
+ #keystate(code) {
927
+ let state;
928
+ if (this.#keystates.has(code)) {
929
+ state = this.#keystates.get(code);
930
+ } else {
931
+ state = { down: false, held: false, up: false };
932
+ this.#keystates.set(code, state);
933
+ }
934
+ state.held = !!(this.#dataView.getUint8(code) & 1);
935
+ state.down = state.held && !(this.#dataView.getUint8(code) & 2);
936
+ state.up = !state.held && !!(this.#dataView.getUint8(code) & 2);
937
+ return state;
938
+ }
939
+ }
940
+ var DEFAULT_WASM_URL = new URL("../wasm/bloop.wasm", import.meta.url);
941
+ var TIME_CTX_OFFSET = 0;
942
+ var INPUT_CTX_OFFSET = TIME_CTX_OFFSET + 4;
943
+ var EVENTS_OFFSET = INPUT_CTX_OFFSET + 4;
944
+
1
945
  // src/mod.ts
2
- function sum(a, b) {
3
- return a + b;
946
+ function connect(runtime) {
947
+ let isPaused = true;
948
+ let now = performance.now();
949
+ let frameHandle = -1;
950
+ const handleKeydown = (event) => {
951
+ runtime.emit.keydown(event.key);
952
+ };
953
+ window.addEventListener("keydown", handleKeydown);
954
+ const handleKeyup = (event) => {
955
+ runtime.emit.keyup(event.key);
956
+ };
957
+ window.addEventListener("keyup", handleKeyup);
958
+ const handleMousemove = (event) => {
959
+ runtime.emit.mousemove(event.clientX, event.clientY);
960
+ };
961
+ window.addEventListener("mousemove", handleMousemove);
962
+ const handleMousedown = (event) => {
963
+ runtime.emit.mousedown(mouseButtonCodeToMouseButton(event.button + 1));
964
+ };
965
+ window.addEventListener("mousedown", handleMousedown);
966
+ const handleMousewheel = (event) => {
967
+ runtime.emit.mousewheel(event.deltaX, event.deltaY);
968
+ };
969
+ window.addEventListener("wheel", handleMousewheel);
970
+ const playbarHotkeys = (event) => {
971
+ const isPauseHotkey = event.key === "Enter" && (event.ctrlKey || event.metaKey);
972
+ if (isPauseHotkey || event.key === "6") {
973
+ isPaused = !isPaused;
974
+ }
975
+ if (isPaused) {
976
+ switch (event.key) {
977
+ case ",":
978
+ case "5":
979
+ runtime.stepBack();
980
+ break;
981
+ case ".":
982
+ case "7":
983
+ runtime.step();
984
+ break;
985
+ }
986
+ }
987
+ };
988
+ window.addEventListener("keydown", playbarHotkeys);
989
+ function frame() {
990
+ if (!isPaused) {
991
+ runtime.step(performance.now() - now);
992
+ }
993
+ now = performance.now();
994
+ frameHandle = requestAnimationFrame(frame);
995
+ }
996
+ frame();
997
+ return () => {
998
+ window.removeEventListener("keydown", handleKeydown);
999
+ window.removeEventListener("keyup", handleKeyup);
1000
+ window.removeEventListener("mousemove", handleMousemove);
1001
+ window.removeEventListener("mousedown", handleMousedown);
1002
+ window.removeEventListener("wheel", handleMousewheel);
1003
+ window.removeEventListener("keydown", playbarHotkeys);
1004
+ cancelAnimationFrame(frameHandle);
1005
+ };
4
1006
  }
5
1007
  export {
6
- sum
1008
+ connect
7
1009
  };
8
1010
 
9
- //# debugId=99C6AD660B2F904E64756E2164756E21
1011
+ //# debugId=CED373C6D92686EE64756E2164756E21
10
1012
  //# sourceMappingURL=mod.js.map
package/dist/mod.js.map CHANGED
@@ -1,10 +1,11 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/mod.ts"],
3
+ "sources": ["../node_modules/@bloopjs/engine/dist/engine.js", "../src/mod.ts"],
4
4
  "sourcesContent": [
5
- "export function sum(a: number, b: number): number {\n return a + b;\n}\n"
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// 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",
6
+ "import { type Runtime } from \"@bloopjs/bloop\";\nimport { type Key, mouseButtonCodeToMouseButton } from \"@bloopjs/engine\";\n\nexport function connect(runtime: Runtime) {\n let isPaused = true;\n let now = performance.now();\n let frameHandle: number = -1;\n\n const handleKeydown = (event: KeyboardEvent) => {\n runtime.emit.keydown(event.key as Key);\n };\n window.addEventListener(\"keydown\", handleKeydown);\n\n const handleKeyup = (event: KeyboardEvent) => {\n runtime.emit.keyup(event.key as Key);\n };\n window.addEventListener(\"keyup\", handleKeyup);\n\n const handleMousemove = (event: MouseEvent) => {\n runtime.emit.mousemove(event.clientX, event.clientY);\n };\n window.addEventListener(\"mousemove\", handleMousemove);\n\n const handleMousedown = (event: MouseEvent) => {\n runtime.emit.mousedown(mouseButtonCodeToMouseButton(event.button + 1));\n };\n window.addEventListener(\"mousedown\", handleMousedown);\n\n const handleMousewheel = (event: WheelEvent) => {\n runtime.emit.mousewheel(event.deltaX, event.deltaY);\n };\n window.addEventListener(\"wheel\", handleMousewheel);\n\n const playbarHotkeys = (event: KeyboardEvent) => {\n const isPauseHotkey =\n event.key === \"Enter\" && (event.ctrlKey || event.metaKey);\n if (isPauseHotkey || event.key === \"6\") {\n isPaused = !isPaused;\n }\n\n if (isPaused) {\n switch (event.key) {\n case \",\":\n case \"5\":\n runtime.stepBack();\n break;\n case \".\":\n case \"7\":\n runtime.step();\n break;\n }\n }\n };\n window.addEventListener(\"keydown\", playbarHotkeys);\n\n function frame() {\n if (!isPaused) {\n runtime.step(performance.now() - now);\n }\n now = performance.now();\n frameHandle = requestAnimationFrame(frame);\n }\n frame();\n\n return () => {\n window.removeEventListener(\"keydown\", handleKeydown);\n window.removeEventListener(\"keyup\", handleKeyup);\n window.removeEventListener(\"mousemove\", handleMousemove);\n window.removeEventListener(\"mousedown\", handleMousedown);\n window.removeEventListener(\"wheel\", handleMousewheel);\n window.removeEventListener(\"keydown\", playbarHotkeys);\n cancelAnimationFrame(frameHandle);\n };\n}\n"
6
7
  ],
7
- "mappings": ";AAAO,SAAS,GAAG,CAAC,GAAW,GAAmB;AAAA,EAChD,OAAO,IAAI;AAAA;",
8
- "debugId": "99C6AD660B2F904E64756E2164756E21",
8
+ "mappings": "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",
9
+ "debugId": "CED373C6D92686EE64756E2164756E21",
9
10
  "names": []
10
11
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bloopjs/web",
3
- "version": "0.0.0",
3
+ "version": "0.0.27",
4
4
  "author": "Neil Sarkar",
5
5
  "type": "module",
6
6
  "repository": {
@@ -9,8 +9,8 @@
9
9
  },
10
10
  "exports": {
11
11
  ".": {
12
- "import": "./src/mod.ts",
13
- "types": "./src/mod.ts"
12
+ "import": "./dist/mod.js",
13
+ "types": "./dist/mod.d.ts"
14
14
  }
15
15
  },
16
16
  "publishConfig": {
@@ -23,6 +23,7 @@
23
23
  ],
24
24
  "scripts": {
25
25
  "build": "bun build src/mod.ts --outdir=dist --sourcemap=linked && bunx tsc -p publish/tsconfig.publish.json",
26
+ "ci:jsr": "bunx jsr publish --dry-run --allow-dirty",
26
27
  "ci:tsc": "tsc --noEmit"
27
28
  },
28
29
  "devDependencies": {
@@ -30,5 +31,9 @@
30
31
  },
31
32
  "peerDependencies": {
32
33
  "typescript": "^5"
34
+ },
35
+ "dependencies": {
36
+ "@bloopjs/bloop": "0.0.27",
37
+ "@bloopjs/engine": "^0.0.25"
33
38
  }
34
- }
39
+ }
package/src/mod.ts CHANGED
@@ -1,3 +1,74 @@
1
- export function sum(a: number, b: number): number {
2
- return a + b;
1
+ import { type Runtime } from "@bloopjs/bloop";
2
+ import { type Key, mouseButtonCodeToMouseButton } from "@bloopjs/engine";
3
+
4
+ export function connect(runtime: Runtime) {
5
+ let isPaused = true;
6
+ let now = performance.now();
7
+ let frameHandle: number = -1;
8
+
9
+ const handleKeydown = (event: KeyboardEvent) => {
10
+ runtime.emit.keydown(event.key as Key);
11
+ };
12
+ window.addEventListener("keydown", handleKeydown);
13
+
14
+ const handleKeyup = (event: KeyboardEvent) => {
15
+ runtime.emit.keyup(event.key as Key);
16
+ };
17
+ window.addEventListener("keyup", handleKeyup);
18
+
19
+ const handleMousemove = (event: MouseEvent) => {
20
+ runtime.emit.mousemove(event.clientX, event.clientY);
21
+ };
22
+ window.addEventListener("mousemove", handleMousemove);
23
+
24
+ const handleMousedown = (event: MouseEvent) => {
25
+ runtime.emit.mousedown(mouseButtonCodeToMouseButton(event.button + 1));
26
+ };
27
+ window.addEventListener("mousedown", handleMousedown);
28
+
29
+ const handleMousewheel = (event: WheelEvent) => {
30
+ runtime.emit.mousewheel(event.deltaX, event.deltaY);
31
+ };
32
+ window.addEventListener("wheel", handleMousewheel);
33
+
34
+ const playbarHotkeys = (event: KeyboardEvent) => {
35
+ const isPauseHotkey =
36
+ event.key === "Enter" && (event.ctrlKey || event.metaKey);
37
+ if (isPauseHotkey || event.key === "6") {
38
+ isPaused = !isPaused;
39
+ }
40
+
41
+ if (isPaused) {
42
+ switch (event.key) {
43
+ case ",":
44
+ case "5":
45
+ runtime.stepBack();
46
+ break;
47
+ case ".":
48
+ case "7":
49
+ runtime.step();
50
+ break;
51
+ }
52
+ }
53
+ };
54
+ window.addEventListener("keydown", playbarHotkeys);
55
+
56
+ function frame() {
57
+ if (!isPaused) {
58
+ runtime.step(performance.now() - now);
59
+ }
60
+ now = performance.now();
61
+ frameHandle = requestAnimationFrame(frame);
62
+ }
63
+ frame();
64
+
65
+ return () => {
66
+ window.removeEventListener("keydown", handleKeydown);
67
+ window.removeEventListener("keyup", handleKeyup);
68
+ window.removeEventListener("mousemove", handleMousemove);
69
+ window.removeEventListener("mousedown", handleMousedown);
70
+ window.removeEventListener("wheel", handleMousewheel);
71
+ window.removeEventListener("keydown", playbarHotkeys);
72
+ cancelAnimationFrame(frameHandle);
73
+ };
3
74
  }