@the-inclusionist/engine 9.0.0 → 11.0.0

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 (532) hide show
  1. package/README.md +120 -78
  2. package/app/css/style.css +761 -377
  3. package/app/public/vendor/fonts/playwrite-cu.woff2 +0 -0
  4. package/app/public/vendor/fonts/playwrite-es-deco.woff2 +0 -0
  5. package/app/public/vendor/fonts/playwrite-es.woff2 +0 -0
  6. package/app/public/vendor/fonts/playwrite-gb-j.woff2 +0 -0
  7. package/app/public/vendor/fonts/playwrite-gb-s.woff2 +0 -0
  8. package/app/public/vendor/fonts/playwrite-pe.woff2 +0 -0
  9. package/app/public/vendor/fonts/playwrite-pt.woff2 +0 -0
  10. package/app/public/vendor/fonts-licences/NOTICE.txt +166 -0
  11. package/app/public/vendor/fonts-licences/OFL-1.1.txt +86 -0
  12. package/app/public/vendor/fonts.css +36 -84
  13. package/dist-pkg/boot/create-game.d.ts +499 -219
  14. package/dist-pkg/boot/create-game.js +3944 -562
  15. package/dist-pkg/core/a11y-sr.d.ts +25 -3
  16. package/dist-pkg/core/a11y-sr.js +38 -19
  17. package/dist-pkg/core/accessible-label.d.ts +17 -0
  18. package/dist-pkg/core/accessible-label.js +37 -0
  19. package/dist-pkg/core/accommodation-subjects.d.ts +26 -0
  20. package/dist-pkg/core/accommodation-subjects.js +32 -0
  21. package/dist-pkg/core/accommodations.d.ts +125 -0
  22. package/dist-pkg/core/accommodations.js +195 -0
  23. package/dist-pkg/core/actions.d.ts +108 -55
  24. package/dist-pkg/core/actions.js +122 -71
  25. package/dist-pkg/core/calm-mode.d.ts +31 -0
  26. package/dist-pkg/core/calm-mode.js +47 -0
  27. package/dist-pkg/core/camera-cycle.d.ts +15 -0
  28. package/dist-pkg/core/camera-cycle.js +7 -0
  29. package/dist-pkg/core/caption-duration.d.ts +15 -0
  30. package/dist-pkg/core/caption-duration.js +19 -0
  31. package/dist-pkg/core/cartridge-problems.d.ts +34 -0
  32. package/dist-pkg/core/cartridge-problems.js +53 -0
  33. package/dist-pkg/core/constants.d.ts +0 -54
  34. package/dist-pkg/core/constants.js +9 -76
  35. package/dist-pkg/core/contract.d.ts +142 -164
  36. package/dist-pkg/core/contract.js +222 -208
  37. package/dist-pkg/core/dom-query.d.ts +4 -4
  38. package/dist-pkg/core/dom-query.js +12 -20
  39. package/dist-pkg/core/entity.d.ts +62 -77
  40. package/dist-pkg/core/entity.js +18 -32
  41. package/dist-pkg/core/escape-html.d.ts +9 -10
  42. package/dist-pkg/core/escape-html.js +16 -20
  43. package/dist-pkg/core/flash-threshold.d.ts +17 -0
  44. package/dist-pkg/core/flash-threshold.js +113 -0
  45. package/dist-pkg/core/game-speed.d.ts +11 -0
  46. package/dist-pkg/core/game-speed.js +16 -0
  47. package/dist-pkg/core/genres.d.ts +20 -0
  48. package/dist-pkg/core/genres.js +44 -0
  49. package/dist-pkg/core/i18n.d.ts +71 -60
  50. package/dist-pkg/core/i18n.js +186 -200
  51. package/dist-pkg/core/loop.d.ts +17 -6
  52. package/dist-pkg/core/loop.js +26 -26
  53. package/dist-pkg/core/pause-icon-catalogue.d.ts +15 -0
  54. package/dist-pkg/core/pause-icon-catalogue.js +54 -0
  55. package/dist-pkg/core/ring.d.ts +17 -0
  56. package/dist-pkg/core/ring.js +29 -0
  57. package/dist-pkg/core/rng.d.ts +7 -12
  58. package/dist-pkg/core/rng.js +23 -53
  59. package/dist-pkg/core/route.d.ts +26 -26
  60. package/dist-pkg/core/route.js +126 -121
  61. package/dist-pkg/core/scenes.d.ts +37 -40
  62. package/dist-pkg/core/scenes.js +41 -43
  63. package/dist-pkg/core/screens.d.ts +4 -4
  64. package/dist-pkg/core/screens.js +11 -16
  65. package/dist-pkg/core/session-clock.d.ts +23 -0
  66. package/dist-pkg/core/session-clock.js +37 -0
  67. package/dist-pkg/core/setting-defaults.d.ts +61 -0
  68. package/dist-pkg/core/setting-defaults.js +66 -0
  69. package/dist-pkg/core/speech-rate.d.ts +29 -0
  70. package/dist-pkg/core/speech-rate.js +47 -0
  71. package/dist-pkg/core/state.d.ts +118 -118
  72. package/dist-pkg/core/state.js +322 -297
  73. package/dist-pkg/core/visual-cycles.d.ts +30 -0
  74. package/dist-pkg/core/visual-cycles.js +52 -0
  75. package/dist-pkg/core/visual-state.d.ts +13 -0
  76. package/dist-pkg/core/visual-state.js +6 -0
  77. package/dist-pkg/educational/activities-registry.d.ts +1 -1
  78. package/dist-pkg/educational/activities-registry.js +9 -8
  79. package/dist-pkg/educational/adaptive-engine.d.ts +11 -11
  80. package/dist-pkg/educational/adaptive-engine.js +17 -17
  81. package/dist-pkg/educational/segment-bar.d.ts +12 -12
  82. package/dist-pkg/educational/segment-bar.js +9 -9
  83. package/dist-pkg/i18n/en.js +324 -223
  84. package/dist-pkg/i18n/es.js +323 -223
  85. package/dist-pkg/i18n/pt.js +348 -226
  86. package/dist-pkg/input/default-bindings.d.ts +37 -38
  87. package/dist-pkg/input/default-bindings.js +127 -144
  88. package/dist-pkg/input/devices.d.ts +7 -7
  89. package/dist-pkg/input/devices.js +17 -16
  90. package/dist-pkg/input/edges.d.ts +23 -32
  91. package/dist-pkg/input/edges.js +23 -28
  92. package/dist-pkg/input/empathy-filter.d.ts +22 -0
  93. package/dist-pkg/input/empathy-filter.js +34 -0
  94. package/dist-pkg/input/face-map.d.ts +96 -0
  95. package/dist-pkg/input/face-map.js +255 -0
  96. package/dist-pkg/input/face-signals.d.ts +40 -0
  97. package/dist-pkg/input/face-signals.js +48 -0
  98. package/dist-pkg/input/gamepad.d.ts +195 -145
  99. package/dist-pkg/input/gamepad.js +383 -556
  100. package/dist-pkg/input/gaze-cycle.d.ts +64 -0
  101. package/dist-pkg/input/gaze-cycle.js +133 -0
  102. package/dist-pkg/input/gaze-relative.d.ts +68 -0
  103. package/dist-pkg/input/gaze-relative.js +142 -0
  104. package/dist-pkg/input/hand-map.d.ts +28 -0
  105. package/dist-pkg/input/hand-map.js +142 -0
  106. package/dist-pkg/input/input-cooldown.d.ts +17 -0
  107. package/dist-pkg/input/input-cooldown.js +39 -0
  108. package/dist-pkg/input/key-default.d.ts +30 -0
  109. package/dist-pkg/input/key-default.js +60 -0
  110. package/dist-pkg/input/keyboard-runtime.d.ts +15 -21
  111. package/dist-pkg/input/keyboard-runtime.js +23 -27
  112. package/dist-pkg/input/keyboard.d.ts +68 -63
  113. package/dist-pkg/input/keyboard.js +83 -105
  114. package/dist-pkg/input/keydown.d.ts +123 -137
  115. package/dist-pkg/input/keydown.js +284 -289
  116. package/dist-pkg/input/latch-edge.d.ts +33 -21
  117. package/dist-pkg/input/latch-edge.js +34 -35
  118. package/dist-pkg/input/latch-scope.d.ts +51 -50
  119. package/dist-pkg/input/latch-scope.js +61 -82
  120. package/dist-pkg/input/latch-store.d.ts +26 -30
  121. package/dist-pkg/input/latch-store.js +42 -50
  122. package/dist-pkg/input/latch-sync.d.ts +29 -29
  123. package/dist-pkg/input/latch-sync.js +25 -25
  124. package/dist-pkg/input/latch.d.ts +14 -17
  125. package/dist-pkg/input/latch.js +29 -37
  126. package/dist-pkg/input/pad-defaults.d.ts +13 -16
  127. package/dist-pkg/input/pad-defaults.js +21 -28
  128. package/dist-pkg/input/pad-reading.d.ts +76 -0
  129. package/dist-pkg/input/pad-reading.js +169 -0
  130. package/dist-pkg/input/pad-wizard.d.ts +99 -0
  131. package/dist-pkg/input/pad-wizard.js +256 -0
  132. package/dist-pkg/input/pointer-space.d.ts +19 -20
  133. package/dist-pkg/input/pointer-space.js +27 -32
  134. package/dist-pkg/input/pointer.d.ts +39 -40
  135. package/dist-pkg/input/pointer.js +42 -45
  136. package/dist-pkg/input/state.d.ts +101 -89
  137. package/dist-pkg/input/state.js +54 -134
  138. package/dist-pkg/input/switch-scan.d.ts +59 -0
  139. package/dist-pkg/input/switch-scan.js +67 -0
  140. package/dist-pkg/input/synthetic-source.d.ts +42 -0
  141. package/dist-pkg/input/synthetic-source.js +57 -0
  142. package/dist-pkg/input/touch-bindings.d.ts +127 -116
  143. package/dist-pkg/input/touch-bindings.js +158 -173
  144. package/dist-pkg/input/touch.d.ts +147 -72
  145. package/dist-pkg/input/touch.js +362 -126
  146. package/dist-pkg/input/transport-in-use.d.ts +107 -0
  147. package/dist-pkg/input/transport-in-use.js +130 -0
  148. package/dist-pkg/input/transports.d.ts +90 -117
  149. package/dist-pkg/input/transports.js +104 -106
  150. package/dist-pkg/input/virtual-controller.d.ts +82 -0
  151. package/dist-pkg/input/virtual-controller.js +69 -0
  152. package/dist-pkg/input/vocabulary-migration.d.ts +50 -49
  153. package/dist-pkg/input/vocabulary-migration.js +80 -79
  154. package/dist-pkg/input/voice-map.d.ts +59 -0
  155. package/dist-pkg/input/voice-map.js +123 -0
  156. package/dist-pkg/platform/audio-ambient.d.ts +13 -2
  157. package/dist-pkg/platform/audio-ambient.js +14 -14
  158. package/dist-pkg/platform/audio-earcons.d.ts +20 -19
  159. package/dist-pkg/platform/audio-earcons.js +51 -42
  160. package/dist-pkg/platform/audio-jingles.js +9 -10
  161. package/dist-pkg/platform/audio-mixer.d.ts +14 -2
  162. package/dist-pkg/platform/audio-mixer.js +31 -39
  163. package/dist-pkg/platform/audio-sonar.d.ts +49 -152
  164. package/dist-pkg/platform/audio-sonar.js +124 -302
  165. package/dist-pkg/platform/audio.d.ts +62 -19
  166. package/dist-pkg/platform/audio.js +193 -168
  167. package/dist-pkg/platform/choose-by-voice.d.ts +70 -0
  168. package/dist-pkg/platform/choose-by-voice.js +157 -0
  169. package/dist-pkg/platform/flash-sampler.d.ts +19 -0
  170. package/dist-pkg/platform/flash-sampler.js +79 -0
  171. package/dist-pkg/platform/font-library.d.ts +77 -0
  172. package/dist-pkg/platform/font-library.js +98 -0
  173. package/dist-pkg/platform/font-library.json +721 -0
  174. package/dist-pkg/platform/heavy-catalogue.d.ts +77 -0
  175. package/dist-pkg/platform/heavy-catalogue.js +256 -0
  176. package/dist-pkg/platform/heavy-mirror.d.ts +20 -0
  177. package/dist-pkg/platform/heavy-mirror.js +73 -0
  178. package/dist-pkg/platform/heavy.d.ts +136 -0
  179. package/dist-pkg/platform/heavy.js +324 -0
  180. package/dist-pkg/platform/interruptible-speech.d.ts +23 -16
  181. package/dist-pkg/platform/interruptible-speech.js +77 -54
  182. package/dist-pkg/platform/kokoro-port.d.ts +27 -0
  183. package/dist-pkg/platform/kokoro-port.js +50 -0
  184. package/dist-pkg/platform/kokoro-runtime.d.ts +20 -0
  185. package/dist-pkg/platform/kokoro-runtime.js +52 -0
  186. package/dist-pkg/platform/kokoro.d.ts +70 -0
  187. package/dist-pkg/platform/kokoro.js +133 -0
  188. package/dist-pkg/platform/listener-scope.d.ts +12 -0
  189. package/dist-pkg/platform/listener-scope.js +90 -0
  190. package/dist-pkg/platform/locale-host.d.ts +14 -0
  191. package/dist-pkg/platform/locale-host.js +45 -0
  192. package/dist-pkg/platform/microphone.d.ts +51 -0
  193. package/dist-pkg/platform/microphone.js +118 -0
  194. package/dist-pkg/platform/onnx-runtime.d.ts +34 -0
  195. package/dist-pkg/platform/onnx-runtime.js +42 -0
  196. package/dist-pkg/platform/reading-in-worker.d.ts +64 -0
  197. package/dist-pkg/platform/reading-in-worker.js +125 -0
  198. package/dist-pkg/platform/reading-model.d.ts +94 -0
  199. package/dist-pkg/platform/reading-model.js +272 -0
  200. package/dist-pkg/platform/reading-runtime.d.ts +24 -0
  201. package/dist-pkg/platform/reading-runtime.js +164 -0
  202. package/dist-pkg/platform/reading-worker.d.ts +41 -0
  203. package/dist-pkg/platform/reading-worker.js +58 -0
  204. package/dist-pkg/platform/reading.d.ts +80 -0
  205. package/dist-pkg/platform/reading.js +136 -0
  206. package/dist-pkg/platform/speech-recognition.d.ts +60 -0
  207. package/dist-pkg/platform/speech-recognition.js +104 -0
  208. package/dist-pkg/platform/speech.d.ts +23 -1
  209. package/dist-pkg/platform/speech.js +29 -18
  210. package/dist-pkg/platform/storage-keys.d.ts +96 -0
  211. package/dist-pkg/platform/storage-keys.js +106 -0
  212. package/dist-pkg/platform/storage.d.ts +46 -111
  213. package/dist-pkg/platform/storage.js +104 -169
  214. package/dist-pkg/platform/tts.d.ts +85 -39
  215. package/dist-pkg/platform/tts.js +447 -127
  216. package/dist-pkg/platform/vision-loop.d.ts +23 -0
  217. package/dist-pkg/platform/vision-loop.js +56 -0
  218. package/dist-pkg/platform/vision.d.ts +132 -0
  219. package/dist-pkg/platform/vision.js +117 -0
  220. package/dist-pkg/platform/voice-listener.d.ts +40 -0
  221. package/dist-pkg/platform/voice-listener.js +88 -0
  222. package/dist-pkg/platform/voice-plan.d.ts +15 -98
  223. package/dist-pkg/platform/voice-plan.js +56 -143
  224. package/dist-pkg/platform/vosk-runtime.d.ts +96 -0
  225. package/dist-pkg/platform/vosk-runtime.js +151 -0
  226. package/dist-pkg/platform/vosk-vocabulary.d.ts +6 -0
  227. package/dist-pkg/platform/vosk-vocabulary.js +178 -0
  228. package/dist-pkg/render/canvas.d.ts +13 -7
  229. package/dist-pkg/render/canvas.js +13 -13
  230. package/dist-pkg/render/crt.d.ts +48 -12
  231. package/dist-pkg/render/crt.js +78 -80
  232. package/dist-pkg/render/cvd-matrices.d.ts +22 -18
  233. package/dist-pkg/render/cvd-matrices.js +37 -38
  234. package/dist-pkg/render/hc-role-data.d.ts +7 -7
  235. package/dist-pkg/render/hc-role-data.js +14 -14
  236. package/dist-pkg/render/high-contrast.d.ts +67 -56
  237. package/dist-pkg/render/high-contrast.js +226 -217
  238. package/dist-pkg/render/low-vision-drawing.d.ts +5 -0
  239. package/dist-pkg/render/low-vision-drawing.js +46 -0
  240. package/dist-pkg/render/lq-filter.d.ts +32 -20
  241. package/dist-pkg/render/lq-filter.js +59 -65
  242. package/dist-pkg/render/port.d.ts +86 -88
  243. package/dist-pkg/render/port.js +17 -23
  244. package/dist-pkg/render/screen-pipeline.d.ts +42 -42
  245. package/dist-pkg/render/screen-pipeline.js +80 -87
  246. package/dist-pkg/render/sprite-fx.d.ts +2 -1
  247. package/dist-pkg/render/sprite-fx.js +16 -14
  248. package/dist-pkg/render/viewports.d.ts +20 -15
  249. package/dist-pkg/render/viewports.js +83 -114
  250. package/dist-pkg/render/viz-axes-labels.d.ts +47 -0
  251. package/dist-pkg/render/viz-axes-labels.js +88 -0
  252. package/dist-pkg/render/viz-axes.d.ts +89 -86
  253. package/dist-pkg/render/viz-axes.js +128 -116
  254. package/dist-pkg/render/viz-modes.d.ts +28 -29
  255. package/dist-pkg/render/viz-modes.js +40 -45
  256. package/dist-pkg/render/viz-refusal.d.ts +32 -0
  257. package/dist-pkg/render/viz-refusal.js +57 -0
  258. package/dist-pkg/render/viz-setters.d.ts +104 -66
  259. package/dist-pkg/render/viz-setters.js +182 -191
  260. package/dist-pkg/ui/aac-sets.d.ts +45 -0
  261. package/dist-pkg/ui/aac-sets.js +41 -0
  262. package/dist-pkg/ui/audio-choices.d.ts +68 -0
  263. package/dist-pkg/ui/audio-choices.js +98 -0
  264. package/dist-pkg/ui/audio-rows-that-apply.d.ts +12 -0
  265. package/dist-pkg/ui/audio-rows-that-apply.js +43 -0
  266. package/dist-pkg/ui/camera-control.d.ts +53 -0
  267. package/dist-pkg/ui/camera-control.js +48 -0
  268. package/dist-pkg/ui/changed-mark.d.ts +9 -8
  269. package/dist-pkg/ui/changed-mark.js +22 -53
  270. package/dist-pkg/ui/control-choices.d.ts +37 -0
  271. package/dist-pkg/ui/control-choices.js +84 -0
  272. package/dist-pkg/ui/debug-panel.d.ts +59 -43
  273. package/dist-pkg/ui/debug-panel.js +68 -69
  274. package/dist-pkg/ui/declared-words.d.ts +21 -0
  275. package/dist-pkg/ui/declared-words.js +66 -0
  276. package/dist-pkg/ui/dom.d.ts +10 -14
  277. package/dist-pkg/ui/dom.js +10 -47
  278. package/dist-pkg/ui/drawing-problems.d.ts +25 -0
  279. package/dist-pkg/ui/drawing-problems.js +94 -0
  280. package/dist-pkg/ui/eye-control.d.ts +36 -0
  281. package/dist-pkg/ui/eye-control.js +178 -0
  282. package/dist-pkg/ui/face-control.d.ts +25 -0
  283. package/dist-pkg/ui/face-control.js +183 -0
  284. package/dist-pkg/ui/focus-trap.d.ts +39 -49
  285. package/dist-pkg/ui/focus-trap.js +56 -65
  286. package/dist-pkg/ui/fonts.d.ts +157 -68
  287. package/dist-pkg/ui/fonts.js +305 -115
  288. package/dist-pkg/ui/footer-scroll-driver.d.ts +14 -0
  289. package/dist-pkg/ui/footer-scroll-driver.js +201 -0
  290. package/dist-pkg/ui/footer-scroll.d.ts +38 -0
  291. package/dist-pkg/ui/footer-scroll.js +55 -0
  292. package/dist-pkg/ui/game-options.d.ts +47 -0
  293. package/dist-pkg/ui/game-options.js +158 -0
  294. package/dist-pkg/ui/gaze-overlay.d.ts +64 -0
  295. package/dist-pkg/ui/gaze-overlay.js +165 -0
  296. package/dist-pkg/ui/hand-control.d.ts +25 -0
  297. package/dist-pkg/ui/hand-control.js +143 -0
  298. package/dist-pkg/ui/help-panel.d.ts +87 -0
  299. package/dist-pkg/ui/help-panel.js +242 -0
  300. package/dist-pkg/ui/hud-bands.d.ts +62 -0
  301. package/dist-pkg/ui/hud-bands.js +146 -0
  302. package/dist-pkg/ui/hud-row.d.ts +34 -0
  303. package/dist-pkg/ui/hud-row.js +80 -0
  304. package/dist-pkg/ui/hud.d.ts +73 -73
  305. package/dist-pkg/ui/hud.js +94 -98
  306. package/dist-pkg/ui/item-announcement.d.ts +13 -12
  307. package/dist-pkg/ui/item-announcement.js +25 -26
  308. package/dist-pkg/ui/layout.d.ts +103 -28
  309. package/dist-pkg/ui/layout.js +117 -99
  310. package/dist-pkg/ui/libras-avatar-clip.d.ts +30 -0
  311. package/dist-pkg/ui/libras-avatar-clip.js +86 -0
  312. package/dist-pkg/ui/libras-avatar-load.d.ts +52 -0
  313. package/dist-pkg/ui/libras-avatar-load.js +134 -0
  314. package/dist-pkg/ui/libras-avatar-plan.d.ts +102 -0
  315. package/dist-pkg/ui/libras-avatar-plan.js +211 -0
  316. package/dist-pkg/ui/libras-avatar-player.d.ts +28 -0
  317. package/dist-pkg/ui/libras-avatar-player.js +226 -0
  318. package/dist-pkg/ui/libras-avatar-stage.d.ts +37 -0
  319. package/dist-pkg/ui/libras-avatar-stage.js +208 -0
  320. package/dist-pkg/ui/libras-glosses.d.ts +28 -0
  321. package/dist-pkg/ui/libras-glosses.js +161 -0
  322. package/dist-pkg/ui/locale-flags.d.ts +16 -0
  323. package/dist-pkg/ui/locale-flags.js +30 -0
  324. package/dist-pkg/ui/loop-crash.d.ts +17 -17
  325. package/dist-pkg/ui/loop-crash.js +33 -62
  326. package/dist-pkg/ui/menu-intent.d.ts +61 -0
  327. package/dist-pkg/ui/menu-intent.js +88 -0
  328. package/dist-pkg/ui/menu-items.d.ts +20 -0
  329. package/dist-pkg/ui/menu-items.js +51 -0
  330. package/dist-pkg/ui/menu-nav.d.ts +98 -92
  331. package/dist-pkg/ui/menu-nav.js +398 -286
  332. package/dist-pkg/ui/mobility-choices.d.ts +26 -0
  333. package/dist-pkg/ui/mobility-choices.js +41 -0
  334. package/dist-pkg/ui/motion-choices.d.ts +31 -0
  335. package/dist-pkg/ui/motion-choices.js +68 -0
  336. package/dist-pkg/ui/motion-scene.d.ts +24 -19
  337. package/dist-pkg/ui/motion-scene.js +29 -61
  338. package/dist-pkg/ui/mount-panel.d.ts +81 -0
  339. package/dist-pkg/ui/mount-panel.js +61 -0
  340. package/dist-pkg/ui/panel-shell.d.ts +65 -31
  341. package/dist-pkg/ui/panel-shell.js +92 -66
  342. package/dist-pkg/ui/panel-widgets.d.ts +150 -0
  343. package/dist-pkg/ui/panel-widgets.js +294 -0
  344. package/dist-pkg/ui/pause-buttons.d.ts +35 -0
  345. package/dist-pkg/ui/pause-buttons.js +66 -0
  346. package/dist-pkg/ui/pause-icons.d.ts +261 -347
  347. package/dist-pkg/ui/pause-icons.js +671 -601
  348. package/dist-pkg/ui/pause-markup.d.ts +86 -0
  349. package/dist-pkg/ui/pause-markup.js +125 -0
  350. package/dist-pkg/ui/reach-notice.d.ts +22 -23
  351. package/dist-pkg/ui/reach-notice.js +55 -58
  352. package/dist-pkg/ui/scan-overlay.d.ts +23 -0
  353. package/dist-pkg/ui/scan-overlay.js +50 -0
  354. package/dist-pkg/ui/screen-text.d.ts +25 -0
  355. package/dist-pkg/ui/screen-text.js +152 -0
  356. package/dist-pkg/ui/session-clock.d.ts +32 -0
  357. package/dist-pkg/ui/session-clock.js +67 -0
  358. package/dist-pkg/ui/settings-aac.d.ts +70 -0
  359. package/dist-pkg/ui/settings-aac.js +208 -0
  360. package/dist-pkg/ui/settings-audio.d.ts +97 -114
  361. package/dist-pkg/ui/settings-audio.js +493 -425
  362. package/dist-pkg/ui/settings-controls.d.ts +53 -96
  363. package/dist-pkg/ui/settings-controls.js +143 -215
  364. package/dist-pkg/ui/settings-empathy.d.ts +39 -30
  365. package/dist-pkg/ui/settings-empathy.js +53 -60
  366. package/dist-pkg/ui/settings-mobility.d.ts +192 -0
  367. package/dist-pkg/ui/settings-mobility.js +332 -0
  368. package/dist-pkg/ui/settings-motion.d.ts +91 -70
  369. package/dist-pkg/ui/settings-motion.js +287 -198
  370. package/dist-pkg/ui/settings-panel.d.ts +58 -45
  371. package/dist-pkg/ui/settings-panel.js +189 -94
  372. package/dist-pkg/ui/settings-typo.d.ts +29 -78
  373. package/dist-pkg/ui/settings-typo.js +158 -129
  374. package/dist-pkg/ui/settings-visual.d.ts +29 -87
  375. package/dist-pkg/ui/settings-visual.js +240 -193
  376. package/dist-pkg/ui/shell.d.ts +112 -135
  377. package/dist-pkg/ui/shell.js +148 -217
  378. package/dist-pkg/ui/simulation-list.d.ts +27 -0
  379. package/dist-pkg/ui/simulation-list.js +76 -0
  380. package/dist-pkg/ui/simulation-over-the-world.d.ts +23 -0
  381. package/dist-pkg/ui/simulation-over-the-world.js +131 -0
  382. package/dist-pkg/ui/simulation-refusal.d.ts +5 -31
  383. package/dist-pkg/ui/simulation-refusal.js +8 -56
  384. package/dist-pkg/ui/switchable-control.d.ts +11 -0
  385. package/dist-pkg/ui/switchable-control.js +19 -0
  386. package/dist-pkg/ui/title.d.ts +3 -12
  387. package/dist-pkg/ui/title.js +49 -18
  388. package/dist-pkg/ui/top-band.d.ts +26 -0
  389. package/dist-pkg/ui/top-band.js +96 -0
  390. package/dist-pkg/ui/typo-choices.d.ts +71 -0
  391. package/dist-pkg/ui/typo-choices.js +85 -0
  392. package/dist-pkg/ui/visual-axes-panel.d.ts +11 -47
  393. package/dist-pkg/ui/visual-axes-panel.js +12 -94
  394. package/dist-pkg/ui/visual-choices.d.ts +77 -0
  395. package/dist-pkg/ui/visual-choices.js +107 -0
  396. package/dist-pkg/ui/vlibras.d.ts +77 -10
  397. package/dist-pkg/ui/vlibras.js +130 -81
  398. package/dist-pkg/ui/voice-control.d.ts +68 -0
  399. package/dist-pkg/ui/voice-control.js +276 -0
  400. package/dist-pkg/ui/voice-settings.d.ts +95 -0
  401. package/dist-pkg/ui/voice-settings.js +352 -0
  402. package/dist-pkg/ui/where-the-child-is.d.ts +31 -0
  403. package/dist-pkg/ui/where-the-child-is.js +70 -0
  404. package/docs/CREDITS.md +300 -44
  405. package/docs/LICENSES.md +189 -145
  406. package/package.json +51 -27
  407. package/scripts/check-cartridge.mjs +78 -0
  408. package/scripts/game-build.d.mts +25 -0
  409. package/scripts/game-build.mjs +144 -0
  410. package/scripts/heavy-into-the-delivery.mjs +388 -0
  411. package/scripts/libras-avatar.json +680 -0
  412. package/scripts/libras-avatar.mjs +246 -0
  413. package/scripts/libras-glosses/gloss.py +95 -0
  414. package/scripts/libras-glosses/pyproject.toml +32 -0
  415. package/scripts/libras-glosses/uv.lock +781 -0
  416. package/scripts/libras-glosses.mjs +351 -0
  417. package/scripts/licences/Apache-2.0.txt +176 -0
  418. package/scripts/licences/GPL-3.0.txt +674 -0
  419. package/scripts/licences/MIT.txt +17 -0
  420. package/scripts/licences/OFL-1.1.txt +86 -0
  421. package/scripts/licences/UFL-1.0.txt +96 -0
  422. package/scripts/licences/fonts.mjs +389 -0
  423. package/scripts/licences/third-party.mjs +301 -0
  424. package/scripts/licences/vosk-browser.NOTICE.txt +268 -0
  425. package/app/public/vendor/fonts/comicneue-400.woff2 +0 -0
  426. package/app/public/vendor/fonts/comicneue-700.woff2 +0 -0
  427. package/app/public/vendor/fonts/fondamento-400-ext.woff2 +0 -0
  428. package/app/public/vendor/fonts/fondamento-400.woff2 +0 -0
  429. package/app/public/vendor/fonts/inter-400.woff2 +0 -0
  430. package/app/public/vendor/fonts/inter-700.woff2 +0 -0
  431. package/app/public/vendor/fonts/lato-400.woff2 +0 -0
  432. package/app/public/vendor/fonts/lato-700.woff2 +0 -0
  433. package/app/public/vendor/fonts/literata-400.woff2 +0 -0
  434. package/app/public/vendor/fonts/literata-700.woff2 +0 -0
  435. package/app/public/vendor/fonts/newsreader-400.woff2 +0 -0
  436. package/app/public/vendor/fonts/newsreader-700.woff2 +0 -0
  437. package/app/public/vendor/fonts/opendyslexic-400.woff2 +0 -0
  438. package/app/public/vendor/fonts/opensans-400.woff2 +0 -0
  439. package/app/public/vendor/fonts/opensans-700.woff2 +0 -0
  440. package/app/public/vendor/fonts/pinyon-400.woff2 +0 -0
  441. package/app/public/vendor/fonts/pressstart-400.woff2 +0 -0
  442. package/app/public/vendor/fonts/quattro-400.woff2 +0 -0
  443. package/app/public/vendor/fonts/quattro-700.woff2 +0 -0
  444. package/app/public/vendor/fonts/sourcesans-400.woff2 +0 -0
  445. package/app/public/vendor/fonts/sourcesans-700.woff2 +0 -0
  446. package/app/public/vendor/fonts/sourceserif-400.woff2 +0 -0
  447. package/app/public/vendor/fonts/sourceserif-700.woff2 +0 -0
  448. package/app/public/vendor/fonts/ufmag-400.woff2 +0 -0
  449. package/dist-pkg/core/anel.d.ts +0 -17
  450. package/dist-pkg/core/anel.js +0 -31
  451. package/dist-pkg/core/collision.d.ts +0 -21
  452. package/dist-pkg/core/collision.js +0 -62
  453. package/dist-pkg/core/layers.d.ts +0 -63
  454. package/dist-pkg/core/layers.js +0 -95
  455. package/dist-pkg/core/letter-grid.d.ts +0 -55
  456. package/dist-pkg/core/letter-grid.js +0 -116
  457. package/dist-pkg/core/password.d.ts +0 -34
  458. package/dist-pkg/core/password.js +0 -205
  459. package/dist-pkg/core/rotulo-acessivel.d.ts +0 -17
  460. package/dist-pkg/core/rotulo-acessivel.js +0 -41
  461. package/dist-pkg/core/run-state.d.ts +0 -115
  462. package/dist-pkg/core/run-state.js +0 -40
  463. package/dist-pkg/core/tiles.d.ts +0 -12
  464. package/dist-pkg/core/tiles.js +0 -61
  465. package/dist-pkg/core/world.d.ts +0 -4
  466. package/dist-pkg/core/world.js +0 -58
  467. package/dist-pkg/input/origem-sintetica.d.ts +0 -44
  468. package/dist-pkg/input/origem-sintetica.js +0 -60
  469. package/dist-pkg/input/transporte-em-uso.d.ts +0 -101
  470. package/dist-pkg/input/transporte-em-uso.js +0 -130
  471. package/dist-pkg/platform/audio-nav.d.ts +0 -51
  472. package/dist-pkg/platform/audio-nav.js +0 -99
  473. package/dist-pkg/platform/guide-intensity.d.ts +0 -40
  474. package/dist-pkg/platform/guide-intensity.js +0 -73
  475. package/dist-pkg/platform/pesados-catalogo.d.ts +0 -14
  476. package/dist-pkg/platform/pesados-catalogo.js +0 -177
  477. package/dist-pkg/platform/pesados.d.ts +0 -31
  478. package/dist-pkg/platform/pesados.js +0 -75
  479. package/dist-pkg/platform/vozes-prontas.d.ts +0 -28
  480. package/dist-pkg/platform/vozes-prontas.js +0 -61
  481. package/dist-pkg/render/camera.d.ts +0 -58
  482. package/dist-pkg/render/camera.js +0 -105
  483. package/dist-pkg/render/cenario-data.d.ts +0 -127
  484. package/dist-pkg/render/cenario-data.js +0 -145
  485. package/dist-pkg/render/city-tex.d.ts +0 -63
  486. package/dist-pkg/render/city-tex.js +0 -228
  487. package/dist-pkg/render/city-tiles.d.ts +0 -11
  488. package/dist-pkg/render/city-tiles.js +0 -140
  489. package/dist-pkg/render/draw.d.ts +0 -149
  490. package/dist-pkg/render/draw.js +0 -231
  491. package/dist-pkg/render/fx.d.ts +0 -63
  492. package/dist-pkg/render/fx.js +0 -123
  493. package/dist-pkg/render/minimap.d.ts +0 -11
  494. package/dist-pkg/render/minimap.js +0 -94
  495. package/dist-pkg/render/parallax.d.ts +0 -85
  496. package/dist-pkg/render/parallax.js +0 -158
  497. package/dist-pkg/render/player-anim.d.ts +0 -71
  498. package/dist-pkg/render/player-anim.js +0 -152
  499. package/dist-pkg/render/recycling-tex.d.ts +0 -48
  500. package/dist-pkg/render/recycling-tex.js +0 -164
  501. package/dist-pkg/render/scene-city.d.ts +0 -77
  502. package/dist-pkg/render/scene-city.js +0 -181
  503. package/dist-pkg/render/scene-parallax.d.ts +0 -72
  504. package/dist-pkg/render/scene-parallax.js +0 -426
  505. package/dist-pkg/render/scene-sky.d.ts +0 -126
  506. package/dist-pkg/render/scene-sky.js +0 -295
  507. package/dist-pkg/render/set-cenario.d.ts +0 -54
  508. package/dist-pkg/render/set-cenario.js +0 -103
  509. package/dist-pkg/render/textures.d.ts +0 -75
  510. package/dist-pkg/render/textures.js +0 -240
  511. package/dist-pkg/render/title-scene.d.ts +0 -46
  512. package/dist-pkg/render/title-scene.js +0 -75
  513. package/dist-pkg/render/weather.d.ts +0 -96
  514. package/dist-pkg/render/weather.js +0 -171
  515. package/dist-pkg/render/wheelchair-sprites.d.ts +0 -32
  516. package/dist-pkg/render/wheelchair-sprites.js +0 -69
  517. package/dist-pkg/render/world-tex.d.ts +0 -18
  518. package/dist-pkg/render/world-tex.js +0 -87
  519. package/dist-pkg/ui/activities-menu.d.ts +0 -258
  520. package/dist-pkg/ui/activities-menu.js +0 -648
  521. package/dist-pkg/ui/caa-sets.d.ts +0 -39
  522. package/dist-pkg/ui/caa-sets.js +0 -65
  523. package/dist-pkg/ui/latch-refusal.d.ts +0 -32
  524. package/dist-pkg/ui/latch-refusal.js +0 -60
  525. package/dist-pkg/ui/map-hub.d.ts +0 -56
  526. package/dist-pkg/ui/map-hub.js +0 -138
  527. package/dist-pkg/ui/settings-caa.d.ts +0 -45
  528. package/dist-pkg/ui/settings-caa.js +0 -137
  529. package/dist-pkg/ui/settings-motor.d.ts +0 -175
  530. package/dist-pkg/ui/settings-motor.js +0 -342
  531. package/dist-pkg/ui/webcam.d.ts +0 -7
  532. package/dist-pkg/ui/webcam.js +0 -93
