@flighthq/keyboard 0.3.1-next.975.01aea94 → 0.4.0-edge.1908.751021c

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/index.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export { attachSoftKeyboard, createSoftKeyboard, createSoftKeyboardTransition, detachSoftKeyboard, disposeSoftKeyboard, getSoftKeyboardHeight, getSoftKeyboardInfo, getSoftKeyboardResizeMode, hideSoftKeyboard, isSoftKeyboardAccessoryBarVisible, isSoftKeyboardScrollAssistEnabled, setSoftKeyboardAccessoryBarVisible, setSoftKeyboardResizeMode, setSoftKeyboardScrollAssistEnabled, setSoftKeyboardStyle, showSoftKeyboard, } from './contract';
1
+ export { explainSoftKeyboardBackend, attachSoftKeyboard, createSoftKeyboard, createSoftKeyboardTransition, detachSoftKeyboard, disposeSoftKeyboard, getSoftKeyboardHeight, getSoftKeyboardInfo, getSoftKeyboardResizeMode, hideSoftKeyboard, isSoftKeyboardAccessoryBarVisible, isSoftKeyboardScrollAssistEnabled, setSoftKeyboardAccessoryBarVisible, setSoftKeyboardResizeMode, setSoftKeyboardScrollAssistEnabled, setSoftKeyboardStyle, showSoftKeyboard, } from './contract';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,4BAA4B,EAC5B,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,yBAAyB,EACzB,gBAAgB,EAChB,iCAAiC,EACjC,iCAAiC,EACjC,kCAAkC,EAClC,yBAAyB,EACzB,kCAAkC,EAClC,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,kBAAkB,EAClB,kBAAkB,EAClB,4BAA4B,EAC5B,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,yBAAyB,EACzB,gBAAgB,EAChB,iCAAiC,EACjC,iCAAiC,EACjC,kCAAkC,EAClC,yBAAyB,EACzB,kCAAkC,EAClC,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,YAAY,CAAC"}
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- export { attachSoftKeyboard, createSoftKeyboard, createSoftKeyboardTransition, detachSoftKeyboard, disposeSoftKeyboard, getSoftKeyboardHeight, getSoftKeyboardInfo, getSoftKeyboardResizeMode, hideSoftKeyboard, isSoftKeyboardAccessoryBarVisible, isSoftKeyboardScrollAssistEnabled, setSoftKeyboardAccessoryBarVisible, setSoftKeyboardResizeMode, setSoftKeyboardScrollAssistEnabled, setSoftKeyboardStyle, showSoftKeyboard, } from './contract';
1
+ export { explainSoftKeyboardBackend, attachSoftKeyboard, createSoftKeyboard, createSoftKeyboardTransition, detachSoftKeyboard, disposeSoftKeyboard, getSoftKeyboardHeight, getSoftKeyboardInfo, getSoftKeyboardResizeMode, hideSoftKeyboard, isSoftKeyboardAccessoryBarVisible, isSoftKeyboardScrollAssistEnabled, setSoftKeyboardAccessoryBarVisible, setSoftKeyboardResizeMode, setSoftKeyboardScrollAssistEnabled, setSoftKeyboardStyle, showSoftKeyboard, } from './contract';
2
2
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,4BAA4B,EAC5B,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,yBAAyB,EACzB,gBAAgB,EAChB,iCAAiC,EACjC,iCAAiC,EACjC,kCAAkC,EAClC,yBAAyB,EACzB,kCAAkC,EAClC,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,kBAAkB,EAClB,kBAAkB,EAClB,4BAA4B,EAC5B,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,yBAAyB,EACzB,gBAAgB,EAChB,iCAAiC,EACjC,iCAAiC,EACjC,kCAAkC,EAClC,yBAAyB,EACzB,kCAAkC,EAClC,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,YAAY,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { SoftKeyboard, SoftKeyboardBackend, SoftKeyboardInfo, SoftKeyboardResizeMode, SoftKeyboardStyleKind, SoftKeyboardTransition } from '@flighthq/types/contract';
1
+ import type { BackendExplanation, SoftKeyboard, SoftKeyboardBackend, SoftKeyboardInfo, SoftKeyboardResizeMode, SoftKeyboardStyleKind, SoftKeyboardTransition } from '@flighthq/types/contract';
2
2
  export declare function attachSoftKeyboard(keyboard: SoftKeyboard): void;
3
3
  export declare function createSoftKeyboard(): SoftKeyboard;
4
4
  export declare function createSoftKeyboardInfo(): SoftKeyboardInfo;
@@ -6,13 +6,17 @@ export declare function createSoftKeyboardTransition(): SoftKeyboardTransition;
6
6
  export declare function createWebSoftKeyboardBackend(): SoftKeyboardBackend;
7
7
  export declare function detachSoftKeyboard(keyboard: SoftKeyboard): void;
8
8
  export declare function disposeSoftKeyboard(keyboard: SoftKeyboard): void;
9
+ export declare function explainSoftKeyboardBackend(): BackendExplanation;
9
10
  export declare function getSoftKeyboardBackend(): SoftKeyboardBackend;
10
11
  export declare function getSoftKeyboardHeight(): number;
