@flighthq/input 0.5.1-next.1350.8ce488b → 0.5.1-next.1404.457d1da

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/README.md CHANGED
@@ -13,5 +13,5 @@ Import the supported application-facing API from `@flighthq/input`. The `@flight
13
13
  This package is part of the locked-version Flight SDK graph. Applications may instead install and import `@flighthq/sdk` when package-level tree shaking is sufficient.
14
14
 
15
15
  - [Flight project](https://github.com/flighthq/flight)
16
- - [Source for @flighthq/input@0.5.1-next.1350.8ce488b](https://github.com/flighthq/flight/tree/8ce488bfe444eded2fb281e7b9696e5ce7fabdc0/packages/input)
17
- - [License](https://github.com/flighthq/flight/blob/8ce488bfe444eded2fb281e7b9696e5ce7fabdc0/LICENSE.md)
16
+ - [Source for @flighthq/input@0.5.1-next.1404.457d1da](https://github.com/flighthq/flight/tree/457d1da918a60be5853b84eb6c25530a66662cef/packages/input)
17
+ - [License](https://github.com/flighthq/flight/blob/457d1da918a60be5853b84eb6c25530a66662cef/LICENSE.md)
@@ -1,4 +1,4 @@
1
- import type { AttachInputOptions, GamepadAxisKind, GamepadButtonKind, GamepadMappingKind, HostInputIngressProvider, InputIngressSource, InputKeyRepeatOptions, InputKeyRepeatTimer, InputManager, InputSignals, InputState, EntityConstruction } from '@flighthq/types/contract';
1
+ import type { AttachInputOptions, GamepadAxisKind, GamepadButtonKind, GamepadMappingKind, HostInputIngressCapability, InputIngressSource, InputKeyRepeatOptions, InputKeyRepeatTimer, InputManager, InputSignals, InputState, EntityConstruction } from '@flighthq/types/contract';
2
2
  /**
3
3
  * Filters a single gamepad axis value through a simple dead zone.
4
4
  * Values within `[-deadZone, deadZone]` are mapped to `0`; values outside
@@ -21,12 +21,12 @@ export declare function applyGamepadStickDeadZone(out: {
21
21
  x: number;
22
22
  y: number;
23
23
  }, x: number, y: number, deadZone: number): void;
24
- export declare function attachGamepadInput(manager: InputManager, source: InputIngressSource, options?: Readonly<AttachInputOptions>): void;
25
- export declare function attachKeyboardInput(manager: InputManager, source: InputIngressSource, options?: Readonly<AttachInputOptions>): void;
26
- export declare function attachPointerInput(manager: InputManager, source: InputIngressSource, options?: Readonly<AttachInputOptions>): void;
27
- export declare function attachRelativePointerInput(manager: InputManager, source: InputIngressSource, options?: Readonly<AttachInputOptions>): void;
28
- export declare function attachTextInput(manager: InputManager, source: InputIngressSource, options?: Readonly<AttachInputOptions>): void;
29
- export declare function attachWheelInput(manager: InputManager, source: InputIngressSource, options?: Readonly<AttachInputOptions>): void;
24
+ export declare function attachGamepadInput(inputIngress: Readonly<HostInputIngressCapability>, manager: InputManager, source: InputIngressSource, options?: Readonly<AttachInputOptions>): void;
25
+ export declare function attachKeyboardInput(inputIngress: Readonly<HostInputIngressCapability>, manager: InputManager, source: InputIngressSource, options?: Readonly<AttachInputOptions>): void;
26
+ export declare function attachPointerInput(inputIngress: Readonly<HostInputIngressCapability>, manager: InputManager, source: InputIngressSource, options?: Readonly<AttachInputOptions>): void;
27
+ export declare function attachRelativePointerInput(inputIngress: Readonly<HostInputIngressCapability>, manager: InputManager, source: InputIngressSource, options?: Readonly<AttachInputOptions>): void;
28
+ export declare function attachTextInput(inputIngress: Readonly<HostInputIngressCapability>, manager: InputManager, source: InputIngressSource, options?: Readonly<AttachInputOptions>): void;
29
+ export declare function attachWheelInput(inputIngress: Readonly<HostInputIngressCapability>, manager: InputManager, source: InputIngressSource, options?: Readonly<AttachInputOptions>): void;
30
30
  /**
31
31
  * Subscribes `state` to all signals on `manager` to maintain a live held-state snapshot.
32
32
  * Also tracks per-frame edge sets (`justPressedKeys`, `justReleasedKeys`,
@@ -69,7 +69,6 @@ export declare function getGamepadButtonName(mapping: GamepadMappingKind, index:
69
69
  * `gamepad` is the gamepad index; `axis` is the axis index.
70
70
  */
71
71
  export declare function getInputGamepadAxis(state: Readonly<InputState>, gamepad: number, axis: number): number;
72
- export declare function getInputIngressBackend(): HostInputIngressProvider;
73
72
  /**
74
73
  * Creates a key-repeat timer for non-DOM sources (gamepad d-pad buttons,
75
74
  * virtual on-screen keys, native backends) that do not generate their own
@@ -100,7 +99,6 @@ export declare function initializeInputSignals(out: EntityConstruction<InputSign
100
99
  * logical frame to roll the edge sets.
101
100
  */
102
101
  export declare function initializeInputState(out: EntityConstruction<InputState>): void;
103
- export declare function installInputIngressHostBackend(backend: HostInputIngressProvider): void;
104
102
  /**
105
103
  * Returns `true` if the given gamepad button is currently held.
106
104
  * `gamepad` is the gamepad index; `button` is the button index.
@@ -115,8 +113,6 @@ export declare function isInputKeyDown(state: Readonly<InputState>, keyCode: num
115
113
  * `button` is the source-provided button index (0 = primary, 1 = middle, 2 = secondary, …).
116
114
  */
117
115
  export declare function isInputPointerButtonDown(state: Readonly<InputState>, pointerId: number, button: number): boolean;
118
- export declare function resetInputIngressBackendForTest(): void;
119
- export declare function setInputIngressBackend(backend: HostInputIngressProvider | null): void;
120
116
  /**
121
117
  * Returns `true` if the gamepad button at `gamepad`/`button` was pressed
122
118
  * this frame (i.e. transitioned from up → down since the last
@@ -1 +1 @@
1
- {"version":3,"file":"inputManager.d.ts","sourceRoot":"","sources":["../src/inputManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"inputManager.d.ts","sourceRoot":"","sources":["../src/inputManager.ts"],"names":[],"mappings":"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"}
@@ -48,28 +48,28 @@ export function applyGamepadStickDeadZone(out, x, y, deadZone) {
48
48
  out.x = x * scale;
49
49
  out.y = y * scale;
50
50
  }
51
- export function attachGamepadInput(manager, source, options) {
52
- const release = getInputIngressBackend().attachGamepad(source, getInputIngressSink(manager), options);
51
+ export function attachGamepadInput(inputIngress, manager, source, options) {
52
+ const release = inputIngress.attachGamepad(source, getInputIngressSink(manager), options);
53
53
  setInputBinding(manager, source, kGamepadInput, release);
54
54
  }
55
- export function attachKeyboardInput(manager, source, options) {
56
- const release = getInputIngressBackend().attachKeyboard(source, getInputIngressSink(manager), options);
55
+ export function attachKeyboardInput(inputIngress, manager, source, options) {
56
+ const release = inputIngress.attachKeyboard(source, getInputIngressSink(manager), options);
57
57
  setInputBinding(manager, source, kKeyboardInput, release);
58
58
  }
59
- export function attachPointerInput(manager, source, options) {
60
- const release = getInputIngressBackend().attachPointer(source, getInputIngressSink(manager), options);
59
+ export function attachPointerInput(inputIngress, manager, source, options) {
60
+ const release = inputIngress.attachPointer(source, getInputIngressSink(manager), options);
61
61
  setInputBinding(manager, source, kPointerInput, release);
62
62
  }
63
- export function attachRelativePointerInput(manager, source, options) {
64
- const release = getInputIngressBackend().attachRelativePointer(source, getInputIngressSink(manager), options);
63
+ export function attachRelativePointerInput(inputIngress, manager, source, options) {
64
+ const release = inputIngress.attachRelativePointer(source, getInputIngressSink(manager), options);
65
65
  setInputBinding(manager, source, kRelativePointerInput, release);
66
66
  }
67
- export function attachTextInput(manager, source, options) {
68
- const release = getInputIngressBackend().attachText(source, getInputIngressSink(manager), options);
67
+ export function attachTextInput(inputIngress, manager, source, options) {
68
+ const release = inputIngress.attachText(source, getInputIngressSink(manager), options);
69
69
  setInputBinding(manager, source, kTextInput, release);
70
70
  }
71
- export function attachWheelInput(manager, source, options) {
72
- const release = getInputIngressBackend().attachWheel(source, getInputIngressSink(manager), options);
71
+ export function attachWheelInput(inputIngress, manager, source, options) {
72
+ const release = inputIngress.attachWheel(source, getInputIngressSink(manager), options);
73
73
  setInputBinding(manager, source, kWheelInput, release);
74
74
  }
75
75
  /**
@@ -256,9 +256,6 @@ export function getGamepadButtonName(mapping, index) {
256
256
  export function getInputGamepadAxis(state, gamepad, axis) {
257
257
  return state.axisValues.get(gamepad * MAX_GAMEPAD_AXES + axis) ?? 0;
258
258
  }
259
- export function getInputIngressBackend() {
260
- return _customInputIngressBackend ?? _hostInputIngressBackend ?? _inputIngressSentinel;
261
- }
262
259
  /**
263
260
  * Creates a key-repeat timer for non-DOM sources (gamepad d-pad buttons,
264
261
  * virtual on-screen keys, native backends) that do not generate their own
@@ -351,11 +348,6 @@ export function initializeInputState(out) {
351
348
  out.keysDown = new Set();
352
349
  out.pointerButtonsDown = new Map();
353
350
  }
354
- // First host wins; a custom backend installed through setInputIngressBackend always takes precedence.
355
- export function installInputIngressHostBackend(backend) {
356
- if (_hostInputIngressBackend === null)
357
- _hostInputIngressBackend = backend;
358
- }
359
351
  /**
360
352
  * Returns `true` if the given gamepad button is currently held.
361
353
  * `gamepad` is the gamepad index; `button` is the button index.
@@ -376,13 +368,6 @@ export function isInputKeyDown(state, keyCode) {
376
368
  export function isInputPointerButtonDown(state, pointerId, button) {
377
369
  return ((state.pointerButtonsDown.get(pointerId) ?? 0) & (1 << button)) !== 0;
378
370
  }
379
- export function resetInputIngressBackendForTest() {
380
- _customInputIngressBackend = null;
381
- _hostInputIngressBackend = null;
382
- }
383
- export function setInputIngressBackend(backend) {
384
- _customInputIngressBackend = backend;
385
- }
386
371
  /**
387
372
  * Returns `true` if the gamepad button at `gamepad`/`button` was pressed
388
373
  * this frame (i.e. transitioned from up → down since the last
@@ -514,17 +499,6 @@ function getInputIngressSink(manager) {
514
499
  _inputIngressSinks.set(manager, sink);
515
500
  return sink;
516
501
  }
517
- function noopInputIngressRelease() { }
518
- const _inputIngressSentinel = {
519
- attachGamepad: () => noopInputIngressRelease,
520
- attachKeyboard: () => noopInputIngressRelease,
521
- attachPointer: () => noopInputIngressRelease,
522
- attachRelativePointer: () => noopInputIngressRelease,
523
- attachText: () => noopInputIngressRelease,
524
- attachWheel: () => noopInputIngressRelease,
525
- };
526
- let _customInputIngressBackend = null;
527
- let _hostInputIngressBackend = null;
528
502
  // Internal teardown registry: maps a manager to its per-source, per-input-kind origin release.
529
503
  // Kept off the public InputManager entity so attach/detach track bindings internally and callers hold
530
504
  // nothing. The exact source identity lets one manager attach the same input kind to multiple
@@ -1 +1 @@
1
- {"version":3,"file":"inputManager.js","sourceRoot":"","sources":["../src/inputManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"inputManager.js","sourceRoot":"","sources":["../src/inputManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAqBvG,OAAO,EACL,eAAe,IAAI,qBAAqB,EACxC,iBAAiB,IAAI,uBAAuB,GAC7C,MAAM,0BAA0B,CAAC;AAElC,4FAA4F;AAC5F,qEAAqE;AACrE,2EAA2E;AAC3E,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAC5B,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAE/B;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CAAC,KAAa,EAAE,QAAgB;IACtE,IAAI,QAAQ,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAChC,MAAM,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;IACvC,IAAI,GAAG,IAAI,QAAQ;QAAE,OAAO,CAAC,CAAC;IAC9B,MAAM,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChC,OAAO,IAAI,GAAG,CAAC,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;AACpD,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,yBAAyB,CAAC,GAA6B,EAAE,CAAS,EAAE,CAAS,EAAE,QAAgB;IAC7G,IAAI,QAAQ,IAAI,CAAC,EAAE,CAAC;QAClB,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACV,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACV,OAAO;IACT,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACrC,IAAI,GAAG,IAAI,QAAQ,EAAE,CAAC;QACpB,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACV,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACV,OAAO;IACT,CAAC;IACD,MAAM,KAAK,GAAG,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC;IACxD,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAClB,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,YAAkD,EAClD,OAAqB,EACrB,MAA0B,EAC1B,OAAsC;IAEtC,MAAM,OAAO,GAAG,YAAY,CAAC,aAAa,CAAC,MAAM,EAAE,mBAAmB,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;IAC1F,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,YAAkD,EAClD,OAAqB,EACrB,MAA0B,EAC1B,OAAsC;IAEtC,MAAM,OAAO,GAAG,YAAY,CAAC,cAAc,CAAC,MAAM,EAAE,mBAAmB,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;IAC3F,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,YAAkD,EAClD,OAAqB,EACrB,MAA0B,EAC1B,OAAsC;IAEtC,MAAM,OAAO,GAAG,YAAY,CAAC,aAAa,CAAC,MAAM,EAAE,mBAAmB,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;IAC1F,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,YAAkD,EAClD,OAAqB,EACrB,MAA0B,EAC1B,OAAsC;IAEtC,MAAM,OAAO,GAAG,YAAY,CAAC,qBAAqB,CAAC,MAAM,EAAE,mBAAmB,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;IAClG,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,qBAAqB,EAAE,OAAO,CAAC,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,YAAkD,EAClD,OAAqB,EACrB,MAA0B,EAC1B,OAAsC;IAEtC,MAAM,OAAO,GAAG,YAAY,CAAC,UAAU,CAAC,MAAM,EAAE,mBAAmB,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;IACvF,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,YAAkD,EAClD,OAAqB,EACrB,MAA0B,EAC1B,OAAsC;IAEtC,MAAM,OAAO,GAAG,YAAY,CAAC,WAAW,CAAC,MAAM,EAAE,mBAAmB,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;IACxF,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;AACzD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,+BAA+B,CAAC,KAAiB,EAAE,OAAqB;IACtF,mGAAmG;IACnG,mFAAmF;IACnF,EAAE;IACF,qGAAqG;IACrG,qGAAqG;IACrG,sGAAsG;IACtG,EAAE;IACF,mGAAmG;IACnG,qGAAqG;IACrG,+DAA+D;IAC/D,MAAM,SAAS,GAAG,CAAC,IAAiC,EAAE,EAAE;QACtD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;YAAE,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/E,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC,CAAC;IACF,MAAM,OAAO,GAAG,CAAC,IAAiC,EAAE,EAAE;QACpD,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpC,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC,CAAC;IACF,MAAM,aAAa,GAAG,CAAC,IAAgC,EAAE,EAAE;QACzD,MAAM,IAAI,GAAG,KAAK,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC/D,KAAK,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1E,CAAC,CAAC;IACF,MAAM,WAAW,GAAG,CAAC,IAAgC,EAAE,EAAE;QACvD,MAAM,IAAI,GAAG,KAAK,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC/D,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC;QACxC,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;YACf,KAAK,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAClD,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACrD,CAAC;IACH,CAAC,CAAC;IACF,MAAM,eAAe,GAAG,CAAC,IAAgC,EAAE,EAAE;QAC3D,KAAK,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAClD,CAAC,CAAC;IACF,kGAAkG;IAClG,oGAAoG;IACpG,iFAAiF;IACjF,MAAM,mBAAmB,GAAG,CAAC,IAAsC,EAAE,EAAE;QACrE,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC;QAC7D,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,KAAK,CAAC,yBAAyB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACjF,KAAK,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACpC,CAAC,CAAC;IACF,MAAM,iBAAiB,GAAG,CAAC,IAAsC,EAAE,EAAE;QACnE,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC;QAC7D,KAAK,CAAC,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACrC,KAAK,CAAC,0BAA0B,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC5C,CAAC,CAAC;IACF,MAAM,iBAAiB,GAAG,CAAC,IAAoC,EAAE,EAAE;QACjE,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,GAAG,gBAAgB,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAChF,CAAC,CAAC;IACF,MAAM,gBAAgB,GAAG,CAAC,IAAuC,EAAE,EAAE;QACnE,iDAAiD;QACjD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,mBAAmB,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,mBAAmB,GAAG,CAAC,CAAC;YACnD,KAAK,CAAC,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACrC,KAAK,CAAC,yBAAyB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC5C,KAAK,CAAC,0BAA0B,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC/C,CAAC;QACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1C,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,GAAG,gBAAgB,GAAG,CAAC,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC,CAAC;IACF,MAAM,mBAAmB,GAAG,CAAC,IAAuC,EAAE,EAAE;QACtE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,mBAAmB,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,mBAAmB,GAAG,CAAC,CAAC;YACnD,KAAK,CAAC,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACrC,KAAK,CAAC,yBAAyB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC5C,KAAK,CAAC,0BAA0B,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC/C,CAAC;QACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1C,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,GAAG,gBAAgB,GAAG,CAAC,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC,CAAC;IAEF,aAAa,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAC5C,aAAa,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACxC,aAAa,CAAC,OAAO,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;IACpD,aAAa,CAAC,OAAO,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IAChD,aAAa,CAAC,OAAO,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;IACxD,aAAa,CAAC,OAAO,CAAC,mBAAmB,EAAE,mBAAmB,CAAC,CAAC;IAChE,aAAa,CAAC,OAAO,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAAC;IAC5D,aAAa,CAAC,OAAO,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAAC;IAC5D,aAAa,CAAC,OAAO,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;IAC1D,aAAa,CAAC,OAAO,CAAC,mBAAmB,EAAE,mBAAmB,CAAC,CAAC;IAEhE,OAAO,GAAG,EAAE;QACV,gBAAgB,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAC/C,gBAAgB,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC3C,gBAAgB,CAAC,OAAO,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;QACvD,gBAAgB,CAAC,OAAO,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QACnD,gBAAgB,CAAC,OAAO,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;QAC3D,gBAAgB,CAAC,OAAO,CAAC,mBAAmB,EAAE,mBAAmB,CAAC,CAAC;QACnE,gBAAgB,CAAC,OAAO,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAAC;QAC/D,gBAAgB,CAAC,OAAO,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAAC;QAC/D,gBAAgB,CAAC,OAAO,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;QAC7D,gBAAgB,CAAC,OAAO,CAAC,mBAAmB,EAAE,mBAAmB,CAAC,CAAC;IACrE,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,OAAwC;IAChF,MAAM,GAAG,GAAG,cAAc,EAAuB,CAAC;IAClD,6BAA6B,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAC5C,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,MAAM,GAAG,GAAG,cAAc,EAAgB,CAAC;IAC3C,sBAAsB,CAAC,GAAG,CAAC,CAAC;IAC5B,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,MAAM,GAAG,GAAG,cAAc,EAAgB,CAAC;IAC3C,sBAAsB,CAAC,GAAG,CAAC,CAAC;IAC5B,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,MAAM,GAAG,GAAG,cAAc,EAAc,CAAC;IACzC,oBAAoB,CAAC,GAAG,CAAC,CAAC;IAC1B,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,OAAqB,EAAE,MAA0B;IAClF,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAqB,EAAE,MAA0B;IACnF,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,OAAqB,EAAE,MAA0B;IAClF,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,OAAqB,EAAE,MAA0B;IAC1F,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,qBAAqB,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAqB,EAAE,MAA0B;IAC/E,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAAqB,EAAE,MAA0B;IAChF,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;AAClD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAiB;IAClD,KAAK,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;IAC9B,KAAK,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;IAC/B,KAAK,CAAC,yBAAyB,CAAC,KAAK,EAAE,CAAC;IACxC,KAAK,CAAC,0BAA0B,CAAC,KAAK,EAAE,CAAC;AAC3C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAA2B,EAAE,KAAa;IAC3E,IAAI,OAAO,KAAK,UAAU;QAAE,OAAO,IAAI,CAAC;IACxC,OAAO,kBAAkB,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AAC3C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAA2B,EAAE,KAAa;IAC7E,IAAI,OAAO,KAAK,UAAU;QAAE,OAAO,IAAI,CAAC;IACxC,OAAO,oBAAoB,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AAC7C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAA2B,EAAE,OAAe,EAAE,IAAY;IAC5F,OAAO,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,GAAG,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;AACtE,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,6BAA6B,CAC3C,GAA4C,EAC5C,OAAwC;IAExC,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,MAAM,IAAI,GAAG,GAAG,EAAE;QAChB,YAAY,CAAC,OAAO,CAAC,CAAC;QACtB,aAAa,CAAC,UAAU,CAAC,CAAC;QAC1B,OAAO,GAAG,CAAC,CAAC;QACZ,UAAU,GAAG,CAAC,CAAC;IACjB,CAAC,CAAC;IACF,MAAM,KAAK,GAAG,CAAC,QAAoB,EAAE,EAAE;QACrC,IAAI,EAAE,CAAC;QACP,QAAQ,EAAE,CAAC;QACX,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;YACxB,QAAQ,EAAE,CAAC;YACX,UAAU,GAAG,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAsB,CAAC;QAC5E,CAAC,EAAE,OAAO,CAAC,KAAK,CAAsB,CAAC;IACzC,CAAC,CAAC;IACF,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC;IAClB,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,GAAqC;IAC1E,MAAM,OAAO,GAAG,kBAAkB,EAAE,CAAC;IACrC,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC;IACnB,GAAG,CAAC,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAClD,GAAG,CAAC,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IACtD,GAAG,CAAC,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAClD,GAAG,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAChD,GAAG,CAAC,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IACtD,GAAG,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IAClC,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAC9B,GAAG,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;IAC9C,GAAG,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IAC1C,GAAG,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IAC1C,GAAG,CAAC,qBAAqB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAC1D,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IACtC,GAAG,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IACpC,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IACtC,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,GAAqC;IAC1E,GAAG,CAAC,iBAAiB,GAAG,YAAY,EAAE,CAAC;IACvC,GAAG,CAAC,mBAAmB,GAAG,YAAY,EAAE,CAAC;IACzC,GAAG,CAAC,iBAAiB,GAAG,YAAY,EAAE,CAAC;IACvC,GAAG,CAAC,gBAAgB,GAAG,YAAY,EAAE,CAAC;IACtC,GAAG,CAAC,mBAAmB,GAAG,YAAY,EAAE,CAAC;IACzC,GAAG,CAAC,SAAS,GAAG,YAAY,EAAE,CAAC;IAC/B,GAAG,CAAC,OAAO,GAAG,YAAY,EAAE,CAAC;IAC7B,GAAG,CAAC,eAAe,GAAG,YAAY,EAAE,CAAC;IACrC,GAAG,CAAC,aAAa,GAAG,YAAY,EAAE,CAAC;IACnC,GAAG,CAAC,aAAa,GAAG,YAAY,EAAE,CAAC;IACnC,GAAG,CAAC,qBAAqB,GAAG,YAAY,EAAE,CAAC;IAC3C,GAAG,CAAC,WAAW,GAAG,YAAY,EAAE,CAAC;IACjC,GAAG,CAAC,UAAU,GAAG,YAAY,EAAE,CAAC;IAChC,GAAG,CAAC,WAAW,GAAG,YAAY,EAAE,CAAC;IACjC,GAAG,CAAC,OAAO,GAAG,YAAY,EAAE,CAAC;AAC/B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAmC;IACtE,GAAG,CAAC,UAAU,GAAG,IAAI,GAAG,EAAE,CAAC;IAC3B,GAAG,CAAC,kBAAkB,GAAG,IAAI,GAAG,EAAE,CAAC;IACnC,GAAG,CAAC,yBAAyB,GAAG,IAAI,GAAG,EAAE,CAAC;IAC1C,GAAG,CAAC,eAAe,GAAG,IAAI,GAAG,EAAE,CAAC;IAChC,GAAG,CAAC,0BAA0B,GAAG,IAAI,GAAG,EAAE,CAAC;IAC3C,GAAG,CAAC,gBAAgB,GAAG,IAAI,GAAG,EAAE,CAAC;IACjC,GAAG,CAAC,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAC;IACzB,GAAG,CAAC,kBAAkB,GAAG,IAAI,GAAG,EAAE,CAAC;AACrC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CAAC,KAA2B,EAAE,OAAe,EAAE,MAAc;IACnG,OAAO,KAAK,CAAC,kBAAkB,CAAC,GAAG,CAAC,OAAO,GAAG,mBAAmB,GAAG,MAAM,CAAC,CAAC;AAC9E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,KAA2B,EAAE,OAAe;IACzE,OAAO,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACrC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CAAC,KAA2B,EAAE,SAAiB,EAAE,MAAc;IACrG,OAAO,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC;AAChF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,4BAA4B,CAAC,KAA2B,EAAE,OAAe,EAAE,MAAc;IACvG,OAAO,KAAK,CAAC,yBAAyB,CAAC,GAAG,CAAC,OAAO,GAAG,mBAAmB,GAAG,MAAM,CAAC,CAAC;AACrF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,6BAA6B,CAAC,KAA2B,EAAE,OAAe,EAAE,MAAc;IACxG,OAAO,KAAK,CAAC,0BAA0B,CAAC,GAAG,CAAC,OAAO,GAAG,mBAAmB,GAAG,MAAM,CAAC,CAAC;AACtF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAA2B,EAAE,OAAe;IAC7E,OAAO,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAC5C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAA2B,EAAE,OAAe;IAC9E,OAAO,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAC7C,CAAC;AAED,qEAAqE;AACrE,MAAM,oBAAoB,GAA+C;IACvE,uBAAuB,CAAC,YAAY,EAAE,IAAI;IAC1C,uBAAuB,CAAC,WAAW,EAAE,IAAI;IACzC,uBAAuB,CAAC,WAAW,EAAE,IAAI;IACzC,uBAAuB,CAAC,YAAY,EAAE,IAAI;IAC1C,uBAAuB,CAAC,aAAa,EAAE,IAAI;IAC3C,uBAAuB,CAAC,cAAc,EAAE,IAAI;IAC5C,uBAAuB,CAAC,YAAY,EAAE,IAAI;IAC1C,uBAAuB,CAAC,aAAa,EAAE,IAAI;IAC3C,uBAAuB,CAAC,MAAM,EAAE,IAAI;IACpC,uBAAuB,CAAC,KAAK,EAAE,IAAI;IACnC,uBAAuB,CAAC,UAAU,EAAE,KAAK;IACzC,uBAAuB,CAAC,WAAW,EAAE,KAAK;IAC1C,uBAAuB,CAAC,OAAO,EAAE,KAAK;IACtC,uBAAuB,CAAC,SAAS,EAAE,KAAK;IACxC,uBAAuB,CAAC,SAAS,EAAE,KAAK;IACxC,uBAAuB,CAAC,UAAU,EAAE,KAAK;IACzC,uBAAuB,CAAC,IAAI,EAAE,KAAK;IACnC,uBAAuB,CAAC,QAAQ,EAAE,KAAK;CACxC,CAAC;AAEF,iEAAiE;AACjE,MAAM,kBAAkB,GAA6C;IACnE,qBAAqB,CAAC,YAAY,EAAE,IAAI;IACxC,qBAAqB,CAAC,YAAY,EAAE,IAAI;IACxC,qBAAqB,CAAC,aAAa,EAAE,IAAI;IACzC,qBAAqB,CAAC,aAAa,EAAE,IAAI;CAC1C,CAAC;AAEF,MAAM,kBAAkB,GAAG,IAAI,OAAO,EAAkC,CAAC;AAEzE,SAAS,mBAAmB,CAAC,OAAqB;IAChD,IAAI,IAAI,GAAG,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC3C,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACpC,IAAI,GAAG;QACL,eAAe,CAAC,IAAI;YAClB,IAAI,OAAO,CAAC,OAAO;gBAAE,UAAU,CAAC,OAAO,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;QACnE,CAAC;QACD,iBAAiB,CAAC,IAAI;YACpB,IAAI,OAAO,CAAC,OAAO;gBAAE,UAAU,CAAC,OAAO,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC;QACrE,CAAC;QACD,eAAe,CAAC,IAAI;YAClB,IAAI,OAAO,CAAC,OAAO;gBAAE,UAAU,CAAC,OAAO,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;QACnE,CAAC;QACD,cAAc,CAAC,IAAI;YACjB,IAAI,OAAO,CAAC,OAAO;gBAAE,UAAU,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;QAClE,CAAC;QACD,iBAAiB,CAAC,IAAI;YACpB,IAAI,OAAO,CAAC,OAAO;gBAAE,UAAU,CAAC,OAAO,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC;QACrE,CAAC;QACD,SAAS;YACP,OAAO,OAAO,CAAC,OAAO,CAAC;QACzB,CAAC;QACD,OAAO,CAAC,IAAI;YACV,IAAI,OAAO,CAAC,OAAO;gBAAE,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC3D,CAAC;QACD,KAAK,CAAC,IAAI;YACR,IAAI,OAAO,CAAC,OAAO;gBAAE,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACzD,CAAC;QACD,aAAa,CAAC,IAAI;YAChB,IAAI,OAAO,CAAC,OAAO;gBAAE,UAAU,CAAC,OAAO,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;QACjE,CAAC;QACD,WAAW,CAAC,IAAI;YACd,IAAI,OAAO,CAAC,OAAO;gBAAE,UAAU,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QAC/D,CAAC;QACD,WAAW,CAAC,IAAI;YACd,IAAI,OAAO,CAAC,OAAO;gBAAE,UAAU,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QAC/D,CAAC;QACD,mBAAmB,CAAC,IAAI;YACtB,IAAI,OAAO,CAAC,OAAO;gBAAE,UAAU,CAAC,OAAO,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAC;QACvE,CAAC;QACD,SAAS,CAAC,IAAI;YACZ,IAAI,OAAO,CAAC,OAAO;gBAAE,UAAU,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QAC7D,CAAC;QACD,QAAQ,CAAC,IAAI;YACX,IAAI,OAAO,CAAC,OAAO;gBAAE,UAAU,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAC5D,CAAC;QACD,SAAS,CAAC,IAAI;YACZ,IAAI,OAAO,CAAC,OAAO;gBAAE,UAAU,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QAC7D,CAAC;QACD,KAAK,CAAC,IAAI;YACR,IAAI,OAAO,CAAC,OAAO;gBAAE,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACzD,CAAC;KACF,CAAC;IACF,kBAAkB,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACtC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,+FAA+F;AAC/F,sGAAsG;AACtG,6FAA6F;AAC7F,6CAA6C;AAC7C,MAAM,aAAa,GAAG,MAAM,EAAE,CAAC;AAC/B,MAAM,cAAc,GAAG,MAAM,EAAE,CAAC;AAChC,MAAM,aAAa,GAAG,MAAM,EAAE,CAAC;AAC/B,MAAM,qBAAqB,GAAG,MAAM,EAAE,CAAC;AACvC,MAAM,UAAU,GAAG,MAAM,EAAE,CAAC;AAC5B,MAAM,WAAW,GAAG,MAAM,EAAE,CAAC;AAE7B,MAAM,cAAc,GAAG,IAAI,OAAO,EAAkE,CAAC;AAErG,SAAS,iBAAiB,CAAC,OAAqB,EAAE,MAA0B,EAAE,IAAY;IACxF,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAG,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACrC,MAAM,OAAO,GAAG,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAClC,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO;IAClC,MAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACrB,IAAI,MAAO,CAAC,IAAI,KAAK,CAAC;QAAE,QAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACjD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,eAAe,CAAC,OAAqB,EAAE,MAA0B,EAAE,IAAY,EAAE,OAAmB;IAC3G,IAAI,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC3C,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAC;QACrB,cAAc,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACxC,CAAC;IACD,IAAI,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAClC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;QACnB,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAClC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACpB,QAAQ,EAAE,CAAC;IACb,CAAC;IACD,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC5B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flighthq/input",
3
- "version": "0.5.1-next.1350.8ce488b",
3
+ "version": "0.5.1-next.1404.457d1da",
4
4
  "author": "Joshua Granick and other contributors",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -38,9 +38,9 @@
38
38
  "clean:dist": "tsx ../../scripts/clean-package-dist.ts"
39
39
  },
40
40
  "dependencies": {
41
- "@flighthq/entity": "0.5.1-next.1350.8ce488b",
42
- "@flighthq/signals": "0.5.1-next.1350.8ce488b",
43
- "@flighthq/types": "0.5.1-next.1350.8ce488b"
41
+ "@flighthq/entity": "0.5.1-next.1404.457d1da",
42
+ "@flighthq/signals": "0.5.1-next.1404.457d1da",
43
+ "@flighthq/types": "0.5.1-next.1404.457d1da"
44
44
  },
45
45
  "devDependencies": {
46
46
  "typescript": "^5.3.0"
package/src/index.test.ts CHANGED
@@ -1,11 +1,11 @@
1
- import type { HostInputIngressProvider } from '@flighthq/types/contract';
1
+ import type { HostInputIngressCapability } from '@flighthq/types/contract';
2
2
 
3
3
  import * as inputContract from './contract';
4
4
  import * as inputPublic from './index';
5
5
 
6
6
  type LegacyInputPointerLockBackendMember = 'exitPointerLock' | 'hasPointerLock';
7
7
  type LegacyInputPointerLockIngressOperation = Extract<
8
- keyof HostInputIngressProvider,
8
+ keyof HostInputIngressCapability,
9
9
  LegacyInputPointerLockBackendMember
10
10
  >;
11
11
 
@@ -1,7 +1,7 @@
1
1
  import { connectSignal, emitSignal } from '@flighthq/signals/contract';
2
2
  import type {
3
3
  InputGamepadButtonData,
4
- HostInputIngressProvider,
4
+ HostInputIngressCapability,
5
5
  InputIngressSink,
6
6
  InputIngressSource,
7
7
  InputKeyboardData,
@@ -33,17 +33,13 @@ import {
33
33
  getGamepadAxisName,
34
34
  getGamepadButtonName,
35
35
  getInputGamepadAxis,
36
- getInputIngressBackend,
37
36
  initializeInputKeyRepeatTimer,
38
37
  initializeInputManager,
39
38
  initializeInputSignals,
40
39
  initializeInputState,
41
- installInputIngressHostBackend,
42
40
  isInputGamepadButtonDown,
43
41
  isInputKeyDown,
44
42
  isInputPointerButtonDown,
45
- resetInputIngressBackendForTest,
46
- setInputIngressBackend,
47
43
  wasInputGamepadButtonPressed,
48
44
  wasInputGamepadButtonReleased,
49
45
  wasInputKeyPressed,
@@ -51,7 +47,6 @@ import {
51
47
  } from './inputManager';
52
48
 
53
49
  afterEach(() => {
54
- resetInputIngressBackendForTest();
55
50
  vi.unstubAllGlobals();
56
51
  });
57
52
 
@@ -60,7 +55,7 @@ type InputIngressAttachmentKind = 'gamepad' | 'keyboard' | 'pointer' | 'relative
60
55
  function createTestInputIngressBackend(
61
56
  attach: (kind: InputIngressAttachmentKind, source: InputIngressSource, sink: InputIngressSink) => () => void = () =>
62
57
  () => {},
63
- ): HostInputIngressProvider {
58
+ ): HostInputIngressCapability {
64
59
  return {
65
60
  attachGamepad: (source, sink) => attach('gamepad', source, sink),
66
61
  attachKeyboard: (source, sink) => attach('keyboard', source, sink),
@@ -73,15 +68,13 @@ function createTestInputIngressBackend(
73
68
 
74
69
  function expectInputAttachment(attach: typeof attachGamepadInput, expectedKind: InputIngressAttachmentKind): void {
75
70
  const attachments: Array<Readonly<{ kind: InputIngressAttachmentKind; source: InputIngressSource }>> = [];
76
- setInputIngressBackend(
77
- createTestInputIngressBackend((kind, source) => {
78
- attachments.push({ kind, source });
79
- return () => {};
80
- }),
81
- );
71
+ const backend = createTestInputIngressBackend((kind, source) => {
72
+ attachments.push({ kind, source });
73
+ return () => {};
74
+ });
82
75
  const source = {};
83
76
 
84
- attach(createInputManager(), source);
77
+ attach(backend, createInputManager(), source);
85
78
 
86
79
  expect(attachments).toEqual([{ kind: expectedKind, source }]);
87
80
  }
@@ -92,10 +85,10 @@ function expectInputDetachment(
92
85
  expectedKind: InputIngressAttachmentKind,
93
86
  ): void {
94
87
  const release = vi.fn();
95
- setInputIngressBackend(createTestInputIngressBackend((kind) => (kind === expectedKind ? release : () => {})));
88
+ const backend = createTestInputIngressBackend((kind) => (kind === expectedKind ? release : () => {}));
96
89
  const manager = createInputManager();
97
90
  const source = {};
98
- attach(manager, source);
91
+ attach(backend, manager, source);
99
92
 
100
93
  detach(manager, source);
101
94
 
@@ -123,7 +116,6 @@ describe('applyGamepadAxisDeadZone', () => {
123
116
  });
124
117
 
125
118
  it('is alias-safe (result is based on input, not out)', () => {
126
- // pure function — no mutation concern, but verify correctness for a midpoint value
127
119
  const mid = applyGamepadAxisDeadZone(0.6, 0.2);
128
120
  expect(mid).toBeGreaterThan(0);
129
121
  expect(mid).toBeLessThan(1);
@@ -163,12 +155,10 @@ describe('applyGamepadStickDeadZone', () => {
163
155
  describe('attachGamepadInput', () => {
164
156
  it('accepts native axis and button pushes without browser polling globals', () => {
165
157
  let sink: InputIngressSink | null = null;
166
- setInputIngressBackend(
167
- createTestInputIngressBackend((kind, _source, attachedSink) => {
168
- if (kind === 'gamepad') sink = attachedSink;
169
- return () => {};
170
- }),
171
- );
158
+ const backend = createTestInputIngressBackend((kind, _source, attachedSink) => {
159
+ if (kind === 'gamepad') sink = attachedSink;
160
+ return () => {};
161
+ });
172
162
  vi.stubGlobal('navigator', undefined);
173
163
  vi.stubGlobal('requestAnimationFrame', undefined);
174
164
  vi.stubGlobal('cancelAnimationFrame', undefined);
@@ -183,7 +173,7 @@ describe('attachGamepadInput', () => {
183
173
  connectSignal(manager.onGamepadButtonUp, () => events.push('up'));
184
174
  connectSignal(manager.onGamepadDisconnect, () => events.push('disconnect'));
185
175
 
186
- attachGamepadInput(manager, {});
176
+ attachGamepadInput(backend, manager, {});
187
177
  sink!.gamepadConnect({ gamepad: 2, id: 'Native Pad', mapping: 'raw' });
188
178
  sink!.gamepadAxisMove({ axis: 1, gamepad: 2, timeStamp: 10, value: 0.75 });
189
179
  sink!.gamepadButtonDown({ button: 3, gamepad: 2, timeStamp: 11, value: 1 });
@@ -297,107 +287,79 @@ describe('connectInputStateToInputManager', () => {
297
287
  emitSignal(manager.onKeyDown, data);
298
288
  expect(isInputKeyDown(state, KeyCode.A)).toBe(true);
299
289
 
300
- emitSignal(manager.onKeyUp, data);
301
290
  dispose();
302
-
303
- // After dispose, subsequent events should not update state.
304
- emitSignal(manager.onKeyDown, data);
305
- expect(isInputKeyDown(state, KeyCode.A)).toBe(false);
291
+ emitSignal(manager.onKeyUp, data);
292
+ expect(isInputKeyDown(state, KeyCode.A)).toBe(true);
306
293
  });
307
294
  });
308
295
 
309
296
  describe('createInputKeyRepeatTimer', () => {
310
- it('invokes callback immediately on start', () => {
311
- vi.useFakeTimers();
312
- const timer = createInputKeyRepeatTimer({ delay: 500, interval: 33 });
313
- let count = 0;
314
- timer.start(() => count++);
315
- expect(count).toBe(1);
316
- vi.useRealTimers();
317
- });
318
-
319
- it('fires repeat after delay and interval', () => {
320
- vi.useFakeTimers();
321
- const timer = createInputKeyRepeatTimer({ delay: 500, interval: 100 });
322
- let count = 0;
323
- timer.start(() => count++);
324
- expect(count).toBe(1); // immediate
325
- vi.advanceTimersByTime(500);
326
- expect(count).toBe(2); // after delay
327
- vi.advanceTimersByTime(100);
328
- expect(count).toBe(3); // after first interval
329
- vi.advanceTimersByTime(100);
330
- expect(count).toBe(4); // after second interval
331
- timer.stop();
332
- vi.useRealTimers();
333
- });
334
-
335
- it('stops repeating after stop()', () => {
297
+ it('fires the callback immediately on start, then after delay and at interval', () => {
336
298
  vi.useFakeTimers();
337
- const timer = createInputKeyRepeatTimer({ delay: 500, interval: 100 });
338
- let count = 0;
339
- timer.start(() => count++);
340
- vi.advanceTimersByTime(500);
341
- timer.stop();
342
- const countAfterStop = count;
343
- vi.advanceTimersByTime(500);
344
- expect(count).toBe(countAfterStop);
345
- vi.useRealTimers();
346
- });
347
-
348
- it('can be restarted after stop', () => {
349
- vi.useFakeTimers();
350
- const timer = createInputKeyRepeatTimer({ delay: 500, interval: 100 });
351
- let count = 0;
352
- timer.start(() => count++);
353
- timer.stop();
354
- timer.start(() => count++);
355
- expect(count).toBe(2); // two immediate fires
356
- vi.useRealTimers();
299
+ try {
300
+ const timer = createInputKeyRepeatTimer({ delay: 500, interval: 33 });
301
+ const callback = vi.fn();
302
+ timer.start(callback);
303
+ expect(callback).toHaveBeenCalledOnce();
304
+ vi.advanceTimersByTime(499);
305
+ expect(callback).toHaveBeenCalledOnce();
306
+ vi.advanceTimersByTime(1);
307
+ expect(callback).toHaveBeenCalledTimes(2);
308
+ vi.advanceTimersByTime(33);
309
+ expect(callback).toHaveBeenCalledTimes(3);
310
+ timer.stop();
311
+ vi.advanceTimersByTime(1000);
312
+ expect(callback).toHaveBeenCalledTimes(3);
313
+ } finally {
314
+ vi.useRealTimers();
315
+ }
357
316
  });
358
317
  });
359
318
 
360
319
  describe('createInputManager', () => {
361
- it('creates an enabled manager by default', () => {
320
+ it('is enabled by default', () => {
362
321
  const manager = createInputManager();
363
322
  expect(manager.enabled).toBe(true);
364
- expect(manager.onPointerDown).toBeDefined();
365
323
  });
366
324
 
367
- it('can create a disabled manager', () => {
325
+ it('emits nothing when disabled', () => {
368
326
  const manager = createInputManager();
327
+ const events: string[] = [];
328
+ connectSignal(manager.onKeyDown, () => events.push('key'));
369
329
  manager.enabled = false;
370
- expect(manager.enabled).toBe(false);
330
+
331
+ const backend = createTestInputIngressBackend((_kind, _src, sink) => {
332
+ sink.keyDown(createInputKeyboardData(KeyCode.A));
333
+ return () => {};
334
+ });
335
+ attachKeyboardInput(backend, manager, {});
336
+ expect(events).toEqual([]);
371
337
  });
372
338
  });
373
339
 
374
340
  describe('createInputSignals', () => {
375
- it('returns all input signals', () => {
341
+ it('creates all 15 signals', () => {
376
342
  const signals = createInputSignals();
377
- expect(signals.onGamepadAxisMove).toBeDefined();
378
- expect(signals.onGamepadButtonDown).toBeDefined();
379
- expect(signals.onGamepadButtonUp).toBeDefined();
380
- expect(signals.onGamepadConnect).toBeDefined();
381
- expect(signals.onGamepadDisconnect).toBeDefined();
382
343
  expect(signals.onKeyDown).toBeDefined();
383
344
  expect(signals.onKeyUp).toBeDefined();
384
- expect(signals.onPointerCancel).toBeDefined();
385
345
  expect(signals.onPointerDown).toBeDefined();
346
+ expect(signals.onPointerUp).toBeDefined();
386
347
  expect(signals.onPointerMove).toBeDefined();
387
348
  expect(signals.onPointerMoveRelative).toBeDefined();
388
- expect(signals.onPointerUp).toBeDefined();
389
- expect(signals.onTextEdit).toBeDefined();
349
+ expect(signals.onPointerCancel).toBeDefined();
350
+ expect(signals.onGamepadButtonDown).toBeDefined();
351
+ expect(signals.onGamepadButtonUp).toBeDefined();
352
+ expect(signals.onGamepadAxisMove).toBeDefined();
353
+ expect(signals.onGamepadConnect).toBeDefined();
354
+ expect(signals.onGamepadDisconnect).toBeDefined();
390
355
  expect(signals.onTextInput).toBeDefined();
356
+ expect(signals.onTextEdit).toBeDefined();
391
357
  expect(signals.onWheel).toBeDefined();
392
358
  });
393
-
394
- it('returns a new object each call', () => {
395
- expect(createInputSignals()).not.toBe(createInputSignals());
396
- });
397
359
  });
398
360
 
399
361
  describe('createInputState', () => {
400
- it('creates state with empty collections including frame-edge sets', () => {
362
+ it('starts with empty maps and sets', () => {
401
363
  const state = createInputState();
402
364
  expect(state.keysDown.size).toBe(0);
403
365
  expect(state.pointerButtonsDown.size).toBe(0);
@@ -411,71 +373,153 @@ describe('createInputState', () => {
411
373
  });
412
374
 
413
375
  describe('detachGamepadInput', () => {
414
- it('releases the matching ingress binding', () => {
376
+ it('releases the attachment', () => {
415
377
  expectInputDetachment(attachGamepadInput, detachGamepadInput, 'gamepad');
416
378
  });
417
379
  });
418
380
 
419
381
  describe('detachKeyboardInput', () => {
420
- it('releases the matching ingress binding', () => {
382
+ it('releases the attachment', () => {
421
383
  expectInputDetachment(attachKeyboardInput, detachKeyboardInput, 'keyboard');
422
384
  });
423
385
  });
424
386
 
425
387
  describe('detachPointerInput', () => {
426
- it('releases the matching ingress binding', () => {
388
+ it('releases the attachment', () => {
427
389
  expectInputDetachment(attachPointerInput, detachPointerInput, 'pointer');
428
390
  });
429
391
  });
430
392
 
431
393
  describe('detachRelativePointerInput', () => {
432
- it('releases the matching ingress binding', () => {
394
+ it('releases the attachment', () => {
433
395
  expectInputDetachment(attachRelativePointerInput, detachRelativePointerInput, 'relativePointer');
434
396
  });
435
397
  });
436
398
 
437
399
  describe('detachTextInput', () => {
438
- it('releases the matching ingress binding', () => {
400
+ it('releases the attachment', () => {
439
401
  expectInputDetachment(attachTextInput, detachTextInput, 'text');
440
402
  });
441
403
  });
442
404
 
443
405
  describe('detachWheelInput', () => {
444
- it('releases the matching ingress binding', () => {
406
+ it('releases the attachment', () => {
445
407
  expectInputDetachment(attachWheelInput, detachWheelInput, 'wheel');
446
408
  });
447
409
  });
448
410
 
449
411
  describe('endInputStateFrame', () => {
450
- it('clears all frame-edge sets', () => {
451
- const manager = createInputManager();
412
+ it('clears all four edge sets', () => {
452
413
  const state = createInputState();
453
- connectInputStateToInputManager(state, manager);
454
-
455
- emitSignal(manager.onKeyDown, createInputKeyboardData(KeyCode.A));
456
- expect(state.justPressedKeys.size).toBe(1);
457
-
414
+ state.justPressedKeys.add(1);
415
+ state.justReleasedKeys.add(2);
416
+ state.justPressedGamepadButtons.add(3);
417
+ state.justReleasedGamepadButtons.add(4);
458
418
  endInputStateFrame(state);
459
419
  expect(state.justPressedKeys.size).toBe(0);
460
420
  expect(state.justReleasedKeys.size).toBe(0);
461
421
  expect(state.justPressedGamepadButtons.size).toBe(0);
462
422
  expect(state.justReleasedGamepadButtons.size).toBe(0);
463
423
  });
424
+ });
464
425
 
465
- it('does not affect held-state sets', () => {
426
+ describe('explicit input ingress parameter', () => {
427
+ it('passes each exact source identity through all six attachment families and releases each once', () => {
428
+ const attachments: Array<Readonly<{ kind: InputIngressAttachmentKind; source: InputIngressSource }>> = [];
429
+ const releases = new Map<InputIngressAttachmentKind, ReturnType<typeof vi.fn>>();
430
+ const backend = createTestInputIngressBackend((kind, source) => {
431
+ attachments.push({ kind, source });
432
+ const release = vi.fn();
433
+ releases.set(kind, release);
434
+ return release;
435
+ });
466
436
  const manager = createInputManager();
467
- const state = createInputState();
468
- connectInputStateToInputManager(state, manager);
437
+ const sources = {
438
+ gamepad: {},
439
+ keyboard: {},
440
+ pointer: {},
441
+ relativePointer: {},
442
+ text: {},
443
+ wheel: {},
444
+ } satisfies Record<InputIngressAttachmentKind, InputIngressSource>;
469
445
 
470
- emitSignal(manager.onKeyDown, createInputKeyboardData(KeyCode.A));
471
- endInputStateFrame(state);
472
- // Key is still held even after frame roll
473
- expect(state.keysDown.has(KeyCode.A)).toBe(true);
446
+ attachGamepadInput(backend, manager, sources.gamepad);
447
+ attachKeyboardInput(backend, manager, sources.keyboard);
448
+ attachPointerInput(backend, manager, sources.pointer);
449
+ attachRelativePointerInput(backend, manager, sources.relativePointer);
450
+ attachTextInput(backend, manager, sources.text);
451
+ attachWheelInput(backend, manager, sources.wheel);
452
+
453
+ expect(attachments).toEqual([
454
+ { kind: 'gamepad', source: sources.gamepad },
455
+ { kind: 'keyboard', source: sources.keyboard },
456
+ { kind: 'pointer', source: sources.pointer },
457
+ { kind: 'relativePointer', source: sources.relativePointer },
458
+ { kind: 'text', source: sources.text },
459
+ { kind: 'wheel', source: sources.wheel },
460
+ ]);
461
+
462
+ detachGamepadInput(manager, sources.gamepad);
463
+ detachKeyboardInput(manager, sources.keyboard);
464
+ detachPointerInput(manager, sources.pointer);
465
+ detachRelativePointerInput(manager, sources.relativePointer);
466
+ detachTextInput(manager, sources.text);
467
+ detachWheelInput(manager, sources.wheel);
468
+ detachGamepadInput(manager, sources.gamepad);
469
+ detachKeyboardInput(manager, sources.keyboard);
470
+ detachPointerInput(manager, sources.pointer);
471
+ detachRelativePointerInput(manager, sources.relativePointer);
472
+ detachTextInput(manager, sources.text);
473
+ detachWheelInput(manager, sources.wheel);
474
+
475
+ expect([...releases.values()].every((release) => release.mock.calls.length === 1)).toBe(true);
476
+ });
477
+
478
+ it('pins cleanup to the originating backend and never destroys the borrowed source', () => {
479
+ const releaseA = vi.fn();
480
+ const releaseB = vi.fn();
481
+ const backendA = createTestInputIngressBackend((kind) => (kind === 'keyboard' ? releaseA : vi.fn()));
482
+ const backendB = createTestInputIngressBackend((kind) => (kind === 'keyboard' ? releaseB : vi.fn()));
483
+ const source = { destroy: vi.fn() };
484
+ const manager = createInputManager();
485
+
486
+ attachKeyboardInput(backendA, manager, source);
487
+ attachKeyboardInput(backendB, manager, source);
488
+ detachKeyboardInput(manager, source);
489
+ detachKeyboardInput(manager, source);
490
+
491
+ expect(releaseA).toHaveBeenCalledOnce();
492
+ expect(releaseB).toHaveBeenCalledOnce();
493
+ expect(source.destroy).not.toHaveBeenCalled();
494
+ });
495
+
496
+ it('releases the old origin once when the same source is reattached with a different backend', () => {
497
+ const releaseA = vi.fn();
498
+ const releaseB = vi.fn();
499
+ const source = {};
500
+ const manager = createInputManager();
501
+
502
+ attachPointerInput(
503
+ createTestInputIngressBackend(() => releaseA),
504
+ manager,
505
+ source,
506
+ );
507
+ attachPointerInput(
508
+ createTestInputIngressBackend(() => releaseB),
509
+ manager,
510
+ source,
511
+ );
512
+ expect(releaseA).toHaveBeenCalledOnce();
513
+
514
+ detachPointerInput(manager, source);
515
+ detachPointerInput(manager, source);
516
+ expect(releaseA).toHaveBeenCalledOnce();
517
+ expect(releaseB).toHaveBeenCalledOnce();
474
518
  });
475
519
  });
476
520
 
477
521
  describe('getGamepadAxisName', () => {
478
- it('returns the semantic axis name for a standard mapping', () => {
522
+ it('maps standard indices to GamepadAxisKind values', () => {
479
523
  expect(getGamepadAxisName('standard', 0)).toBe(GamepadAxisKind.STICK_LEFT_X);
480
524
  expect(getGamepadAxisName('standard', 1)).toBe(GamepadAxisKind.STICK_LEFT_Y);
481
525
  expect(getGamepadAxisName('standard', 2)).toBe(GamepadAxisKind.STICK_RIGHT_X);
@@ -486,14 +530,10 @@ describe('getGamepadAxisName', () => {
486
530
  expect(getGamepadAxisName('raw', 0)).toBeNull();
487
531
  expect(getGamepadAxisName('', 0)).toBeNull();
488
532
  });
489
-
490
- it('returns null for an out-of-range index', () => {
491
- expect(getGamepadAxisName('standard', 99)).toBeNull();
492
- });
493
533
  });
494
534
 
495
535
  describe('getGamepadButtonName', () => {
496
- it('returns the semantic button name for a standard mapping', () => {
536
+ it('maps standard indices to GamepadButtonKind values', () => {
497
537
  expect(getGamepadButtonName('standard', 0)).toBe(GamepadButtonKind.BUTTON_SOUTH);
498
538
  expect(getGamepadButtonName('standard', 12)).toBe(GamepadButtonKind.DPAD_UP);
499
539
  expect(getGamepadButtonName('standard', 16)).toBe(GamepadButtonKind.HOME);
@@ -516,25 +556,6 @@ describe('getInputGamepadAxis', () => {
516
556
  });
517
557
  });
518
558
 
519
- describe('getInputIngressBackend', () => {
520
- it('uses one stable portable fallback', () => {
521
- const fallback = getInputIngressBackend();
522
- expect(getInputIngressBackend()).toBe(fallback);
523
- });
524
-
525
- it('returns inert releases for every attachment family when no provider is installed', () => {
526
- const fallback = getInputIngressBackend();
527
- const source = {};
528
- const sink = {} as InputIngressSink;
529
- expect(() => fallback.attachGamepad(source, sink)()).not.toThrow();
530
- expect(() => fallback.attachKeyboard(source, sink)()).not.toThrow();
531
- expect(() => fallback.attachPointer(source, sink)()).not.toThrow();
532
- expect(() => fallback.attachRelativePointer(source, sink)()).not.toThrow();
533
- expect(() => fallback.attachText(source, sink)()).not.toThrow();
534
- expect(() => fallback.attachWheel(source, sink)()).not.toThrow();
535
- });
536
- });
537
-
538
559
  describe('initializeInputKeyRepeatTimer', () => {
539
560
  it('is the construction initializer of createInputKeyRepeatTimer', () => {
540
561
  expect(typeof initializeInputKeyRepeatTimer).toBe('function');
@@ -559,15 +580,6 @@ describe('initializeInputState', () => {
559
580
  });
560
581
  });
561
582
 
562
- describe('installInputIngressHostBackend', () => {
563
- it('preserves the first installed host identity', () => {
564
- const firstHost = createTestInputIngressBackend();
565
- installInputIngressHostBackend(firstHost);
566
- installInputIngressHostBackend(createTestInputIngressBackend());
567
- expect(getInputIngressBackend()).toBe(firstHost);
568
- });
569
- });
570
-
571
583
  describe('isInputGamepadButtonDown', () => {
572
584
  it('returns false for an unknown gamepad/button combination', () => {
573
585
  const state = createInputState();
@@ -589,119 +601,6 @@ describe('isInputPointerButtonDown', () => {
589
601
  });
590
602
  });
591
603
 
592
- describe('resetInputIngressBackendForTest', () => {
593
- it('clears custom and host slots back to the portable fallback', () => {
594
- const fallback = getInputIngressBackend();
595
- installInputIngressHostBackend(createTestInputIngressBackend());
596
- setInputIngressBackend(createTestInputIngressBackend());
597
-
598
- resetInputIngressBackendForTest();
599
- expect(getInputIngressBackend()).toBe(fallback);
600
- });
601
- });
602
-
603
- describe('setInputIngressBackend', () => {
604
- it('gives a custom backend precedence and reveals the installed host when cleared', () => {
605
- const firstHost = createTestInputIngressBackend();
606
- installInputIngressHostBackend(firstHost);
607
- const custom = createTestInputIngressBackend();
608
- setInputIngressBackend(custom);
609
- expect(getInputIngressBackend()).toBe(custom);
610
- setInputIngressBackend(null);
611
- expect(getInputIngressBackend()).toBe(firstHost);
612
- });
613
-
614
- it('passes each exact source identity through all six attachment families and releases each once', () => {
615
- const attachments: Array<Readonly<{ kind: InputIngressAttachmentKind; source: InputIngressSource }>> = [];
616
- const releases = new Map<InputIngressAttachmentKind, ReturnType<typeof vi.fn>>();
617
- setInputIngressBackend(
618
- createTestInputIngressBackend((kind, source) => {
619
- attachments.push({ kind, source });
620
- const release = vi.fn();
621
- releases.set(kind, release);
622
- return release;
623
- }),
624
- );
625
- const manager = createInputManager();
626
- const sources = {
627
- gamepad: {},
628
- keyboard: {},
629
- pointer: {},
630
- relativePointer: {},
631
- text: {},
632
- wheel: {},
633
- } satisfies Record<InputIngressAttachmentKind, InputIngressSource>;
634
-
635
- attachGamepadInput(manager, sources.gamepad);
636
- attachKeyboardInput(manager, sources.keyboard);
637
- attachPointerInput(manager, sources.pointer);
638
- attachRelativePointerInput(manager, sources.relativePointer);
639
- attachTextInput(manager, sources.text);
640
- attachWheelInput(manager, sources.wheel);
641
-
642
- expect(attachments).toEqual([
643
- { kind: 'gamepad', source: sources.gamepad },
644
- { kind: 'keyboard', source: sources.keyboard },
645
- { kind: 'pointer', source: sources.pointer },
646
- { kind: 'relativePointer', source: sources.relativePointer },
647
- { kind: 'text', source: sources.text },
648
- { kind: 'wheel', source: sources.wheel },
649
- ]);
650
-
651
- detachGamepadInput(manager, sources.gamepad);
652
- detachKeyboardInput(manager, sources.keyboard);
653
- detachPointerInput(manager, sources.pointer);
654
- detachRelativePointerInput(manager, sources.relativePointer);
655
- detachTextInput(manager, sources.text);
656
- detachWheelInput(manager, sources.wheel);
657
- detachGamepadInput(manager, sources.gamepad);
658
- detachKeyboardInput(manager, sources.keyboard);
659
- detachPointerInput(manager, sources.pointer);
660
- detachRelativePointerInput(manager, sources.relativePointer);
661
- detachTextInput(manager, sources.text);
662
- detachWheelInput(manager, sources.wheel);
663
-
664
- expect([...releases.values()].every((release) => release.mock.calls.length === 1)).toBe(true);
665
- });
666
-
667
- it('pins cleanup to the originating backend and never destroys the borrowed source', () => {
668
- const releaseA = vi.fn();
669
- const releaseB = vi.fn();
670
- const backendA = createTestInputIngressBackend((kind) => (kind === 'keyboard' ? releaseA : vi.fn()));
671
- const backendB = createTestInputIngressBackend((kind) => (kind === 'keyboard' ? releaseB : vi.fn()));
672
- const source = { destroy: vi.fn() };
673
- const manager = createInputManager();
674
-
675
- setInputIngressBackend(backendA);
676
- attachKeyboardInput(manager, source);
677
- setInputIngressBackend(backendB);
678
- detachKeyboardInput(manager, source);
679
- detachKeyboardInput(manager, source);
680
-
681
- expect(releaseA).toHaveBeenCalledOnce();
682
- expect(releaseB).not.toHaveBeenCalled();
683
- expect(source.destroy).not.toHaveBeenCalled();
684
- });
685
-
686
- it('releases the old origin once when the same source is reattached after backend replacement', () => {
687
- const releaseA = vi.fn();
688
- const releaseB = vi.fn();
689
- const source = {};
690
- const manager = createInputManager();
691
-
692
- setInputIngressBackend(createTestInputIngressBackend(() => releaseA));
693
- attachPointerInput(manager, source);
694
- setInputIngressBackend(createTestInputIngressBackend(() => releaseB));
695
- attachPointerInput(manager, source);
696
- expect(releaseA).toHaveBeenCalledOnce();
697
-
698
- detachPointerInput(manager, source);
699
- detachPointerInput(manager, source);
700
- expect(releaseA).toHaveBeenCalledOnce();
701
- expect(releaseB).toHaveBeenCalledOnce();
702
- });
703
- });
704
-
705
604
  function createInputKeyboardData(keyCode: number): InputKeyboardData {
706
605
  return {
707
606
  altKey: false,
@@ -768,9 +667,6 @@ describe('wasInputGamepadButtonPressed', () => {
768
667
  expect(wasInputGamepadButtonPressed(state, 0, 0)).toBe(false);
769
668
  });
770
669
 
771
- // Driven by emitting the signal because the Web adapter already edge-detects and cannot produce a
772
- // repeat. A native backend reporting held buttons every poll can, and these signals are public —
773
- // which is why the guard belongs on the state machine.
774
670
  it('returns false when a held button is reported down again', () => {
775
671
  const manager = createInputManager();
776
672
  const state = createInputState();
@@ -807,11 +703,9 @@ describe('wasInputGamepadButtonReleased', () => {
807
703
  const state = createInputState();
808
704
  connectInputStateToInputManager(state, manager);
809
705
 
810
- // Press the button first.
811
706
  emitSignal(manager.onGamepadButtonDown, { button: 0, gamepad: 0, timeStamp: 1, value: 1 });
812
707
  endInputStateFrame(state);
813
708
 
814
- // Release it.
815
709
  emitSignal(manager.onGamepadButtonUp, { button: 0, gamepad: 0, timeStamp: 2, value: 0 });
816
710
 
817
711
  expect(wasInputGamepadButtonReleased(state, 0, 0)).toBe(true);
@@ -843,8 +737,6 @@ describe('wasInputKeyPressed', () => {
843
737
  expect(wasInputKeyPressed(state, KeyCode.A)).toBe(false);
844
738
  });
845
739
 
846
- // The DOM re-fires keydown while a key is held. Only the first is an up→down transition, so a held
847
- // key must not keep reporting a press — otherwise anything that fires on press autofires.
848
740
  it('returns false for the auto-repeat keydowns of a key that is still held', () => {
849
741
  const manager = createInputManager();
850
742
  const state = createInputState();
@@ -860,8 +752,6 @@ describe('wasInputKeyPressed', () => {
860
752
  expect(isInputKeyDown(state, KeyCode.A)).toBe(true);
861
753
  });
862
754
 
863
- // A tap that starts and ends between two frames still contains a real press; reporting only the
864
- // release would swallow the input rather than delay it.
865
755
  it('returns true for a key pressed and released within the same frame', () => {
866
756
  const manager = createInputManager();
867
757
  const state = createInputState();
@@ -876,8 +766,6 @@ describe('wasInputKeyPressed', () => {
876
766
  expect(isInputKeyDown(state, KeyCode.A)).toBe(false);
877
767
  });
878
768
 
879
- // Re-pressing after a release inside one frame is a second up→down transition, and leaves the key
880
- // held — so the frame reports a press, a release, and a key that is still down.
881
769
  it('returns true for a key released and pressed again within the same frame', () => {
882
770
  const manager = createInputManager();
883
771
  const state = createInputState();