@@ -1,114 +1,92 @@
1
1
  // SPDX-License-Identifier: AGPL-3.0-or-later
2
+ import type { Translate } from '../core/i18n.js';
2
3
  import type { DomQuery } from '../core/dom-query.js';
3
- import type { PadMap } from '../input/gamepad.js';
4
- import type { FatosDaCena } from '../core/scenes.js';
5
- /** ui/dom.ts `$` — injetado para o teste node poder passar um DOM falso. */
6
- export type { DomQuery } from '../core/dom-query.js';
7
- /** O subconjunto de `Window` que `printMode` usa (add/remove de ouvinte em CAPTURA + o adiamento de 80ms). */
4
+ import type { PadMap } from '../input/pad-reading.js';
5
+ import type { SceneFacts } from '../core/scenes.js';
6
+ /** The part of `Window` that `printMode` uses (adding and removing a listener in CAPTURE, and the 80 ms delay). */
8
7
  export interface ShellWindow {
9
8
  addEventListener(type: string, fn: (e: Event) => void, capture: boolean): void;
10
9
  removeEventListener(type: string, fn: (e: Event) => void, capture: boolean): void;
11
10
  setTimeout(fn: () => void, ms: number): unknown;
12
11
  }
13
- /** Uma tela de pausa (`.screen-pause`) — só o que a casca toca. */
12
+ /** A pause screen (`.screen-pause`) — only what the shell touches. */
14
13
  export interface PauseScreen {
15
14
  hidden: boolean;
16
15
  querySelectorAll<T extends Element = Element>(sel: string): ArrayLike<T> & Iterable<T>;
17
16
  }
