@diffenderfer-games/hub 2.0.0-next.0 → 2.0.0-next.10

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.
Files changed (293) hide show
  1. package/CHANGELOG.md +163 -0
  2. package/LICENSE +21 -21
  3. package/README.md +203 -139
  4. package/dist/auto.d.ts +8 -8
  5. package/dist/auto.js +3 -3
  6. package/dist/avatar-pixi.d.ts +165 -0
  7. package/dist/avatar-pixi.d.ts.map +1 -0
  8. package/dist/avatar-pixi.js +299 -0
  9. package/dist/avatar-pixi.js.map +1 -0
  10. package/dist/avatar-svg.d.ts +4 -0
  11. package/dist/avatar-svg.js +5 -0
  12. package/dist/avatar-three.d.ts +69 -0
  13. package/dist/avatar-three.d.ts.map +1 -0
  14. package/dist/avatar-three.js +49 -0
  15. package/dist/avatar-three.js.map +1 -0
  16. package/dist/avatar.d.ts +7 -0
  17. package/dist/avatar.js +500 -0
  18. package/dist/avatar.js.map +1 -0
  19. package/dist/daily.d.ts +2 -2
  20. package/dist/doctor/cli.mjs +119 -28
  21. package/dist/doctor/cli.mjs.map +1 -1
  22. package/dist/index.d.ts +8 -8
  23. package/dist/index.js +3 -3
  24. package/dist/input.d.ts +2 -2
  25. package/dist/input.js +2 -2
  26. package/dist/mp.d.ts +3 -3
  27. package/dist/race.d.ts +1 -1
  28. package/dist/rooms.d.ts +3 -3
  29. package/dist/rooms.js +1 -1
  30. package/dist/shared/animator.d.ts +104 -0
  31. package/dist/shared/animator.d.ts.map +1 -0
  32. package/dist/shared/art.js +1946 -0
  33. package/dist/shared/art.js.map +1 -0
  34. package/dist/shared/atlas.d.ts +138 -0
  35. package/dist/shared/atlas.d.ts.map +1 -0
  36. package/dist/shared/avatar.d.ts +123 -0
  37. package/dist/shared/avatar.d.ts.map +1 -0
  38. package/dist/shared/bridge.js +18 -4
  39. package/dist/shared/bridge.js.map +1 -1
  40. package/dist/shared/client-version.gen.js +1 -1
  41. package/dist/shared/daily.d.ts +145 -19
  42. package/dist/shared/daily.d.ts.map +1 -1
  43. package/dist/shared/daily.js +138 -25
  44. package/dist/shared/daily.js.map +1 -1
  45. package/dist/shared/defineProperty.js +39 -0
  46. package/dist/shared/describe.d.ts +32 -0
  47. package/dist/shared/describe.d.ts.map +1 -0
  48. package/dist/shared/describe.js +109 -0
  49. package/dist/shared/describe.js.map +1 -0
  50. package/dist/shared/globals.js +9 -42
  51. package/dist/shared/globals.js.map +1 -1
  52. package/dist/shared/index.d.ts +1122 -46
  53. package/dist/shared/index.d.ts.map +1 -1
  54. package/dist/shared/input.d.ts +74 -14
  55. package/dist/shared/input.d.ts.map +1 -1
  56. package/dist/shared/input.js +179 -25
  57. package/dist/shared/input.js.map +1 -1
  58. package/dist/shared/json-guards.js +48 -0
  59. package/dist/shared/json-guards.js.map +1 -0
  60. package/dist/shared/latest-state.js +1 -1
  61. package/dist/shared/live-canvas.js +62 -0
  62. package/dist/shared/live-canvas.js.map +1 -0
  63. package/dist/shared/mp.js +10 -2
  64. package/dist/shared/mp.js.map +1 -1
  65. package/dist/shared/multiplayer-types.d.ts +15 -2
  66. package/dist/shared/multiplayer-types.d.ts.map +1 -1
  67. package/dist/shared/overlays.js +800 -0
  68. package/dist/shared/overlays.js.map +1 -0
  69. package/dist/shared/page-stack.js +2 -1
  70. package/dist/shared/page-stack.js.map +1 -1
  71. package/dist/shared/pose-key.js +249 -0
  72. package/dist/shared/pose-key.js.map +1 -0
  73. package/dist/shared/race-types.d.ts +1 -1
  74. package/dist/shared/race.js +1 -1
  75. package/dist/shared/room-types.d.ts +28 -3
  76. package/dist/shared/room-types.d.ts.map +1 -1
  77. package/dist/shared/rooms.d.ts.map +1 -1
  78. package/dist/shared/rooms.js +23 -4
  79. package/dist/shared/rooms.js.map +1 -1
  80. package/dist/shared/runtime-opener.js +1 -1
  81. package/dist/shared/scene.d.ts +90 -0
  82. package/dist/shared/scene.d.ts.map +1 -0
  83. package/dist/shared/social.d.ts +90 -9
  84. package/dist/shared/social.d.ts.map +1 -1
  85. package/dist/shared/social.js +6 -1
  86. package/dist/shared/social.js.map +1 -1
  87. package/dist/shared/src.js +4563 -667
  88. package/dist/shared/src.js.map +1 -1
  89. package/dist/shared/svg-markup.js +2354 -0
  90. package/dist/shared/svg-markup.js.map +1 -0
  91. package/dist/shared/svg.js +27 -0
  92. package/dist/shared/svg.js.map +1 -0
  93. package/dist/shared/types.d.ts +174 -0
  94. package/dist/shared/types.d.ts.map +1 -0
  95. package/dist/shared/wire-types.d.ts +6 -2
  96. package/dist/shared/wire-types.d.ts.map +1 -1
  97. package/dist/social.d.ts +5 -5
  98. package/dist/social.js +2 -2
  99. package/dist/turns-rules.d.ts +2 -0
  100. package/dist/turns-rules.js +1 -0
  101. package/dist/turns.d.ts +61 -0
  102. package/dist/turns.d.ts.map +1 -0
  103. package/dist/turns.js +183 -0
  104. package/dist/turns.js.map +1 -0
  105. package/package.json +125 -89
  106. package/src/auto.ts +39 -39
  107. package/src/avatar/adapters/pixi-avatar.ts +73 -0
  108. package/src/avatar/adapters/pixi-crowd.ts +329 -0
  109. package/src/avatar/adapters/pixi-types.ts +84 -0
  110. package/src/avatar/adapters/three.ts +126 -0
  111. package/src/avatar/animator/animator.ts +285 -0
  112. package/src/avatar/animator/reactions.ts +44 -0
  113. package/src/avatar/animator/schedule.ts +73 -0
  114. package/src/avatar/art/beard.ts +49 -0
  115. package/src/avatar/art/glasses.ts +67 -0
  116. package/src/avatar/art/hair.ts +254 -0
  117. package/src/avatar/art/headwear.ts +75 -0
  118. package/src/avatar/art/index.ts +21 -0
  119. package/src/avatar/art/shape.ts +87 -0
  120. package/src/avatar/art-store.ts +36 -0
  121. package/src/avatar/atlas.ts +246 -0
  122. package/src/avatar/catalog-view.ts +14 -0
  123. package/src/avatar/colour.ts +109 -0
  124. package/src/avatar/describe.ts +79 -0
  125. package/src/avatar/face.ts +187 -0
  126. package/src/avatar/geom.ts +173 -0
  127. package/src/avatar/layout.ts +47 -0
  128. package/src/avatar/look-like.ts +52 -0
  129. package/src/avatar/outputs/bitmap.ts +75 -0
  130. package/src/avatar/outputs/canvas-paint.ts +177 -0
  131. package/src/avatar/outputs/canvas.ts +62 -0
  132. package/src/avatar/outputs/custom-element.ts +140 -0
  133. package/src/avatar/outputs/element.ts +58 -0
  134. package/src/avatar/outputs/live-canvas.ts +57 -0
  135. package/src/avatar/outputs/overlay-svg.ts +22 -0
  136. package/src/avatar/outputs/pose-key.ts +30 -0
  137. package/src/avatar/outputs/svg-markup.ts +113 -0
  138. package/src/avatar/outputs/svg.ts +41 -0
  139. package/src/avatar/overlays.ts +128 -0
  140. package/src/avatar/render/body.ts +116 -0
  141. package/src/avatar/render/colours.ts +81 -0
  142. package/src/avatar/render/compose.ts +320 -0
  143. package/src/avatar/render/context.ts +117 -0
  144. package/src/avatar/render/eyes.ts +78 -0
  145. package/src/avatar/render/eyewear.ts +118 -0
  146. package/src/avatar/render/frame.ts +73 -0
  147. package/src/avatar/render/head.ts +81 -0
  148. package/src/avatar/render/mouth.ts +86 -0
  149. package/src/avatar/render/props.ts +91 -0
  150. package/src/avatar/render/types.ts +93 -0
  151. package/src/avatar/render/walker-parts.ts +121 -0
  152. package/src/avatar/render/walker.ts +199 -0
  153. package/src/avatar/scene.ts +119 -0
  154. package/src/avatar-pixi.ts +20 -0
  155. package/src/avatar-svg.ts +21 -0
  156. package/src/avatar-three.ts +18 -0
  157. package/src/avatar.ts +63 -0
  158. package/src/core/avatar/avatar-cache.ts +95 -0
  159. package/src/core/avatar/avatar-ref.ts +34 -0
  160. package/src/core/avatar/avatar-types.ts +43 -0
  161. package/src/core/avatar/hub-avatar.ts +308 -0
  162. package/src/core/connection.ts +408 -299
  163. package/src/core/errors.ts +160 -147
  164. package/src/core/game-data.ts +40 -38
  165. package/src/core/hub-economy.ts +216 -179
  166. package/src/core/hub-progress.ts +269 -205
  167. package/src/core/hub.ts +352 -131
  168. package/src/core/menu-control.ts +61 -61
  169. package/src/core/offline/cloud-saves.ts +62 -0
  170. package/src/core/offline/events.ts +50 -50
  171. package/src/core/offline/favorites.ts +21 -21
  172. package/src/core/offline/hub-kinds/avatar-kind.ts +42 -0
  173. package/src/core/offline/hub-kinds/daily-kind.ts +68 -0
  174. package/src/core/offline/hub-kinds/economy-kinds.ts +86 -0
  175. package/src/core/offline/hub-kinds/game-fields.ts +2 -0
  176. package/src/core/offline/hub-kinds/index.ts +52 -0
  177. package/src/core/offline/hub-kinds/legacy-ops.ts +37 -0
  178. package/src/core/offline/hub-kinds/progress-kinds.ts +165 -0
  179. package/src/core/offline/hub-kinds/resume-kind.ts +108 -0
  180. package/src/core/offline/hub-kinds/saved-kind.ts +93 -0
  181. package/src/core/offline/kind-adapters.ts +48 -0
  182. package/src/core/offline/local-inventory.ts +64 -0
  183. package/src/core/offline/local-store.ts +304 -261
  184. package/src/core/offline/offline-api.ts +65 -0
  185. package/src/core/offline/outbox-entry.ts +59 -0
  186. package/src/core/offline/outbox-kinds.ts +78 -0
  187. package/src/core/offline/outbox-merge.ts +39 -0
  188. package/src/core/offline/outbox-replayer.ts +141 -0
  189. package/src/core/offline/outbox-store.ts +85 -0
  190. package/src/core/offline/outbox.ts +232 -0
  191. package/src/core/offline/queue.ts +126 -171
  192. package/src/core/offline/replay-lease.ts +87 -0
  193. package/src/core/offline/replay-policy.ts +52 -0
  194. package/src/core/page-account.ts +121 -0
  195. package/src/core/page.ts +87 -74
  196. package/src/core/rest/endpoint-types.ts +22 -22
  197. package/src/core/rest/rest-client.ts +163 -152
  198. package/src/core/rest/routes.gen.ts +144 -88
  199. package/src/core/resume/hub-resume.ts +286 -0
  200. package/src/core/resume/local-resume.ts +130 -0
  201. package/src/core/resume/resume-list.ts +65 -0
  202. package/src/core/resume/resume-request.ts +52 -0
  203. package/src/core/resume/resume-types.ts +64 -0
  204. package/src/core/saved/daily-saves.ts +196 -0
  205. package/src/core/saved/daily-seed.ts +16 -0
  206. package/src/core/saved/hub-saved.ts +221 -0
  207. package/src/core/saved/local-saved.ts +122 -0
  208. package/src/core/saved/saved-list.ts +129 -0
  209. package/src/core/saved/saved-open.ts +104 -0
  210. package/src/core/saved/saved-order.ts +49 -0
  211. package/src/core/saved/saved-types.ts +24 -0
  212. package/src/core/storage/json-guards.ts +80 -74
  213. package/src/core/storage/key-value.ts +66 -66
  214. package/src/core/ticket.ts +43 -43
  215. package/src/core/turns/hub-turns.ts +161 -0
  216. package/src/core/turns/turn-game.ts +510 -0
  217. package/src/core/turns/your-turn-buzz.ts +69 -0
  218. package/src/core/types.ts +134 -134
  219. package/src/core/version/client-version.gen.ts +2 -2
  220. package/src/core/version/hub-version.ts +62 -62
  221. package/src/core/version/semver.ts +97 -97
  222. package/src/daily/daily-system.ts +276 -161
  223. package/src/daily/page-daily.ts +36 -36
  224. package/src/daily/types.ts +105 -67
  225. package/src/daily.ts +10 -10
  226. package/src/doctor/checks.ts +86 -76
  227. package/src/doctor/cli.ts +101 -106
  228. package/src/doctor/hub-version-fetch.ts +43 -0
  229. package/src/doctor/tsconfig.json +12 -12
  230. package/src/doctor/world-check.ts +61 -0
  231. package/src/globals.ts +115 -110
  232. package/src/index.ts +68 -50
  233. package/src/input/device-state.ts +146 -146
  234. package/src/input/edges.ts +55 -55
  235. package/src/input/focus-ring.ts +13 -0
  236. package/src/input/gamepad.ts +61 -61
  237. package/src/input/input-events.ts +32 -32
  238. package/src/input/input-registry.ts +171 -164
  239. package/src/input/input-system.ts +406 -393
  240. package/src/input/legacy-controls.ts +64 -64
  241. package/src/input/modality.ts +122 -0
  242. package/src/input/nav-state.ts +200 -191
  243. package/src/input/navigator.ts +182 -171
  244. package/src/input/on-screen-controls.ts +101 -101
  245. package/src/input/page-control.ts +43 -43
  246. package/src/input/page-input.ts +193 -193
  247. package/src/input/player-remaps.ts +77 -77
  248. package/src/input/source-values.ts +116 -116
  249. package/src/input/spatial.ts +47 -47
  250. package/src/input/types.ts +331 -331
  251. package/src/input/zero-config.ts +164 -177
  252. package/src/input.ts +26 -22
  253. package/src/mp.ts +10 -10
  254. package/src/overlay/controls-panel.ts +163 -163
  255. package/src/overlay/dom.ts +46 -46
  256. package/src/overlay/layout-clusters.ts +162 -162
  257. package/src/overlay/layout-geometry.ts +136 -136
  258. package/src/overlay/layout.ts +203 -203
  259. package/src/overlay/listener-scope.ts +23 -23
  260. package/src/overlay/on-screen-keyboard.ts +137 -137
  261. package/src/overlay/overlay.ts +234 -208
  262. package/src/overlay/styles.ts +13 -12
  263. package/src/overlay/virtual-controls.ts +262 -262
  264. package/src/race.ts +10 -10
  265. package/src/realtime/bridge.ts +126 -121
  266. package/src/realtime/cross-bundle.ts +29 -29
  267. package/src/realtime/fallback-notice.ts +48 -48
  268. package/src/realtime/hub-link.ts +65 -65
  269. package/src/realtime/latest-state.ts +33 -33
  270. package/src/realtime/multiplayer-forwarder.ts +40 -28
  271. package/src/realtime/multiplayer-types.ts +66 -52
  272. package/src/realtime/page-runtime.ts +60 -60
  273. package/src/realtime/race-forwarder.ts +59 -59
  274. package/src/realtime/race-types.ts +132 -132
  275. package/src/realtime/room-types.ts +151 -125
  276. package/src/realtime/rooms-forwarder.ts +104 -79
  277. package/src/realtime/runtime-api.ts +74 -49
  278. package/src/realtime/runtime-opener.ts +61 -61
  279. package/src/realtime/social-forwarder.ts +77 -72
  280. package/src/realtime/social-types.ts +86 -78
  281. package/src/realtime/types.ts +54 -53
  282. package/src/realtime/wire-types.ts +79 -72
  283. package/src/realtime/world-types.ts +20 -0
  284. package/src/rooms.ts +10 -10
  285. package/src/social.ts +19 -18
  286. package/src/turns-kit/check-rules.ts +281 -0
  287. package/src/turns-rules.ts +12 -0
  288. package/src/turns.ts +14 -0
  289. package/src/types.ts +13 -13
  290. package/src/uistack/page-stack.ts +45 -45
  291. package/src/uistack/play-suspension.ts +82 -82
  292. package/src/uistack/types.ts +76 -76
  293. package/src/uistack/ui-stack.ts +144 -144
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":["GameInfo","ContractGameInfo","GameInfo","presence","social","mp","rooms","notify","race"],"sources":["../../src/core/storage/key-value.ts","../../src/core/game-data.ts","../../src/core/rest/endpoint-types.ts","../../src/core/types.ts","../../src/core/offline/events.ts","../../src/core/offline/queue.ts","../../src/core/offline/local-store.ts","../../src/core/rest/rest-client.ts","../../src/core/connection.ts","../../src/core/hub-progress.ts","../../src/core/hub-economy.ts","../../src/core/menu-control.ts","../../src/core/version/hub-version.ts","../../src/core/hub.ts","../../src/core/errors.ts","../../src/core/version/client-version.gen.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","names":["AvatarEntry","GameInfo","ContractGameInfo","_$__page_account0.PageAccount","GameInfo","presence","social","mp","rooms","notify","race"],"sources":["../../src/core/page-account.ts","../../src/core/avatar/avatar-ref.ts","../../src/core/avatar/hub-avatar.ts","../../src/core/storage/key-value.ts","../../src/core/rest/endpoint-types.ts","../../src/core/types.ts","../../src/core/offline/events.ts","../../src/core/offline/queue.ts","../../src/core/offline/local-store.ts","../../src/core/rest/rest-client.ts","../../src/core/offline/outbox-entry.ts","../../src/core/offline/outbox-kinds.ts","../../src/core/offline/outbox-store.ts","../../src/core/offline/outbox-replayer.ts","../../src/core/offline/outbox.ts","../../src/core/offline/offline-api.ts","../../src/core/resume/local-resume.ts","../../src/core/saved/local-saved.ts","../../src/core/connection.ts","../../src/core/hub-progress.ts","../../src/core/hub-economy.ts","../../src/core/menu-control.ts","../../src/core/offline/hub-kinds/resume-kind.ts","../../src/core/resume/resume-types.ts","../../src/core/resume/hub-resume.ts","../../src/core/saved/saved-list.ts","../../src/core/saved/hub-saved.ts","../../src/core/turns/turn-game.ts","../../src/core/turns/hub-turns.ts","../../src/core/version/hub-version.ts","../../src/core/hub.ts","../../src/core/errors.ts","../../src/core/turns/your-turn-buzz.ts","../../src/core/version/client-version.gen.ts"],"mappings":"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"}
@@ -319,6 +319,24 @@ interface ControlsPanelHost {
319
319
  bindingLabel(inputName: string): string;
320
320
  }