11
12
  export declare function getSoftKeyboardInfo(out: SoftKeyboardInfo): SoftKeyboardInfo;
12
13
  export declare function getSoftKeyboardResizeMode(): SoftKeyboardResizeMode;
13
14
  export declare function hideSoftKeyboard(): void;
15
+ export declare function installSoftKeyboardHostBackend(backend: SoftKeyboardBackend): void;
14
16
  export declare function isSoftKeyboardAccessoryBarVisible(): boolean;
15
17
  export declare function isSoftKeyboardScrollAssistEnabled(): boolean;
18
+ export declare function observeSoftKeyboardHostResult(operation: string, succeeded: boolean): void;
19
+ export declare function resetSoftKeyboardBackendForTest(): void;
16
20
  export declare function setSoftKeyboardAccessoryBarVisible(visible: boolean): void;
17
21
  export declare function setSoftKeyboardBackend(backend: SoftKeyboardBackend | null): void;
18
22
  export declare function setSoftKeyboardResizeMode(mode: SoftKeyboardResizeMode): void;
@@ -1 +1 @@
1
- {"version":3,"file":"keyboard.d.ts","sourceRoot":"","sources":["../src/keyboard.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAEhB,sBAAsB,EACtB,qBAAqB,EACrB,sBAAsB,EACvB,MAAM,0BAA0B,CAAC;AAQlC,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAkC/D;AAGD,wBAAgB,kBAAkB,IAAI,YAAY,CAYjD;AAGD,wBAAgB,sBAAsB,IAAI,gBAAgB,CAEzD;AAGD,wBAAgB,4BAA4B,IAAI,sBAAsB,CAErE;AAQD,wBAAgB,4BAA4B,IAAI,mBAAmB,CAkDlE;AAGD,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAM/D;AAID,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAEhE;AAGD,wBAAgB,sBAAsB,IAAI,mBAAmB,CAG5D;AAGD,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAGD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,gBAAgB,GAAG,gBAAgB,CAE3E;AAID,wBAAgB,yBAAyB,IAAI,sBAAsB,CAGlE;AAID,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC;AAID,wBAAgB,iCAAiC,IAAI,OAAO,CAE3D;AAGD,wBAAgB,iCAAiC,IAAI,OAAO,CAE3D;AAID,wBAAgB,kCAAkC,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAEzE;AAGD,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI,GAAG,IAAI,CAEhF;AAID,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,sBAAsB,GAAG,IAAI,CAE5E;AAID,wBAAgB,kCAAkC,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAEzE;AAID,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,qBAAqB,GAAG,IAAI,CAEvE;AAID,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC"}
1
+ {"version":3,"file":"keyboard.d.ts","sourceRoot":"","sources":["../src/keyboard.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,kBAAkB,EAClB,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAEhB,sBAAsB,EACtB,qBAAqB,EACrB,sBAAsB,EACvB,MAAM,0BAA0B,CAAC;AAQlC,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAkC/D;AAGD,wBAAgB,kBAAkB,IAAI,YAAY,CAYjD;AAGD,wBAAgB,sBAAsB,IAAI,gBAAgB,CAEzD;AAGD,wBAAgB,4BAA4B,IAAI,sBAAsB,CAErE;AAQD,wBAAgB,4BAA4B,IAAI,mBAAmB,CAkDlE;AAGD,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAM/D;AAID,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAEhE;AAED,wBAAgB,0BAA0B,IAAI,kBAAkB,CAa/D;AAGD,wBAAgB,sBAAsB,IAAI,mBAAmB,CAE5D;AAGD,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAGD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,gBAAgB,GAAG,gBAAgB,CAE3E;AAID,wBAAgB,yBAAyB,IAAI,sBAAsB,CAGlE;AAID,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC;AAED,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI,CAMjF;AAID,wBAAgB,iCAAiC,IAAI,OAAO,CAE3D;AAGD,wBAAgB,iCAAiC,IAAI,OAAO,CAE3D;AAED,wBAAgB,6BAA6B,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,IAAI,CAKzF;AAED,wBAAgB,+BAA+B,IAAI,IAAI,CAKtD;AAID,wBAAgB,kCAAkC,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAEzE;AAGD,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI,GAAG,IAAI,CAEhF;AAID,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,sBAAsB,GAAG,IAAI,CAE5E;AAID,wBAAgB,kCAAkC,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAEzE;AAID,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,qBAAqB,GAAG,IAAI,CAEvE;AAID,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC"}
package/dist/keyboard.js CHANGED
@@ -138,11 +138,23 @@ export function detachSoftKeyboard(keyboard) {
138
138
  export function disposeSoftKeyboard(keyboard) {
139
139
  detachSoftKeyboard(keyboard);
140
140
  }
141
- // The active soft keyboard backend, or a lazily-created web default. There is always a backend.
141
+ export function explainSoftKeyboardBackend() {
142
+ if (_custom !== null) {
143
+ return { conflict: _hostConflict, layer: 'custom', operation: null, viability: 'unobserved' };
144
+ }
145
+ if (_host !== null) {
146
+ return {
147
+ conflict: _hostConflict,
148
+ layer: 'host',
149
+ operation: _hostObservation !== null ? _hostObservation.operation : null,
150
+ viability: _hostObservation !== null ? _hostObservation.viability : 'unobserved',
151
+ };
152
+ }
153
+ return { conflict: false, layer: 'host-not-enabled', operation: null, viability: 'unobserved' };
154
+ }
155
+ // The active soft keyboard backend. Precedence: custom > host > sentinel.
142
156
  export function getSoftKeyboardBackend() {
143
- if (_backend === null)
144
- _backend = createWebSoftKeyboardBackend();
145
- return _backend;
157
+ return _custom ?? _host ?? _sentinel;
146
158
  }
147
159
  // Returns the current on-screen keyboard height in CSS pixels without allocating. 0 when hidden.
148
160
  export function getSoftKeyboardHeight() {
@@ -163,6 +175,14 @@ export function getSoftKeyboardResizeMode() {
163
175
  export function hideSoftKeyboard() {
164
176
  getSoftKeyboardBackend().hide();
165
177
  }
178
+ export function installSoftKeyboardHostBackend(backend) {
179
+ if (_host !== null) {
180
+ if (_host !== backend)
181
+ _hostConflict = true;
182
+ return;
183
+ }
184
+ _host = backend;
185
+ }
166
186
  // Returns whether the input accessory bar (iOS toolbar above the keyboard) is visible.
167
187
  // Returns false when the backend does not support this query.
168
188
  export function isSoftKeyboardAccessoryBarVisible() {
@@ -172,14 +192,26 @@ export function isSoftKeyboardAccessoryBarVisible() {
172
192
  export function isSoftKeyboardScrollAssistEnabled() {
173
193
  return getSoftKeyboardBackend().getScrollAssistEnabled?.() ?? false;
174
194
  }
195
+ export function observeSoftKeyboardHostResult(operation, succeeded) {
196
+ _hostObservation = {
197
+ operation,
198
+ viability: succeeded ? 'available' : 'runtime-api-unavailable',
199
+ };
200
+ }
201
+ export function resetSoftKeyboardBackendForTest() {
202
+ _custom = null;
203
+ _host = null;
204
+ _hostConflict = false;
205
+ _hostObservation = null;
206
+ }
175
207
  // Controls whether the iOS input accessory bar (the toolbar above the keyboard) is visible.
176
208
  // No-op when the backend does not support this.
177
209
  export function setSoftKeyboardAccessoryBarVisible(visible) {
178
210
  getSoftKeyboardBackend().setAccessoryBarVisible?.(visible);
179
211
  }
180
- // Installs a native host soft keyboard backend; pass null to fall back to the web default.
212
+ // Installs a custom soft keyboard backend; takes precedence over the host backend.
181
213
  export function setSoftKeyboardBackend(backend) {
182
- _backend = backend;
214
+ _custom = backend;
183
215
  }
184
216
  // Controls keyboard resize behavior — how the app viewport reacts when the keyboard appears.
185
217
  // No-op when the backend does not support resize-mode control.
@@ -201,7 +233,25 @@ export function setSoftKeyboardStyle(style) {
201
233
  export function showSoftKeyboard() {
202
234
  getSoftKeyboardBackend().show();
203
235
  }
204
- let _backend = null;
236
+ let _custom = null;
237
+ let _host = null;
238
+ let _hostConflict = false;
239
+ let _hostObservation = null;
240
+ const _sentinel = {
241
+ getInfo(out) {
242
+ out.visible = false;
243
+ out.height = 0;
244
+ out.x = 0;
245
+ out.y = 0;
246
+ out.width = 0;
247
+ return out;
248
+ },
249
+ subscribe() {
250
+ return () => { };
251
+ },
252
+ show() { },
253
+ hide() { },
254
+ };
205
255
  const _scratch = createSoftKeyboardInfo();
206
256
  const _subscriptions = new WeakMap();
207
257
  function getVirtualKeyboard() {
@@ -1 +1 @@
1
- {"version":3,"file":"keyboard.js","sourceRoot":"","sources":["../src/keyboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAUtE,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAEtE,oGAAoG;AACpG,wGAAwG;AACxG,2FAA2F;AAC3F,gGAAgG;AAChG,gEAAgE;AAChE,MAAM,UAAU,kBAAkB,CAAC,QAAsB;IACvD,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAC7B,MAAM,OAAO,GAAG,sBAAsB,EAAE,CAAC;IACzC,IAAI,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;IACnD,MAAM,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,KAAwB,EAAE,UAA4C,EAAE,EAAE;QAC/G,MAAM,WAAW,GAAG,UAAU,CAAC;QAC/B,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACvC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC;QAChC,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;YACrB,yDAAyD;YACzD,IAAI,UAAU,IAAI,CAAC,WAAW,EAAE,CAAC;gBAC/B,UAAU,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;YAC9C,CAAC;iBAAM,IAAI,CAAC,UAAU,IAAI,WAAW,EAAE,CAAC;gBACtC,UAAU,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;YAC9C,CAAC;iBAAM,CAAC;gBACN,UAAU,CAAC,QAAQ,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;aAAM,CAAC;YACN,8EAA8E;YAC9E,UAAU,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAC9C,UAAU,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAC3C,IAAI,UAAU,KAAK,WAAW,EAAE,CAAC;gBAC/B,UAAU,GAAG,UAAU,CAAC;gBACxB,IAAI,UAAU,EAAE,CAAC;oBACf,UAAU,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC5C,UAAU,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC3C,CAAC;qBAAM,CAAC;oBACN,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;oBAC/B,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAC9B,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IACH,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;AAC5C,CAAC;AAED,uGAAuG;AACvG,MAAM,UAAU,kBAAkB;IAChC,OAAO;QACL,MAAM,EAAE,YAAY,EAAE;QACtB,MAAM,EAAE,YAAY,EAAE;QACtB,QAAQ,EAAE,YAAY,EAAE;QACxB,UAAU,EAAE,YAAY,EAAE;QAC1B,UAAU,EAAE,YAAY,EAAE;QAC1B,YAAY,EAAE,YAAY,EAAE;QAC5B,SAAS,EAAE,YAAY,EAAE;QACzB,SAAS,EAAE,YAAY,EAAE;QACzB,WAAW,EAAE,YAAY,EAAE;KAC5B,CAAC;AACJ,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,sBAAsB;IACpC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;AAC7D,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,4BAA4B;IAC1C,OAAO,EAAE,eAAe,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;AAC3C,CAAC;AAED,gGAAgG;AAChG,6FAA6F;AAC7F,sFAAsF;AACtF,8EAA8E;AAC9E,4FAA4F;AAC5F,yEAAyE;AACzE,MAAM,UAAU,4BAA4B;IAC1C,OAAO;QACL,OAAO,CAAC,GAAG;YACT,MAAM,GAAG,GAAG,sBAAsB,EAAE,CAAC;YACrC,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;YACxB,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;YAC7B,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;YACd,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;YACd,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;YACtB,OAAO,GAAG,CAAC;QACb,CAAC;QACD,SAAS,CAAC,QAAQ;YAChB,IAAI,OAAO,MAAM,KAAK,WAAW;gBAAE,OAAO,GAAG,EAAE,GAAE,CAAC,CAAC;YACnD,6FAA6F;YAC7F,gGAAgG;YAChG,gGAAgG;YAChG,8FAA8F;YAC9F,MAAM,UAAU,GAA2B,EAAE,eAAe,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;YAC7E,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;YAC/C,gEAAgE;YAChE,MAAM,eAAe,GAAG,kBAAkB,EAAE,CAAC;YAC7C,IAAI,eAAe,KAAK,IAAI,EAAE,CAAC;gBAC7B,eAAe,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;gBACzD,OAAO,GAAG,EAAE,CAAC,eAAe,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;YAC3E,CAAC;YACD,6CAA6C;YAC7C,MAAM,QAAQ,GAAG,MAAM,CAAC,cAAc,CAAC;YACvC,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,IAAI;gBAAE,OAAO,GAAG,EAAE,GAAE,CAAC,CAAC;YACjE,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAC1C,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAC1C,OAAO,GAAG,EAAE;gBACV,QAAQ,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;gBAC7C,QAAQ,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAC/C,CAAC,CAAC;QACJ,CAAC;QACD,IAAI;YACF,MAAM,EAAE,GAAG,kBAAkB,EAAE,CAAC;YAChC,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;gBAChB,EAAE,CAAC,IAAI,EAAE,CAAC;YACZ,CAAC;YACD,kGAAkG;QACpG,CAAC;QACD,IAAI;YACF,MAAM,EAAE,GAAG,kBAAkB,EAAE,CAAC;YAChC,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;gBAChB,EAAE,CAAC,IAAI,EAAE,CAAC;YACZ,CAAC;YACD,4CAA4C;QAC9C,CAAC;KACF,CAAC;AACJ,CAAC;AAED,6FAA6F;AAC7F,MAAM,UAAU,kBAAkB,CAAC,QAAsB;IACvD,MAAM,WAAW,GAAG,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACjD,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,WAAW,EAAE,CAAC;QACd,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAClC,CAAC;AACH,CAAC;AAED,gGAAgG;AAChG,4CAA4C;AAC5C,MAAM,UAAU,mBAAmB,CAAC,QAAsB;IACxD,kBAAkB,CAAC,QAAQ,CAAC,CAAC;AAC/B,CAAC;AAED,gGAAgG;AAChG,MAAM,UAAU,sBAAsB;IACpC,IAAI,QAAQ,KAAK,IAAI;QAAE,QAAQ,GAAG,4BAA4B,EAAE,CAAC;IACjE,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,iGAAiG;AACjG,MAAM,UAAU,qBAAqB;IACnC,OAAO,sBAAsB,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;AAC3D,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,mBAAmB,CAAC,GAAqB;IACvD,OAAO,sBAAsB,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC/C,CAAC;AAED,8EAA8E;AAC9E,oFAAoF;AACpF,MAAM,UAAU,yBAAyB;IACvC,MAAM,OAAO,GAAG,sBAAsB,EAAE,CAAC;IACzC,OAAO,OAAO,CAAC,aAAa,EAAE,EAAE,IAAI,0BAA0B,CAAC;AACjE,CAAC;AAED,mFAAmF;AACnF,qFAAqF;AACrF,MAAM,UAAU,gBAAgB;IAC9B,sBAAsB,EAAE,CAAC,IAAI,EAAE,CAAC;AAClC,CAAC;AAED,uFAAuF;AACvF,8DAA8D;AAC9D,MAAM,UAAU,iCAAiC;IAC/C,OAAO,sBAAsB,EAAE,CAAC,sBAAsB,EAAE,EAAE,IAAI,KAAK,CAAC;AACtE,CAAC;AAED,kGAAkG;AAClG,MAAM,UAAU,iCAAiC;IAC/C,OAAO,sBAAsB,EAAE,CAAC,sBAAsB,EAAE,EAAE,IAAI,KAAK,CAAC;AACtE,CAAC;AAED,4FAA4F;AAC5F,gDAAgD;AAChD,MAAM,UAAU,kCAAkC,CAAC,OAAgB;IACjE,sBAAsB,EAAE,CAAC,sBAAsB,EAAE,CAAC,OAAO,CAAC,CAAC;AAC7D,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,sBAAsB,CAAC,OAAmC;IACxE,QAAQ,GAAG,OAAO,CAAC;AACrB,CAAC;AAED,6FAA6F;AAC7F,+DAA+D;AAC/D,MAAM,UAAU,yBAAyB,CAAC,IAA4B;IACpE,sBAAsB,EAAE,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,CAAC;AACjD,CAAC;AAED,iGAAiG;AACjG,iFAAiF;AACjF,MAAM,UAAU,kCAAkC,CAAC,OAAgB;IACjE,sBAAsB,EAAE,CAAC,sBAAsB,EAAE,CAAC,OAAO,CAAC,CAAC;AAC7D,CAAC;AAED,qGAAqG;AACrG,kEAAkE;AAClE,MAAM,UAAU,oBAAoB,CAAC,KAA4B;IAC/D,sBAAsB,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC;AAC7C,CAAC;AAED,mFAAmF;AACnF,qFAAqF;AACrF,MAAM,UAAU,gBAAgB;IAC9B,sBAAsB,EAAE,CAAC,IAAI,EAAE,CAAC;AAClC,CAAC;AAED,IAAI,QAAQ,GAA+B,IAAI,CAAC;AAChD,MAAM,QAAQ,GAAqB,sBAAsB,EAAE,CAAC;AAC5D,MAAM,cAAc,GAAG,IAAI,OAAO,EAA4B,CAAC;AAW/D,SAAS,kBAAkB;IACzB,IAAI,OAAO,SAAS,KAAK,WAAW;QAAE,OAAO,IAAI,CAAC;IAClD,MAAM,GAAG,GAAG,SAA8D,CAAC;IAC3E,OAAO,GAAG,CAAC,eAAe,IAAI,IAAI,CAAC;AACrC,CAAC;AASD,SAAS,sBAAsB;IAC7B,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IAC9E,gEAAgE;IAChE,MAAM,EAAE,GAAG,kBAAkB,EAAE,CAAC;IAChC,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;QAChB,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC;QAC7B,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;IAC1E,CAAC;IACD,4DAA4D;IAC5D,MAAM,QAAQ,GAAG,MAAM,CAAC,cAAc,CAAC;IACvC,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,IAAI;QAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IAC5F,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC;IACpD,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IACjD,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACpC,CAAC"}
1
+ {"version":3,"file":"keyboard.js","sourceRoot":"","sources":["../src/keyboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAWtE,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAEtE,oGAAoG;AACpG,wGAAwG;AACxG,2FAA2F;AAC3F,gGAAgG;AAChG,gEAAgE;AAChE,MAAM,UAAU,kBAAkB,CAAC,QAAsB;IACvD,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAC7B,MAAM,OAAO,GAAG,sBAAsB,EAAE,CAAC;IACzC,IAAI,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;IACnD,MAAM,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,KAAwB,EAAE,UAA4C,EAAE,EAAE;QAC/G,MAAM,WAAW,GAAG,UAAU,CAAC;QAC/B,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACvC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC;QAChC,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;YACrB,yDAAyD;YACzD,IAAI,UAAU,IAAI,CAAC,WAAW,EAAE,CAAC;gBAC/B,UAAU,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;YAC9C,CAAC;iBAAM,IAAI,CAAC,UAAU,IAAI,WAAW,EAAE,CAAC;gBACtC,UAAU,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;YAC9C,CAAC;iBAAM,CAAC;gBACN,UAAU,CAAC,QAAQ,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;aAAM,CAAC;YACN,8EAA8E;YAC9E,UAAU,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAC9C,UAAU,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAC3C,IAAI,UAAU,KAAK,WAAW,EAAE,CAAC;gBAC/B,UAAU,GAAG,UAAU,CAAC;gBACxB,IAAI,UAAU,EAAE,CAAC;oBACf,UAAU,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC5C,UAAU,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC3C,CAAC;qBAAM,CAAC;oBACN,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;oBAC/B,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAC9B,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IACH,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;AAC5C,CAAC;AAED,uGAAuG;AACvG,MAAM,UAAU,kBAAkB;IAChC,OAAO;QACL,MAAM,EAAE,YAAY,EAAE;QACtB,MAAM,EAAE,YAAY,EAAE;QACtB,QAAQ,EAAE,YAAY,EAAE;QACxB,UAAU,EAAE,YAAY,EAAE;QAC1B,UAAU,EAAE,YAAY,EAAE;QAC1B,YAAY,EAAE,YAAY,EAAE;QAC5B,SAAS,EAAE,YAAY,EAAE;QACzB,SAAS,EAAE,YAAY,EAAE;QACzB,WAAW,EAAE,YAAY,EAAE;KAC5B,CAAC;AACJ,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,sBAAsB;IACpC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;AAC7D,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,4BAA4B;IAC1C,OAAO,EAAE,eAAe,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;AAC3C,CAAC;AAED,gGAAgG;AAChG,6FAA6F;AAC7F,sFAAsF;AACtF,8EAA8E;AAC9E,4FAA4F;AAC5F,yEAAyE;AACzE,MAAM,UAAU,4BAA4B;IAC1C,OAAO;QACL,OAAO,CAAC,GAAG;YACT,MAAM,GAAG,GAAG,sBAAsB,EAAE,CAAC;YACrC,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;YACxB,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;YAC7B,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;YACd,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;YACd,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;YACtB,OAAO,GAAG,CAAC;QACb,CAAC;QACD,SAAS,CAAC,QAAQ;YAChB,IAAI,OAAO,MAAM,KAAK,WAAW;gBAAE,OAAO,GAAG,EAAE,GAAE,CAAC,CAAC;YACnD,6FAA6F;YAC7F,gGAAgG;YAChG,gGAAgG;YAChG,8FAA8F;YAC9F,MAAM,UAAU,GAA2B,EAAE,eAAe,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;YAC7E,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;YAC/C,gEAAgE;YAChE,MAAM,eAAe,GAAG,kBAAkB,EAAE,CAAC;YAC7C,IAAI,eAAe,KAAK,IAAI,EAAE,CAAC;gBAC7B,eAAe,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;gBACzD,OAAO,GAAG,EAAE,CAAC,eAAe,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;YAC3E,CAAC;YACD,6CAA6C;YAC7C,MAAM,QAAQ,GAAG,MAAM,CAAC,cAAc,CAAC;YACvC,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,IAAI;gBAAE,OAAO,GAAG,EAAE,GAAE,CAAC,CAAC;YACjE,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAC1C,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAC1C,OAAO,GAAG,EAAE;gBACV,QAAQ,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;gBAC7C,QAAQ,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAC/C,CAAC,CAAC;QACJ,CAAC;QACD,IAAI;YACF,MAAM,EAAE,GAAG,kBAAkB,EAAE,CAAC;YAChC,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;gBAChB,EAAE,CAAC,IAAI,EAAE,CAAC;YACZ,CAAC;YACD,kGAAkG;QACpG,CAAC;QACD,IAAI;YACF,MAAM,EAAE,GAAG,kBAAkB,EAAE,CAAC;YAChC,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;gBAChB,EAAE,CAAC,IAAI,EAAE,CAAC;YACZ,CAAC;YACD,4CAA4C;QAC9C,CAAC;KACF,CAAC;AACJ,CAAC;AAED,6FAA6F;AAC7F,MAAM,UAAU,kBAAkB,CAAC,QAAsB;IACvD,MAAM,WAAW,GAAG,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACjD,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,WAAW,EAAE,CAAC;QACd,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAClC,CAAC;AACH,CAAC;AAED,gGAAgG;AAChG,4CAA4C;AAC5C,MAAM,UAAU,mBAAmB,CAAC,QAAsB;IACxD,kBAAkB,CAAC,QAAQ,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,0BAA0B;IACxC,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC;IAChG,CAAC;IACD,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACnB,OAAO;YACL,QAAQ,EAAE,aAAa;YACvB,KAAK,EAAE,MAAM;YACb,SAAS,EAAE,gBAAgB,KAAK,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI;YACxE,SAAS,EAAE,gBAAgB,KAAK,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY;SACjF,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,kBAAkB,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC;AAClG,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,sBAAsB;IACpC,OAAO,OAAO,IAAI,KAAK,IAAI,SAAS,CAAC;AACvC,CAAC;AAED,iGAAiG;AACjG,MAAM,UAAU,qBAAqB;IACnC,OAAO,sBAAsB,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;AAC3D,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,mBAAmB,CAAC,GAAqB;IACvD,OAAO,sBAAsB,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC/C,CAAC;AAED,8EAA8E;AAC9E,oFAAoF;AACpF,MAAM,UAAU,yBAAyB;IACvC,MAAM,OAAO,GAAG,sBAAsB,EAAE,CAAC;IACzC,OAAO,OAAO,CAAC,aAAa,EAAE,EAAE,IAAI,0BAA0B,CAAC;AACjE,CAAC;AAED,mFAAmF;AACnF,qFAAqF;AACrF,MAAM,UAAU,gBAAgB;IAC9B,sBAAsB,EAAE,CAAC,IAAI,EAAE,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,8BAA8B,CAAC,OAA4B;IACzE,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACnB,IAAI,KAAK,KAAK,OAAO;YAAE,aAAa,GAAG,IAAI,CAAC;QAC5C,OAAO;IACT,CAAC;IACD,KAAK,GAAG,OAAO,CAAC;AAClB,CAAC;AAED,uFAAuF;AACvF,8DAA8D;AAC9D,MAAM,UAAU,iCAAiC;IAC/C,OAAO,sBAAsB,EAAE,CAAC,sBAAsB,EAAE,EAAE,IAAI,KAAK,CAAC;AACtE,CAAC;AAED,kGAAkG;AAClG,MAAM,UAAU,iCAAiC;IAC/C,OAAO,sBAAsB,EAAE,CAAC,sBAAsB,EAAE,EAAE,IAAI,KAAK,CAAC;AACtE,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,SAAiB,EAAE,SAAkB;IACjF,gBAAgB,GAAG;QACjB,SAAS;QACT,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,yBAAyB;KAC/D,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,+BAA+B;IAC7C,OAAO,GAAG,IAAI,CAAC;IACf,KAAK,GAAG,IAAI,CAAC;IACb,aAAa,GAAG,KAAK,CAAC;IACtB,gBAAgB,GAAG,IAAI,CAAC;AAC1B,CAAC;AAED,4FAA4F;AAC5F,gDAAgD;AAChD,MAAM,UAAU,kCAAkC,CAAC,OAAgB;IACjE,sBAAsB,EAAE,CAAC,sBAAsB,EAAE,CAAC,OAAO,CAAC,CAAC;AAC7D,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,sBAAsB,CAAC,OAAmC;IACxE,OAAO,GAAG,OAAO,CAAC;AACpB,CAAC;AAED,6FAA6F;AAC7F,+DAA+D;AAC/D,MAAM,UAAU,yBAAyB,CAAC,IAA4B;IACpE,sBAAsB,EAAE,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,CAAC;AACjD,CAAC;AAED,iGAAiG;AACjG,iFAAiF;AACjF,MAAM,UAAU,kCAAkC,CAAC,OAAgB;IACjE,sBAAsB,EAAE,CAAC,sBAAsB,EAAE,CAAC,OAAO,CAAC,CAAC;AAC7D,CAAC;AAED,qGAAqG;AACrG,kEAAkE;AAClE,MAAM,UAAU,oBAAoB,CAAC,KAA4B;IAC/D,sBAAsB,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC;AAC7C,CAAC;AAED,mFAAmF;AACnF,qFAAqF;AACrF,MAAM,UAAU,gBAAgB;IAC9B,sBAAsB,EAAE,CAAC,IAAI,EAAE,CAAC;AAClC,CAAC;AAED,IAAI,OAAO,GAA+B,IAAI,CAAC;AAC/C,IAAI,KAAK,GAA+B,IAAI,CAAC;AAC7C,IAAI,aAAa,GAAG,KAAK,CAAC;AAC1B,IAAI,gBAAgB,GAAqF,IAAI,CAAC;AAC9G,MAAM,SAAS,GAAwB;IACrC,OAAO,CAAC,GAAG;QACT,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC;QACpB,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;QACf,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACV,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACV,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC;QACd,OAAO,GAAG,CAAC;IACb,CAAC;IACD,SAAS;QACP,OAAO,GAAG,EAAE,GAAE,CAAC,CAAC;IAClB,CAAC;IACD,IAAI,KAAI,CAAC;IACT,IAAI,KAAI,CAAC;CACV,CAAC;AACF,MAAM,QAAQ,GAAqB,sBAAsB,EAAE,CAAC;AAC5D,MAAM,cAAc,GAAG,IAAI,OAAO,EAA4B,CAAC;AAW/D,SAAS,kBAAkB;IACzB,IAAI,OAAO,SAAS,KAAK,WAAW;QAAE,OAAO,IAAI,CAAC;IAClD,MAAM,GAAG,GAAG,SAA8D,CAAC;IAC3E,OAAO,GAAG,CAAC,eAAe,IAAI,IAAI,CAAC;AACrC,CAAC;AASD,SAAS,sBAAsB;IAC7B,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IAC9E,gEAAgE;IAChE,MAAM,EAAE,GAAG,kBAAkB,EAAE,CAAC;IAChC,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;QAChB,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC;QAC7B,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;IAC1E,CAAC;IACD,4DAA4D;IAC5D,MAAM,QAAQ,GAAG,MAAM,CAAC,cAAc,CAAC;IACvC,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,IAAI;QAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IAC5F,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC;IACpD,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IACjD,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACpC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flighthq/keyboard",
3
- "version": "0.3.1-next.975.01aea94",
3
+ "version": "0.4.0-edge.1908.751021c",
4
4
  "author": "Joshua Granick and other contributors",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -38,8 +38,8 @@
38
38
  "clean:dist": "tsx ../../scripts/clean-package-dist.ts"
39
39
  },
40
40
  "dependencies": {
41
- "@flighthq/signals": "0.3.1-next.975.01aea94",
42
- "@flighthq/types": "0.3.1-next.975.01aea94"
41
+ "@flighthq/signals": "0.4.0-edge.1908.751021c",
42
+ "@flighthq/types": "0.4.0-edge.1908.751021c"
43
43
  },
44
44
  "devDependencies": {
45
45
  "typescript": "^5.3.0"
@@ -34,6 +34,10 @@ import {
34
34
  setSoftKeyboardScrollAssistEnabled,
35
35
  setSoftKeyboardStyle,
36
36
  showSoftKeyboard,
37
+ explainSoftKeyboardBackend,
38
+ installSoftKeyboardHostBackend,
39
+ observeSoftKeyboardHostResult,
40
+ resetSoftKeyboardBackendForTest,
37
41
  } from './keyboard';
38
42
 
39
43
  type BackendListener = (phase: SoftKeyboardPhase, transition: Readonly<SoftKeyboardTransition>) => void;
@@ -670,6 +674,34 @@ describe('disposeSoftKeyboard', () => {
670
674
  });
671
675
  });
672
676
 
677
+ describe('explainSoftKeyboardBackend', () => {
678
+ afterEach(() => resetSoftKeyboardBackendForTest());
679
+
680
+ it('reports host-not-enabled when no backend is installed', () => {
681
+ resetSoftKeyboardBackendForTest();
682
+ const explanation = explainSoftKeyboardBackend();
683
+ expect(explanation.layer).toBe('host-not-enabled');
684
+ expect(explanation.conflict).toBe(false);
685
+ expect(explanation.viability).toBe('unobserved');
686
+ });
687
+
688
+ it('reports custom layer when a custom backend is set', () => {
689
+ setSoftKeyboardBackend(fakeBackend());
690
+ expect(explainSoftKeyboardBackend().layer).toBe('custom');
691
+ });
692
+
693
+ it('reports host layer when a host backend is installed', () => {
694
+ installSoftKeyboardHostBackend(fakeBackend());
695
+ expect(explainSoftKeyboardBackend().layer).toBe('host');
696
+ });
697
+
698
+ it('reports conflict when two different host backends are installed', () => {
699
+ installSoftKeyboardHostBackend(fakeBackend());
700
+ installSoftKeyboardHostBackend(fakeBackend());
701
+ expect(explainSoftKeyboardBackend().conflict).toBe(true);
702
+ });
703
+ });
704
+
673
705
  describe('getSoftKeyboardBackend', () => {
674
706
  it('falls back to a web backend', () => {
675
707
  expect(getSoftKeyboardBackend()).not.toBeNull();
@@ -752,6 +784,25 @@ describe('hideSoftKeyboard', () => {
752
784
  });
753
785
  });
754
786
 
787
+ describe('installSoftKeyboardHostBackend', () => {
788
+ afterEach(() => resetSoftKeyboardBackendForTest());
789
+
790
+ it('installs a host backend that getSoftKeyboardBackend returns', () => {
791
+ const backend = fakeBackend();
792
+ installSoftKeyboardHostBackend(backend);
793
+ expect(getSoftKeyboardBackend()).toBe(backend);
794
+ });
795
+
796
+ it('is first-host-wins: a second different backend sets conflict', () => {
797
+ const first = fakeBackend();
798
+ const second = fakeBackend();
799
+ installSoftKeyboardHostBackend(first);
800
+ installSoftKeyboardHostBackend(second);
801
+ expect(getSoftKeyboardBackend()).toBe(first);
802
+ expect(explainSoftKeyboardBackend().conflict).toBe(true);
803
+ });
804
+ });
805
+
755
806
  describe('isSoftKeyboardAccessoryBarVisible', () => {
756
807
  it('delegates to backend getAccessoryBarVisible', () => {
757
808
  const backend = fakeBackend();
@@ -800,6 +851,36 @@ describe('isSoftKeyboardScrollAssistEnabled', () => {
800
851
  });
801
852
  });
802
853
 
854
+ describe('observeSoftKeyboardHostResult', () => {
855
+ afterEach(() => resetSoftKeyboardBackendForTest());
856
+
857
+ it('records a successful observation', () => {
858
+ installSoftKeyboardHostBackend(fakeBackend());
859
+ observeSoftKeyboardHostResult('getInfo', true);
860
+ const explanation = explainSoftKeyboardBackend();
861
+ expect(explanation.operation).toBe('getInfo');
862
+ expect(explanation.viability).toBe('available');
863
+ });
864
+
865
+ it('records a failed observation', () => {
866
+ installSoftKeyboardHostBackend(fakeBackend());
867
+ observeSoftKeyboardHostResult('getInfo', false);
868
+ expect(explainSoftKeyboardBackend().viability).toBe('runtime-api-unavailable');
869
+ });
870
+ });
871
+
872
+ describe('resetSoftKeyboardBackendForTest', () => {
873
+ it('clears all backend slots', () => {
874
+ setSoftKeyboardBackend(fakeBackend());
875
+ installSoftKeyboardHostBackend(fakeBackend());
876
+ observeSoftKeyboardHostResult('getInfo', true);
877
+ resetSoftKeyboardBackendForTest();
878
+ expect(explainSoftKeyboardBackend().layer).toBe('host-not-enabled');
879
+ expect(explainSoftKeyboardBackend().conflict).toBe(false);
880
+ expect(explainSoftKeyboardBackend().viability).toBe('unobserved');
881
+ });
882
+ });
883
+
803
884
  describe('setSoftKeyboardAccessoryBarVisible', () => {
804
885
  it('delegates to backend setAccessoryBarVisible', () => {
805
886
  const backend = fakeBackend();