18
- /** Um gamepad, do jeito mínimo que a legenda do título lê. */
17
+ /** A gamepad, as little of it as the title legend reads. */
19
18
  interface PadLike {
20
19
  index: number;
21
20
  id: string;
22
21
  mapping: string;
23
22
  }
24
- /** Para onde o foco vai ao ENTRAR na fase. `null` = ninguém foca nada (não existe hoje; é o default seguro). */
23
+ /** Where the focus goes on ENTERING a scene. */
25
24
  export type PhaseFocus = 'game-region' | 'pause-menu' | 'title-button';
26
25
  /**
27
- * O que a fase `p` manda o documento fazer. É a sequência de `if`s do `setPhase` original lida como o que ela
28
- * sempre foi: uma projeção da fase. Nenhum campo depende de histórico — o único que dependeria
29
- * (`#touch-controls`) mora em `touchControlsPlan`, separado de propósito.
26
+ * What the scene on top asks of the document — a projection of the scene facts, with no field depending on history (the
27
+ * one that would, `#touch-controls`, lives in `touchControlsPlan`, apart on purpose).
30
28
  */
31
- export type { FatosDaCena } from '../core/scenes.js';
32
29
  export interface PhaseView {
33
- /** `#title-overlay`.hidden — o splash só aparece no título. */
30
+ /** `#title-overlay`.hidden — the splash only shows on the title. */
34
31
  titleOverlayHidden: boolean;
35
32
  /**
36
- * ⚠️ `pauseOverlayHidden` SAIU EM 2026-09-08, e a ausência é a notícia.
37
- *
38
- * Ele era `true` em toda fase, e existia porque a Etapa 2 aposentou a pausa GLOBAL sem apagar o elemento: a
39
- * casca continuava a procurá-lo e a escondê-lo a cada troca de fase, com dois gates a afirmar que ele ficava
40
- * escondido. Código a segurar um cadáver.
41
- *
42
- * E o cadáver custava mais do que as linhas: aquelas quarenta linhas de `#pause-overlay` no `index.html` do
43
- * cartucho eram o menu de pausa com aspecto mais OFICIAL do repositório — o que o próximo autor de cartucho
44
- * copia junto com o ficheiro —, e já tinham derivado do que a engine gera (dois itens «Comunicação», e um
45
- * `#opt-letra` que hoje sai do `dynLabel`). Um campo que diz «está escondido» aceita que ele exista; não o
46
- * ter diz que ele não existe.
33
+ * There is no global pause overlay to hide: each screen has its own pause card (below). A field saying «it is hidden»
34
+ * would accept that one exists — and a leftover global menu in a page is the one the next game author would copy.
47
35
  */
48
- /** `.screen-pause`.hidden de CADA tela — os menus por tela só aparecem na pausa. */
36
+ /** `.screen-pause`.hidden of EACH screen — the per-screen cards only show while paused. */
49
37
  screenPauseHidden: boolean;
50
- /** `setMasterMuted(...)` — GAG: fora de 'playing' TODO o som cala (loops de ambiente/chuva inclusive). */
38
+ /** `setMasterMuted(...)` — GAG: outside play ALL sound goes quiet (ambient and rain loops included). */
51
39
  masterMuted: boolean;
52
- /** `hideTouchControls()` — menu ativo (título/pausa) = sem controle virtual. */
40
+ /** `hideTouchControls()` — an active menu (title or pause) = no virtual controller. */
53
41
  hideTouchControls: boolean;
54
42
  /**
55
- * `aria-pressed` do botão de pausa — ele diz ao leitor de tela SE está pausado.
56
- *
57
- * O alvo era `#btn-pause`, e esse id NUNCA existiu no documento: o botão saiu da barra e a fiação ficou
58
- * "guardada p/ compat". A linha que escrevia o atributo era morta, e o teste do navegador não pegava porque
59
- * o FIXTURE inventava o elemento — um caso que provava que o código escreve num botão que só o teste tem.
60
- *
61
- * O alvo agora é `#touch-start`, que é o botão que existe, o que o Dev clica e o ÚNICO caminho de pausa num
62
- * tablet (não há teclado no Positivo da issue #8).
43
+ * The pause button's `aria-pressed` — it tells a screen reader WHETHER the game is paused. The target is
44
+ * `#touch-start`, the pad's START: the button that exists, and the only way to pause on a tablet without a keyboard.
63
45
  */
64
46
  pausePressed: boolean;
65
- /** Quem recebe o foco ao entrar nesta fase. */
47
+ /** Who receives the focus on entering this scene. */
66
48
  focus: PhaseFocus;
67
49
  }