321
321
  //#endregion
322
+ //#region src/input/nav-state.d.ts
323
+ /** What a navigable list draws with (the overlay). */
324
+ interface NavHighlighter {
325
+ /** Ring the highlighted element, following its corner radius (a CSS `border-radius`, or empty). */
326
+ showHighlight(bounds: Rect, radius: string): void;
327
+ /** Remove the ring. */
328
+ hideHighlight(): void;
329
+ /** Open the on-screen keyboard for a text field. */
330
+ openKeyboard(target: HTMLInputElement | HTMLTextAreaElement | null): void;
331
+ }
332
+ //#endregion
333
+ //#region src/input/navigator.d.ts
334
+ /** What `autoNavigate` was last given: the targets' query and the back action. */
335
+ interface AutoNavigateTarget {
336
+ readonly query: () => NavTarget[];
337
+ readonly back: (() => void) | null;
338
+ }
339
+ //#endregion
322
340
  //#region src/input/page-control.d.ts
323
341
  /** The cross-bundle input surface. */
324
342
  interface PageInputControl {
@@ -375,6 +393,7 @@ declare class InputSystem implements ControlsPanelHost, PageInputControl {
375
393
  private activeSource;
376
394
  private isPageOwner;
377
395
  private pageOwner;
396
+ private readonly modality;
378
397
  constructor(host: InputHost, options?: InputSystemOptions);
379
398
  /** Whether this page counts as a touch device. */
380
399
  get touchDevice(): boolean;
@@ -453,6 +472,12 @@ declare class InputSystem implements ControlsPanelHost, PageInputControl {
453
472
  autoNavigate(selector: string | (() => NavTarget[]), options?: {
454
473
  back?: () => void;
455
474
  }): void;
475
+ /**
476
+ * The game's current `autoNavigate` target (its query and back action), or
477
+ * `null`. Hub UI that takes the gamepad for a while (a dialog) reads it,
478
+ * and gives it back with `autoNavigate(target.query, { back })` when done.
479
+ */
480
+ autoNavigateTarget(): AutoNavigateTarget | null;
456
481
  /** Stop navigating the game's own menu. */
457
482
  clearAutoNavigate(): void;
458
483
  /**
@@ -491,16 +516,46 @@ declare function parseInputOverrides(saved: unknown): InputOverrides;
491
516
  */
492
517
  declare function getInput(options?: InputOptions): InputSystem;
493
518
  //#endregion
494
- //#region src/input/nav-state.d.ts
495
- /** What a navigable list draws with (the overlay). */
496
- interface NavHighlighter {
497
- /** Ring the highlighted element. */
498
- showHighlight(bounds: Rect): void;
499
- /** Remove the ring. */
500
- hideHighlight(): void;
501
- /** Open the on-screen keyboard for a text field. */
502
- openKeyboard(target: HTMLInputElement | HTMLTextAreaElement | null): void;
503
- }
519
+ //#region src/input/focus-ring.d.ts
520
+ /**
521
+ * The hub's focus ring: a two-tone box-shadow (a dark gap, then a light ring)
522
+ * that follows the element's own border-radius and shows on light and dark
523
+ * buttons alike. Pages tune it with CSS variables:
524
+ * `--hub-focus-color` (the ring), `--hub-focus-inner` (the gap),
525
+ * `--hub-focus-width` and `--hub-focus-gap`.
526
+ */
527
+ /** The ring as a `box-shadow` value. */
528
+ declare const FOCUS_RING_SHADOW = "0 0 0 var(--hub-focus-gap, 2px) var(--hub-focus-inner, rgba(13, 15, 20, 0.85)), 0 0 0 calc(var(--hub-focus-gap, 2px) + var(--hub-focus-width, 3px)) var(--hub-focus-color, #fff)";
529
+ //#endregion
530
+ //#region src/input/modality.d.ts
531
+ /** `keys`: keyboard or gamepad. `pointer`: mouse or pen. `touch`: a finger. */
532
+ type InputModality = 'keys' | 'pointer' | 'touch';
533
+ /** The `<html>` attribute that holds the modality. */
534
+ declare const MODALITY_ATTRIBUTE = "data-hub-input";
535
+ /** Where the modality is stored: `<html>`, or a fake in tests. */
536
+ interface ModalityRoot {
537
+ getAttribute(name: string): string | null;
538
+ setAttribute(name: string, value: string): void;
539
+ }
540
+ /** Reads and writes the page's modality attribute. */
541
+ declare class ModalityTracker {
542
+ private readonly root;
543
+ /** Start at `initial` unless another copy already set the attribute. */
544
+ constructor(root: ModalityRoot, initial: InputModality);
545
+ /** The last modality used. */
546
+ get current(): InputModality;
547
+ /** Whether focus should show: the last input was a keyboard or gamepad. */
548
+ get showsFocus(): boolean;
549
+ /** Record the modality the player just used. */
550
+ set(modality: InputModality): void;
551
+ /** A key went down (`isTyping`: in a text field). */
552
+ noteKey(key: string, isTyping: boolean): void;
553
+ /** A pointer went down. */
554
+ notePointer(pointerType: string): void;
555
+ private readAttribute;
556
+ }
557
+ /** Track the page's modality (once per bundle) and add the focus styles (once per page). */
558
+ declare function trackInputModality(): ModalityTracker;
504
559
  //#endregion
505
560
  //#region src/overlay/layout-geometry.d.ts
506
561
  /** A placed control: top-left corner and size, in viewport px. */
@@ -587,12 +642,17 @@ declare class Overlay implements NavHighlighter {
587
642
  setControlHtml(id: string, html: string): void;
588
643
  /** Show controls of the enabled groups (or of every group, with `null`, while editing). */
589
644
  setVirtualVisible(isVisible: boolean, enabledGroups: ReadonlySet<string> | null): void;
590
- /** Game insets (px) auto-placed controls keep clear of, e.g. a top HUD bar. Merged with earlier calls. */
645
+ /**
646
+ * Game insets (px) auto-placed controls keep clear of, e.g. a top HUD bar.
647
+ * Merged with earlier calls. Also published on the page as
648
+ * `--hub-inset-top` (and right, bottom, left), so the hub's toasts sit
649
+ * below a top HUD too.
650
+ */
591
651
  setInsets(insets: Partial<Insets>): void;
592
652
  /** Re-place every control for the current viewport, keeping the player's dragged spots. */
593
653
  layout(): void;
594
- /** Ring the highlighted element. */
595
- showHighlight(bounds: Rect): void;
654
+ /** Ring the highlighted element, for keyboard and gamepad players only (never after a tap or click). */
655
+ showHighlight(bounds: Rect, radius: string): void;
596
656
  /** Remove the ring. */
597
657
  hideHighlight(): void;
598
658
  /** Open the on-screen keyboard for a text field. */
@@ -726,5 +786,5 @@ declare function getUiStack(): UiStack;
726
786
  /** Bump when the UiStack contract gains behaviour; idle older instances are replaced. */
727
787
  declare const UI_STACK_VERSION = 1;
728
788
  //#endregion
729
- export { VirtualControlType as $, AxisSide as A, InputReading as B, parseInputOverrides as C, isPageInputControl as D, PageInputControl as E, InputConfig as F, NavElement as G, MenuBridge as H, InputDef as I, NavTarget as J, NavElementKind as K, InputEvents as L, EdgeOffsets as M, GamepadMapping as N, Anchor as O, GroupDef as P, Vector as Q, InputHost as R, isInputSystem as S, InputSystemOptions as T, MouseMapping as U, InputSource as V, NavBlurEvent as W, Rect as X, NavigableDef as Y, TouchMapping as Z, boxesTouch as _, OverlayEdge as a, InputOptions as b, OverlayReason as c, LayoutOptions as d, VirtualDef as et, layoutControls as f, LayoutItem as g, LayoutBox as h, AutoPauseOptions as i, DraggedSpot as j, AxisDef as k, UiStack as l, Insets as m, getUiStack as n, VirtualOverride as nt, OverlayEvent as o, Overlay as p, NavFocusEvent as q, isUiStack as r, OverlayListener as s, UI_STACK_VERSION as t, VirtualInputs as tt, UiStackHandoff as u, controlSize as v, InputSystem as w, getInput as x, INPUT_SINGLETON_API as y, InputOverrides as z };
789
+ export { NavTarget as $, PageInputControl as A, InputConfig as B, INPUT_SINGLETON_API as C, parseInputOverrides as D, isInputSystem as E, AxisSide as F, InputReading as G, InputEvents as H, DraggedSpot as I, MouseMapping as J, InputSource as K, EdgeOffsets as L, AutoNavigateTarget as M, Anchor as N, InputSystem as O, AxisDef as P, NavFocusEvent as Q, GamepadMapping as R, FOCUS_RING_SHADOW as S, getInput as T, InputHost as U, InputDef as V, InputOverrides as W, NavElement as X, NavBlurEvent as Y, NavElementKind as Z, boxesTouch as _, OverlayEdge as a, VirtualDef as at, MODALITY_ATTRIBUTE as b, OverlayReason as c, LayoutOptions as d, NavigableDef as et, layoutControls as f, LayoutItem as g, LayoutBox as h, AutoPauseOptions as i, VirtualControlType as it, isPageInputControl as j, InputSystemOptions as k, UiStack as l, Insets as m, getUiStack as n, TouchMapping as nt, OverlayEvent as o, VirtualInputs as ot, Overlay as p, MenuBridge as q, isUiStack as r, Vector as rt, OverlayListener as s, VirtualOverride as st, UI_STACK_VERSION as t, Rect as tt, UiStackHandoff as u, controlSize as v, InputOptions as w, trackInputModality as x, InputModality as y, GroupDef as z };
730
790
  //# sourceMappingURL=input.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"input.d.ts","names":[],"sources":["../../src/input/types.ts","../../src/overlay/controls-panel.ts","../../src/input/page-control.ts","../../src/input/input-system.ts","../../src/input/page-input.ts","../../src/input/nav-state.ts","../../src/overlay/layout-geometry.ts","../../src/overlay/virtual-controls.ts","../../src/overlay/overlay.ts","../../src/overlay/layout.ts","../../src/uistack/types.ts","../../src/uistack/page-stack.ts","../../src/uistack/ui-stack.ts"],"mappings":"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"}
1
+ {"version":3,"file":"input.d.ts","names":[],"sources":["../../src/input/types.ts","../../src/overlay/controls-panel.ts","../../src/input/nav-state.ts","../../src/input/navigator.ts","../../src/input/page-control.ts","../../src/input/input-system.ts","../../src/input/page-input.ts","../../src/input/focus-ring.ts","../../src/input/modality.ts","../../src/overlay/layout-geometry.ts","../../src/overlay/virtual-controls.ts","../../src/overlay/overlay.ts","../../src/overlay/layout.ts","../../src/uistack/types.ts","../../src/uistack/page-stack.ts","../../src/uistack/ui-stack.ts"],"mappings":"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"}
@@ -1,4 +1,5 @@
1
- import { a as isObject, i as hasMethods, n as claimSingleton, o as readField, r as _defineProperty, t as LEGACY_GLOBAL_NAMES } from "./globals.js";
1
+ import { a as readField, i as isObject, n as claimSingleton, r as hasMethods, t as LEGACY_GLOBAL_NAMES } from "./globals.js";
2
+ import { t as _defineProperty } from "./defineProperty.js";
2
3
  import { t as HUB_CLIENT_VERSION } from "./client-version.gen.js";
3
4
  import { a as requireElement, i as placeAt, n as findElements, r as pageBody, t as escapeHtml } from "./dom.js";
4
5
  //#region src/input/gamepad.ts
@@ -455,11 +456,16 @@ var InputRegistry = class {
455
456
  isUp: this.wentUp(name)
456
457
  };
457
458
  }
458
- /** A named axis (or an ad-hoc negative/positive pair) as -1..1. */
459
+ /**
460
+ * A named axis (or an ad-hoc negative/positive pair) as -1..1: its `x`, or
461
+ * its `y` when it declares only `y` (a vertical one-axis control, like a
462
+ * paddle).
463
+ */
459
464
  axis(name, positive) {
460
465
  if (positive !== void 0) return clampUnit(this.value(positive)) - clampUnit(this.value(name));
461
466
  const axis = this.axes.get(name);
462
- return axis === void 0 ? this.value(name) : readAxisSide(axis.x, (input) => this.value(input));
467
+ if (axis === void 0) return this.value(name);
468
+ return readAxisSide(axis.x ?? axis.y, (input) => this.value(input));
463
469
  }
464
470
  /** A named axis pair as a vector clamped to the unit circle. */
465
471
  vector(name) {
@@ -488,6 +494,116 @@ var InputRegistry = class {
488
494
  }
489
495
  };
490
496
  //#endregion
497
+ //#region src/input/focus-ring.ts
498
+ /**
499
+ * The hub's focus ring: a two-tone box-shadow (a dark gap, then a light ring)
500
+ * that follows the element's own border-radius and shows on light and dark
501
+ * buttons alike. Pages tune it with CSS variables:
502
+ * `--hub-focus-color` (the ring), `--hub-focus-inner` (the gap),
503
+ * `--hub-focus-width` and `--hub-focus-gap`.
504
+ */
505
+ const GAP = "var(--hub-focus-gap, 2px)";
506
+ /** The ring as a `box-shadow` value. */
507
+ const FOCUS_RING_SHADOW = `0 0 0 ${GAP} var(--hub-focus-inner, rgba(13, 15, 20, 0.85)), 0 0 0 calc(${GAP} + var(--hub-focus-width, 3px)) var(--hub-focus-color, #fff)`;
508
+ //#endregion
509
+ //#region src/input/modality.ts
510
+ /**
511
+ * Which kind of input the player used last, published as `data-hub-input` on
512
+ * `<html>` so focus styles show only to keyboard and gamepad players: a tap or
513
+ * click never leaves a ring behind, and touch devices show none at all. The
514
+ * attribute is the shared state, so every bundle's copy of the client agrees.
515
+ */
516
+ /** The `<html>` attribute that holds the modality. */
517
+ const MODALITY_ATTRIBUTE = "data-hub-input";
518
+ const STYLE_ID = "hub-focus-style";
519
+ const MODIFIER_KEYS = /* @__PURE__ */ new Set([
520
+ "Shift",
521
+ "Control",
522
+ "Alt",
523
+ "Meta",
524
+ "AltGraph",
525
+ "CapsLock"
526
+ ]);
527
+ const MODALITIES = [
528
+ "keys",
529
+ "pointer",
530
+ "touch"
531
+ ];
532
+ /**
533
+ * The page focus styles: the gamepad highlight (`gp-focus`) for keyboard and
534
+ * gamepad players only, and no browser focus ring on buttons after a tap.
535
+ */
536
+ const PAGE_FOCUS_CSS = `html[${MODALITY_ATTRIBUTE}="keys"] .gp-focus{outline:none !important;box-shadow:${FOCUS_RING_SHADOW} !important;}
537
+ html[${MODALITY_ATTRIBUTE}="touch"] :is(button,a,summary,[role="button"],[tabindex]):focus{outline:none;}`;
538
+ /** The modality a pointer event's `pointerType` implies. */
539
+ function modalityOfPointer(pointerType) {
540
+ return pointerType === "touch" ? "touch" : "pointer";
541
+ }
542
+ /** The modality a key press implies, or `null` when it says nothing (a lone modifier, typing in a field). */
543
+ function modalityOfKey(key, isTyping) {
544
+ if (MODIFIER_KEYS.has(key)) return null;
545
+ return isTyping && key !== "Tab" ? null : "keys";
546
+ }
547
+ /** Reads and writes the page's modality attribute. */
548
+ var ModalityTracker = class {
549
+ /** Start at `initial` unless another copy already set the attribute. */
550
+ constructor(root, initial) {
551
+ _defineProperty(this, "root", void 0);
552
+ this.root = root;
553
+ if (this.readAttribute() === null) this.set(initial);
554
+ }
555
+ /** The last modality used. */
556
+ get current() {
557
+ return this.readAttribute() ?? "pointer";
558
+ }
559
+ /** Whether focus should show: the last input was a keyboard or gamepad. */
560
+ get showsFocus() {
561
+ return this.current === "keys";
562
+ }
563
+ /** Record the modality the player just used. */
564
+ set(modality) {
565
+ if (this.readAttribute() !== modality) this.root.setAttribute(MODALITY_ATTRIBUTE, modality);
566
+ }
567
+ /** A key went down (`isTyping`: in a text field). */
568
+ noteKey(key, isTyping) {
569
+ const modality = modalityOfKey(key, isTyping);
570
+ if (modality !== null) this.set(modality);
571
+ }
572
+ /** A pointer went down. */
573
+ notePointer(pointerType) {
574
+ this.set(modalityOfPointer(pointerType));
575
+ }
576
+ readAttribute() {
577
+ const value = this.root.getAttribute(MODALITY_ATTRIBUTE);
578
+ return MODALITIES.find((modality) => modality === value) ?? null;
579
+ }
580
+ };
581
+ let pageTracker = null;
582
+ /** Track the page's modality (once per bundle) and add the focus styles (once per page). */
583
+ function trackInputModality() {
584
+ if (pageTracker !== null) return pageTracker;
585
+ const root = document.documentElement;
586
+ const isTouchDevice = typeof matchMedia === "function" && matchMedia("(hover: none) and (pointer: coarse)").matches;
587
+ const isFirstCopy = root.getAttribute(MODALITY_ATTRIBUTE) === null;
588
+ const tracker = new ModalityTracker(root, isTouchDevice ? "touch" : "pointer");
589
+ pageTracker = tracker;
590
+ if (isFirstCopy) {
591
+ document.addEventListener("keydown", (event) => {
592
+ tracker.noteKey(event.key, isTypingTarget(event.target));
593
+ }, true);
594
+ document.addEventListener("pointerdown", (event) => {
595
+ tracker.notePointer(event.pointerType);
596
+ }, true);
597
+ }
598
+ if (document.getElementById(STYLE_ID) === null) {
599
+ const style = document.createElement("style");
600
+ style.id = STYLE_ID;
601
+ style.textContent = PAGE_FOCUS_CSS;
602
+ document.head.appendChild(style);
603
+ }
604
+ return tracker;
605
+ }
606
+ //#endregion
491
607
  //#region src/input/legacy-controls.ts
492
608
  /**
493
609
  * `game.controls` (`window.__HUB__.controls`): the gamepad-to-keyboard map a
@@ -602,6 +718,10 @@ function boundsOf(element) {
602
718
  height: 0
603
719
  } : rectOf(element.el);
604
720
  }
721
+ /** A navigable element's CSS corner radius, so the ring can follow it (empty for a non-DOM element). */
722
+ function radiusOf(element) {
723
+ return element.el === void 0 ? "" : getComputedStyle(element.el).borderRadius;
724
+ }
605
725
  /** The text field a navigable element edits, if it is one. */
606
726
  function textFieldOf(element) {
607
727
  return element.el instanceof HTMLInputElement || element.el instanceof HTMLTextAreaElement ? element.el : null;
@@ -682,12 +802,14 @@ var NavState = class {
682
802
  this.elements = this.resolve();
683
803
  this.position(highlighter);
684
804
  }
685
- /** Move the ring to the highlighted element (or hide it). */
805
+ /** Move the ring to the highlighted element (or hide it), following keyboard focus (Tab) within the list. */
686
806
  position(highlighter) {
687
807
  if (highlighter === null) return;
808
+ const focused = this.elements.findIndex((element) => element.el !== void 0 && element.el === document.activeElement);
809
+ if (focused >= 0) this.index = focused;
688
810
  const current = this.elements[this.index];
689
811
  if (current === void 0) highlighter.hideHighlight();
690
- else highlighter.showHighlight(boundsOf(current));
812
+ else highlighter.showHighlight(boundsOf(current), radiusOf(current));
691
813
  }
692
814
  resolve() {
693
815
  return this.queryElements().map((target) => target instanceof HTMLElement ? {
@@ -774,6 +896,13 @@ var Navigator = class {
774
896
  this.autoNavigateBack = back;
775
897
  this.autoNavigateState = null;
776
898
  }
899
+ /** The current auto-navigate target and back action, or `null` when none is set. */
900
+ autoNavigateTarget() {
901
+ return this.autoNavigateQuery === null ? null : {
902
+ query: this.autoNavigateQuery,
903
+ back: this.autoNavigateBack
904
+ };
905
+ }
777
906
  /** Make a CSS selector's visible matches the auto-navigate targets. */
778
907
  static queryFor(selector) {
779
908
  return typeof selector === "string" ? () => visibleMatches(selector) : selector;
@@ -1535,8 +1664,8 @@ const OVERLAY_CSS = `
1535
1664
  :host(.editing) .edit-bar .btn { margin: 0; }
1536
1665
  .safe-probe { position: fixed; left: 0; top: 0; width: 0; height: 0; visibility: hidden; pointer-events: none;
1537
1666
  padding: env(safe-area-inset-top, 0px) env(safe-area-inset-right, 0px) env(safe-area-inset-bottom, 0px) env(safe-area-inset-left, 0px); }
1538
- .ring { position: fixed; pointer-events: none; z-index: 2147483200; border: 3px solid ${ACCENT_COLOR}; border-radius: 8px;
1539
- box-shadow: 0 0 0 2px rgba(0,0,0,.4); transition: left .08s, top .08s, width .08s, height .08s; }
1667
+ .ring { position: fixed; pointer-events: none; z-index: 2147483200; box-shadow: ${FOCUS_RING_SHADOW};
1668
+ transition: left .08s, top .08s, width .08s, height .08s; }
1540
1669
  .ring[hidden] { display: none; }
1541
1670
  .kb { position: fixed; left: 0; right: 0; bottom: 0; z-index: 2147483400; background: #0d0f14ee; padding: 10px;
1542
1671
  pointer-events: auto; border-top: 1px solid #2a3142; }
@@ -1545,7 +1674,7 @@ const OVERLAY_CSS = `
1545
1674
  .kb .k { flex: 1; min-width: 0; max-width: 64px; height: 46px; border-radius: 8px; border: 1px solid #2a3142;
1546
1675
  background: #11141c; color: #e8e6df; font: 16px monospace; cursor: pointer; }
1547
1676
  .kb .k.space { max-width: 280px; } .kb .k.wide { max-width: 90px; }
1548
- .kb .k.kfocus { border-color: ${ACCENT_COLOR}; box-shadow: 0 0 0 2px ${ACCENT_COLOR}; }
1677
+ .kb .k.kfocus { box-shadow: ${FOCUS_RING_SHADOW}; }
1549
1678
  .panel { position: fixed; inset: 0; z-index: 2147483500; display: grid; place-items: center; background: rgba(0,0,0,.6); pointer-events: auto;
1550
1679
  font-family: 'Space Mono', ui-monospace, monospace; }
1551
1680
  .panel-card { background: #0d0f14; color: #e8e6df; border: 1px solid #2a3142; border-radius: 12px; padding: 18px;
@@ -1852,12 +1981,18 @@ var Overlay = class {
1852
1981
  control.element.style.display = isShown ? "" : "none";
1853
1982
  }
1854
1983
  }
1855
- /** Game insets (px) auto-placed controls keep clear of, e.g. a top HUD bar. Merged with earlier calls. */
1984
+ /**
1985
+ * Game insets (px) auto-placed controls keep clear of, e.g. a top HUD bar.
1986
+ * Merged with earlier calls. Also published on the page as
1987
+ * `--hub-inset-top` (and right, bottom, left), so the hub's toasts sit
1988
+ * below a top HUD too.
1989
+ */
1856
1990
  setInsets(insets) {
1857
1991
  this.gameInsets = {
1858
1992
  ...this.gameInsets,
1859
1993
  ...insets
1860
1994
  };
1995
+ publishInsets(this.gameInsets);
1861
1996
  this.layout();
1862
1997
  }
1863
1998
  /** Re-place every control for the current viewport, keeping the player's dragged spots. */
@@ -1892,9 +2027,10 @@ var Overlay = class {
1892
2027
  if (box !== void 0) placeAt(control.element, box.x, box.y);
1893
2028
  }
1894
2029
  }
1895
- /** Ring the highlighted element. */
1896
- showHighlight(bounds) {
1897
- this.ring.hidden = false;
2030
+ /** Ring the highlighted element, for keyboard and gamepad players only (never after a tap or click). */
2031
+ showHighlight(bounds, radius) {
2032
+ this.ring.hidden = !trackInputModality().showsFocus;
2033
+ this.ring.style.borderRadius = radius;
1898
2034
  this.ring.style.left = `${String(bounds.x)}px`;
1899
2035
  this.ring.style.top = `${String(bounds.y)}px`;
1900
2036
  this.ring.style.width = `${String(bounds.width)}px`;
@@ -1937,6 +2073,22 @@ var Overlay = class {
1937
2073
  };
1938
2074
  }
1939
2075
  };
2076
+ /** Every inset side. */
2077
+ const INSET_SIDES = [
2078
+ "top",
2079
+ "right",
2080
+ "bottom",
2081
+ "left"
2082
+ ];
2083
+ /** The page-wide CSS variables other hub UI (the runtime's toasts) keeps clear of. */
2084
+ function publishInsets(insets) {
2085
+ if (typeof document === "undefined") return;
2086
+ for (const side of INSET_SIDES) {
2087
+ const px = insets[side];
2088
+ if (px === void 0) document.documentElement.style.removeProperty(`--hub-inset-${side}`);
2089
+ else document.documentElement.style.setProperty(`--hub-inset-${side}`, `${String(Math.max(0, Math.round(px)))}px`);
2090
+ }
2091
+ }
1940
2092
  //#endregion
1941
2093
  //#region src/input/on-screen-controls.ts
1942
2094
  /**
@@ -2099,9 +2251,8 @@ var PlayerRemaps = class {
2099
2251
  //#region src/input/zero-config.ts
2100
2252
  /** Synthetic keys stay pressed past half deflection. */
2101
2253
  const SYNTH_DEADZONE = .5;
2254
+ /** The catalog tile highlight; its style (keyboard and gamepad players only) is in `modality.ts`. */
2102
2255
  const FOCUS_CLASS = "gp-focus";
2103
- const FOCUS_STYLE_ID = "gp-focus-style";
2104
- const FOCUS_CSS = ".gp-focus{outline:3px solid #ff5f3b !important;outline-offset:2px;border-radius:4px;}";
2105
2256
  /** `KeyboardEvent.code` → its `key` and legacy `keyCode`. */
2106
2257
  const KEY_FOR_CODE = /* @__PURE__ */ new Map([
2107
2258
  ["ArrowUp", ["ArrowUp", 38]],
@@ -2137,14 +2288,6 @@ function dispatchKey(type, code) {
2137
2288
  Object.defineProperty(event, "which", { get: () => keyCode });
2138
2289
  target.dispatchEvent(event);
2139
2290
  }
2140
- /** Add the highlight style to the page once. */
2141
- function ensureFocusStyle() {
2142
- if (document.getElementById(FOCUS_STYLE_ID) !== null) return;
2143
- const style = document.createElement("style");
2144
- style.id = FOCUS_STYLE_ID;
2145
- style.textContent = FOCUS_CSS;
2146
- document.head.appendChild(style);
2147
- }
2148
2291
  /** The keys each pad holds down, by pad index. */
2149
2292
  const heldCodes = /* @__PURE__ */ new Map();
2150
2293
  function releaseAllKeys() {
@@ -2233,7 +2376,6 @@ function navigateCatalog(frame) {
2233
2376
  /** One frame of the zero-config fallback. */
2234
2377
  function runZeroConfigFrame(frame) {
2235
2378
  if (frame.gamepads.length === 0) return;
2236
- ensureFocusStyle();
2237
2379
  if (frame.slug === null) navigateCatalog(frame);
2238
2380
  else synthesizeKeys(frame);
2239
2381
  }
@@ -2261,6 +2403,7 @@ var InputSystem = class {
2261
2403
  _defineProperty(this, "activeSource", "keyboard");
2262
2404
  _defineProperty(this, "isPageOwner", void 0);
2263
2405
  _defineProperty(this, "pageOwner", null);
2406
+ _defineProperty(this, "modality", typeof document === "undefined" ? null : trackInputModality());
2264
2407
  this.host = host;
2265
2408
  this.options = options;
2266
2409
  this.isPageOwner = options.isPageOwner ?? true;
@@ -2437,6 +2580,14 @@ var InputSystem = class {
2437
2580
  autoNavigate(selector, options) {
2438
2581
  this.navigator.setAutoNavigate(Navigator.queryFor(selector), options?.back ?? null);
2439
2582
  }
2583
+ /**
2584
+ * The game's current `autoNavigate` target (its query and back action), or
2585
+ * `null`. Hub UI that takes the gamepad for a while (a dialog) reads it,
2586
+ * and gives it back with `autoNavigate(target.query, { back })` when done.
2587
+ */
2588
+ autoNavigateTarget() {
2589
+ return this.navigator.autoNavigateTarget();
2590
+ }
2440
2591
  /** Stop navigating the game's own menu. */
2441
2592
  clearAutoNavigate() {
2442
2593
  this.navigator.clearAutoNavigate(this.controls.existingOverlay);
@@ -2495,7 +2646,10 @@ var InputSystem = class {
2495
2646
  this.devices.frame += 1;
2496
2647
  const { isConnected, hasActivity } = this.devices.pollGamepads();
2497
2648
  this.controls.isGamepadConnected = isConnected;
2498
- if (hasActivity) this.setSource("gamepad");
2649
+ if (hasActivity) {
2650
+ this.setSource("gamepad");
2651
+ this.modality?.set("keys");
2652
+ }
2499
2653
  if (this.isPageOwner) this.driveFrame();
2500
2654
  else this.registry.sample(this.devices, this.activeSource);
2501
2655
  this.devices.decay();
@@ -2713,6 +2867,6 @@ function getInput(options = {}) {
2713
2867
  return claimedInput;
2714
2868
  }
2715
2869
  //#endregion
2716
- export { isPageInputControl as a, layoutControls as c, parseInputOverrides as i, boxesTouch as l, getInput as n, InputSystem as o, isInputSystem as r, Overlay as s, INPUT_SINGLETON_API as t, controlSize as u };
2870
+ export { isPageInputControl as a, layoutControls as c, MODALITY_ATTRIBUTE as d, trackInputModality as f, parseInputOverrides as i, boxesTouch as l, getInput as n, InputSystem as o, FOCUS_RING_SHADOW as p, isInputSystem as r, Overlay as s, INPUT_SINGLETON_API as t, controlSize as u };
2717
2871
 
2718
2872
  //# sourceMappingURL=input.js.map