68
- /** Verbatim das nove perguntas que o `setPhase` do game.js fazia à fase, agora feitas de uma vez só. */
69
- export declare function phaseView(f: FatosDaCena): PhaseView;
70
- /** O estado de `#touch-controls` que interessa: escondido? e havia controle ligado antes da pausa? */
50
+ /** Every question the scene change asks of the scene, asked at once. */
51
+ export declare function phaseView(f: SceneFacts): PhaseView;
52
+ /** The part of `#touch-controls` that matters: hidden? and was the pad on before the pause? */
71
53
  export interface TouchControlsState {
72
54
  /** `tc.hidden`. */
73
55
  hidden: boolean;
74
- /** `tc.dataset.wasOn === '1'`. Ausente/qualquer outro valor = false, como no original. */
56
+ /** `tc.dataset.wasOn === '1'`. Absent or any other value = false. */
75
57
  wasOn: boolean;
76
58
  }
77
59
  /**
78
- * O ÚNICO pedaço de `setPhase` com memória: esconder os controles de toque ao pausar (guardando que estavam
79
- * ligados) e devolvê-los ao retomar. Pura, e por isso pinável sem navegador.
60
+ * The ONE part of a scene change with memory: hide the touch controls on pause (recording that they were on) and give them
61
+ * back on resume. Pure, so it can be pinned without a browser.
80
62
  *
81
- * O estado que chega aqui é o de ANTES de `hideTouchControls()` — quem chama lê primeiro e esconde depois.
82
- * Já foi o contrário, e o efeito era que `wasOn` nunca era gravado (o plano via o pad como se já estivesse
83
- * desligado): pausar no celular sumia com o direcional virtual e retomar não o devolvia.
63
+ * The state that arrives here is the one from BEFORE `hideTouchControls()` — the caller reads first and hides after.
64
+ * The other order never records `wasOn` (the plan sees the pad already off), and resuming on a phone would not give the
65
+ * virtual d-pad back.
84
66
  */
85
- export declare function touchControlsPlan(f: FatosDaCena, st: TouchControlsState, screens: number): TouchControlsState;
86
- /** Um "chip" da legenda: o glifo (com cor de fundo opcional) seguido da palavra que ele significa. */
67
+ export declare function touchControlsPlan(f: SceneFacts, st: TouchControlsState, screens: number): TouchControlsState;
68
+ /** One legend «chip»: the glyph (with an optional background colour) followed by the word it stands for. */
87
69
  export declare function chip(txt: string, col: string | null, word?: string): string;
88
70
  /**
89
- * O nome FALADO de um glifo de controle. Glifo que já se lê passa intocado.
71
+ * The SPOKEN name of a controller glyph. A glyph that already reads as a word passes untouched.
90
72
  *
91
- * Ver `PAD_GLYPH_SPOKEN` em `input/devices`: a tabela guarda CHAVES e não texto, porque ela é uma `const` de
92
- * módulo avaliada uma vez no import — texto já resolvido congelaria o idioma no boot. Quem resolve é aqui, a
93
- * cada chamada, com o idioma vigente naquele instante.
73
+ * `PAD_GLYPH_SPOKEN` in `input/devices` holds KEYS, not text, because it is a module `const` evaluated once on import —
74
+ * resolved text would freeze the language at boot. It is resolved here, on each call, in the language of that moment.
94
75
  */
95
- export declare function glifoFalado(g: string): string;
76
+ export declare function spokenGlyph(t: Translate, g: string): string;
96
77
  /**
97
- * A LEGENDA DA PAUSA — duas camadas no mesmo lugar (ADR-0044, item 4).
98
- *
99
- * Ela dizia qual botão confirma e qual volta, e carregava `aria-hidden="true"` — ou seja, era invisível
100
- * justamente para quem não pode ver o glifo. A XAG 106 manda narrar exatamente isto ("A to Select").
78
+ * THE PAUSE LEGEND — two layers in the same place (ADR-0044 item 4).
101
79
  *
102
- * Mas só tirar o atributo devolveria o ruído que provavelmente o motivou: um leitor de tela lê `✕` como
103
- * "sinal de multiplicação". Então os CHIPS ficam visíveis e mudos, e ao lado nasce UMA frase só para leitor
104
- * de tela, com os glifos já traduzidos em palavra. Duas leituras da mesma informação, cada uma no sentido
105
- * que a alcança.
80
+ * It says which button confirms and which goes back, and XAG 106 asks for exactly this to be narrated ("A to Select").
81
+ * The CHIPS stay visible and silent — a screen reader would read `✕` as a multiplication sign — and beside them a single
82
+ * sentence exists for screen readers only, with the glyphs already turned into words. Two readings of the same
83
+ * information, each in the sense that reaches it.
106
84
  *
107
- * Recebe os pares `[glifo, cor]` que `simNaoGlyphs` escolhe a partir do desenho do controle — a inversão
108
- * PlayStation/Nintendo (onde "sim" é o botão 1) já vem decidida de lá.
85
+ * Takes the `[glyph, colour]` pairs of the pad's design by position: yes is the south button (A · ✕ · B) and no the east one
86
+ * (B · ◯ · A) on every design — no design swaps them (the Dev's association, ADR-0013 erratum).
109
87
  */
110
- export declare function pauseLegendHtml(sim: readonly [string, string], nao: readonly [string, string]): string;
111
- /** Os quatro botões de ação, na ordem fixa da legenda: pular · especial · correr · trocar. */
88
+ export declare function pauseLegendHtml(t: Translate, sim: readonly [string, string], no: readonly [string, string]): string;
89
+ /** The four action buttons, in the legend's fixed glyph order: action2 · action3 · action1 · action4. */
112
90
  export interface ActionGlyphs {
113
91
  action2: readonly [string, string | null];
114
92
  action3: readonly [string, string | null];
@@ -116,95 +94,93 @@ export interface ActionGlyphs {
116
94
  action4: readonly [string, string | null];
117
95
  }
118
96
  /**
119
- * Linha 1 da legenda: direcional + START/Enter. Igual para toque e gamepad; o teclado sobrescreve os rótulos.
97
+ * Legend row 1: the d-pad and START/Enter. The same for touch and gamepad; the keyboard overrides the labels.
120
98
  *
121
- * As palavras vêm de `legend.*` e são resolvidas AQUI, a cada chamada — não numa tabela de módulo, que
122
- * congelaria o idioma no boot. Registro CURTO de propósito: esta fileira fica embaixo de um glifo e não tem
123
- * largura para o "Correr / interagir" que a lista de mapeamento usa (ver a nota em pt.ts).
99
+ * The words come from `legend.*` and are resolved HERE, on each call — not in a module table, which would freeze the
100
+ * language at boot. The SHORT register on purpose: this row sits under a glyph and has no room for the longer wording the
101
+ * remapping list uses.
124
102
  */
125
- export declare function legendRow1(dirTxt: string, pauseTxt: string): string;
103
+ export declare function legendRow1(t: Translate, dirTxt: string, pauseTxt: string): string;
126
104
  /**
127
- * Linha 2 da legenda: os botões de ação, na ordem dos glifos.
105
+ * Legend row 2: the action buttons, in glyph order.
128
106
  *
129
- * ⚠️ AS PALAVRAS DEIXARAM DE ESTAR AQUI. Esta função dizia `t('legend.jump')`, `t('legend.run')` — o
130
- * vocabulário da plataforma dentro de um módulo de engine, e a engine a afirmar que todo jogo tem pular,
131
- * especial, correr e trocar, nessa ordem. Agora `rotulo` é perguntado ao jogo (a versão CURTA, ver
132
- * `ActionWord.short`), e uma posição que o jogo não nomeia não vira ficha nenhuma.
107
+ * The words are asked of the GAME (`wordFor`, the SHORT version — see `ActionWord.short`): the engine does not assume
108
+ * every game has jump, special, run and swap. A position the game does not name becomes no chip at all.
133
109
  */
134
- export declare function legendRow2(g: ActionGlyphs, rotulo: (acao: string) => string | null): string;
135
- /** O innerHTML final de `#title-legend`: duas `.lg-row`. */
110
+ export declare function legendRow2(g: ActionGlyphs, wordFor: (action: string) => string | null): string;
111
+ /** The final innerHTML of `#title-legend`: two `.lg-row`. */
136
112
  export declare function legendHtml(l1: string, l2: string): string;
137
113
  /**
138
- * Glifos de um pad FÍSICO. `layout` sai de `padLayoutFromId` (só quando `mapping === 'standard'`; fora do
139
- * padrão é sempre 'generic'), e `custom` é o mapa do assistente (só consultado FORA do padrão). Verbatim:
140
- * um botão sem entrada no mapa custom cai no índice default ('0'..'3'), e um índice que o design não conhece
141
- * vira o par `[índice, '#3a4a6a']` — o cinza de fallback.
114
+ * The glyphs of a PHYSICAL pad. `layout` comes from `padLayoutFromId` (only when `mapping === 'standard'`; off-standard it
115
+ * is always 'generic'), and `custom` is the wizard's map (only consulted OFF the standard). A button with no entry in the
116
+ * custom map falls back to its default index ('0'..'3'), and an index the design does not know becomes the pair
117
+ * `[index, '#3a4a6a']` — the fallback grey.
142
118
  */
143
119
  export declare function padActionGlyphs(layout: string, custom: PadMap | null): ActionGlyphs;
144
- /** Glifos do joystick VIRTUAL (toque): sempre o design 'generic' (0/1/2/3), sem mapa custom. */
120
+ /** The glyphs of the VIRTUAL (touch) pad: always the 'generic' design (0/1/2/3), no custom map. */
145
121
  export declare function touchActionGlyphs(): ActionGlyphs;
146
122
  /**
147
- * Escolhe QUAL gamepad a legenda descreve: o do Jogador 1, se ele tiver um associado (`players[0].pad`);
148
- * senão o primeiro conectado. Verbatim do laço do game.js — inclusive o detalhe de que, com `p1pad >= 0` e
149
- * nenhum pad daquele índice presente, o resultado é `null` (a legenda cai no teclado) em vez de pegar outro.
123
+ * Chooses WHICH gamepad the legend describes: Player 1's, if they have one (`players[0].pad`); otherwise the first one
124
+ * connected. With `p1pad >= 0` and no pad of that index present, the result is `null` (the legend falls back to the
125
+ * keyboard) rather than picking another.
150
126
  */
151
127
  export declare function pickLegendPad(pads: readonly (PadLike | null)[], p1pad: number): PadLike | null;
152
128
  export interface ShellCtx {
153
- /** Os três fatos da cena do TOPO, perguntados a cada uso — a raiz é quem tem a pilha e quem nomeia as
154
- * cenas. Getter, e não valor: a casca projeta o estado ATUAL, não o do momento em que foi ligada. */
155
- fatosDaCena: () => FatosDaCena;
156
- /** VOLTAR AO JOGO. É o que o "Continuar" do menu de pausa faz, e o que a entrada de um jogador novo faz.
157
- * Era `setPhase('playing')` daqui mesmo — mas empilhar é da raiz, e "retomar" é o que a casca quer dizer. */
158
- retomarJogo: () => void;
159
- /** Quantos jogadores/telas. Estado de RODADA (ADR-0038): vem da instância que a raiz possui.
160
- * Era `numPlayers`, um `let` de `core/state` importado como binding vivo — e um `let` de módulo
161
- * é compartilhado por qualquer segundo jogo que a mesma página carregue (D13 do `demos`). */
129
+ /** Translates in the page's language — the root's translator (ADR-0232 D3). REQUIRED: text built from nowhere is a raw key. */
130
+ t: Translate;
131
+ /** The three facts of the scene on TOP, asked on each use — the root holds the stack and names the scenes. A getter,
132
+ * not a value: the shell projects the CURRENT state, not the one of the moment it was wired. */
133
+ sceneFacts: () => SceneFacts;
134
+ /** BACK TO THE GAME. What the pause card's «Continue» does, and what a new player joining does. Resuming is what the
135
+ * shell means; pushing and popping scenes is the root's. */
136
+ resumeGame: () => void;
137
+ /** How many players/screens. ROUND state (ADR-0038): it comes from the instance the host owns — a module-level
138
+ * binding would be shared by a second game on the same page. */
162
139
  getNumPlayers: () => number;
163
- /** Os jogadores. Estado de RODADA, pelo mesmo motivo. `readonly unknown[]` porque cada consumidor
164
- * estreita para a SUA fatia — o tipo real é do jogo, não da engine (ADR-0033). */
140
+ /** The players. ROUND state, for the same reason. `readonly unknown[]` because each consumer narrows to ITS slice —
141
+ * the real type is the game's, not the engine's (ADR-0033). */
165
142
  getPlayers: () => readonly unknown[];
166
- /** ui/dom.ts `$`. Injetado: o módulo nunca alcança `document`. */
143
+ /** ui/dom.ts `$`. Injected: the module never reaches `document`. */
167
144
  $: DomQuery;
168
- /** `window` — só para os dois ouvintes em CAPTURA do modo Print e o adiamento de 80ms. */
145
+ /** `window` — only for Print mode's two CAPTURE listeners and the 80 ms delay. */
169
146
  win: ShellWindow;
170
- /** platform/audio.ts `setMasterMuted` — o nó mestre que cala TUDO na pausa/título (GAG). */
147
+ /** platform/audio.ts `setMasterMuted` — the master node that silences EVERYTHING on pause and title (GAG). */
171
148
  setMasterMuted: (muted: boolean) => void;
172
- /** core/a11y-sr `srSay` (educado) e `srAlert` (assertivo). */
149
+ /** core/a11y-sr `srSay` (polite) and `srAlert` (assertive). */
173
150
  srSay: (msg: string) => void;
174
151
  srAlert: (msg: string) => void;
175
- /** `let vpPause` — `buildGameHud` REATRIBUI a array a cada troca de nº de telas. */
152
+ /** The pause cards, one per screen; the host rebuilds them when the number of screens changes. */
176
153
  getPauseScreens: () => PauseScreen[];
177
- /** `let pauseActor` — quem abriu o menu; os submenus de a11y escopam no jogador dele. */
154
+ /** Who opened the pause card; the accessibility panels open scoped to that player. */
178
155
  getPauseActor: () => number;
179
- /** input/touch.ts via o envelope içado do game.js: some com o direcional virtual. */
156
+ /** input/touch.ts: hides the virtual d-pad. */
180
157
  hideTouchControls: () => void;
181
- /** ui/pause-icons.ts: reflete os `.pi-btn` de todas as telas (estado de a11y). */
158
+ /** ui/pause-icons.ts: reflects the `.pi-btn` of every screen (accessibility state). */
182
159
  reflectPauseIcons: () => void;
183
- /** Adaptador da Gamepad API — mesmo padrão de input/gamepad.ts (é o que a torna testável sem navegador). */
160
+ /** Gamepad API adapter — the same pattern as input/gamepad.ts (it is what makes it testable without a browser). */
184
161
  getGamepads: () => readonly (PadLike | null)[];
185
- /** `document.body.classList.contains('touch-mode')` — injetado para não alcançar `document`. */
162
+ /** `document.body.classList.contains('touch-mode')` — injected so as not to reach `document`. */
186
163
  isTouchMode: () => boolean;
187
- /** input/touch.ts `padLayoutFromId` — id do controle → design de botões. */
164
+ /** input/touch.ts `padLayoutFromId` — controller id → button design. */
188
165
  padLayoutFromId: (id: string) => string;
189
- /** input/gamepad.ts `padMapFor` — mapa do assistente para aquele modelo (só usado FORA do padrão). */
190
- /** O mapa do controle. `PadMap` vem de `input/gamepad`, que é dono dele — a versão escrita aqui,
191
- * `Record<string, { b?: number }>`, era uma aproximação: perdia o `boolean` que o mapa admite. */
166
+ /** The wizard's map for that controller model (only used OFF the standard). `PadMap` comes from `input/pad-reading`,
167
+ * which owns it, including the `boolean` the map admits. */
192
168
  padMapFor: (id: string) => PadMap | null;
193
- /** input/keyboard-runtime.ts `kbFor(i)` — as teclas CONFIGURADAS do jogador `i` (remap respeitado). */
169
+ /** input/keyboard-runtime.ts `kbFor(i)` — player `i`'s CONFIGURED keys (the remap honoured). */
194
170
  kbFor: (i: number) => Record<string, string[]>;
195
- /** ui/settings-controls.ts `keyName` — `KeyboardEvent.code` → rótulo humano. */
171
+ /** ui/control-choices `keyName` — `KeyboardEvent.code` → a human label. */
196
172
  keyName: (code: string) => string;
197
173
  /**
198
- * A palavra CURTA desta posição, na língua do jogo. `null` = o jogo não a usa.
174
+ * The SHORT word for this position, in the game's language. `null` = the game does not use it.
199
175
  *
200
- * ⚠️ Curta e não a longa: a legenda põe a palavra debaixo de um glifo, numa fileira de quatro, e não tem
201
- * largura para o «Correr / interagir» que a lista de remapeamento usa. A distinção já estava no dicionário
202
- * (`legend.*` contra `act.*`) e agora atravessa a fronteira COM as palavras — ver `ActionWord.short`.
176
+ * ⚠️ Short and not the long one: the legend puts the word under a glyph, in a row of four, and has no room for the
177
+ * «Correr / interagir» the remapping list uses. The distinction was already in the dictionary (`legend.*` against
178
+ * `act.*`) and now crosses the boundary WITH the words — see `ActionWord.short`.
203
179
  */
204
- rotuloCurto: (acao: string) => string | null;
205
- /** `setQuizLevel(n, announce)` — o ciclo 1..5 do nível de alfabetização. */
180
+ shortLabel: (action: string) => string | null;
181
+ /** `setQuizLevel(n, announce)` — the 1..5 cycle of the literacy level. */
206
182
  setQuizLevel: (n: number, announce: boolean) => void;
207
- /** `quizLevel` de core/state.ts — lido para calcular o próximo do ciclo. */
183
+ /** The current literacy level — read to compute the next in the cycle. */
208
184
  getQuizLevel: () => number;
209
185
  openTypo: () => void;
210
186
  openAudio: () => void;
@@ -212,38 +188,39 @@ export interface ShellCtx {
212
188
  openVisual: () => void;
213
189
  openHelp: () => void;
214
190
  quitGame: () => void;
215
- /** game/session.ts: cabe mais uma tela nesta janela? */
191
+ /** Does one more screen fit in this window? */
216
192
  fitsN: (n: number) => boolean;
217
- /** game/session.ts: cria/ativa o jogador seguinte; `null` = sem pad associado ainda. */
193
+ /** Creates/activates the next player; `null` = no pad associated yet. */
218
194
  joinPlayer: (padIdx: number | null) => boolean;
219
- /** ui/hud.ts: crachá "aperte um botão para entrar" na tela do jogador novo. */
195
+ /** ui/hud.ts: the «press a button to join» badge on the new player's screen. */
220
196
  showWaitingBadge: (i: number) => void;
221
- /** ui/settings-motor.ts: escopa o painel Movimento no jogador que abriu. */
222
- setMotorPlayer: (i: number) => void;
223
- /** ui/settings-motion.ts `setSelectedPlayer`: idem para o painel Animação. */
197
+ /** ui/settings-mobility.ts: scopes the Mobility panel to the player who opened it. */
198
+ setMobilityPlayer: (i: number) => void;
199
+ /** ui/settings-motion.ts `setSelectedPlayer`: the same for the Motion panel. */
224
200
  setMotionPlayer: (i: number) => void;
225
201
  /** ui/settings-motion.ts `motion.open`. */
226
202
  openMotion: () => void;
227
- /** Abre o menu de Comunicação Aumentada e Alternativa (ui/settings-caa). */
228
- openCaa: () => void;
203
+ /** Opens the Augmentative and Alternative Communication menu (ui/settings-aac). */
204
+ openAac: () => void;
229
205
  /** ui/settings-empathy.ts `empathy.open`. */
230
206
  openEmpathy: () => void;
231
- /** `let selVizPlayer` do game.js — escopa Visual e Empatia no jogador que abriu. */
207
+ /** Scopes Visual and Empathy to the player who opened them. */
232
208
  setSelVizPlayer: (i: number) => void;
233
209
  }
234
- /** A tabela de ações dos `.pm-btn`. Chave = `data-act` do botão (PM_BTNS, de ui/activities-menu.ts). */
210
+ /** The table of the `.pm-btn` actions. Key = the button's `data-act`. */
235
211
  export type PauseActs = Record<string, () => void>;
236
212
  export interface ShellApi {
237
- /** Projeta no documento a cena que está no topo da pilha AGORA. A raiz chama depois de empilhar/desempilhar.
238
- * (Era `setPhase(p)`: a casca gravava o valor E projetava. Empilhar é da raiz — ela é quem nomeia as cenas.) */
239
- aplicarCena: () => void;
240
- /** Põe o 1º `.pm-btn` (Continuar) selecionado em CADA tela de pausa. */
213
+ /** Projects onto the document the scene on top of the stack NOW. The root calls it after pushing or popping: pushing
214
+ * is the root's, since the root names the scenes. */
215
+ applyScene: () => void;
216
+ /** Selects the 1st `.pm-btn` (Continue) on EACH pause screen. */
241
217
  pauseSelect: () => void;
242
- /** Modo Print: esconde as pausas para ver a tela limpa; qualquer tecla/clique as traz de volta. */
218
+ /** Print mode: hides the pause cards to see the screen clean; any key or click brings them back. */
243
219
  printMode: () => void;
244
- /** Repinta `#title-legend` com o dispositivo e o mapeamento vigentes do Jogador 1. */
220
+ /** Repaints `#title-legend` with Player 1's current device and mapping. */
245
221
  updateTitleLegend: () => void;
246
- /** A tabela de ações do menu de pausa — consumida por ui/pause-icons.ts (`getPauseActs`). */
222
+ /** The pause card's action table — read by ui/pause-icons.ts (`getPauseActs`). */
247
223
  pauseActs: PauseActs;
248
224
  }
249
225
  export declare function initShell(ctx: ShellCtx): ShellApi;
226
+ export {};