@pibbl/core 0.0.1

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 (1069) hide show
  1. package/LICENSE.txt +19 -0
  2. package/README.md +76 -0
  3. package/THIRD_PARTY_NOTICES.txt +205 -0
  4. package/dist/features/particles/index.d.ts +7 -0
  5. package/dist/features/particles/index.js +26 -0
  6. package/dist/features/particles/index.js.map +7 -0
  7. package/dist/features/particles/index.mjs +1 -0
  8. package/dist/features/particles/lib/canvas/birth-ledger.d.ts +69 -0
  9. package/dist/features/particles/lib/canvas/birth-ledger.js +752 -0
  10. package/dist/features/particles/lib/canvas/birth-ledger.js.map +7 -0
  11. package/dist/features/particles/lib/canvas/component.d.ts +14 -0
  12. package/dist/features/particles/lib/canvas/component.js +249 -0
  13. package/dist/features/particles/lib/canvas/component.js.map +7 -0
  14. package/dist/features/particles/lib/canvas/executor.d.ts +31 -0
  15. package/dist/features/particles/lib/canvas/executor.js +537 -0
  16. package/dist/features/particles/lib/canvas/executor.js.map +7 -0
  17. package/dist/features/particles/lib/canvas/primitive.d.ts +14 -0
  18. package/dist/features/particles/lib/canvas/primitive.js +50 -0
  19. package/dist/features/particles/lib/canvas/primitive.js.map +7 -0
  20. package/dist/features/particles/lib/canvas/raster-cache.d.ts +13 -0
  21. package/dist/features/particles/lib/canvas/raster-cache.js +106 -0
  22. package/dist/features/particles/lib/canvas/raster-cache.js.map +7 -0
  23. package/dist/features/particles/lib/color.d.ts +7 -0
  24. package/dist/features/particles/lib/color.js +159 -0
  25. package/dist/features/particles/lib/color.js.map +7 -0
  26. package/dist/features/particles/lib/compiler.d.ts +134 -0
  27. package/dist/features/particles/lib/compiler.js +443 -0
  28. package/dist/features/particles/lib/compiler.js.map +7 -0
  29. package/dist/features/particles/lib/curve.d.ts +19 -0
  30. package/dist/features/particles/lib/curve.js +129 -0
  31. package/dist/features/particles/lib/curve.js.map +7 -0
  32. package/dist/features/particles/lib/definition-records.d.ts +58 -0
  33. package/dist/features/particles/lib/definition-records.js +500 -0
  34. package/dist/features/particles/lib/definition-records.js.map +7 -0
  35. package/dist/features/particles/lib/definition.d.ts +18 -0
  36. package/dist/features/particles/lib/definition.js +602 -0
  37. package/dist/features/particles/lib/definition.js.map +7 -0
  38. package/dist/features/particles/lib/emission.d.ts +54 -0
  39. package/dist/features/particles/lib/emission.js +184 -0
  40. package/dist/features/particles/lib/emission.js.map +7 -0
  41. package/dist/features/particles/lib/flow/field.d.ts +81 -0
  42. package/dist/features/particles/lib/flow/field.js +585 -0
  43. package/dist/features/particles/lib/flow/field.js.map +7 -0
  44. package/dist/features/particles/lib/flow/hook.d.ts +158 -0
  45. package/dist/features/particles/lib/flow/hook.js +215 -0
  46. package/dist/features/particles/lib/flow/hook.js.map +7 -0
  47. package/dist/features/particles/lib/flow/population.d.ts +25 -0
  48. package/dist/features/particles/lib/flow/population.js +104 -0
  49. package/dist/features/particles/lib/flow/population.js.map +7 -0
  50. package/dist/features/particles/lib/particle.d.ts +113 -0
  51. package/dist/features/particles/lib/particle.js +192 -0
  52. package/dist/features/particles/lib/particle.js.map +7 -0
  53. package/dist/features/particles/lib/random.d.ts +16 -0
  54. package/dist/features/particles/lib/random.js +61 -0
  55. package/dist/features/particles/lib/random.js.map +7 -0
  56. package/dist/features/particles/lib/sample.d.ts +32 -0
  57. package/dist/features/particles/lib/sample.js +397 -0
  58. package/dist/features/particles/lib/sample.js.map +7 -0
  59. package/dist/features/particles/lib/signal-inputs.d.ts +6 -0
  60. package/dist/features/particles/lib/signal-inputs.js +41 -0
  61. package/dist/features/particles/lib/signal-inputs.js.map +7 -0
  62. package/dist/features/particles/lib/system/binding.d.ts +59 -0
  63. package/dist/features/particles/lib/system/binding.js +122 -0
  64. package/dist/features/particles/lib/system/binding.js.map +7 -0
  65. package/dist/features/particles/lib/system/controller.d.ts +58 -0
  66. package/dist/features/particles/lib/system/controller.js +1446 -0
  67. package/dist/features/particles/lib/system/controller.js.map +7 -0
  68. package/dist/features/particles/lib/system/hook.d.ts +13 -0
  69. package/dist/features/particles/lib/system/hook.js +52 -0
  70. package/dist/features/particles/lib/system/hook.js.map +7 -0
  71. package/dist/features/particles/lib/system/ownership.d.ts +26 -0
  72. package/dist/features/particles/lib/system/ownership.js +128 -0
  73. package/dist/features/particles/lib/system/ownership.js.map +7 -0
  74. package/dist/features/particles/lib/types.d.ts +983 -0
  75. package/dist/features/physics/2d-geometry.d.ts +216 -0
  76. package/dist/features/physics/2d-geometry.js +59 -0
  77. package/dist/features/physics/2d-geometry.js.map +7 -0
  78. package/dist/features/physics/2d-geometry.mjs +1 -0
  79. package/dist/features/physics/2d-testing.d.ts +80 -0
  80. package/dist/features/physics/2d-testing.js +141 -0
  81. package/dist/features/physics/2d-testing.js.map +7 -0
  82. package/dist/features/physics/2d-testing.mjs +1 -0
  83. package/dist/features/physics/2d.d.ts +165 -0
  84. package/dist/features/physics/2d.js +119 -0
  85. package/dist/features/physics/2d.js.map +7 -0
  86. package/dist/features/physics/2d.mjs +1 -0
  87. package/dist/features/physics/lib/2d/canvas/components.d.ts +46 -0
  88. package/dist/features/physics/lib/2d/canvas/components.js +212 -0
  89. package/dist/features/physics/lib/2d/canvas/components.js.map +7 -0
  90. package/dist/features/physics/lib/2d/canvas/custom.d.ts +24 -0
  91. package/dist/features/physics/lib/2d/canvas/custom.js +45 -0
  92. package/dist/features/physics/lib/2d/canvas/custom.js.map +7 -0
  93. package/dist/features/physics/lib/2d/canvas/debug.d.ts +23 -0
  94. package/dist/features/physics/lib/2d/canvas/debug.js +53 -0
  95. package/dist/features/physics/lib/2d/canvas/debug.js.map +7 -0
  96. package/dist/features/physics/lib/2d/canvas/inference.d.ts +9 -0
  97. package/dist/features/physics/lib/2d/canvas/inference.js +704 -0
  98. package/dist/features/physics/lib/2d/canvas/inference.js.map +7 -0
  99. package/dist/features/physics/lib/2d/canvas/presentation.d.ts +11 -0
  100. package/dist/features/physics/lib/2d/canvas/presentation.js +169 -0
  101. package/dist/features/physics/lib/2d/canvas/presentation.js.map +7 -0
  102. package/dist/features/physics/lib/2d/collision/analytic.d.ts +15 -0
  103. package/dist/features/physics/lib/2d/collision/analytic.js +151 -0
  104. package/dist/features/physics/lib/2d/collision/analytic.js.map +7 -0
  105. package/dist/features/physics/lib/2d/collision/casts.d.ts +37 -0
  106. package/dist/features/physics/lib/2d/collision/casts.js +631 -0
  107. package/dist/features/physics/lib/2d/collision/casts.js.map +7 -0
  108. package/dist/features/physics/lib/2d/collision/epa.d.ts +21 -0
  109. package/dist/features/physics/lib/2d/collision/epa.js +102 -0
  110. package/dist/features/physics/lib/2d/collision/epa.js.map +7 -0
  111. package/dist/features/physics/lib/2d/collision/gjk.d.ts +28 -0
  112. package/dist/features/physics/lib/2d/collision/gjk.js +233 -0
  113. package/dist/features/physics/lib/2d/collision/gjk.js.map +7 -0
  114. package/dist/features/physics/lib/2d/collision/manifold.d.ts +35 -0
  115. package/dist/features/physics/lib/2d/collision/manifold.js +238 -0
  116. package/dist/features/physics/lib/2d/collision/manifold.js.map +7 -0
  117. package/dist/features/physics/lib/2d/collision/pairs.d.ts +10 -0
  118. package/dist/features/physics/lib/2d/collision/pairs.js +285 -0
  119. package/dist/features/physics/lib/2d/collision/pairs.js.map +7 -0
  120. package/dist/features/physics/lib/2d/collision/support.d.ts +20 -0
  121. package/dist/features/physics/lib/2d/collision/support.js +155 -0
  122. package/dist/features/physics/lib/2d/collision/support.js.map +7 -0
  123. package/dist/features/physics/lib/2d/inspection-types.d.ts +159 -0
  124. package/dist/features/physics/lib/2d/math.d.ts +27 -0
  125. package/dist/features/physics/lib/2d/math.js +314 -0
  126. package/dist/features/physics/lib/2d/math.js.map +7 -0
  127. package/dist/features/physics/lib/2d/numeric-policy.d.ts +24 -0
  128. package/dist/features/physics/lib/2d/numeric-policy.js +51 -0
  129. package/dist/features/physics/lib/2d/numeric-policy.js.map +7 -0
  130. package/dist/features/physics/lib/2d/runtime/body-handle.d.ts +148 -0
  131. package/dist/features/physics/lib/2d/runtime/body-handle.js +305 -0
  132. package/dist/features/physics/lib/2d/runtime/body-handle.js.map +7 -0
  133. package/dist/features/physics/lib/2d/runtime/context.d.ts +9 -0
  134. package/dist/features/physics/lib/2d/runtime/context.js +57 -0
  135. package/dist/features/physics/lib/2d/runtime/context.js.map +7 -0
  136. package/dist/features/physics/lib/2d/runtime/controller.d.ts +106 -0
  137. package/dist/features/physics/lib/2d/runtime/controller.js +1317 -0
  138. package/dist/features/physics/lib/2d/runtime/controller.js.map +7 -0
  139. package/dist/features/physics/lib/2d/runtime/descriptors.d.ts +153 -0
  140. package/dist/features/physics/lib/2d/runtime/descriptors.js +526 -0
  141. package/dist/features/physics/lib/2d/runtime/descriptors.js.map +7 -0
  142. package/dist/features/physics/lib/2d/runtime/events.d.ts +56 -0
  143. package/dist/features/physics/lib/2d/runtime/events.js +153 -0
  144. package/dist/features/physics/lib/2d/runtime/events.js.map +7 -0
  145. package/dist/features/physics/lib/2d/runtime/obstacles.d.ts +22 -0
  146. package/dist/features/physics/lib/2d/runtime/obstacles.js +192 -0
  147. package/dist/features/physics/lib/2d/runtime/obstacles.js.map +7 -0
  148. package/dist/features/physics/lib/2d/runtime/ownership.d.ts +41 -0
  149. package/dist/features/physics/lib/2d/runtime/ownership.js +46 -0
  150. package/dist/features/physics/lib/2d/runtime/ownership.js.map +7 -0
  151. package/dist/features/physics/lib/2d/runtime/trace.d.ts +32 -0
  152. package/dist/features/physics/lib/2d/runtime/trace.js +22 -0
  153. package/dist/features/physics/lib/2d/runtime/trace.js.map +7 -0
  154. package/dist/features/physics/lib/2d/runtime/world-component.d.ts +18 -0
  155. package/dist/features/physics/lib/2d/runtime/world-component.js +41 -0
  156. package/dist/features/physics/lib/2d/runtime/world-component.js.map +7 -0
  157. package/dist/features/physics/lib/2d/runtime/world-props.d.ts +16 -0
  158. package/dist/features/physics/lib/2d/shape-records.d.ts +60 -0
  159. package/dist/features/physics/lib/2d/shape-records.js +26 -0
  160. package/dist/features/physics/lib/2d/shape-records.js.map +7 -0
  161. package/dist/features/physics/lib/2d/shapes.d.ts +191 -0
  162. package/dist/features/physics/lib/2d/shapes.js +543 -0
  163. package/dist/features/physics/lib/2d/shapes.js.map +7 -0
  164. package/dist/features/physics/lib/2d/types.d.ts +713 -0
  165. package/dist/features/physics/lib/2d/types.js +1 -0
  166. package/dist/features/physics/lib/2d/types.js.map +7 -0
  167. package/dist/features/physics/lib/2d/world/broad-phase.d.ts +77 -0
  168. package/dist/features/physics/lib/2d/world/broad-phase.js +762 -0
  169. package/dist/features/physics/lib/2d/world/broad-phase.js.map +7 -0
  170. package/dist/features/physics/lib/2d/world/ccd.d.ts +19 -0
  171. package/dist/features/physics/lib/2d/world/ccd.js +265 -0
  172. package/dist/features/physics/lib/2d/world/ccd.js.map +7 -0
  173. package/dist/features/physics/lib/2d/world/contact-cache.d.ts +81 -0
  174. package/dist/features/physics/lib/2d/world/contact-cache.js +497 -0
  175. package/dist/features/physics/lib/2d/world/contact-cache.js.map +7 -0
  176. package/dist/features/physics/lib/2d/world/integrator.d.ts +11 -0
  177. package/dist/features/physics/lib/2d/world/integrator.js +99 -0
  178. package/dist/features/physics/lib/2d/world/integrator.js.map +7 -0
  179. package/dist/features/physics/lib/2d/world/queries.d.ts +62 -0
  180. package/dist/features/physics/lib/2d/world/queries.js +424 -0
  181. package/dist/features/physics/lib/2d/world/queries.js.map +7 -0
  182. package/dist/features/physics/lib/2d/world/rapier-engine.js +7054 -0
  183. package/dist/features/physics/lib/2d/world/rapier-engine.js.map +7 -0
  184. package/dist/features/physics/lib/2d/world/rapier.d.ts +50 -0
  185. package/dist/features/physics/lib/2d/world/rapier.js +655 -0
  186. package/dist/features/physics/lib/2d/world/rapier.js.map +7 -0
  187. package/dist/features/physics/lib/2d/world/solver.d.ts +58 -0
  188. package/dist/features/physics/lib/2d/world/solver.js +660 -0
  189. package/dist/features/physics/lib/2d/world/solver.js.map +7 -0
  190. package/dist/features/physics/lib/2d/world/storage.d.ts +96 -0
  191. package/dist/features/physics/lib/2d/world/storage.js +371 -0
  192. package/dist/features/physics/lib/2d/world/storage.js.map +7 -0
  193. package/dist/features/physics/lib/2d/world/world.d.ts +265 -0
  194. package/dist/features/physics/lib/2d/world/world.js +1713 -0
  195. package/dist/features/physics/lib/2d/world/world.js.map +7 -0
  196. package/dist/features/physics/lib/shared/signal-inputs.d.ts +5 -0
  197. package/dist/features/physics/lib/shared/signal-inputs.js +20 -0
  198. package/dist/features/physics/lib/shared/signal-inputs.js.map +7 -0
  199. package/dist/features/physics/lib/shared/validation.d.ts +5 -0
  200. package/dist/features/physics/lib/shared/validation.js +48 -0
  201. package/dist/features/physics/lib/shared/validation.js.map +7 -0
  202. package/dist/features/sprites/formats/aseprite.js +23 -0
  203. package/dist/features/sprites/formats/aseprite.js.map +7 -0
  204. package/dist/features/sprites/formats/aseprite.mjs +1 -0
  205. package/dist/features/sprites/formats/texture-packer.js +14 -0
  206. package/dist/features/sprites/formats/texture-packer.js.map +7 -0
  207. package/dist/features/sprites/formats/texture-packer.mjs +1 -0
  208. package/dist/features/sprites/index.js +9 -0
  209. package/dist/features/sprites/index.js.map +7 -0
  210. package/dist/features/sprites/index.mjs +1 -0
  211. package/dist/features/sprites/loader.js +63 -0
  212. package/dist/features/sprites/loader.js.map +7 -0
  213. package/dist/features/sprites/model.js +64 -0
  214. package/dist/features/sprites/model.js.map +7 -0
  215. package/dist/features/sprites/sprite.js +31 -0
  216. package/dist/features/sprites/sprite.js.map +7 -0
  217. package/dist/features/textures/index.d.ts +22 -0
  218. package/dist/features/textures/index.js +31 -0
  219. package/dist/features/textures/index.js.map +7 -0
  220. package/dist/features/textures/index.mjs +1 -0
  221. package/dist/features/textures/lib/definitions.d.ts +117 -0
  222. package/dist/features/textures/lib/definitions.js +179 -0
  223. package/dist/features/textures/lib/definitions.js.map +7 -0
  224. package/dist/features/textures/lib/electric-boundary.d.ts +3 -0
  225. package/dist/features/textures/lib/electric-boundary.js +11 -0
  226. package/dist/features/textures/lib/electric-boundary.js.map +7 -0
  227. package/dist/features/textures/lib/electric-shared.d.ts +69 -0
  228. package/dist/features/textures/lib/electric-shared.js +43 -0
  229. package/dist/features/textures/lib/electric-shared.js.map +7 -0
  230. package/dist/features/textures/lib/electric-sources.d.ts +50 -0
  231. package/dist/features/textures/lib/electric-sources.js +43 -0
  232. package/dist/features/textures/lib/electric-sources.js.map +7 -0
  233. package/dist/features/textures/lib/lightning.d.ts +72 -0
  234. package/dist/features/textures/lib/lightning.js +139 -0
  235. package/dist/features/textures/lib/lightning.js.map +7 -0
  236. package/dist/features/textures/lib/material-field.d.ts +12 -0
  237. package/dist/features/textures/lib/material-field.js +31 -0
  238. package/dist/features/textures/lib/material-field.js.map +7 -0
  239. package/dist/features/textures/lib/palette.d.ts +45 -0
  240. package/dist/features/textures/lib/palette.js +52 -0
  241. package/dist/features/textures/lib/palette.js.map +7 -0
  242. package/dist/features/textures/lib/presentation.d.ts +54 -0
  243. package/dist/features/textures/lib/presentation.js +83 -0
  244. package/dist/features/textures/lib/presentation.js.map +7 -0
  245. package/dist/features/textures/lib/procedural-texture.d.ts +44 -0
  246. package/dist/features/textures/lib/procedural-texture.js +110 -0
  247. package/dist/features/textures/lib/procedural-texture.js.map +7 -0
  248. package/dist/features/textures/lib/rain-drops.d.ts +96 -0
  249. package/dist/features/textures/lib/rain-drops.js +322 -0
  250. package/dist/features/textures/lib/rain-drops.js.map +7 -0
  251. package/dist/features/textures/lib/reaction-diffusion.d.ts +67 -0
  252. package/dist/features/textures/lib/reaction-diffusion.js +210 -0
  253. package/dist/features/textures/lib/reaction-diffusion.js.map +7 -0
  254. package/dist/features/textures/lib/simulation.d.ts +16 -0
  255. package/dist/features/textures/lib/simulation.js +85 -0
  256. package/dist/features/textures/lib/simulation.js.map +7 -0
  257. package/dist/features/textures/lib/tendrils.d.ts +57 -0
  258. package/dist/features/textures/lib/tendrils.js +216 -0
  259. package/dist/features/textures/lib/tendrils.js.map +7 -0
  260. package/dist/features/textures/lib/wasm/cellular-bytes.d.ts +1 -0
  261. package/dist/features/textures/lib/wasm/cellular-bytes.js +5 -0
  262. package/dist/features/textures/lib/wasm/cellular-bytes.js.map +7 -0
  263. package/dist/features/textures/lib/wasm/electric.d.ts +88 -0
  264. package/dist/features/textures/lib/wasm/electric.js +299 -0
  265. package/dist/features/textures/lib/wasm/electric.js.map +7 -0
  266. package/dist/features/textures/lib/wasm/ink-bytes.d.ts +1 -0
  267. package/dist/features/textures/lib/wasm/ink-bytes.js +5 -0
  268. package/dist/features/textures/lib/wasm/ink-bytes.js.map +7 -0
  269. package/dist/features/textures/lib/wasm/lightning-bytes.d.ts +1 -0
  270. package/dist/features/textures/lib/wasm/lightning-bytes.js +5 -0
  271. package/dist/features/textures/lib/wasm/lightning-bytes.js.map +7 -0
  272. package/dist/features/textures/lib/wasm/marble-bytes.d.ts +1 -0
  273. package/dist/features/textures/lib/wasm/marble-bytes.js +5 -0
  274. package/dist/features/textures/lib/wasm/marble-bytes.js.map +7 -0
  275. package/dist/features/textures/lib/wasm/memory.d.ts +31 -0
  276. package/dist/features/textures/lib/wasm/memory.js +103 -0
  277. package/dist/features/textures/lib/wasm/memory.js.map +7 -0
  278. package/dist/features/textures/lib/wasm/paper-bytes.d.ts +1 -0
  279. package/dist/features/textures/lib/wasm/paper-bytes.js +5 -0
  280. package/dist/features/textures/lib/wasm/paper-bytes.js.map +7 -0
  281. package/dist/features/textures/lib/wasm/tendrils-bytes.d.ts +1 -0
  282. package/dist/features/textures/lib/wasm/tendrils-bytes.js +5 -0
  283. package/dist/features/textures/lib/wasm/tendrils-bytes.js.map +7 -0
  284. package/dist/features/textures/lib/wasm/water-surface-bytes.d.ts +1 -0
  285. package/dist/features/textures/lib/wasm/water-surface-bytes.js +5 -0
  286. package/dist/features/textures/lib/wasm/water-surface-bytes.js.map +7 -0
  287. package/dist/features/textures/lib/wasm/water-waves-bytes.d.ts +1 -0
  288. package/dist/features/textures/lib/wasm/water-waves-bytes.js +5 -0
  289. package/dist/features/textures/lib/wasm/water-waves-bytes.js.map +7 -0
  290. package/dist/features/textures/lib/water-surface.d.ts +92 -0
  291. package/dist/features/textures/lib/water-surface.js +378 -0
  292. package/dist/features/textures/lib/water-surface.js.map +7 -0
  293. package/dist/features/textures/lib/water-waves.d.ts +60 -0
  294. package/dist/features/textures/lib/water-waves.js +154 -0
  295. package/dist/features/textures/lib/water-waves.js.map +7 -0
  296. package/dist/features/viz/index.d.ts +28 -0
  297. package/dist/features/viz/index.js +45 -0
  298. package/dist/features/viz/index.js.map +7 -0
  299. package/dist/features/viz/index.mjs +1 -0
  300. package/dist/features/viz/lib/anchored-layout.d.ts +104 -0
  301. package/dist/features/viz/lib/anchored-layout.js +166 -0
  302. package/dist/features/viz/lib/anchored-layout.js.map +7 -0
  303. package/dist/features/viz/lib/axis.d.ts +10 -0
  304. package/dist/features/viz/lib/axis.js +116 -0
  305. package/dist/features/viz/lib/axis.js.map +7 -0
  306. package/dist/features/viz/lib/band-scale.d.ts +3 -0
  307. package/dist/features/viz/lib/band-scale.js +57 -0
  308. package/dist/features/viz/lib/band-scale.js.map +7 -0
  309. package/dist/features/viz/lib/bar-fill.d.ts +16 -0
  310. package/dist/features/viz/lib/bar-fill.js +53 -0
  311. package/dist/features/viz/lib/bar-fill.js.map +7 -0
  312. package/dist/features/viz/lib/bar-series.d.ts +150 -0
  313. package/dist/features/viz/lib/bar-series.js +152 -0
  314. package/dist/features/viz/lib/bar-series.js.map +7 -0
  315. package/dist/features/viz/lib/hover-card.d.ts +92 -0
  316. package/dist/features/viz/lib/hover-card.js +146 -0
  317. package/dist/features/viz/lib/hover-card.js.map +7 -0
  318. package/dist/features/viz/lib/hover-data.d.ts +12 -0
  319. package/dist/features/viz/lib/hover-data.js +50 -0
  320. package/dist/features/viz/lib/hover-data.js.map +7 -0
  321. package/dist/features/viz/lib/hover-placement.d.ts +46 -0
  322. package/dist/features/viz/lib/hover-placement.js +51 -0
  323. package/dist/features/viz/lib/hover-placement.js.map +7 -0
  324. package/dist/features/viz/lib/hover-queries.d.ts +60 -0
  325. package/dist/features/viz/lib/hover-queries.js +185 -0
  326. package/dist/features/viz/lib/hover-queries.js.map +7 -0
  327. package/dist/features/viz/lib/hover-types.d.ts +277 -0
  328. package/dist/features/viz/lib/layout-pie.d.ts +13 -0
  329. package/dist/features/viz/lib/layout-pie.js +159 -0
  330. package/dist/features/viz/lib/layout-pie.js.map +7 -0
  331. package/dist/features/viz/lib/line-series.d.ts +11 -0
  332. package/dist/features/viz/lib/line-series.js +89 -0
  333. package/dist/features/viz/lib/line-series.js.map +7 -0
  334. package/dist/features/viz/lib/linear-scale.d.ts +3 -0
  335. package/dist/features/viz/lib/linear-scale.js +70 -0
  336. package/dist/features/viz/lib/linear-scale.js.map +7 -0
  337. package/dist/features/viz/lib/nearest.d.ts +82 -0
  338. package/dist/features/viz/lib/nearest.js +51 -0
  339. package/dist/features/viz/lib/nearest.js.map +7 -0
  340. package/dist/features/viz/lib/paint.d.ts +2 -0
  341. package/dist/features/viz/lib/paint.js +17 -0
  342. package/dist/features/viz/lib/paint.js.map +7 -0
  343. package/dist/features/viz/lib/pie-layout.d.ts +31 -0
  344. package/dist/features/viz/lib/pie-layout.js +324 -0
  345. package/dist/features/viz/lib/pie-layout.js.map +7 -0
  346. package/dist/features/viz/lib/pie-slices.d.ts +51 -0
  347. package/dist/features/viz/lib/pie-slices.js +50 -0
  348. package/dist/features/viz/lib/pie-slices.js.map +7 -0
  349. package/dist/features/viz/lib/pie-types.d.ts +215 -0
  350. package/dist/features/viz/lib/plot-series.d.ts +13 -0
  351. package/dist/features/viz/lib/plot-series.js +53 -0
  352. package/dist/features/viz/lib/plot-series.js.map +7 -0
  353. package/dist/features/viz/lib/plot-types.d.ts +63 -0
  354. package/dist/features/viz/lib/point-data.d.ts +5 -0
  355. package/dist/features/viz/lib/point-data.js +17 -0
  356. package/dist/features/viz/lib/point-data.js.map +7 -0
  357. package/dist/features/viz/lib/point-geometry.d.ts +2 -0
  358. package/dist/features/viz/lib/point-geometry.js +24 -0
  359. package/dist/features/viz/lib/point-geometry.js.map +7 -0
  360. package/dist/features/viz/lib/point-series.d.ts +11 -0
  361. package/dist/features/viz/lib/point-series.js +118 -0
  362. package/dist/features/viz/lib/point-series.js.map +7 -0
  363. package/dist/features/viz/lib/point-types.d.ts +94 -0
  364. package/dist/features/viz/lib/scale-adjust.d.ts +11 -0
  365. package/dist/features/viz/lib/scale-adjust.js +25 -0
  366. package/dist/features/viz/lib/scale-adjust.js.map +7 -0
  367. package/dist/features/viz/lib/scale-context.d.ts +8 -0
  368. package/dist/features/viz/lib/scale-context.js +61 -0
  369. package/dist/features/viz/lib/scale-context.js.map +7 -0
  370. package/dist/features/viz/lib/scale.d.ts +11 -0
  371. package/dist/features/viz/lib/scale.js +80 -0
  372. package/dist/features/viz/lib/scale.js.map +7 -0
  373. package/dist/features/viz/lib/types.d.ts +414 -0
  374. package/dist/features/viz/lib/use-scale.d.ts +20 -0
  375. package/dist/features/viz/lib/use-scale.js +10 -0
  376. package/dist/features/viz/lib/use-scale.js.map +7 -0
  377. package/dist/filters/displacement-gpu.d.ts +38 -0
  378. package/dist/filters/displacement-gpu.js +243 -0
  379. package/dist/filters/displacement-gpu.js.map +7 -0
  380. package/dist/filters/displacement-math.d.ts +5 -0
  381. package/dist/filters/displacement-math.js +22 -0
  382. package/dist/filters/displacement-math.js.map +7 -0
  383. package/dist/filters/displacement.d.ts +13 -0
  384. package/dist/filters/displacement.js +65 -0
  385. package/dist/filters/displacement.js.map +7 -0
  386. package/dist/filters/filter-executor.d.ts +21 -0
  387. package/dist/filters/filter-executor.js +120 -0
  388. package/dist/filters/filter-executor.js.map +7 -0
  389. package/dist/filters/native-canvas-filter.d.ts +4 -0
  390. package/dist/filters/native-canvas-filter.js +105 -0
  391. package/dist/filters/native-canvas-filter.js.map +7 -0
  392. package/dist/filters/native-color.d.ts +2 -0
  393. package/dist/filters/native-color.js +200 -0
  394. package/dist/filters/native-color.js.map +7 -0
  395. package/dist/filters/native-operations.d.ts +8 -0
  396. package/dist/filters/native-operations.js +7 -0
  397. package/dist/filters/native-operations.js.map +7 -0
  398. package/dist/filters/native.d.ts +113 -0
  399. package/dist/filters/native.js +115 -0
  400. package/dist/filters/native.js.map +7 -0
  401. package/dist/filters/reflected-light.d.ts +12 -0
  402. package/dist/filters/reflected-light.js +93 -0
  403. package/dist/filters/reflected-light.js.map +7 -0
  404. package/dist/filters/reflection-gpu.d.ts +58 -0
  405. package/dist/filters/reflection-gpu.js +266 -0
  406. package/dist/filters/reflection-gpu.js.map +7 -0
  407. package/dist/filters/render-displacement-boundary.d.ts +12 -0
  408. package/dist/filters/render-displacement-boundary.js +116 -0
  409. package/dist/filters/render-displacement-boundary.js.map +7 -0
  410. package/dist/filters/render-reflection-boundary.d.ts +15 -0
  411. package/dist/filters/render-reflection-boundary.js +127 -0
  412. package/dist/filters/render-reflection-boundary.js.map +7 -0
  413. package/dist/filters.d.ts +5 -0
  414. package/dist/filters.js +29 -0
  415. package/dist/filters.js.map +7 -0
  416. package/dist/filters.mjs +1 -0
  417. package/dist/index.d.ts +111 -0
  418. package/dist/index.js +300 -0
  419. package/dist/index.js.map +7 -0
  420. package/dist/index.mjs +1 -0
  421. package/dist/internal.d.ts +160 -0
  422. package/dist/internal.js +320 -0
  423. package/dist/internal.js.map +7 -0
  424. package/dist/internal.mjs +1 -0
  425. package/dist/jsx-dev-runtime.d.ts +35 -0
  426. package/dist/jsx-dev-runtime.js +6 -0
  427. package/dist/jsx-dev-runtime.js.map +7 -0
  428. package/dist/jsx-dev-runtime.mjs +1 -0
  429. package/dist/jsx-runtime.d.ts +35 -0
  430. package/dist/jsx-runtime.js +7 -0
  431. package/dist/jsx-runtime.js.map +7 -0
  432. package/dist/jsx-runtime.mjs +1 -0
  433. package/dist/lib/animation/definition.d.ts +140 -0
  434. package/dist/lib/animation/definition.js +605 -0
  435. package/dist/lib/animation/definition.js.map +7 -0
  436. package/dist/lib/animation/easing.d.ts +55 -0
  437. package/dist/lib/animation/easing.js +112 -0
  438. package/dist/lib/animation/easing.js.map +7 -0
  439. package/dist/lib/animation/evaluate.d.ts +118 -0
  440. package/dist/lib/animation/evaluate.js +2398 -0
  441. package/dist/lib/animation/evaluate.js.map +7 -0
  442. package/dist/lib/animation/playback.d.ts +30 -0
  443. package/dist/lib/animation/playback.js +932 -0
  444. package/dist/lib/animation/playback.js.map +7 -0
  445. package/dist/lib/animation/program.d.ts +145 -0
  446. package/dist/lib/animation/program.js +741 -0
  447. package/dist/lib/animation/program.js.map +7 -0
  448. package/dist/lib/animation/spring.d.ts +30 -0
  449. package/dist/lib/animation/spring.js +324 -0
  450. package/dist/lib/animation/spring.js.map +7 -0
  451. package/dist/lib/animation/types.d.ts +418 -0
  452. package/dist/lib/animation/writer-leases.d.ts +47 -0
  453. package/dist/lib/animation/writer-leases.js +314 -0
  454. package/dist/lib/animation/writer-leases.js.map +7 -0
  455. package/dist/lib/backend/canvas-2d-backend.d.ts +4 -0
  456. package/dist/lib/backend/canvas-2d-backend.js +97 -0
  457. package/dist/lib/backend/canvas-2d-backend.js.map +7 -0
  458. package/dist/lib/backend/types.d.ts +309 -0
  459. package/dist/lib/backend/types.js +26 -0
  460. package/dist/lib/backend/types.js.map +7 -0
  461. package/dist/lib/components/arc-geometry.d.ts +4 -0
  462. package/dist/lib/components/arc-geometry.js +46 -0
  463. package/dist/lib/components/arc-geometry.js.map +7 -0
  464. package/dist/lib/components/arc.d.ts +55 -0
  465. package/dist/lib/components/arc.js +91 -0
  466. package/dist/lib/components/arc.js.map +7 -0
  467. package/dist/lib/components/circle.d.ts +49 -0
  468. package/dist/lib/components/circle.js +46 -0
  469. package/dist/lib/components/circle.js.map +7 -0
  470. package/dist/lib/components/clip.d.ts +43 -0
  471. package/dist/lib/components/clip.js +24 -0
  472. package/dist/lib/components/clip.js.map +7 -0
  473. package/dist/lib/components/ellipse.d.ts +53 -0
  474. package/dist/lib/components/ellipse.js +59 -0
  475. package/dist/lib/components/ellipse.js.map +7 -0
  476. package/dist/lib/components/g.d.ts +56 -0
  477. package/dist/lib/components/g.js +24 -0
  478. package/dist/lib/components/g.js.map +7 -0
  479. package/dist/lib/components/horizontal-line.d.ts +56 -0
  480. package/dist/lib/components/horizontal-line.js +71 -0
  481. package/dist/lib/components/horizontal-line.js.map +7 -0
  482. package/dist/lib/components/html-box.d.ts +16 -0
  483. package/dist/lib/components/html-box.js +57 -0
  484. package/dist/lib/components/html-box.js.map +7 -0
  485. package/dist/lib/components/img.d.ts +24 -0
  486. package/dist/lib/components/img.js +150 -0
  487. package/dist/lib/components/img.js.map +7 -0
  488. package/dist/lib/components/layer-node-equality.d.ts +65 -0
  489. package/dist/lib/components/layer-node-equality.js +91 -0
  490. package/dist/lib/components/layer-node-equality.js.map +7 -0
  491. package/dist/lib/components/layer.d.ts +34 -0
  492. package/dist/lib/components/layer.js +172 -0
  493. package/dist/lib/components/layer.js.map +7 -0
  494. package/dist/lib/components/line.d.ts +51 -0
  495. package/dist/lib/components/line.js +76 -0
  496. package/dist/lib/components/line.js.map +7 -0
  497. package/dist/lib/components/path.d.ts +28 -0
  498. package/dist/lib/components/path.js +47 -0
  499. package/dist/lib/components/path.js.map +7 -0
  500. package/dist/lib/components/polygon.d.ts +45 -0
  501. package/dist/lib/components/polygon.js +93 -0
  502. package/dist/lib/components/polygon.js.map +7 -0
  503. package/dist/lib/components/rect.d.ts +24 -0
  504. package/dist/lib/components/rect.js +83 -0
  505. package/dist/lib/components/rect.js.map +7 -0
  506. package/dist/lib/components/regular-polygon.d.ts +102 -0
  507. package/dist/lib/components/regular-polygon.js +112 -0
  508. package/dist/lib/components/regular-polygon.js.map +7 -0
  509. package/dist/lib/components/rounded-corner-style.d.ts +7 -0
  510. package/dist/lib/components/rounded-corner-style.js +40 -0
  511. package/dist/lib/components/rounded-corner-style.js.map +7 -0
  512. package/dist/lib/components/shape-style.d.ts +7 -0
  513. package/dist/lib/components/shape-style.js +52 -0
  514. package/dist/lib/components/shape-style.js.map +7 -0
  515. package/dist/lib/components/star.d.ts +56 -0
  516. package/dist/lib/components/star.js +98 -0
  517. package/dist/lib/components/star.js.map +7 -0
  518. package/dist/lib/components/structural-events.d.ts +10 -0
  519. package/dist/lib/components/structural-events.js +8 -0
  520. package/dist/lib/components/structural-events.js.map +7 -0
  521. package/dist/lib/components/svg-path.d.ts +23 -0
  522. package/dist/lib/components/svg-path.js +25 -0
  523. package/dist/lib/components/svg-path.js.map +7 -0
  524. package/dist/lib/components/text-layout.d.ts +31 -0
  525. package/dist/lib/components/text-layout.js +139 -0
  526. package/dist/lib/components/text-layout.js.map +7 -0
  527. package/dist/lib/components/text.d.ts +29 -0
  528. package/dist/lib/components/text.js +174 -0
  529. package/dist/lib/components/text.js.map +7 -0
  530. package/dist/lib/components/vertical-line.d.ts +57 -0
  531. package/dist/lib/components/vertical-line.js +71 -0
  532. package/dist/lib/components/vertical-line.js.map +7 -0
  533. package/dist/lib/components/wedge.d.ts +55 -0
  534. package/dist/lib/components/wedge.js +93 -0
  535. package/dist/lib/components/wedge.js.map +7 -0
  536. package/dist/lib/define-primitive.d.ts +82 -0
  537. package/dist/lib/define-primitive.js +85 -0
  538. package/dist/lib/define-primitive.js.map +7 -0
  539. package/dist/lib/development.d.ts +2 -0
  540. package/dist/lib/development.js +5 -0
  541. package/dist/lib/development.js.map +7 -0
  542. package/dist/lib/element/children.d.ts +16 -0
  543. package/dist/lib/element/children.js +333 -0
  544. package/dist/lib/element/children.js.map +7 -0
  545. package/dist/lib/element/create-element.d.ts +34 -0
  546. package/dist/lib/element/create-element.js +75 -0
  547. package/dist/lib/element/create-element.js.map +7 -0
  548. package/dist/lib/element/fragment.d.ts +15 -0
  549. package/dist/lib/element/fragment.js +11 -0
  550. package/dist/lib/element/fragment.js.map +7 -0
  551. package/dist/lib/element/jsx-runtime.d.ts +48 -0
  552. package/dist/lib/element/jsx-runtime.js +16 -0
  553. package/dist/lib/element/jsx-runtime.js.map +7 -0
  554. package/dist/lib/element/metadata.d.ts +96 -0
  555. package/dist/lib/element/metadata.js +160 -0
  556. package/dist/lib/element/metadata.js.map +7 -0
  557. package/dist/lib/element/resolve-primitive-inputs.d.ts +12 -0
  558. package/dist/lib/element/resolve-primitive-inputs.js +83 -0
  559. package/dist/lib/element/resolve-primitive-inputs.js.map +7 -0
  560. package/dist/lib/element/types.d.ts +123 -0
  561. package/dist/lib/element-enhancers.d.ts +134 -0
  562. package/dist/lib/element-enhancers.js +193 -0
  563. package/dist/lib/element-enhancers.js.map +7 -0
  564. package/dist/lib/events/adapters/clipboard.d.ts +9 -0
  565. package/dist/lib/events/adapters/clipboard.js +23 -0
  566. package/dist/lib/events/adapters/clipboard.js.map +7 -0
  567. package/dist/lib/events/adapters/drag.d.ts +12 -0
  568. package/dist/lib/events/adapters/drag.js +29 -0
  569. package/dist/lib/events/adapters/drag.js.map +7 -0
  570. package/dist/lib/events/adapters/editing.d.ts +15 -0
  571. package/dist/lib/events/adapters/editing.js +41 -0
  572. package/dist/lib/events/adapters/editing.js.map +7 -0
  573. package/dist/lib/events/adapters/keyboard-focus.d.ts +12 -0
  574. package/dist/lib/events/adapters/keyboard-focus.js +36 -0
  575. package/dist/lib/events/adapters/keyboard-focus.js.map +7 -0
  576. package/dist/lib/events/adapters/mouse.d.ts +17 -0
  577. package/dist/lib/events/adapters/mouse.js +32 -0
  578. package/dist/lib/events/adapters/mouse.js.map +7 -0
  579. package/dist/lib/events/adapters/pointer.d.ts +19 -0
  580. package/dist/lib/events/adapters/pointer.js +40 -0
  581. package/dist/lib/events/adapters/pointer.js.map +7 -0
  582. package/dist/lib/events/adapters/touch.d.ts +16 -0
  583. package/dist/lib/events/adapters/touch.js +36 -0
  584. package/dist/lib/events/adapters/touch.js.map +7 -0
  585. package/dist/lib/events/adapters/wheel.d.ts +10 -0
  586. package/dist/lib/events/adapters/wheel.js +16 -0
  587. package/dist/lib/events/adapters/wheel.js.map +7 -0
  588. package/dist/lib/events/boundary-transitions.d.ts +9 -0
  589. package/dist/lib/events/boundary-transitions.js +16 -0
  590. package/dist/lib/events/boundary-transitions.js.map +7 -0
  591. package/dist/lib/events/dispatch.d.ts +21 -0
  592. package/dist/lib/events/dispatch.js +1078 -0
  593. package/dist/lib/events/dispatch.js.map +7 -0
  594. package/dist/lib/events/event-definitions.d.ts +23 -0
  595. package/dist/lib/events/event-definitions.js +74 -0
  596. package/dist/lib/events/event-definitions.js.map +7 -0
  597. package/dist/lib/events/event-facade.d.ts +19 -0
  598. package/dist/lib/events/event-facade.js +188 -0
  599. package/dist/lib/events/event-facade.js.map +7 -0
  600. package/dist/lib/events/event-path.d.ts +3 -0
  601. package/dist/lib/events/event-path.js +43 -0
  602. package/dist/lib/events/event-path.js.map +7 -0
  603. package/dist/lib/events/hit-test.d.ts +13 -0
  604. package/dist/lib/events/hit-test.js +135 -0
  605. package/dist/lib/events/hit-test.js.map +7 -0
  606. package/dist/lib/events/native-listener-hub.d.ts +10 -0
  607. package/dist/lib/events/native-listener-hub.js +72 -0
  608. package/dist/lib/events/native-listener-hub.js.map +7 -0
  609. package/dist/lib/events/paint-entry.d.ts +66 -0
  610. package/dist/lib/events/paint-entry.js +30 -0
  611. package/dist/lib/events/paint-entry.js.map +7 -0
  612. package/dist/lib/events/pointer-capture.d.ts +23 -0
  613. package/dist/lib/events/pointer-capture.js +339 -0
  614. package/dist/lib/events/pointer-capture.js.map +7 -0
  615. package/dist/lib/events/propagation.d.ts +7 -0
  616. package/dist/lib/events/propagation.js +56 -0
  617. package/dist/lib/events/propagation.js.map +7 -0
  618. package/dist/lib/events/registrations.d.ts +120 -0
  619. package/dist/lib/events/registrations.js +397 -0
  620. package/dist/lib/events/registrations.js.map +7 -0
  621. package/dist/lib/events/resolver-input.d.ts +25 -0
  622. package/dist/lib/events/resolver-input.js +62 -0
  623. package/dist/lib/events/resolver-input.js.map +7 -0
  624. package/dist/lib/events/types.d.ts +596 -0
  625. package/dist/lib/execute-render.d.ts +9 -0
  626. package/dist/lib/execute-render.js +195 -0
  627. package/dist/lib/execute-render.js.map +7 -0
  628. package/dist/lib/filter/canvas-state.d.ts +2 -0
  629. package/dist/lib/filter/canvas-state.js +31 -0
  630. package/dist/lib/filter/canvas-state.js.map +7 -0
  631. package/dist/lib/filter/filter-region.d.ts +33 -0
  632. package/dist/lib/filter/filter-region.js +291 -0
  633. package/dist/lib/filter/filter-region.js.map +7 -0
  634. package/dist/lib/filter/filter-surface-pool.d.ts +38 -0
  635. package/dist/lib/filter/filter-surface-pool.js +252 -0
  636. package/dist/lib/filter/filter-surface-pool.js.map +7 -0
  637. package/dist/lib/filter/render-filter-boundary.d.ts +14 -0
  638. package/dist/lib/filter/render-filter-boundary.js +211 -0
  639. package/dist/lib/filter/render-filter-boundary.js.map +7 -0
  640. package/dist/lib/focus/directional-navigation.d.ts +12 -0
  641. package/dist/lib/focus/directional-navigation.js +86 -0
  642. package/dist/lib/focus/directional-navigation.js.map +7 -0
  643. package/dist/lib/focus/dom-focus-host.d.ts +13 -0
  644. package/dist/lib/focus/dom-focus-host.js +352 -0
  645. package/dist/lib/focus/dom-focus-host.js.map +7 -0
  646. package/dist/lib/focus/dom-tab-stops.d.ts +3 -0
  647. package/dist/lib/focus/dom-tab-stops.js +71 -0
  648. package/dist/lib/focus/dom-tab-stops.js.map +7 -0
  649. package/dist/lib/focus/focus-events.d.ts +4 -0
  650. package/dist/lib/focus/focus-events.js +78 -0
  651. package/dist/lib/focus/focus-events.js.map +7 -0
  652. package/dist/lib/focus/focus-manager.d.ts +121 -0
  653. package/dist/lib/focus/focus-manager.js +1131 -0
  654. package/dist/lib/focus/focus-manager.js.map +7 -0
  655. package/dist/lib/focus/geometry.d.ts +4 -0
  656. package/dist/lib/focus/geometry.js +64 -0
  657. package/dist/lib/focus/geometry.js.map +7 -0
  658. package/dist/lib/focus/html-focus-region.d.ts +27 -0
  659. package/dist/lib/focus/keyboard-defaults.d.ts +7 -0
  660. package/dist/lib/focus/keyboard-defaults.js +110 -0
  661. package/dist/lib/focus/keyboard-defaults.js.map +7 -0
  662. package/dist/lib/focus/policy-components.d.ts +45 -0
  663. package/dist/lib/focus/policy-components.js +94 -0
  664. package/dist/lib/focus/policy-components.js.map +7 -0
  665. package/dist/lib/focus/types.d.ts +37 -0
  666. package/dist/lib/focus/types.js +7 -0
  667. package/dist/lib/focus/types.js.map +7 -0
  668. package/dist/lib/geometry/circle.d.ts +22 -0
  669. package/dist/lib/geometry/circle.js +13 -0
  670. package/dist/lib/geometry/circle.js.map +7 -0
  671. package/dist/lib/geometry/circular-sweep.d.ts +54 -0
  672. package/dist/lib/geometry/circular-sweep.js +95 -0
  673. package/dist/lib/geometry/circular-sweep.js.map +7 -0
  674. package/dist/lib/geometry/ellipse.d.ts +26 -0
  675. package/dist/lib/geometry/ellipse.js +17 -0
  676. package/dist/lib/geometry/ellipse.js.map +7 -0
  677. package/dist/lib/geometry/line.d.ts +20 -0
  678. package/dist/lib/geometry/line.js +15 -0
  679. package/dist/lib/geometry/line.js.map +7 -0
  680. package/dist/lib/geometry/path-arc.d.ts +25 -0
  681. package/dist/lib/geometry/path-arc.js +57 -0
  682. package/dist/lib/geometry/path-arc.js.map +7 -0
  683. package/dist/lib/geometry/path-bend-guide.d.ts +31 -0
  684. package/dist/lib/geometry/path-bend-guide.js +282 -0
  685. package/dist/lib/geometry/path-bend-guide.js.map +7 -0
  686. package/dist/lib/geometry/path-bend-spans.d.ts +31 -0
  687. package/dist/lib/geometry/path-bend-spans.js +109 -0
  688. package/dist/lib/geometry/path-bend-spans.js.map +7 -0
  689. package/dist/lib/geometry/path-bending.d.ts +90 -0
  690. package/dist/lib/geometry/path-bending.js +202 -0
  691. package/dist/lib/geometry/path-bending.js.map +7 -0
  692. package/dist/lib/geometry/path-conversion.d.ts +19 -0
  693. package/dist/lib/geometry/path-conversion.js +114 -0
  694. package/dist/lib/geometry/path-conversion.js.map +7 -0
  695. package/dist/lib/geometry/path-geometry.d.ts +218 -0
  696. package/dist/lib/geometry/path-geometry.js +557 -0
  697. package/dist/lib/geometry/path-geometry.js.map +7 -0
  698. package/dist/lib/geometry/path-radial.d.ts +15 -0
  699. package/dist/lib/geometry/path-radial.js +107 -0
  700. package/dist/lib/geometry/path-radial.js.map +7 -0
  701. package/dist/lib/geometry/path-transforms.d.ts +233 -0
  702. package/dist/lib/geometry/path-transforms.js +478 -0
  703. package/dist/lib/geometry/path-transforms.js.map +7 -0
  704. package/dist/lib/geometry/path-utilities.d.ts +78 -0
  705. package/dist/lib/geometry/path-utilities.js +341 -0
  706. package/dist/lib/geometry/path-utilities.js.map +7 -0
  707. package/dist/lib/geometry/path-wang.d.ts +18 -0
  708. package/dist/lib/geometry/path-wang.js +136 -0
  709. package/dist/lib/geometry/path-wang.js.map +7 -0
  710. package/dist/lib/geometry/path-warp-bezier.d.ts +17 -0
  711. package/dist/lib/geometry/path-warp-bezier.js +109 -0
  712. package/dist/lib/geometry/path-warp-bezier.js.map +7 -0
  713. package/dist/lib/geometry/path-warp.d.ts +27 -0
  714. package/dist/lib/geometry/path-warp.js +165 -0
  715. package/dist/lib/geometry/path-warp.js.map +7 -0
  716. package/dist/lib/geometry/polygon.d.ts +21 -0
  717. package/dist/lib/geometry/polygon.js +12 -0
  718. package/dist/lib/geometry/polygon.js.map +7 -0
  719. package/dist/lib/geometry/rectangle.d.ts +38 -0
  720. package/dist/lib/geometry/rectangle.js +22 -0
  721. package/dist/lib/geometry/rectangle.js.map +7 -0
  722. package/dist/lib/geometry/regular-polygon.d.ts +88 -0
  723. package/dist/lib/geometry/regular-polygon.js +67 -0
  724. package/dist/lib/geometry/regular-polygon.js.map +7 -0
  725. package/dist/lib/geometry/resolve-path.d.ts +4 -0
  726. package/dist/lib/geometry/resolve-path.js +16 -0
  727. package/dist/lib/geometry/resolve-path.js.map +7 -0
  728. package/dist/lib/geometry/rounded-corners.d.ts +28 -0
  729. package/dist/lib/geometry/rounded-corners.js +118 -0
  730. package/dist/lib/geometry/rounded-corners.js.map +7 -0
  731. package/dist/lib/geometry/star.d.ts +39 -0
  732. package/dist/lib/geometry/star.js +90 -0
  733. package/dist/lib/geometry/star.js.map +7 -0
  734. package/dist/lib/geometry/svg-path.d.ts +21 -0
  735. package/dist/lib/geometry/svg-path.js +7 -0
  736. package/dist/lib/geometry/svg-path.js.map +7 -0
  737. package/dist/lib/geometry/transform-bend.d.ts +46 -0
  738. package/dist/lib/geometry/transform-bend.js +219 -0
  739. package/dist/lib/geometry/transform-bend.js.map +7 -0
  740. package/dist/lib/geometry/transform-guide.d.ts +57 -0
  741. package/dist/lib/geometry/transform-guide.js +157 -0
  742. package/dist/lib/geometry/transform-guide.js.map +7 -0
  743. package/dist/lib/geometry/transform-math.d.ts +21 -0
  744. package/dist/lib/geometry/transform-math.js +91 -0
  745. package/dist/lib/geometry/transform-math.js.map +7 -0
  746. package/dist/lib/geometry/transform-mesh.d.ts +39 -0
  747. package/dist/lib/geometry/transform-mesh.js +129 -0
  748. package/dist/lib/geometry/transform-mesh.js.map +7 -0
  749. package/dist/lib/geometry/validation.d.ts +6 -0
  750. package/dist/lib/geometry/validation.js +42 -0
  751. package/dist/lib/geometry/validation.js.map +7 -0
  752. package/dist/lib/global-state.d.ts +63 -0
  753. package/dist/lib/global-state.js +176 -0
  754. package/dist/lib/global-state.js.map +7 -0
  755. package/dist/lib/hooks/hook-slot.d.ts +30 -0
  756. package/dist/lib/hooks/hook-slot.js +66 -0
  757. package/dist/lib/hooks/hook-slot.js.map +7 -0
  758. package/dist/lib/hooks/use-animated-value.d.ts +24 -0
  759. package/dist/lib/hooks/use-animated-value.js +169 -0
  760. package/dist/lib/hooks/use-animated-value.js.map +7 -0
  761. package/dist/lib/hooks/use-canvas-context.d.ts +10 -0
  762. package/dist/lib/hooks/use-canvas-context.js +13 -0
  763. package/dist/lib/hooks/use-canvas-context.js.map +7 -0
  764. package/dist/lib/hooks/use-computed.d.ts +13 -0
  765. package/dist/lib/hooks/use-computed.js +91 -0
  766. package/dist/lib/hooks/use-computed.js.map +7 -0
  767. package/dist/lib/hooks/use-const.d.ts +10 -0
  768. package/dist/lib/hooks/use-const.js +15 -0
  769. package/dist/lib/hooks/use-const.js.map +7 -0
  770. package/dist/lib/hooks/use-cursor.d.ts +16 -0
  771. package/dist/lib/hooks/use-cursor.js +51 -0
  772. package/dist/lib/hooks/use-cursor.js.map +7 -0
  773. package/dist/lib/hooks/use-event-listener.d.ts +10 -0
  774. package/dist/lib/hooks/use-event-listener.js +24 -0
  775. package/dist/lib/hooks/use-event-listener.js.map +7 -0
  776. package/dist/lib/hooks/use-event-target.d.ts +14 -0
  777. package/dist/lib/hooks/use-event-target.js +30 -0
  778. package/dist/lib/hooks/use-event-target.js.map +7 -0
  779. package/dist/lib/hooks/use-layout-box.d.ts +9 -0
  780. package/dist/lib/hooks/use-layout-box.js +8 -0
  781. package/dist/lib/hooks/use-layout-box.js.map +7 -0
  782. package/dist/lib/hooks/use-line-path.d.ts +14 -0
  783. package/dist/lib/hooks/use-line-path.js +13 -0
  784. package/dist/lib/hooks/use-line-path.js.map +7 -0
  785. package/dist/lib/hooks/use-paint-target.d.ts +3 -0
  786. package/dist/lib/hooks/use-paint-target.js +34 -0
  787. package/dist/lib/hooks/use-paint-target.js.map +7 -0
  788. package/dist/lib/hooks/use-playback.d.ts +21 -0
  789. package/dist/lib/hooks/use-playback.js +87 -0
  790. package/dist/lib/hooks/use-playback.js.map +7 -0
  791. package/dist/lib/hooks/use-reaction.d.ts +19 -0
  792. package/dist/lib/hooks/use-reaction.js +245 -0
  793. package/dist/lib/hooks/use-reaction.js.map +7 -0
  794. package/dist/lib/hooks/use-rect-path.d.ts +20 -0
  795. package/dist/lib/hooks/use-rect-path.js +25 -0
  796. package/dist/lib/hooks/use-rect-path.js.map +7 -0
  797. package/dist/lib/hooks/use-ref.d.ts +17 -0
  798. package/dist/lib/hooks/use-ref.js +8 -0
  799. package/dist/lib/hooks/use-ref.js.map +7 -0
  800. package/dist/lib/hooks/use-region.d.ts +11 -0
  801. package/dist/lib/hooks/use-region.js +34 -0
  802. package/dist/lib/hooks/use-region.js.map +7 -0
  803. package/dist/lib/hooks/use-signal.d.ts +12 -0
  804. package/dist/lib/hooks/use-signal.js +12 -0
  805. package/dist/lib/hooks/use-signal.js.map +7 -0
  806. package/dist/lib/hooks/use-svg-path.d.ts +11 -0
  807. package/dist/lib/hooks/use-svg-path.js +13 -0
  808. package/dist/lib/hooks/use-svg-path.js.map +7 -0
  809. package/dist/lib/hooks/use-value-memo-slot.d.ts +12 -0
  810. package/dist/lib/hooks/use-value-memo-slot.js +45 -0
  811. package/dist/lib/hooks/use-value-memo-slot.js.map +7 -0
  812. package/dist/lib/hooks/use-visibility-transition.d.ts +103 -0
  813. package/dist/lib/hooks/use-visibility-transition.js +195 -0
  814. package/dist/lib/hooks/use-visibility-transition.js.map +7 -0
  815. package/dist/lib/html/html-service.d.ts +30 -0
  816. package/dist/lib/html/html-service.js +281 -0
  817. package/dist/lib/html/html-service.js.map +7 -0
  818. package/dist/lib/html/overlay-config.d.ts +3 -0
  819. package/dist/lib/html/overlay-config.js +37 -0
  820. package/dist/lib/html/overlay-config.js.map +7 -0
  821. package/dist/lib/html/portable-clips.d.ts +4 -0
  822. package/dist/lib/html/portable-clips.js +20 -0
  823. package/dist/lib/html/portable-clips.js.map +7 -0
  824. package/dist/lib/html/types.d.ts +110 -0
  825. package/dist/lib/layout/absolute.d.ts +57 -0
  826. package/dist/lib/layout/absolute.js +348 -0
  827. package/dist/lib/layout/absolute.js.map +7 -0
  828. package/dist/lib/layout/box.d.ts +19 -0
  829. package/dist/lib/layout/box.js +209 -0
  830. package/dist/lib/layout/box.js.map +7 -0
  831. package/dist/lib/layout/context.d.ts +13 -0
  832. package/dist/lib/layout/context.js +42 -0
  833. package/dist/lib/layout/context.js.map +7 -0
  834. package/dist/lib/layout/diagnostics.d.ts +15 -0
  835. package/dist/lib/layout/diagnostics.js +30 -0
  836. package/dist/lib/layout/diagnostics.js.map +7 -0
  837. package/dist/lib/layout/flex.d.ts +64 -0
  838. package/dist/lib/layout/flex.js +803 -0
  839. package/dist/lib/layout/flex.js.map +7 -0
  840. package/dist/lib/layout/flow.d.ts +53 -0
  841. package/dist/lib/layout/flow.js +400 -0
  842. package/dist/lib/layout/flow.js.map +7 -0
  843. package/dist/lib/layout/grid.d.ts +64 -0
  844. package/dist/lib/layout/grid.js +597 -0
  845. package/dist/lib/layout/grid.js.map +7 -0
  846. package/dist/lib/layout/measure.d.ts +19 -0
  847. package/dist/lib/layout/measure.js +144 -0
  848. package/dist/lib/layout/measure.js.map +7 -0
  849. package/dist/lib/layout/overlay.d.ts +42 -0
  850. package/dist/lib/layout/overlay.js +151 -0
  851. package/dist/lib/layout/overlay.js.map +7 -0
  852. package/dist/lib/layout/place-child.d.ts +12 -0
  853. package/dist/lib/layout/place-child.js +72 -0
  854. package/dist/lib/layout/place-child.js.map +7 -0
  855. package/dist/lib/layout/positioning-diagnostics.d.ts +3 -0
  856. package/dist/lib/layout/positioning-diagnostics.js +15 -0
  857. package/dist/lib/layout/positioning-diagnostics.js.map +7 -0
  858. package/dist/lib/layout/types.d.ts +78 -0
  859. package/dist/lib/manipulation/controller-types.d.ts +299 -0
  860. package/dist/lib/manipulation/controller.d.ts +57 -0
  861. package/dist/lib/manipulation/controller.js +464 -0
  862. package/dist/lib/manipulation/controller.js.map +7 -0
  863. package/dist/lib/manipulation/coordinates.d.ts +9 -0
  864. package/dist/lib/manipulation/coordinates.js +55 -0
  865. package/dist/lib/manipulation/coordinates.js.map +7 -0
  866. package/dist/lib/manipulation/degrees.d.ts +10 -0
  867. package/dist/lib/manipulation/degrees.js +9 -0
  868. package/dist/lib/manipulation/degrees.js.map +7 -0
  869. package/dist/lib/manipulation/frame.d.ts +24 -0
  870. package/dist/lib/manipulation/frame.js +101 -0
  871. package/dist/lib/manipulation/frame.js.map +7 -0
  872. package/dist/lib/manipulation/geometry.d.ts +4 -0
  873. package/dist/lib/manipulation/geometry.js +26 -0
  874. package/dist/lib/manipulation/geometry.js.map +7 -0
  875. package/dist/lib/manipulation/handles.d.ts +298 -0
  876. package/dist/lib/manipulation/handles.js +598 -0
  877. package/dist/lib/manipulation/handles.js.map +7 -0
  878. package/dist/lib/manipulation/manipulable.d.ts +65 -0
  879. package/dist/lib/manipulation/manipulable.js +47 -0
  880. package/dist/lib/manipulation/manipulable.js.map +7 -0
  881. package/dist/lib/manipulation/ownership.d.ts +15 -0
  882. package/dist/lib/manipulation/ownership.js +80 -0
  883. package/dist/lib/manipulation/ownership.js.map +7 -0
  884. package/dist/lib/manipulation/snap.d.ts +6 -0
  885. package/dist/lib/manipulation/snap.js +40 -0
  886. package/dist/lib/manipulation/snap.js.map +7 -0
  887. package/dist/lib/manipulation/solve.d.ts +2 -0
  888. package/dist/lib/manipulation/solve.js +563 -0
  889. package/dist/lib/manipulation/solve.js.map +7 -0
  890. package/dist/lib/manipulation/types.d.ts +178 -0
  891. package/dist/lib/mount-pibbl.d.ts +25 -0
  892. package/dist/lib/mount-pibbl.js +278 -0
  893. package/dist/lib/mount-pibbl.js.map +7 -0
  894. package/dist/lib/optional-services.d.ts +8 -0
  895. package/dist/lib/optional-services.js +11 -0
  896. package/dist/lib/optional-services.js.map +7 -0
  897. package/dist/lib/pibbl.d.ts +17 -0
  898. package/dist/lib/pibbl.js +21 -0
  899. package/dist/lib/pibbl.js.map +7 -0
  900. package/dist/lib/primitive-presentation.d.ts +24 -0
  901. package/dist/lib/primitive-presentation.js +102 -0
  902. package/dist/lib/primitive-presentation.js.map +7 -0
  903. package/dist/lib/render-layer/controller.d.ts +67 -0
  904. package/dist/lib/render-layer/controller.js +603 -0
  905. package/dist/lib/render-layer/controller.js.map +7 -0
  906. package/dist/lib/render-layer/define-render-layer.d.ts +17 -0
  907. package/dist/lib/render-layer/define-render-layer.js +90 -0
  908. package/dist/lib/render-layer/define-render-layer.js.map +7 -0
  909. package/dist/lib/render-layer/types.d.ts +315 -0
  910. package/dist/lib/render-target.d.ts +27 -0
  911. package/dist/lib/render-target.js +118 -0
  912. package/dist/lib/render-target.js.map +7 -0
  913. package/dist/lib/render-transaction.d.ts +10 -0
  914. package/dist/lib/render-transaction.js +46 -0
  915. package/dist/lib/render-transaction.js.map +7 -0
  916. package/dist/lib/render.d.ts +3 -0
  917. package/dist/lib/render.js +385 -0
  918. package/dist/lib/render.js.map +7 -0
  919. package/dist/lib/scheduler/realm-scheduler.d.ts +52 -0
  920. package/dist/lib/scheduler/realm-scheduler.js +964 -0
  921. package/dist/lib/scheduler/realm-scheduler.js.map +7 -0
  922. package/dist/lib/scheduler/renderer-participant.d.ts +257 -0
  923. package/dist/lib/scheduler/renderer-participant.js +216 -0
  924. package/dist/lib/scheduler/renderer-participant.js.map +7 -0
  925. package/dist/lib/scheduler/simulation-participant.d.ts +103 -0
  926. package/dist/lib/scheduler/simulation-participant.js +229 -0
  927. package/dist/lib/scheduler/simulation-participant.js.map +7 -0
  928. package/dist/lib/scheduler/testing.d.ts +56 -0
  929. package/dist/lib/scheduler/testing.js +71 -0
  930. package/dist/lib/scheduler/testing.js.map +7 -0
  931. package/dist/lib/scheduler/types.d.ts +103 -0
  932. package/dist/lib/signals/edge.d.ts +44 -0
  933. package/dist/lib/signals/edge.js +245 -0
  934. package/dist/lib/signals/edge.js.map +7 -0
  935. package/dist/lib/signals/graph.d.ts +220 -0
  936. package/dist/lib/signals/graph.js +1035 -0
  937. package/dist/lib/signals/graph.js.map +7 -0
  938. package/dist/lib/signals/input-provision.d.ts +3 -0
  939. package/dist/lib/signals/input-provision.js +67 -0
  940. package/dist/lib/signals/input-provision.js.map +7 -0
  941. package/dist/lib/signals/render-consumer.d.ts +21 -0
  942. package/dist/lib/signals/render-consumer.js +218 -0
  943. package/dist/lib/signals/render-consumer.js.map +7 -0
  944. package/dist/lib/signals/resolve-signal-value.d.ts +10 -0
  945. package/dist/lib/signals/resolve-signal-value.js +17 -0
  946. package/dist/lib/signals/resolve-signal-value.js.map +7 -0
  947. package/dist/lib/signals/types.d.ts +80 -0
  948. package/dist/lib/style/diagnostics.d.ts +83 -0
  949. package/dist/lib/style/diagnostics.js +63 -0
  950. package/dist/lib/style/diagnostics.js.map +7 -0
  951. package/dist/lib/style/empty-style.d.ts +3 -0
  952. package/dist/lib/style/empty-style.js +5 -0
  953. package/dist/lib/style/empty-style.js.map +7 -0
  954. package/dist/lib/style/filter-types.d.ts +243 -0
  955. package/dist/lib/style/filter-types.js +5 -0
  956. package/dist/lib/style/filter-types.js.map +7 -0
  957. package/dist/lib/style/filter.d.ts +7 -0
  958. package/dist/lib/style/filter.js +50 -0
  959. package/dist/lib/style/filter.js.map +7 -0
  960. package/dist/lib/style/normalize.d.ts +18 -0
  961. package/dist/lib/style/normalize.js +50 -0
  962. package/dist/lib/style/normalize.js.map +7 -0
  963. package/dist/lib/style/positioning.d.ts +32 -0
  964. package/dist/lib/style/positioning.js +81 -0
  965. package/dist/lib/style/positioning.js.map +7 -0
  966. package/dist/lib/style/resolve-built-in.d.ts +6 -0
  967. package/dist/lib/style/resolve-built-in.js +58 -0
  968. package/dist/lib/style/resolve-built-in.js.map +7 -0
  969. package/dist/lib/style/resolve-dispatch.d.ts +20 -0
  970. package/dist/lib/style/resolve-dispatch.js +167 -0
  971. package/dist/lib/style/resolve-dispatch.js.map +7 -0
  972. package/dist/lib/style/resolve-length.d.ts +16 -0
  973. package/dist/lib/style/resolve-length.js +54 -0
  974. package/dist/lib/style/resolve-length.js.map +7 -0
  975. package/dist/lib/style/responsive.d.ts +31 -0
  976. package/dist/lib/style/responsive.js +172 -0
  977. package/dist/lib/style/responsive.js.map +7 -0
  978. package/dist/lib/style/types.d.ts +338 -0
  979. package/dist/lib/surface/resolve-surface.d.ts +4 -0
  980. package/dist/lib/surface/resolve-surface.js +184 -0
  981. package/dist/lib/surface/resolve-surface.js.map +7 -0
  982. package/dist/lib/surface/root-surface.d.ts +7 -0
  983. package/dist/lib/surface/root-surface.js +171 -0
  984. package/dist/lib/surface/root-surface.js.map +7 -0
  985. package/dist/lib/surface/transform.d.ts +4 -0
  986. package/dist/lib/surface/transform.js +16 -0
  987. package/dist/lib/surface/transform.js.map +7 -0
  988. package/dist/lib/surface/types.d.ts +132 -0
  989. package/dist/lib/teardowns.d.ts +14 -0
  990. package/dist/lib/teardowns.js +50 -0
  991. package/dist/lib/teardowns.js.map +7 -0
  992. package/dist/lib/textures/texture-protocol.d.ts +124 -0
  993. package/dist/lib/textures/texture-protocol.js +40 -0
  994. package/dist/lib/textures/texture-protocol.js.map +7 -0
  995. package/dist/lib/textures/texture.d.ts +170 -0
  996. package/dist/lib/textures/texture.js +385 -0
  997. package/dist/lib/textures/texture.js.map +7 -0
  998. package/dist/lib/transitions/bifrost.d.ts +47 -0
  999. package/dist/lib/transitions/bifrost.js +91 -0
  1000. package/dist/lib/transitions/bifrost.js.map +7 -0
  1001. package/dist/lib/transitions/binding.d.ts +14 -0
  1002. package/dist/lib/transitions/binding.js +35 -0
  1003. package/dist/lib/transitions/binding.js.map +7 -0
  1004. package/dist/lib/transitions/capture.d.ts +21 -0
  1005. package/dist/lib/transitions/capture.js +91 -0
  1006. package/dist/lib/transitions/capture.js.map +7 -0
  1007. package/dist/lib/transitions/common.d.ts +130 -0
  1008. package/dist/lib/transitions/common.js +57 -0
  1009. package/dist/lib/transitions/common.js.map +7 -0
  1010. package/dist/lib/transitions/define-transition.d.ts +64 -0
  1011. package/dist/lib/transitions/define-transition.js +31 -0
  1012. package/dist/lib/transitions/define-transition.js.map +7 -0
  1013. package/dist/lib/transitions/embers-physics.d.ts +114 -0
  1014. package/dist/lib/transitions/embers-physics.js +161 -0
  1015. package/dist/lib/transitions/embers-physics.js.map +7 -0
  1016. package/dist/lib/transitions/embers.d.ts +67 -0
  1017. package/dist/lib/transitions/embers.js +196 -0
  1018. package/dist/lib/transitions/embers.js.map +7 -0
  1019. package/dist/lib/transitions/fade.d.ts +41 -0
  1020. package/dist/lib/transitions/fade.js +31 -0
  1021. package/dist/lib/transitions/fade.js.map +7 -0
  1022. package/dist/lib/transitions/hologram.d.ts +47 -0
  1023. package/dist/lib/transitions/hologram.js +94 -0
  1024. package/dist/lib/transitions/hologram.js.map +7 -0
  1025. package/dist/lib/transitions/wasm/bifrost-bytes.d.ts +1 -0
  1026. package/dist/lib/transitions/wasm/bifrost-bytes.js +5 -0
  1027. package/dist/lib/transitions/wasm/bifrost-bytes.js.map +7 -0
  1028. package/dist/lib/transitions/wasm/bifrost-kernel.d.ts +1 -0
  1029. package/dist/lib/transitions/wasm/bifrost-kernel.js +27 -0
  1030. package/dist/lib/transitions/wasm/bifrost-kernel.js.map +7 -0
  1031. package/dist/lib/transitions/wasm/embers-bytes.d.ts +1 -0
  1032. package/dist/lib/transitions/wasm/embers-bytes.js +5 -0
  1033. package/dist/lib/transitions/wasm/embers-bytes.js.map +7 -0
  1034. package/dist/lib/transitions/wasm/hologram-bytes.d.ts +1 -0
  1035. package/dist/lib/transitions/wasm/hologram-bytes.js +5 -0
  1036. package/dist/lib/transitions/wasm/hologram-bytes.js.map +7 -0
  1037. package/dist/lib/transitions/wasm/kernel.d.ts +7 -0
  1038. package/dist/lib/transitions/wasm/kernel.js +26 -0
  1039. package/dist/lib/transitions/wasm/kernel.js.map +7 -0
  1040. package/dist/lib/types.d.ts +570 -0
  1041. package/dist/lib/update.d.ts +8 -0
  1042. package/dist/lib/update.js +20 -0
  1043. package/dist/lib/update.js.map +7 -0
  1044. package/dist/lib/util/get-2d-context.d.ts +2 -0
  1045. package/dist/lib/util/get-2d-context.js +11 -0
  1046. package/dist/lib/util/get-2d-context.js.map +7 -0
  1047. package/dist/lib/util/get-mouse-coordinates.d.ts +2 -0
  1048. package/dist/lib/util/get-mouse-coordinates.js +32 -0
  1049. package/dist/lib/util/get-mouse-coordinates.js.map +7 -0
  1050. package/dist/lib/util/is-hit.d.ts +11 -0
  1051. package/dist/lib/util/is-hit.js +52 -0
  1052. package/dist/lib/util/is-hit.js.map +7 -0
  1053. package/dist/lib/util/is-transparent.d.ts +1 -0
  1054. package/dist/lib/util/is-transparent.js +8 -0
  1055. package/dist/lib/util/is-transparent.js.map +7 -0
  1056. package/dist/lib/util/pixel-grid-adjustments.d.ts +8 -0
  1057. package/dist/lib/util/pixel-grid-adjustments.js +28 -0
  1058. package/dist/lib/util/pixel-grid-adjustments.js.map +7 -0
  1059. package/dist/lib/util/push-clipping-path.d.ts +6 -0
  1060. package/dist/lib/util/push-clipping-path.js +28 -0
  1061. package/dist/lib/util/push-clipping-path.js.map +7 -0
  1062. package/dist/lib/util/wire-common-events.d.ts +2 -0
  1063. package/dist/lib/util/wire-common-events.js +15 -0
  1064. package/dist/lib/util/wire-common-events.js.map +7 -0
  1065. package/dist/types.d.ts +1 -0
  1066. package/dist/types.js +1 -0
  1067. package/dist/types.js.map +7 -0
  1068. package/dist/types.mjs +1 -0
  1069. package/package.json +149 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/lib/focus/focus-manager.ts"],
4
+ "sourcesContent": ["import type { PibblEventTargetRegistration } from \"../events/registrations.js\";\nimport { GLOBAL_STATE } from \"../global-state.js\";\nimport type {\n PibblEvent,\n PibblEventType,\n PibblKeyboardEvent,\n} from \"../events/types.js\";\nimport { Teardowns } from \"../teardowns.js\";\nimport type {\n PibblEventRoot,\n PibblFocusPressDefaultInput,\n PibblFocusTouchDefaultContact,\n PibblFocusTouchDefaultInput,\n PibblFocusPolicyBridge,\n PibblInstance,\n PibblRenderTransaction,\n} from \"../types.js\";\nimport { resolveTargetRootBounds } from \"./geometry.js\";\nimport {\n mountDOMFocusHost,\n type PibblMountedDOMFocusHost,\n} from \"./dom-focus-host.js\";\nimport {\n applyDirectionalNavigationDefault,\n applyKeyboardActivationDefault,\n applyTabDefault,\n} from \"./keyboard-defaults.js\";\nimport { transitionLogicalFocus } from \"./focus-events.js\";\nimport type { HtmlFocusRegion } from \"./html-focus-region.js\";\nimport {\n isHtmlFocusCandidate,\n type PibblDirectionalBoundary,\n type PibblFocusCandidate,\n type PibblHtmlFocusCandidate,\n type PibblNavigationCandidate,\n} from \"./types.js\";\nimport { getManagedTabStops } from \"./dom-tab-stops.js\";\n\nconst UNFOCUSED_SNAPSHOT = Object.freeze({\n isFocused: false,\n isFocusVisible: false,\n});\n\nconst retainedDirectionalBoundaries = new WeakMap<\n PibblEventTargetRegistration,\n DirectionalBoundary\n>();\nconst coordinators = new WeakMap<PibblEventRoot, FocusManagerCoordinator>();\nconst managerOwners = new WeakMap<PibblFocusManager, PibblInstance>();\n\ninterface PendingCandidate {\n readonly target: PibblEventTargetRegistration;\n readonly directionalBoundary: DirectionalBoundary | undefined;\n}\n\ninterface PendingHtmlRegion {\n readonly region: HtmlFocusRegion;\n readonly directionalBoundary: DirectionalBoundary | undefined;\n}\n\ninterface PendingFrame {\n readonly entries: (PendingCandidate | PendingHtmlRegion)[];\n readonly targets: PendingCandidate[];\n readonly htmlRegions: PendingHtmlRegion[];\n readonly observedTargets: Set<PibblEventTargetRegistration>;\n readonly observedHtmlRegions: Set<HtmlFocusRegion>;\n readonly ineligibleTargets: Set<PibblEventTargetRegistration>;\n readonly boundaries: Set<DirectionalBoundary>;\n}\n\ninterface RepresentedPress {\n readonly x: number;\n readonly y: number;\n readonly timeStamp: number;\n}\n\ninterface RepresentedPointerPress extends RepresentedPress {\n suppressMouse: boolean;\n suppressTouch: boolean;\n}\n\nconst COMPATIBILITY_PRESS_WINDOW_MS = 1_500;\n\nclass DirectionalBoundary implements PibblDirectionalBoundary {\n private committedCandidates: readonly PibblNavigationCandidate[] =\n Object.freeze([]);\n\n constructor(readonly owner: PibblInstance) {}\n\n get candidates(): readonly PibblNavigationCandidate[] {\n return this.committedCandidates;\n }\n\n commit(candidates: readonly PibblNavigationCandidate[]): void {\n this.committedCandidates = candidates;\n }\n}\n\ninterface FocusTransactionState {\n readonly prior: PibblFocusManager | undefined;\n readonly replayedManagers: Set<PibblFocusManager>;\n prepared: PibblFocusManager | undefined;\n claimed: PibblFocusManager | undefined;\n finished: boolean;\n restored: PibblFocusManager | undefined;\n}\n\nclass FocusManagerCoordinator {\n private readonly managers = new Set<PibblFocusManager>();\n private readonly transactions = new WeakMap<\n PibblRenderTransaction,\n FocusTransactionState\n >();\n private active: PibblFocusManager | undefined;\n private domFocusHost: PibblMountedDOMFocusHost | undefined;\n private domFocusHostTeardowns: Teardowns | undefined;\n private disposed = false;\n\n constructor(private readonly eventRoot: PibblEventRoot) {\n eventRoot.rootInstance?.mainTeardowns.add(() => this.dispose());\n }\n\n add(manager: PibblFocusManager): void {\n if (this.disposed) {\n throw new Error(\"Pibbl focus manager root is disposed.\");\n }\n this.ensureDOMFocusHost();\n this.managers.add(manager);\n const transaction = this.eventRoot.renderTransaction;\n if (transaction) {\n const state = this.stateFor(transaction);\n state.prepared = manager;\n // Reconciliation mounts every descriptor before declaration-order entry.\n // Expose that transaction-local manager so a same-element directional\n // descriptor can enter first without making the claim permanent.\n this.eventRoot.focusPolicy = manager;\n }\n }\n\n claim(manager: PibblFocusManager): void {\n const transaction = this.eventRoot.renderTransaction;\n if (!transaction) {\n if (this.active && this.active !== manager) {\n throw duplicateManagerError();\n }\n this.setActive(manager);\n return;\n }\n\n const state = this.stateFor(transaction);\n if (state.claimed && state.claimed !== manager) {\n throw duplicateManagerError();\n }\n state.claimed = manager;\n this.eventRoot.focusPolicy = manager;\n }\n\n beforeNativeDispatch(\n type: PibblEventType,\n event: Event,\n ): PibblFocusManager | undefined {\n const manager = this.active;\n const routeLogicalEvent =\n this.domFocusHost?.beforeNativeDispatch(type, event) ?? true;\n return routeLogicalEvent && manager && !manager.isDestroyed\n ? manager\n : undefined;\n }\n\n syncDOMFocusHost(manager: PibblFocusManager): void {\n if (this.active === manager) {\n this.domFocusHost?.syncCandidateAvailability(manager.hasFocusCandidates);\n this.domFocusHost?.syncHtmlRegions(manager.htmlFocusRegions);\n }\n }\n\n focusCanvasFromPress(manager: PibblFocusManager): void {\n if (this.active === manager) this.domFocusHost?.focusFromPress();\n }\n\n claimRetainedManagers(instance: PibblInstance): readonly PibblFocusManager[] {\n const retained = Array.from(this.managers).filter((manager) => {\n const owner = managerOwners.get(manager);\n return (\n !manager.isDestroyed &&\n !manager.ownerWasReleased &&\n owner !== undefined &&\n isInstanceWithin(owner, instance)\n );\n });\n const transaction = this.eventRoot.renderTransaction;\n if (!transaction) {\n for (const manager of retained) this.claim(manager);\n return retained;\n }\n\n const state = this.stateFor(transaction);\n for (const manager of retained) {\n if (state.replayedManagers.has(manager)) continue;\n state.replayedManagers.add(manager);\n this.claim(manager);\n }\n return retained;\n }\n\n release(manager: PibblFocusManager): void {\n if (manager.isDestroyed) return;\n manager.markOwnerReleased();\n const transaction = this.eventRoot.renderTransaction;\n if (transaction) {\n const state = this.stateFor(transaction);\n if (!state.finished) return;\n }\n if (this.active === manager) {\n this.setActive(undefined);\n }\n this.destroy(manager);\n }\n\n private stateFor(transaction: PibblRenderTransaction): FocusTransactionState {\n const existing = this.transactions.get(transaction);\n if (existing) return existing;\n const state: FocusTransactionState = {\n prior: this.active,\n replayedManagers: new Set(),\n prepared: undefined,\n claimed: undefined,\n finished: false,\n restored: undefined,\n };\n this.transactions.set(transaction, state);\n transaction.onFinish((success) => this.finishTransaction(state, success));\n return state;\n }\n\n private finishTransaction(\n state: FocusTransactionState,\n success: boolean,\n ): void {\n if (state.finished) return;\n state.finished = true;\n if (success) {\n if (state.claimed) {\n this.active = state.claimed;\n } else if (this.active?.ownerWasReleased) {\n this.active = undefined;\n }\n this.eventRoot.focusPolicy = this.active;\n for (const manager of Array.from(this.managers)) {\n if (manager !== this.active && manager.ownerWasReleased) {\n this.destroy(manager);\n }\n }\n this.domFocusHost?.setManager(this.active);\n return;\n }\n\n const attemptedReplacement =\n (state.claimed && state.claimed !== state.prior) ||\n (state.prepared && state.prepared !== state.prior);\n const restored =\n state.prior && attemptedReplacement && !state.prior.isDestroyed\n ? state.prior\n : undefined;\n state.restored = restored;\n this.active = restored;\n this.eventRoot.focusPolicy = restored;\n for (const manager of Array.from(this.managers)) {\n if (manager !== restored) this.destroy(manager);\n }\n this.domFocusHost?.setManager(restored);\n }\n\n private destroy(manager: PibblFocusManager): void {\n this.managers.delete(manager);\n manager.destroyFromCoordinator();\n if (this.managers.size === 0) this.disposeDOMFocusHost();\n }\n\n private ensureDOMFocusHost(): void {\n if (this.domFocusHost) return;\n const canvas = this.eventRoot.canvas;\n if (!canvas) {\n throw new Error(\n \"FocusManagement requires an HTMLCanvasElement root; an OffscreenCanvas has no DOM focus host.\",\n );\n }\n const teardowns = new Teardowns();\n try {\n this.domFocusHost = mountDOMFocusHost(canvas, this.eventRoot, teardowns);\n this.domFocusHostTeardowns = teardowns;\n } catch (error) {\n teardowns.execute();\n throw error;\n }\n }\n\n private disposeDOMFocusHost(): void {\n this.domFocusHost = undefined;\n this.domFocusHostTeardowns?.execute();\n this.domFocusHostTeardowns = undefined;\n }\n\n private setActive(manager: PibblFocusManager | undefined): void {\n this.active = manager;\n this.eventRoot.focusPolicy = manager;\n this.domFocusHost?.setManager(manager);\n }\n\n private dispose(): void {\n if (this.disposed) return;\n this.disposed = true;\n this.active = undefined;\n this.eventRoot.focusPolicy = undefined;\n for (const manager of Array.from(this.managers)) this.destroy(manager);\n this.disposeDOMFocusHost();\n }\n}\n\nexport class PibblFocusManager implements PibblFocusPolicyBridge {\n private committedCandidates: readonly PibblFocusCandidate[] = Object.freeze([]);\n private committedHtmlCandidates: readonly PibblHtmlFocusCandidate[] =\n Object.freeze([]);\n private committedNavigationCandidates: readonly PibblNavigationCandidate[] =\n Object.freeze([]);\n private committedBoundaries = new Set<DirectionalBoundary>();\n private pending: PendingFrame | undefined;\n private transactionalPending:\n | {\n readonly transaction: PibblRenderTransaction;\n readonly frame: PendingFrame;\n }\n | undefined;\n private directionalStack: DirectionalBoundary[] = [];\n private focusedTarget: PibblEventTargetRegistration | undefined;\n private focusedHtmlRegion: HtmlFocusRegion | undefined;\n private pendingHtmlFocusModality: \"keyboard\" | \"pointer\" | undefined;\n private focusVisible = false;\n private pendingSpaceTarget: PibblEventTargetRegistration | undefined;\n private pendingPressFocus:\n { readonly target: PibblEventTargetRegistration | undefined } | undefined;\n private readonly representedPointerPresses = new Map<\n number,\n RepresentedPointerPress\n >();\n private readonly representedTouchContacts = new Map<\n number,\n RepresentedPress\n >();\n private activeTouchIdentifiers = new Set<number>();\n private primaryTouchIdentifier: number | undefined;\n private touchSequenceActive = false;\n private touchMouseCompatibility: RepresentedPress | undefined;\n private focusRenderRevision = 0;\n private readonly layerFocusRenderRevisions = new WeakMap<\n PibblInstance,\n number\n >();\n private destroyed = false;\n private ownerReleased = false;\n private readonly coordinator: FocusManagerCoordinator;\n\n constructor(\n private readonly eventRoot: PibblEventRoot,\n owner: PibblInstance,\n ) {\n const canvas = eventRoot.canvas;\n if (!canvas) {\n throw new Error(\n \"FocusManagement requires an HTMLCanvasElement root; an OffscreenCanvas has no DOM focus host.\",\n );\n }\n managerOwners.set(this, owner);\n this.coordinator = getCoordinator(eventRoot);\n try {\n this.coordinator.add(this);\n } catch (error) {\n managerOwners.delete(this);\n throw error;\n }\n }\n\n get candidates(): readonly PibblFocusCandidate[] {\n return this.committedCandidates;\n }\n\n /** @internal Full source-order list including native HtmlBox regions. */\n get navigationCandidates(): readonly PibblNavigationCandidate[] {\n return this.committedNavigationCandidates;\n }\n\n get htmlFocusRegions(): readonly HtmlFocusRegion[] {\n return this.committedHtmlCandidates.map((candidate) => candidate.region);\n }\n\n get focusedNavigationCandidate(): PibblNavigationCandidate | undefined {\n if (this.focusedHtmlRegion) {\n return this.committedHtmlCandidates.find(\n (candidate) => candidate.region === this.focusedHtmlRegion,\n );\n }\n return this.focusedTarget\n ? this.committedCandidates.find(\n (candidate) => candidate.target === this.focusedTarget,\n )\n : undefined;\n }\n\n /** @internal Resolves dynamic native eligibility at each navigation boundary. */\n isNavigationCandidateFocusable(candidate: PibblNavigationCandidate): boolean {\n return isHtmlFocusCandidate(candidate)\n ? Boolean(\n candidate.region.active &&\n candidate.region.content &&\n getManagedTabStops(candidate.region.content).length,\n )\n : Boolean(this.liveFocusCandidate(candidate.target));\n }\n\n /** Includes a successful render's collected candidates before commit callbacks settle. */\n get hasFocusCandidates(): boolean {\n return (\n this.committedNavigationCandidates.length > 0 ||\n (this.transactionalPending?.frame.targets.length ?? 0) +\n (this.transactionalPending?.frame.htmlRegions.length ?? 0) >\n 0\n );\n }\n\n get isDestroyed(): boolean {\n return this.destroyed;\n }\n\n get ownerWasReleased(): boolean {\n return this.ownerReleased;\n }\n\n get canvas(): HTMLCanvasElement {\n const canvas = this.eventRoot.canvas;\n if (!canvas) throw new Error(\"Pibbl focus manager has no DOM Canvas host.\");\n return canvas;\n }\n\n get logicalFocusTarget(): PibblEventTargetRegistration | undefined {\n return this.focusedTarget;\n }\n\n get logicalFocusVisible(): boolean {\n return this.focusVisible;\n }\n\n beginCollection(): void {\n this.assertLive();\n if (this.pending) {\n throw new Error(\"FocusManagement cannot enter twice on one Pibbl root.\");\n }\n this.coordinator.claim(this);\n this.pending = {\n entries: [],\n targets: [],\n htmlRegions: [],\n observedTargets: new Set(),\n observedHtmlRegions: new Set(),\n ineligibleTargets: new Set(),\n boundaries: new Set(this.directionalStack),\n };\n }\n\n finishCollection(success: boolean): void {\n const pending = this.pending;\n this.pending = undefined;\n if (!pending || !success || this.destroyed) return;\n\n const transaction = this.eventRoot.renderTransaction;\n if (transaction) {\n this.transactionalPending = { transaction, frame: pending };\n transaction.onFinish((transactionSucceeded) => {\n if (this.transactionalPending?.transaction === transaction) {\n this.transactionalPending = undefined;\n }\n if (transactionSucceeded && !this.destroyed) {\n this.commitCollection(pending);\n }\n });\n return;\n }\n\n this.commitCollection(pending);\n }\n\n private commitCollection(pending: PendingFrame): void {\n const collected: PibblNavigationCandidate[] = [];\n for (const [sourceIndex, observed] of pending.entries.entries()) {\n if (\"target\" in observed) {\n const target = observed.target;\n collected.push(\n Object.freeze({\n target,\n sourceIndex,\n directionalBoundary: observed.directionalBoundary,\n rootBounds: resolveTargetRootBounds(target),\n }) satisfies PibblFocusCandidate,\n );\n continue;\n }\n const region = observed.region;\n if (region.active && region.content)\n collected.push(\n Object.freeze({\n region,\n sourceIndex,\n directionalBoundary: observed.directionalBoundary,\n rootBounds: region.rootBounds,\n }) satisfies PibblHtmlFocusCandidate,\n );\n }\n const navigation = Object.freeze(collected);\n this.commitNavigationCandidates(navigation, pending.boundaries);\n const candidates = navigation.filter(\n (candidate): candidate is PibblFocusCandidate =>\n !isHtmlFocusCandidate(candidate),\n );\n for (const candidate of candidates) {\n if (candidate.directionalBoundary) {\n retainedDirectionalBoundaries.set(\n candidate.target,\n asDirectionalBoundary(candidate.directionalBoundary),\n );\n } else {\n retainedDirectionalBoundaries.delete(candidate.target);\n }\n }\n }\n\n observeTarget(target: PibblEventTargetRegistration): void {\n const pending = this.pending;\n if (!pending) return;\n if (this.pendingSpaceTarget === target && !target.handlers.click) {\n this.cancelSpaceActivation();\n }\n if (!isKeyboardFocusable(target)) {\n this.markPendingIneligible(target);\n return;\n }\n pending.ineligibleTargets.delete(target);\n this.recordPendingTarget(target, this.currentDirectionalBoundary());\n }\n\n /** @internal Collects one published HtmlBox in source order. */\n observeHtmlRegion(region: HtmlFocusRegion): void {\n const pending = this.pending;\n if (!pending || pending.observedHtmlRegions.has(region)) return;\n pending.observedHtmlRegions.add(region);\n const observed = {\n region,\n directionalBoundary: this.currentDirectionalBoundary(),\n };\n pending.htmlRegions.push(observed);\n pending.entries.push(observed);\n }\n\n /** @internal Removes an unmounted HtmlBox without manufacturing a Canvas target. */\n removeHtmlFocusRegion(region: HtmlFocusRegion): void {\n if (this.pending?.observedHtmlRegions.delete(region)) {\n this.pending.htmlRegions.splice(\n this.pending.htmlRegions.findIndex((entry) => entry.region === region),\n 1,\n );\n const index = this.pending.entries.findIndex(\n (entry) => \"region\" in entry && entry.region === region,\n );\n if (index >= 0) this.pending.entries.splice(index, 1);\n return;\n }\n if (\n !this.committedHtmlCandidates.some(\n (candidate) => candidate.region === region,\n )\n )\n return;\n const wasFocused = this.focusedHtmlRegion === region;\n const canvas = this.eventRoot.canvas;\n const shouldReturnNativeFocus = Boolean(\n wasFocused &&\n canvas &&\n !this.eventRoot.rootInstance?.mainTeardowns.closed &&\n region.content?.contains(canvas.ownerDocument.activeElement),\n );\n this.commitNavigationCandidates(\n this.committedNavigationCandidates.filter(\n (candidate) =>\n !isHtmlFocusCandidate(candidate) || candidate.region !== region,\n ),\n this.committedBoundaries,\n );\n if (shouldReturnNativeFocus && canvas) {\n this.coordinator.focusCanvasFromPress(this);\n // Canvas focus synchronously enters the ordinary DOM host. A retired\n // region must leave no logical selection behind that would turn this\n // removal into an unintended navigation action.\n this.clearFocusState();\n }\n if (wasFocused) this.clearHtmlFocus(region);\n }\n\n /** @internal Deactivates retained DOM hosts while the root has no display area. */\n suspendHtmlRegions(): void {\n if (this.committedHtmlCandidates.length === 0) return;\n const focused = this.focusedHtmlRegion;\n const canvas = this.eventRoot.canvas;\n const shouldReturnNativeFocus = Boolean(\n focused &&\n canvas &&\n !this.eventRoot.rootInstance?.mainTeardowns.closed &&\n focused.content?.contains(canvas.ownerDocument.activeElement),\n );\n this.commitNavigationCandidates(\n this.committedNavigationCandidates.filter(\n (candidate) => !isHtmlFocusCandidate(candidate),\n ),\n this.committedBoundaries,\n );\n if (shouldReturnNativeFocus && canvas) {\n this.coordinator.focusCanvasFromPress(this);\n this.clearFocusState();\n }\n if (focused) this.clearHtmlFocus(focused);\n }\n\n observeTransactionalTarget(target: PibblEventTargetRegistration): void {\n const transactional = this.transactionalPending;\n if (\n !transactional ||\n transactional.transaction !== this.eventRoot.renderTransaction\n )\n return;\n const pending = transactional.frame;\n if (this.pendingSpaceTarget === target && !target.handlers.click) {\n this.cancelSpaceActivation();\n }\n if (!isKeyboardFocusable(target)) {\n pending.ineligibleTargets.add(target);\n const index = pending.targets.findIndex(\n (candidate) => candidate.target === target,\n );\n if (index !== -1) pending.targets.splice(index, 1);\n const entryIndex = pending.entries.findIndex(\n (entry) => \"target\" in entry && entry.target === target,\n );\n if (entryIndex !== -1) pending.entries.splice(entryIndex, 1);\n pending.observedTargets.delete(target);\n return;\n }\n pending.ineligibleTargets.delete(target);\n if (pending.observedTargets.has(target)) return;\n pending.observedTargets.add(target);\n const observed = {\n target,\n directionalBoundary: this.currentDirectionalBoundary(),\n };\n pending.targets.push(observed);\n pending.entries.push(observed);\n }\n\n removeTarget(target: PibblEventTargetRegistration): void {\n if (this.pendingSpaceTarget === target) this.cancelSpaceActivation();\n if (this.pending) {\n this.markPendingIneligible(target);\n return;\n }\n if (\n !this.committedCandidates.some((candidate) => candidate.target === target)\n ) {\n if (this.focusedTarget === target) this.clearFocusState();\n return;\n }\n this.commitRemovedTarget(target);\n }\n\n snapshot(target: PibblEventTargetRegistration) {\n if (\n this.ownerReleased ||\n this.pending?.ineligibleTargets.has(target) ||\n target !== this.focusedTarget\n ) {\n return UNFOCUSED_SNAPSHOT;\n }\n return Object.freeze({\n isFocused: true,\n isFocusVisible: this.focusVisible,\n });\n }\n\n resolveKeyboardTarget(): PibblEventTargetRegistration | undefined {\n const target = this.focusedTarget;\n if (target && this.pending?.ineligibleTargets.has(target)) return undefined;\n return target &&\n this.committedCandidates.some((candidate) => candidate.target === target)\n ? target\n : undefined;\n }\n\n afterDispatch(event: PibblEvent): void {\n if (event.type === \"keydown\") {\n applyTabDefault(this, event as PibblKeyboardEvent);\n }\n if (event.type === \"keydown\" || event.type === \"keyup\") {\n applyKeyboardActivationDefault(this, event as PibblKeyboardEvent);\n }\n if (event.type === \"keydown\") {\n applyDirectionalNavigationDefault(this, event as PibblKeyboardEvent);\n }\n }\n\n afterPressDispatch(input: PibblFocusPressDefaultInput): void {\n if (this.destroyed) return;\n this.purgeExpiredPresses(input.originalEvent.timeStamp);\n switch (input.source) {\n case \"pointer\":\n this.recordPointerPress(input);\n if (!pressWasPrevented(input)) this.applyPressFocus(input.target);\n return;\n case \"mouse\":\n if (this.consumeRepresentedMousePress(input)) return;\n if (!pressWasPrevented(input)) this.applyPressFocus(input.target);\n return;\n case \"touch\":\n if (this.consumeRepresentedTouchPress(input)) return;\n this.recordTouchFallback(input);\n if (!pressWasPrevented(input)) this.applyPressFocus(input.target);\n return;\n }\n }\n\n afterTouchDispatch(input: PibblFocusTouchDefaultInput): void {\n if (this.destroyed) return;\n this.purgeExpiredPresses(input.originalEvent.timeStamp);\n this.reconcileTouchContacts(input);\n if (input.type === \"touchstart\") {\n const primary = this.recordTouchStarts(input);\n if (!primary) return;\n this.afterPressDispatch({\n source: \"touch\",\n target: primary.target,\n event: undefined,\n originalEvent: input.originalEvent,\n x: primary.x,\n y: primary.y,\n touchIdentifier: primary.identifier,\n });\n return;\n }\n if (input.type === \"touchend\" || input.type === \"touchcancel\") {\n this.recordTouchTerminals(input);\n }\n }\n\n beforeNativeDispatch(\n type: PibblEventType,\n event: Event,\n ): PibblFocusManager | undefined {\n return this.coordinator.beforeNativeDispatch(type, event);\n }\n\n enterDOMFocus(backwards: boolean): void {\n if (this.destroyed) return;\n const pendingPress = this.pendingPressFocus;\n if (pendingPress) {\n this.pendingPressFocus = undefined;\n transitionLogicalFocus(\n this,\n this.liveFocusCandidate(pendingPress.target),\n \"pointer\",\n );\n return;\n }\n const candidates = backwards\n ? [...this.committedNavigationCandidates].reverse()\n : this.committedNavigationCandidates;\n for (const candidate of candidates) {\n if (this.focusNavigationCandidate(candidate, \"keyboard\", backwards))\n return;\n }\n }\n\n leaveDOMFocus(): void {\n if (this.destroyed) return;\n this.pendingPressFocus = undefined;\n transitionLogicalFocus(this, undefined, \"keyboard\");\n }\n\n activateDOMHost(): void {\n if (!this.destroyed) this.coordinator.syncDOMFocusHost(this);\n }\n\n focusNavigationCandidate(\n candidate: PibblNavigationCandidate | undefined,\n modality: \"keyboard\" | \"pointer\",\n backwards = false,\n ): boolean {\n if (!candidate) return false;\n if (!isHtmlFocusCandidate(candidate)) {\n this.focusedHtmlRegion && this.clearHtmlFocus(this.focusedHtmlRegion);\n transitionLogicalFocus(\n this,\n this.liveFocusCandidate(candidate.target),\n modality,\n );\n return true;\n }\n const region = candidate.region;\n const content = region.active ? region.content : undefined;\n const stops = content ? getManagedTabStops(content) : [];\n const destination = backwards ? stops.at(-1) : stops[0];\n if (!destination) return false;\n if (this.focusedTarget) transitionLogicalFocus(this, undefined, modality);\n this.adoptHtmlFocus(region, modality);\n this.pendingHtmlFocusModality = modality;\n destination.focus({ preventScroll: true });\n this.pendingHtmlFocusModality = undefined;\n return true;\n }\n\n /** @internal Called by the native region listeners after the browser focuses a descendant. */\n adoptNativeHtmlFocus(\n region: HtmlFocusRegion,\n modality: \"keyboard\" | \"pointer\" | undefined,\n ): void {\n if (\n !this.committedHtmlCandidates.some(\n (candidate) => candidate.region === region,\n )\n )\n return;\n const carriedModality =\n modality ?? (this.focusVisible ? \"keyboard\" : \"pointer\");\n if (this.focusedTarget)\n transitionLogicalFocus(this, undefined, carriedModality);\n this.adoptHtmlFocus(\n region,\n this.pendingHtmlFocusModality ?? carriedModality,\n );\n }\n\n /** @internal Native blur settled outside a registered host. */\n clearNativeHtmlFocus(region: HtmlFocusRegion): void {\n if (this.focusedHtmlRegion === region) this.clearHtmlFocus(region);\n }\n\n /** @internal Reconciles a committed host list with the browser focus owner. */\n reconcileNativeHtmlFocus(region: HtmlFocusRegion | undefined): void {\n if (region) {\n this.adoptNativeHtmlFocus(region, undefined);\n } else if (this.focusedHtmlRegion) {\n this.clearHtmlFocus(this.focusedHtmlRegion);\n }\n }\n\n replayRetainedSubtree(instance: PibblInstance): void {\n const retainedManagers = this.coordinator.claimRetainedManagers(instance);\n const replayManager =\n retainedManagers.length === 1 ? retainedManagers[0] : this;\n replayManager.replayRetainedTargets(instance);\n }\n\n layerFocusRenderRevision(instance: PibblInstance): number | undefined {\n return this.ownerReleased\n ? undefined\n : this.layerFocusRenderRevisions.get(instance);\n }\n\n private replayRetainedTargets(instance: PibblInstance): void {\n // A cached Layer must replay the exact mixed source sequence from its last\n // successful render. Enumerating eventRoot.targets would lose HtmlBox\n // positions because native regions intentionally have no event target.\n const retained = this.committedNavigationCandidates.filter((candidate) =>\n isHtmlFocusCandidate(candidate)\n ? isInstanceWithin(candidate.region.owner, instance)\n : isInstanceWithin(candidate.target.owner, instance),\n );\n // Preserve the established Canvas-only replay behavior. A Canvas target\n // registration can be refreshed independently of its original collection\n // position; the mixed sequence is required only once native regions exist.\n if (!retained.some(isHtmlFocusCandidate)) {\n this.replayCanvasOnlyTargets(instance);\n return;\n }\n if (this.pending) {\n for (const candidate of retained) {\n const retainedBoundary = isHtmlFocusCandidate(candidate)\n ? candidate.directionalBoundary instanceof DirectionalBoundary &&\n isInstanceWithin(candidate.directionalBoundary.owner, instance)\n ? candidate.directionalBoundary\n : undefined\n : retainedDirectionalBoundaries.get(candidate.target);\n const directionalBoundary =\n retainedBoundary && isInstanceWithin(retainedBoundary.owner, instance)\n ? retainedBoundary\n : this.currentDirectionalBoundary();\n if (directionalBoundary) {\n this.pending.boundaries.add(directionalBoundary);\n }\n if (isHtmlFocusCandidate(candidate)) {\n const region = candidate.region;\n if (!region.active || !region.content) continue;\n if (!this.pending.observedHtmlRegions.has(region)) {\n this.pending.observedHtmlRegions.add(region);\n const observed = { region, directionalBoundary };\n this.pending.htmlRegions.push(observed);\n this.pending.entries.push(observed);\n }\n } else if (isKeyboardFocusable(candidate.target)) {\n this.recordPendingTarget(candidate.target, directionalBoundary);\n } else {\n this.markPendingIneligible(candidate.target);\n }\n }\n return;\n }\n\n if (retained.length === 0) return;\n const replayed = new Set(retained);\n const candidates = Object.freeze(\n this.committedNavigationCandidates.map((candidate) => {\n if (!replayed.has(candidate)) return candidate;\n return isHtmlFocusCandidate(candidate)\n ? Object.freeze({\n ...candidate,\n rootBounds: candidate.region.rootBounds,\n })\n : Object.freeze({\n ...candidate,\n rootBounds: resolveTargetRootBounds(candidate.target),\n });\n }),\n );\n this.commitNavigationCandidates(candidates, this.committedBoundaries);\n }\n\n private replayCanvasOnlyTargets(instance: PibblInstance): void {\n const targets: PibblEventTargetRegistration[] = [];\n collectRetainedTargets(instance, targets);\n if (this.pending) {\n for (const target of targets) {\n if (!isKeyboardFocusable(target)) {\n this.markPendingIneligible(target);\n continue;\n }\n const retainedBoundary = retainedDirectionalBoundaries.get(target);\n const directionalBoundary =\n retainedBoundary && isInstanceWithin(retainedBoundary.owner, instance)\n ? retainedBoundary\n : this.currentDirectionalBoundary();\n if (directionalBoundary)\n this.pending.boundaries.add(directionalBoundary);\n this.recordPendingTarget(target, directionalBoundary);\n }\n return;\n }\n const replayed = new Set(targets);\n if (\n !this.committedCandidates.some((candidate) =>\n replayed.has(candidate.target),\n )\n )\n return;\n const candidates = Object.freeze(\n this.committedCandidates.map((candidate) =>\n replayed.has(candidate.target)\n ? Object.freeze({\n ...candidate,\n rootBounds: resolveTargetRootBounds(candidate.target),\n })\n : candidate,\n ),\n );\n this.commitCandidates(candidates, this.committedBoundaries);\n }\n\n setFocusState(\n target: PibblEventTargetRegistration | undefined,\n focusVisible: boolean,\n ): void {\n if (\n target &&\n !this.committedCandidates.some((candidate) => candidate.target === target)\n ) {\n throw new Error(\n \"Pibbl logical focus target is not a live focus candidate.\",\n );\n }\n this.commitLogicalFocus(target, focusVisible);\n }\n\n liveFocusCandidate(\n target: PibblEventTargetRegistration | undefined,\n ): PibblEventTargetRegistration | undefined {\n return target?.live &&\n target.owner.eventRoot === this.eventRoot &&\n this.committedCandidates.some((candidate) => candidate.target === target)\n ? target\n : undefined;\n }\n\n commitLogicalFocus(\n target: PibblEventTargetRegistration | undefined,\n focusVisible: boolean,\n ): void {\n const nextFocusVisible = Boolean(target && focusVisible);\n if (\n target === this.focusedTarget &&\n nextFocusVisible === this.focusVisible\n ) {\n return;\n }\n const previous = this.focusedTarget;\n if (this.focusedTarget !== target) this.cancelSpaceActivation();\n this.focusedTarget = target;\n this.focusVisible = nextFocusVisible;\n const revision = ++this.focusRenderRevision;\n this.markFocusRenderLayers(previous, revision);\n this.markFocusRenderLayers(target, revision);\n }\n\n enterDirectionalBoundary(boundary: PibblDirectionalBoundary): void {\n const value = asDirectionalBoundary(boundary);\n this.directionalStack.push(value);\n this.pending?.boundaries.add(value);\n }\n\n exitDirectionalBoundary(boundary: PibblDirectionalBoundary): void {\n const value = asDirectionalBoundary(boundary);\n if (this.directionalStack.at(-1) !== value) {\n throw new Error(\"Pibbl directional boundary scope exited out of order.\");\n }\n this.directionalStack.pop();\n }\n\n private currentDirectionalBoundary(): DirectionalBoundary | undefined {\n return this.directionalStack.at(-1);\n }\n\n private markFocusRenderLayers(\n target: PibblEventTargetRegistration | undefined,\n revision: number,\n ): void {\n let instance = target?.owner;\n while (instance && instance !== this.eventRoot.rootInstance) {\n this.layerFocusRenderRevisions.set(instance, revision);\n instance = instance.parent\n ? GLOBAL_STATE.pibblInstances.get(instance.parent)\n : undefined;\n }\n }\n\n dispose(): void {\n if (this.ownerReleased || this.destroyed) return;\n this.coordinator.release(this);\n }\n\n markOwnerReleased(): void {\n this.ownerReleased = true;\n }\n\n destroyFromCoordinator(): void {\n if (this.destroyed) return;\n this.destroyed = true;\n managerOwners.delete(this);\n this.pending = undefined;\n this.directionalStack = [];\n this.pendingPressFocus = undefined;\n this.cancelSpaceActivation();\n this.representedPointerPresses.clear();\n this.representedTouchContacts.clear();\n this.activeTouchIdentifiers.clear();\n this.primaryTouchIdentifier = undefined;\n this.touchSequenceActive = false;\n this.touchMouseCompatibility = undefined;\n for (const boundary of this.committedBoundaries) {\n boundary.commit(Object.freeze([]));\n }\n this.committedBoundaries.clear();\n this.committedCandidates = Object.freeze([]);\n this.clearFocusState();\n }\n\n private recordPendingTarget(\n target: PibblEventTargetRegistration,\n directionalBoundary: DirectionalBoundary | undefined,\n ): void {\n const pending = this.pending;\n if (!pending || pending.observedTargets.has(target)) return;\n pending.observedTargets.add(target);\n const observed = { target, directionalBoundary };\n pending.targets.push(observed);\n pending.entries.push(observed);\n }\n\n private markPendingIneligible(target: PibblEventTargetRegistration): void {\n const pending = this.pending;\n if (!pending) return;\n pending.ineligibleTargets.add(target);\n if (!pending.observedTargets.delete(target)) return;\n for (let index = pending.targets.length - 1; index >= 0; index--) {\n if (pending.targets[index].target === target) {\n pending.targets.splice(index, 1);\n }\n }\n for (let index = pending.entries.length - 1; index >= 0; index--) {\n const entry = pending.entries[index];\n if (\"target\" in entry && entry.target === target)\n pending.entries.splice(index, 1);\n }\n }\n\n private commitCandidates(\n candidates: readonly PibblFocusCandidate[],\n boundaries: ReadonlySet<DirectionalBoundary>,\n ): void {\n const canvasByTarget = new Map(\n candidates.map((candidate) => [candidate.target, candidate]),\n );\n const navigation = this.committedNavigationCandidates\n .map((candidate) =>\n isHtmlFocusCandidate(candidate)\n ? candidate\n : (canvasByTarget.get(candidate.target) ?? candidate),\n )\n .filter(\n (candidate) =>\n isHtmlFocusCandidate(candidate) ||\n candidates.some((canvas) => canvas.target === candidate.target),\n );\n if (navigation.length === 0 && candidates.length > 0)\n navigation.push(...candidates);\n this.commitNavigationCandidates(Object.freeze(navigation), boundaries);\n }\n\n private commitNavigationCandidates(\n candidates: readonly PibblNavigationCandidate[],\n boundaries: ReadonlySet<DirectionalBoundary>,\n ): void {\n const pendingByBoundary = new Map<\n DirectionalBoundary,\n PibblNavigationCandidate[]\n >();\n for (const boundary of boundaries) pendingByBoundary.set(boundary, []);\n for (const candidate of candidates) {\n if (candidate.directionalBoundary instanceof DirectionalBoundary) {\n pendingByBoundary.get(candidate.directionalBoundary)?.push(candidate);\n }\n }\n\n // Freeze every replacement before exposing any one of them. Candidate\n // collection failures therefore leave every committed direct list intact.\n const committedByBoundary = new Map<\n DirectionalBoundary,\n readonly PibblNavigationCandidate[]\n >();\n for (const [boundary, directCandidates] of pendingByBoundary) {\n committedByBoundary.set(boundary, Object.freeze(directCandidates));\n }\n\n for (const boundary of this.committedBoundaries) {\n if (!committedByBoundary.has(boundary)) {\n boundary.commit(Object.freeze([]));\n }\n }\n for (const [boundary, directCandidates] of committedByBoundary) {\n boundary.commit(directCandidates);\n }\n this.committedBoundaries = new Set(committedByBoundary.keys());\n this.committedNavigationCandidates = candidates;\n this.committedCandidates = Object.freeze(\n candidates.filter(\n (candidate): candidate is PibblFocusCandidate =>\n !isHtmlFocusCandidate(candidate),\n ),\n );\n this.committedHtmlCandidates = Object.freeze(\n candidates.filter((candidate): candidate is PibblHtmlFocusCandidate =>\n isHtmlFocusCandidate(candidate),\n ),\n );\n if (\n this.focusedTarget &&\n !candidates.some(\n (candidate) =>\n !isHtmlFocusCandidate(candidate) &&\n candidate.target === this.focusedTarget,\n )\n ) {\n this.clearFocusState();\n }\n if (\n this.focusedHtmlRegion &&\n !this.committedHtmlCandidates.some(\n (candidate) => candidate.region === this.focusedHtmlRegion,\n )\n )\n this.clearHtmlFocus(this.focusedHtmlRegion);\n this.activateDOMHost();\n }\n\n private commitRemovedTarget(target: PibblEventTargetRegistration): void {\n const retained = this.committedCandidates.filter(\n (candidate) => candidate.target !== target,\n );\n const candidates = Object.freeze(\n retained.map((candidate, sourceIndex) =>\n Object.freeze({ ...candidate, sourceIndex }),\n ),\n );\n this.commitCandidates(candidates, this.committedBoundaries);\n }\n\n private clearFocusState(): void {\n this.cancelSpaceActivation();\n this.focusedTarget = undefined;\n this.focusVisible = false;\n }\n\n private adoptHtmlFocus(\n region: HtmlFocusRegion,\n modality: \"keyboard\" | \"pointer\",\n ): void {\n const visible = modality === \"keyboard\";\n if (this.focusedHtmlRegion === region && this.focusVisible === visible)\n return;\n const previous = this.focusedHtmlRegion;\n this.focusedHtmlRegion = region;\n this.focusVisible = visible;\n if (previous && previous !== region)\n this.notifyHtmlFocus(previous, false, false);\n this.notifyHtmlFocus(region, true, visible);\n }\n\n private clearHtmlFocus(region: HtmlFocusRegion): void {\n if (this.focusedHtmlRegion !== region) return;\n this.focusedHtmlRegion = undefined;\n this.focusVisible = false;\n this.notifyHtmlFocus(region, false, false);\n }\n\n private notifyHtmlFocus(\n region: HtmlFocusRegion,\n isFocusWithin: boolean,\n isFocusVisible: boolean,\n ): void {\n region.onFocusSnapshot?.(Object.freeze({ isFocusWithin, isFocusVisible }));\n }\n\n private applyPressFocus(\n requestedTarget: PibblEventTargetRegistration | undefined,\n ): void {\n const target = this.liveFocusCandidate(requestedTarget);\n const pending = { target };\n this.pendingPressFocus = pending;\n try {\n this.coordinator.focusCanvasFromPress(this);\n if (\n this.pendingPressFocus !== pending ||\n this.destroyed ||\n this.canvas.ownerDocument.activeElement !== this.canvas\n ) {\n return;\n }\n this.pendingPressFocus = undefined;\n transitionLogicalFocus(this, this.liveFocusCandidate(target), \"pointer\");\n } finally {\n if (this.pendingPressFocus === pending)\n this.pendingPressFocus = undefined;\n }\n }\n\n beginSpaceActivation(target: PibblEventTargetRegistration): void {\n this.pendingSpaceTarget = target;\n }\n\n hasPendingSpaceActivation(\n target: PibblEventTargetRegistration | undefined,\n ): boolean {\n return Boolean(target && this.pendingSpaceTarget === target);\n }\n\n consumeSpaceActivation(): PibblEventTargetRegistration | undefined {\n const target = this.pendingSpaceTarget;\n this.pendingSpaceTarget = undefined;\n return target;\n }\n\n cancelSpaceActivation(): void {\n this.pendingSpaceTarget = undefined;\n }\n\n private recordPointerPress(input: PibblFocusPressDefaultInput): void {\n if (input.pointerId === undefined) return;\n this.representedPointerPresses.set(input.pointerId, {\n x: input.x,\n y: input.y,\n timeStamp: input.originalEvent.timeStamp,\n suppressMouse: true,\n suppressTouch: input.pointerType === \"touch\",\n });\n }\n\n private consumeRepresentedMousePress(\n input: PibblFocusPressDefaultInput,\n ): boolean {\n for (const [pointerId, press] of this.representedPointerPresses) {\n if (!press.suppressMouse || !samePress(press, input)) continue;\n press.suppressMouse = false;\n if (!press.suppressTouch)\n this.representedPointerPresses.delete(pointerId);\n return true;\n }\n if (\n this.touchMouseCompatibility &&\n samePress(this.touchMouseCompatibility, input)\n ) {\n this.touchMouseCompatibility = undefined;\n return true;\n }\n return false;\n }\n\n private consumeRepresentedTouchPress(\n input: PibblFocusPressDefaultInput,\n ): boolean {\n const identifier = input.touchIdentifier;\n if (identifier === undefined) return false;\n const existing = this.representedTouchContacts.get(identifier);\n if (existing && samePress(existing, input)) return true;\n this.representedTouchContacts.set(identifier, pressRecord(input));\n\n for (const [pointerId, press] of this.representedPointerPresses) {\n if (!press.suppressTouch || !samePress(press, input)) continue;\n press.suppressTouch = false;\n if (!press.suppressMouse)\n this.representedPointerPresses.delete(pointerId);\n return true;\n }\n return false;\n }\n\n private recordTouchFallback(input: PibblFocusPressDefaultInput): void {\n this.touchMouseCompatibility = pressRecord(input);\n }\n\n private recordTouchStarts(\n input: PibblFocusTouchDefaultInput,\n ): PibblFocusTouchDefaultContact | undefined {\n let primary: PibblFocusTouchDefaultContact | undefined;\n for (const contact of input.changedContacts) {\n if (this.activeTouchIdentifiers.has(contact.identifier)) continue;\n if (!this.touchSequenceActive) {\n this.touchSequenceActive = true;\n this.primaryTouchIdentifier = contact.identifier;\n }\n if (contact.identifier === this.primaryTouchIdentifier) primary = contact;\n this.activeTouchIdentifiers.add(contact.identifier);\n }\n return primary;\n }\n\n private reconcileTouchContacts(input: PibblFocusTouchDefaultInput): void {\n const activeIdentifiers = new Set(input.activeIdentifiers);\n for (const identifier of this.activeTouchIdentifiers) {\n if (activeIdentifiers.has(identifier)) continue;\n this.activeTouchIdentifiers.delete(identifier);\n this.representedTouchContacts.delete(identifier);\n }\n\n const startingIdentifiers =\n input.type === \"touchstart\"\n ? new Set(input.changedContacts.map((contact) => contact.identifier))\n : undefined;\n for (const identifier of activeIdentifiers) {\n if (!startingIdentifiers?.has(identifier)) {\n this.activeTouchIdentifiers.add(identifier);\n }\n }\n\n if (this.activeTouchIdentifiers.size > 0) {\n this.touchSequenceActive = true;\n return;\n }\n this.touchSequenceActive = false;\n this.primaryTouchIdentifier = undefined;\n this.representedTouchContacts.clear();\n }\n\n private recordTouchTerminals(input: PibblFocusTouchDefaultInput): void {\n for (const contact of input.changedContacts) {\n this.activeTouchIdentifiers.delete(contact.identifier);\n this.representedTouchContacts.delete(contact.identifier);\n }\n if (this.activeTouchIdentifiers.size > 0) return;\n this.touchSequenceActive = false;\n this.primaryTouchIdentifier = undefined;\n this.representedTouchContacts.clear();\n }\n\n private purgeExpiredPresses(timeStamp: number): void {\n for (const [pointerId, press] of this.representedPointerPresses) {\n if (!recentPress(press, timeStamp)) {\n this.representedPointerPresses.delete(pointerId);\n }\n }\n for (const [identifier, press] of this.representedTouchContacts) {\n if (!recentPress(press, timeStamp)) {\n this.representedTouchContacts.delete(identifier);\n }\n }\n if (\n this.touchMouseCompatibility &&\n !recentPress(this.touchMouseCompatibility, timeStamp)\n ) {\n this.touchMouseCompatibility = undefined;\n }\n }\n\n private assertLive(): void {\n if (this.destroyed) throw new Error(\"Pibbl focus manager is disposed.\");\n }\n}\n\nfunction pressWasPrevented(input: PibblFocusPressDefaultInput): boolean {\n return input.event?.defaultPrevented ?? input.originalEvent.defaultPrevented;\n}\n\nfunction pressRecord(input: PibblFocusPressDefaultInput): RepresentedPress {\n return {\n x: input.x,\n y: input.y,\n timeStamp: input.originalEvent.timeStamp,\n };\n}\n\nfunction samePress(\n press: RepresentedPress,\n input: PibblFocusPressDefaultInput,\n): boolean {\n return (\n recentPress(press, input.originalEvent.timeStamp) &&\n Math.abs(press.x - input.x) <= 1 &&\n Math.abs(press.y - input.y) <= 1\n );\n}\n\nfunction recentPress(press: RepresentedPress, timeStamp: number): boolean {\n const elapsed = timeStamp - press.timeStamp;\n return elapsed >= 0 && elapsed <= COMPATIBILITY_PRESS_WINDOW_MS;\n}\n\nexport function createFocusManager(\n eventRoot: PibblEventRoot,\n owner: PibblInstance,\n): PibblFocusManager {\n return new PibblFocusManager(eventRoot, owner);\n}\n\nexport function requireFocusManager(eventRoot: PibblEventRoot): PibblFocusManager {\n const manager = eventRoot.focusPolicy;\n if (!(manager instanceof PibblFocusManager)) {\n throw new Error(\n \"KeyboardNavigation requires an active FocusManagement focus manager.\",\n );\n }\n return manager;\n}\n\nexport function createDirectionalBoundary(\n owner: PibblInstance,\n): PibblDirectionalBoundary {\n return new DirectionalBoundary(owner);\n}\n\nfunction getCoordinator(eventRoot: PibblEventRoot): FocusManagerCoordinator {\n let coordinator = coordinators.get(eventRoot);\n if (!coordinator) {\n coordinator = new FocusManagerCoordinator(eventRoot);\n coordinators.set(eventRoot, coordinator);\n }\n return coordinator;\n}\n\nfunction duplicateManagerError(): Error {\n return new Error(\n \"FocusManagement allows only one focus manager per Pibbl root.\",\n );\n}\n\nfunction asDirectionalBoundary(\n boundary: PibblDirectionalBoundary,\n): DirectionalBoundary {\n if (!(boundary instanceof DirectionalBoundary)) {\n throw new Error(\"Unknown Pibbl directional boundary.\");\n }\n return boundary;\n}\n\nfunction isKeyboardFocusable(target: PibblEventTargetRegistration): boolean {\n return (\n target.keyboardFocusable ??\n Boolean(\n target.handlers.click || target.handlers.keydown || target.handlers.keyup,\n )\n );\n}\n\nfunction collectRetainedTargets(\n instance: PibblInstance,\n targets: PibblEventTargetRegistration[],\n): void {\n if (instance.mainTeardowns.closed) return;\n for (const target of instance.eventRoot.targets) {\n if (\n target.live &&\n target.owner.eventRoot === instance.eventRoot &&\n !target.owner.mainTeardowns.closed &&\n isInstanceWithin(target.owner, instance)\n )\n targets.push(target);\n }\n}\n\nfunction isInstanceWithin(\n instance: PibblInstance,\n ancestor: PibblInstance,\n): boolean {\n let current: PibblInstance | undefined = instance;\n while (current) {\n if (current === ancestor) return true;\n current = current.parent\n ? GLOBAL_STATE.pibblInstances.get(current.parent)\n : undefined;\n }\n return false;\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,4 @@
1
+ import type { PibblEventTargetRegistration } from '../events/registrations.js';
2
+ import type { LayoutBox } from '../layout/types.js';
3
+ /** Converts one target-local navigation rectangle to root-logical space. */
4
+ export declare function resolveTargetRootBounds(target: PibblEventTargetRegistration): Readonly<LayoutBox> | undefined;
@@ -0,0 +1,64 @@
1
+ import { GLOBAL_STATE } from "../global-state.js";
2
+ import {
3
+ PibblPaintEntryKind
4
+ } from "../events/paint-entry.js";
5
+ function resolveTargetRootBounds(target) {
6
+ const bounds = target.keyboardNavigationBounds;
7
+ const points = target.keyboardNavigationPoints ?? (bounds ? [
8
+ { x: bounds.x, y: bounds.y },
9
+ { x: bounds.x + bounds.width, y: bounds.y },
10
+ { x: bounds.x, y: bounds.y + bounds.height },
11
+ { x: bounds.x + bounds.width, y: bounds.y + bounds.height }
12
+ ] : void 0);
13
+ if (!points?.length) return void 0;
14
+ const transform = resolveRootTransform(target);
15
+ if (!transform) return void 0;
16
+ const corners = points.map(
17
+ (point) => transform.transformPoint(new DOMPoint(point.x, point.y))
18
+ );
19
+ if (corners.some((point) => !Number.isFinite(point.x) || !Number.isFinite(point.y))) {
20
+ return void 0;
21
+ }
22
+ const xs = corners.map((point) => point.x);
23
+ const ys = corners.map((point) => point.y);
24
+ const left = Math.min(...xs);
25
+ const right = Math.max(...xs);
26
+ const top = Math.min(...ys);
27
+ const bottom = Math.max(...ys);
28
+ return Object.freeze({
29
+ x: left,
30
+ y: top,
31
+ width: right - left,
32
+ height: bottom - top
33
+ });
34
+ }
35
+ function resolveRootTransform(target) {
36
+ let owner = target.owner;
37
+ let transform = target.paintEntry?.transform ?? new DOMMatrix();
38
+ const root = owner.eventRoot.rootInstance;
39
+ if (!root) return void 0;
40
+ while (owner !== root) {
41
+ const parentCanvas = owner.parent;
42
+ if (!parentCanvas) return void 0;
43
+ const parent = GLOBAL_STATE.pibblInstances.get(parentCanvas);
44
+ if (!parent) return void 0;
45
+ const bridge = findNestedInstanceBridge(parent, owner);
46
+ if (!bridge) return void 0;
47
+ transform = bridge.transform.multiply(transform);
48
+ owner = parent;
49
+ }
50
+ return transform;
51
+ }
52
+ function findNestedInstanceBridge(parent, child) {
53
+ if (parent.mainTeardowns.closed || child.mainTeardowns.closed || child.parent !== parent.canvas || child.eventRoot !== parent.eventRoot) return void 0;
54
+ const focusBridge = child.focusParentBridge;
55
+ if (focusBridge?.instance === child) return focusBridge;
56
+ for (const entry of parent.paintEntries) {
57
+ if ((entry.paintKind === PibblPaintEntryKind.NestedInstance || entry.paintKind === PibblPaintEntryKind.Resolver) && entry.instance === child) return entry;
58
+ }
59
+ return void 0;
60
+ }
61
+ export {
62
+ resolveTargetRootBounds
63
+ };
64
+ //# sourceMappingURL=geometry.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/lib/focus/geometry.ts"],
4
+ "sourcesContent": ["import type { PibblEventTargetRegistration } from '../events/registrations.js';\nimport { GLOBAL_STATE } from '../global-state.js';\nimport type { LayoutBox } from '../layout/types.js';\nimport type { PibblInstance } from '../types.js';\nimport {\n PibblPaintEntryKind,\n type PibblNestedPaintEntry,\n} from '../events/paint-entry.js';\n\n/** Converts one target-local navigation rectangle to root-logical space. */\nexport function resolveTargetRootBounds(\n target: PibblEventTargetRegistration,\n): Readonly<LayoutBox> | undefined {\n const bounds = target.keyboardNavigationBounds;\n const points = target.keyboardNavigationPoints ?? (bounds ? [\n { x: bounds.x, y: bounds.y },\n { x: bounds.x + bounds.width, y: bounds.y },\n { x: bounds.x, y: bounds.y + bounds.height },\n { x: bounds.x + bounds.width, y: bounds.y + bounds.height },\n ] : undefined);\n if (!points?.length) return undefined;\n\n const transform = resolveRootTransform(target);\n if (!transform) return undefined;\n const corners = points.map(point =>\n transform.transformPoint(new DOMPoint(point.x, point.y))\n );\n if (corners.some(point => !Number.isFinite(point.x) || !Number.isFinite(point.y))) {\n return undefined;\n }\n\n const xs = corners.map(point => point.x);\n const ys = corners.map(point => point.y);\n const left = Math.min(...xs);\n const right = Math.max(...xs);\n const top = Math.min(...ys);\n const bottom = Math.max(...ys);\n return Object.freeze({\n x: left,\n y: top,\n width: right - left,\n height: bottom - top,\n });\n}\n\nfunction resolveRootTransform(\n target: PibblEventTargetRegistration,\n): DOMMatrix | undefined {\n let owner = target.owner;\n // Geometry-independent backend targets publish layer-local focus rectangles.\n // Their initial transform is identity; nested resolver bridges compose the\n // owning layer into root-logical space below.\n let transform = target.paintEntry?.transform ?? new DOMMatrix();\n const root = owner.eventRoot.rootInstance;\n if (!root) return undefined;\n\n while (owner !== root) {\n const parentCanvas = owner.parent;\n if (!parentCanvas) return undefined;\n const parent = GLOBAL_STATE.pibblInstances.get(parentCanvas);\n if (!parent) return undefined;\n const bridge = findNestedInstanceBridge(parent, owner);\n if (!bridge) return undefined;\n transform = bridge.transform.multiply(transform);\n owner = parent;\n }\n return transform;\n}\n\nfunction findNestedInstanceBridge(\n parent: PibblInstance,\n child: PibblInstance,\n): PibblNestedPaintEntry | undefined {\n if (\n parent.mainTeardowns.closed ||\n child.mainTeardowns.closed ||\n child.parent !== parent.canvas ||\n child.eventRoot !== parent.eventRoot\n ) return undefined;\n const focusBridge = child.focusParentBridge;\n if (focusBridge?.instance === child) return focusBridge;\n for (const entry of parent.paintEntries) {\n if (\n (entry.paintKind === PibblPaintEntryKind.NestedInstance ||\n entry.paintKind === PibblPaintEntryKind.Resolver) &&\n entry.instance === child\n ) return entry;\n }\n return undefined;\n}\n"],
5
+ "mappings": "AACA,SAAS,oBAAoB;AAG7B;AAAA,EACE;AAAA,OAEK;AAGA,SAAS,wBACd,QACiC;AACjC,QAAM,SAAS,OAAO;AACtB,QAAM,SAAS,OAAO,6BAA6B,SAAS;AAAA,IAC1D,EAAE,GAAG,OAAO,GAAG,GAAG,OAAO,EAAE;AAAA,IAC3B,EAAE,GAAG,OAAO,IAAI,OAAO,OAAO,GAAG,OAAO,EAAE;AAAA,IAC1C,EAAE,GAAG,OAAO,GAAG,GAAG,OAAO,IAAI,OAAO,OAAO;AAAA,IAC3C,EAAE,GAAG,OAAO,IAAI,OAAO,OAAO,GAAG,OAAO,IAAI,OAAO,OAAO;AAAA,EAC5D,IAAI;AACJ,MAAI,CAAC,QAAQ,OAAQ,QAAO;AAE5B,QAAM,YAAY,qBAAqB,MAAM;AAC7C,MAAI,CAAC,UAAW,QAAO;AACvB,QAAM,UAAU,OAAO;AAAA,IAAI,WACzB,UAAU,eAAe,IAAI,SAAS,MAAM,GAAG,MAAM,CAAC,CAAC;AAAA,EACzD;AACA,MAAI,QAAQ,KAAK,WAAS,CAAC,OAAO,SAAS,MAAM,CAAC,KAAK,CAAC,OAAO,SAAS,MAAM,CAAC,CAAC,GAAG;AACjF,WAAO;AAAA,EACT;AAEA,QAAM,KAAK,QAAQ,IAAI,WAAS,MAAM,CAAC;AACvC,QAAM,KAAK,QAAQ,IAAI,WAAS,MAAM,CAAC;AACvC,QAAM,OAAO,KAAK,IAAI,GAAG,EAAE;AAC3B,QAAM,QAAQ,KAAK,IAAI,GAAG,EAAE;AAC5B,QAAM,MAAM,KAAK,IAAI,GAAG,EAAE;AAC1B,QAAM,SAAS,KAAK,IAAI,GAAG,EAAE;AAC7B,SAAO,OAAO,OAAO;AAAA,IACnB,GAAG;AAAA,IACH,GAAG;AAAA,IACH,OAAO,QAAQ;AAAA,IACf,QAAQ,SAAS;AAAA,EACnB,CAAC;AACH;AAEA,SAAS,qBACP,QACuB;AACvB,MAAI,QAAQ,OAAO;AAInB,MAAI,YAAY,OAAO,YAAY,aAAa,IAAI,UAAU;AAC9D,QAAM,OAAO,MAAM,UAAU;AAC7B,MAAI,CAAC,KAAM,QAAO;AAElB,SAAO,UAAU,MAAM;AACrB,UAAM,eAAe,MAAM;AAC3B,QAAI,CAAC,aAAc,QAAO;AAC1B,UAAM,SAAS,aAAa,eAAe,IAAI,YAAY;AAC3D,QAAI,CAAC,OAAQ,QAAO;AACpB,UAAM,SAAS,yBAAyB,QAAQ,KAAK;AACrD,QAAI,CAAC,OAAQ,QAAO;AACpB,gBAAY,OAAO,UAAU,SAAS,SAAS;AAC/C,YAAQ;AAAA,EACV;AACA,SAAO;AACT;AAEA,SAAS,yBACP,QACA,OACmC;AACnC,MACE,OAAO,cAAc,UACrB,MAAM,cAAc,UACpB,MAAM,WAAW,OAAO,UACxB,MAAM,cAAc,OAAO,UAC3B,QAAO;AACT,QAAM,cAAc,MAAM;AAC1B,MAAI,aAAa,aAAa,MAAO,QAAO;AAC5C,aAAW,SAAS,OAAO,cAAc;AACvC,SACG,MAAM,cAAc,oBAAoB,kBACvC,MAAM,cAAc,oBAAoB,aAC1C,MAAM,aAAa,MACnB,QAAO;AAAA,EACX;AACA,SAAO;AACT;",
6
+ "names": []
7
+ }
@@ -0,0 +1,27 @@
1
+ import type { LayoutBox } from "../layout/types.js";
2
+ import type { PibblInstance } from "../types.js";
3
+ /**
4
+ * The focus-facing part of one published HtmlBox. The HTML service owns the
5
+ * record and updates it only as part of a successful presentation generation.
6
+ * It deliberately has no Canvas event target: native descendants remain the
7
+ * browser's event and editing surface.
8
+ *
9
+ * @internal Shared with the root HTML service through the erased focus bridge.
10
+ */
11
+ export interface HtmlFocusRegion {
12
+ /** Stable component-owned identity, including across projection updates. */
13
+ readonly identity: object;
14
+ readonly owner: PibblInstance;
15
+ /** The Pibbl-owned content DIV, assigned before a successful transaction finishes. */
16
+ readonly content: HTMLElement | undefined;
17
+ /** Root-logical border-box used for directional scoring. */
18
+ readonly rootBounds: Readonly<LayoutBox> | undefined;
19
+ /** False for inert, hidden, singular, or retired hosts. */
20
+ readonly active: boolean;
21
+ /** Receives deduplicated region-level state after native focus settles. */
22
+ readonly onFocusSnapshot?: (snapshot: HtmlFocusRegionSnapshot) => void;
23
+ }
24
+ export interface HtmlFocusRegionSnapshot {
25
+ readonly isFocusWithin: boolean;
26
+ readonly isFocusVisible: boolean;
27
+ }
@@ -0,0 +1,7 @@
1
+ import type { PibblKeyboardEvent } from "../events/types.js";
2
+ import type { PibblFocusManager } from "./focus-manager.js";
3
+ export type PibblTabMoveResult = "moved" | "exit";
4
+ export declare function moveTab(manager: PibblFocusManager, backwards: boolean): PibblTabMoveResult;
5
+ export declare function applyTabDefault(manager: PibblFocusManager, event: PibblKeyboardEvent): void;
6
+ export declare function applyKeyboardActivationDefault(manager: PibblFocusManager, event: PibblKeyboardEvent): void;
7
+ export declare function applyDirectionalNavigationDefault(manager: PibblFocusManager, event: PibblKeyboardEvent): void;
@@ -0,0 +1,110 @@
1
+ import { dispatchToLogicalTarget } from "../events/dispatch.js";
2
+ import {
3
+ findNearestDirectionalCandidate
4
+ } from "./directional-navigation.js";
5
+ function moveTab(manager, backwards) {
6
+ const candidates = manager.navigationCandidates;
7
+ if (candidates.length === 0) return "exit";
8
+ const current = manager.focusedNavigationCandidate;
9
+ if (!current) {
10
+ const ordered = backwards ? [...candidates].reverse() : candidates;
11
+ for (const candidate of ordered) {
12
+ if (manager.focusNavigationCandidate(candidate, "keyboard", backwards)) {
13
+ return "moved";
14
+ }
15
+ }
16
+ return "exit";
17
+ }
18
+ const currentIndex = candidates.indexOf(current);
19
+ for (let nextIndex = currentIndex + (backwards ? -1 : 1); nextIndex >= 0 && nextIndex < candidates.length; nextIndex += backwards ? -1 : 1) {
20
+ if (manager.focusNavigationCandidate(
21
+ candidates[nextIndex],
22
+ "keyboard",
23
+ backwards
24
+ ))
25
+ return "moved";
26
+ }
27
+ return "exit";
28
+ }
29
+ function applyTabDefault(manager, event) {
30
+ if (event.type !== "keydown" || event.key !== "Tab" || event.defaultPrevented) {
31
+ return;
32
+ }
33
+ if (moveTab(manager, event.shiftKey) === "moved") event.preventDefault();
34
+ }
35
+ function applyKeyboardActivationDefault(manager, event) {
36
+ if (event.key === "Enter") {
37
+ if (event.type === "keydown" && !event.repeat && !event.defaultPrevented) {
38
+ activateClick(manager.resolveKeyboardTarget(), event.originalEvent);
39
+ }
40
+ return;
41
+ }
42
+ if (event.key !== " " && event.key !== "Spacebar") return;
43
+ const target = manager.resolveKeyboardTarget();
44
+ if (event.type === "keydown") {
45
+ if (event.repeat) {
46
+ if (manager.hasPendingSpaceActivation(target)) event.preventDefault();
47
+ return;
48
+ }
49
+ manager.cancelSpaceActivation();
50
+ if (event.defaultPrevented || !target?.handlers.click) return;
51
+ manager.beginSpaceActivation(target);
52
+ event.preventDefault();
53
+ return;
54
+ }
55
+ if (event.type !== "keyup") return;
56
+ const pending = manager.consumeSpaceActivation();
57
+ if (!pending || event.defaultPrevented || pending !== target) {
58
+ return;
59
+ }
60
+ activateClick(pending, event.originalEvent);
61
+ }
62
+ function applyDirectionalNavigationDefault(manager, event) {
63
+ if (event.type !== "keydown" || event.defaultPrevented) return;
64
+ const direction = directionForKey(event.key);
65
+ if (!direction) return;
66
+ const current = manager.focusedNavigationCandidate;
67
+ if (!current) return;
68
+ const winner = findNearestDirectionalCandidate(
69
+ current,
70
+ direction,
71
+ (candidate) => manager.isNavigationCandidateFocusable(candidate)
72
+ );
73
+ if (manager.focusNavigationCandidate(winner, "keyboard"))
74
+ event.preventDefault();
75
+ }
76
+ function activateClick(target, sourceEvent) {
77
+ if (!target?.live || !target.handlers.click) return;
78
+ dispatchToLogicalTarget(
79
+ "click",
80
+ target,
81
+ new MouseEvent("click", {
82
+ bubbles: true,
83
+ cancelable: true,
84
+ detail: 0
85
+ }),
86
+ null,
87
+ sourceEvent
88
+ );
89
+ }
90
+ function directionForKey(key) {
91
+ switch (key) {
92
+ case "ArrowLeft":
93
+ return "left";
94
+ case "ArrowRight":
95
+ return "right";
96
+ case "ArrowUp":
97
+ return "up";
98
+ case "ArrowDown":
99
+ return "down";
100
+ default:
101
+ return void 0;
102
+ }
103
+ }
104
+ export {
105
+ applyDirectionalNavigationDefault,
106
+ applyKeyboardActivationDefault,
107
+ applyTabDefault,
108
+ moveTab
109
+ };
110
+ //# sourceMappingURL=keyboard-defaults.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/lib/focus/keyboard-defaults.ts"],
4
+ "sourcesContent": ["import { dispatchToLogicalTarget } from \"../events/dispatch.js\";\nimport type { PibblEventTargetRegistration } from \"../events/registrations.js\";\nimport type { PibblKeyboardEvent } from \"../events/types.js\";\nimport type { PibblFocusManager } from \"./focus-manager.js\";\nimport {\n findNearestDirectionalCandidate,\n type PibblDirection,\n} from \"./directional-navigation.js\";\n\nexport type PibblTabMoveResult = \"moved\" | \"exit\";\n\nexport function moveTab(\n manager: PibblFocusManager,\n backwards: boolean,\n): PibblTabMoveResult {\n const candidates = manager.navigationCandidates;\n if (candidates.length === 0) return \"exit\";\n\n const current = manager.focusedNavigationCandidate;\n if (!current) {\n const ordered = backwards ? [...candidates].reverse() : candidates;\n for (const candidate of ordered) {\n if (manager.focusNavigationCandidate(candidate, \"keyboard\", backwards)) {\n return \"moved\";\n }\n }\n return \"exit\";\n }\n\n const currentIndex = candidates.indexOf(current);\n for (\n let nextIndex = currentIndex + (backwards ? -1 : 1);\n nextIndex >= 0 && nextIndex < candidates.length;\n nextIndex += backwards ? -1 : 1\n ) {\n if (\n manager.focusNavigationCandidate(\n candidates[nextIndex],\n \"keyboard\",\n backwards,\n )\n )\n return \"moved\";\n }\n return \"exit\";\n}\n\nexport function applyTabDefault(\n manager: PibblFocusManager,\n event: PibblKeyboardEvent,\n): void {\n if (\n event.type !== \"keydown\" ||\n event.key !== \"Tab\" ||\n event.defaultPrevented\n ) {\n return;\n }\n if (moveTab(manager, event.shiftKey) === \"moved\") event.preventDefault();\n}\n\nexport function applyKeyboardActivationDefault(\n manager: PibblFocusManager,\n event: PibblKeyboardEvent,\n): void {\n if (event.key === \"Enter\") {\n if (event.type === \"keydown\" && !event.repeat && !event.defaultPrevented) {\n activateClick(manager.resolveKeyboardTarget(), event.originalEvent);\n }\n return;\n }\n\n if (event.key !== \" \" && event.key !== \"Spacebar\") return;\n const target = manager.resolveKeyboardTarget();\n if (event.type === \"keydown\") {\n if (event.repeat) {\n if (manager.hasPendingSpaceActivation(target)) event.preventDefault();\n return;\n }\n manager.cancelSpaceActivation();\n if (event.defaultPrevented || !target?.handlers.click) return;\n manager.beginSpaceActivation(target);\n event.preventDefault();\n return;\n }\n\n if (event.type !== \"keyup\") return;\n const pending = manager.consumeSpaceActivation();\n if (!pending || event.defaultPrevented || pending !== target) {\n return;\n }\n activateClick(pending, event.originalEvent);\n}\n\nexport function applyDirectionalNavigationDefault(\n manager: PibblFocusManager,\n event: PibblKeyboardEvent,\n): void {\n if (event.type !== \"keydown\" || event.defaultPrevented) return;\n const direction = directionForKey(event.key);\n if (!direction) return;\n\n const current = manager.focusedNavigationCandidate;\n if (!current) return;\n\n // The nearest boundary owns the key completely. A miss is terminal and must\n // never be retried against an ancestor boundary.\n const winner = findNearestDirectionalCandidate(\n current,\n direction,\n (candidate) => manager.isNavigationCandidateFocusable(candidate),\n );\n if (manager.focusNavigationCandidate(winner, \"keyboard\"))\n event.preventDefault();\n}\n\nfunction activateClick(\n target: PibblEventTargetRegistration | undefined,\n sourceEvent: KeyboardEvent,\n): void {\n if (!target?.live || !target.handlers.click) return;\n dispatchToLogicalTarget(\n \"click\",\n target,\n new MouseEvent(\"click\", {\n bubbles: true,\n cancelable: true,\n detail: 0,\n }),\n null,\n sourceEvent,\n );\n}\n\nfunction directionForKey(key: string): PibblDirection | undefined {\n switch (key) {\n case \"ArrowLeft\":\n return \"left\";\n case \"ArrowRight\":\n return \"right\";\n case \"ArrowUp\":\n return \"up\";\n case \"ArrowDown\":\n return \"down\";\n default:\n return undefined;\n }\n}\n"],
5
+ "mappings": "AAAA,SAAS,+BAA+B;AAIxC;AAAA,EACE;AAAA,OAEK;AAIA,SAAS,QACd,SACA,WACoB;AACpB,QAAM,aAAa,QAAQ;AAC3B,MAAI,WAAW,WAAW,EAAG,QAAO;AAEpC,QAAM,UAAU,QAAQ;AACxB,MAAI,CAAC,SAAS;AACZ,UAAM,UAAU,YAAY,CAAC,GAAG,UAAU,EAAE,QAAQ,IAAI;AACxD,eAAW,aAAa,SAAS;AAC/B,UAAI,QAAQ,yBAAyB,WAAW,YAAY,SAAS,GAAG;AACtE,eAAO;AAAA,MACT;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAEA,QAAM,eAAe,WAAW,QAAQ,OAAO;AAC/C,WACM,YAAY,gBAAgB,YAAY,KAAK,IACjD,aAAa,KAAK,YAAY,WAAW,QACzC,aAAa,YAAY,KAAK,GAC9B;AACA,QACE,QAAQ;AAAA,MACN,WAAW,SAAS;AAAA,MACpB;AAAA,MACA;AAAA,IACF;AAEA,aAAO;AAAA,EACX;AACA,SAAO;AACT;AAEO,SAAS,gBACd,SACA,OACM;AACN,MACE,MAAM,SAAS,aACf,MAAM,QAAQ,SACd,MAAM,kBACN;AACA;AAAA,EACF;AACA,MAAI,QAAQ,SAAS,MAAM,QAAQ,MAAM,QAAS,OAAM,eAAe;AACzE;AAEO,SAAS,+BACd,SACA,OACM;AACN,MAAI,MAAM,QAAQ,SAAS;AACzB,QAAI,MAAM,SAAS,aAAa,CAAC,MAAM,UAAU,CAAC,MAAM,kBAAkB;AACxE,oBAAc,QAAQ,sBAAsB,GAAG,MAAM,aAAa;AAAA,IACpE;AACA;AAAA,EACF;AAEA,MAAI,MAAM,QAAQ,OAAO,MAAM,QAAQ,WAAY;AACnD,QAAM,SAAS,QAAQ,sBAAsB;AAC7C,MAAI,MAAM,SAAS,WAAW;AAC5B,QAAI,MAAM,QAAQ;AAChB,UAAI,QAAQ,0BAA0B,MAAM,EAAG,OAAM,eAAe;AACpE;AAAA,IACF;AACA,YAAQ,sBAAsB;AAC9B,QAAI,MAAM,oBAAoB,CAAC,QAAQ,SAAS,MAAO;AACvD,YAAQ,qBAAqB,MAAM;AACnC,UAAM,eAAe;AACrB;AAAA,EACF;AAEA,MAAI,MAAM,SAAS,QAAS;AAC5B,QAAM,UAAU,QAAQ,uBAAuB;AAC/C,MAAI,CAAC,WAAW,MAAM,oBAAoB,YAAY,QAAQ;AAC5D;AAAA,EACF;AACA,gBAAc,SAAS,MAAM,aAAa;AAC5C;AAEO,SAAS,kCACd,SACA,OACM;AACN,MAAI,MAAM,SAAS,aAAa,MAAM,iBAAkB;AACxD,QAAM,YAAY,gBAAgB,MAAM,GAAG;AAC3C,MAAI,CAAC,UAAW;AAEhB,QAAM,UAAU,QAAQ;AACxB,MAAI,CAAC,QAAS;AAId,QAAM,SAAS;AAAA,IACb;AAAA,IACA;AAAA,IACA,CAAC,cAAc,QAAQ,+BAA+B,SAAS;AAAA,EACjE;AACA,MAAI,QAAQ,yBAAyB,QAAQ,UAAU;AACrD,UAAM,eAAe;AACzB;AAEA,SAAS,cACP,QACA,aACM;AACN,MAAI,CAAC,QAAQ,QAAQ,CAAC,OAAO,SAAS,MAAO;AAC7C;AAAA,IACE;AAAA,IACA;AAAA,IACA,IAAI,WAAW,SAAS;AAAA,MACtB,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,QAAQ;AAAA,IACV,CAAC;AAAA,IACD;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,gBAAgB,KAAyC;AAChE,UAAQ,KAAK;AAAA,IACX,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EACX;AACF;",
6
+ "names": []
7
+ }
@@ -0,0 +1,45 @@
1
+ import type { PibblComponent, PibblElement, PibblEmptyNode } from '../element/types.js';
2
+ import type { PibblKeyboardNavigationOptions } from './types.js';
3
+ type PibblPolicyChild = PibblElement<any> | PibblEmptyNode | readonly PibblPolicyChild[] | (Iterable<PibblPolicyChild> & {
4
+ readonly charAt?: never;
5
+ });
6
+ /**
7
+ * Authored inputs for FocusManagement, including the declared data and presentation options.
8
+ *
9
+ * @see {@link FocusManagement}
10
+ */
11
+ export interface FocusManagementProps {
12
+ /** The single child receiving a logical focus manager. See {@link PibblPolicyChild}. */
13
+ readonly children: PibblPolicyChild;
14
+ }
15
+ /**
16
+ * Authored inputs for KeyboardNavigation, including the declared data and presentation options.
17
+ *
18
+ * @see {@link PibblKeyboardNavigationOptions}
19
+ * @see {@link KeyboardNavigation}
20
+ */
21
+ export interface KeyboardNavigationProps extends PibblKeyboardNavigationOptions {
22
+ /** The single child receiving a directional keyboard-navigation boundary. See {@link PibblPolicyChild}. */
23
+ readonly children: PibblPolicyChild;
24
+ }
25
+ /**
26
+ * Adds one logical focus manager to exactly one child without adding identity.
27
+ *
28
+ * @param props - Authored component inputs, supplied through JSX or createElement. See the linked
29
+ * props and style types.
30
+ * @throws When called directly; Pibbl mounts this component through JSX or createElement.
31
+ *
32
+ * @see {@link FocusManagementProps}
33
+ */
34
+ export declare const FocusManagement: PibblComponent<FocusManagementProps>;
35
+ /**
36
+ * Adds one directional-navigation boundary without adding identity.
37
+ *
38
+ * @param props - Authored component inputs, supplied through JSX or createElement. See the linked
39
+ * props and style types.
40
+ * @throws When called directly; Pibbl mounts this component through JSX or createElement.
41
+ *
42
+ * @see {@link KeyboardNavigationProps}
43
+ */
44
+ export declare const KeyboardNavigation: PibblComponent<KeyboardNavigationProps>;
45
+ export {};
@@ -0,0 +1,94 @@
1
+ import {
2
+ appendElementEnhancer,
3
+ hasElementEnhancer
4
+ } from "../element-enhancers.js";
5
+ import {
6
+ setElementPolicyDefinition
7
+ } from "../element/metadata.js";
8
+ import {
9
+ createDirectionalBoundary,
10
+ createFocusManager,
11
+ requireFocusManager
12
+ } from "./focus-manager.js";
13
+ const FOCUS_MANAGEMENT_ENHANCER_KEY = /* @__PURE__ */ Symbol("Pibbl focus management");
14
+ const FOCUS_IMPLEMENTATION_MARKER = "PIBBL_FOCUS_MANAGEMENT_V1";
15
+ const KEYBOARD_NAVIGATION_ENHANCER_KEY = /* @__PURE__ */ Symbol("Pibbl keyboard navigation");
16
+ const focusManagementDescriptor = {
17
+ key: FOCUS_MANAGEMENT_ENHANCER_KEY,
18
+ mount: ({ instance }) => {
19
+ const manager = createFocusManager(instance.eventRoot, instance);
20
+ return {
21
+ update: () => void 0,
22
+ enter: () => manager.beginCollection(),
23
+ exit: (success) => manager.finishCollection(success),
24
+ dispose: () => manager.dispose()
25
+ };
26
+ }
27
+ };
28
+ const keyboardNavigationDescriptor = {
29
+ key: KEYBOARD_NAVIGATION_ENHANCER_KEY,
30
+ mount: ({ instance }) => {
31
+ const boundary = createDirectionalBoundary(instance);
32
+ let manager;
33
+ return {
34
+ update: () => void 0,
35
+ enter: () => {
36
+ manager = requireFocusManager(instance.eventRoot);
37
+ manager.enterDirectionalBoundary(boundary);
38
+ },
39
+ exit: () => {
40
+ try {
41
+ manager?.exitDirectionalBoundary(boundary);
42
+ } finally {
43
+ manager = void 0;
44
+ }
45
+ },
46
+ dispose: () => void 0
47
+ };
48
+ }
49
+ };
50
+ const FocusManagement = /* @__PURE__ */ definePolicyComponent(
51
+ "FocusManagement",
52
+ (_policy, child) => {
53
+ if (hasElementEnhancer(child, FOCUS_MANAGEMENT_ENHANCER_KEY)) {
54
+ throw new Error(
55
+ `${FOCUS_IMPLEMENTATION_MARKER}: FocusManagement cannot be applied more than once to the same Pibbl element.`
56
+ );
57
+ }
58
+ return appendElementEnhancer(child, focusManagementDescriptor);
59
+ }
60
+ );
61
+ const KeyboardNavigation = /* @__PURE__ */ definePolicyComponent(
62
+ "KeyboardNavigation",
63
+ (policy, child) => {
64
+ const options = policy.props;
65
+ if (options.mode !== "directional") {
66
+ throw new Error('KeyboardNavigation mode must be "directional".');
67
+ }
68
+ if (hasElementEnhancer(child, KEYBOARD_NAVIGATION_ENHANCER_KEY)) {
69
+ throw new Error(
70
+ "KeyboardNavigation cannot be applied more than once to the same Pibbl element."
71
+ );
72
+ }
73
+ return appendElementEnhancer(child, keyboardNavigationDescriptor);
74
+ }
75
+ );
76
+ function definePolicyComponent(name, prepare) {
77
+ const component = function PibblPolicyComponent() {
78
+ throw new Error(
79
+ `${name} is a Pibbl component and was invoked outside the Pibbl renderer.
80
+ Use <${name} ... /> in a Pibbl JSX file or createElement(${name}, props).`
81
+ );
82
+ };
83
+ Object.defineProperty(component, "name", {
84
+ configurable: true,
85
+ value: name
86
+ });
87
+ setElementPolicyDefinition(component, { prepare });
88
+ return component;
89
+ }
90
+ export {
91
+ FocusManagement,
92
+ KeyboardNavigation
93
+ };
94
+ //# sourceMappingURL=policy-components.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/lib/focus/policy-components.ts"],
4
+ "sourcesContent": ["import {\n appendElementEnhancer,\n hasElementEnhancer,\n type PibblElementEnhancerDescriptor,\n} from '../element-enhancers.js';\nimport {\n setElementPolicyDefinition,\n type ElementPolicyDefinition,\n} from '../element/metadata.js';\nimport type {\n PibblComponent,\n PibblElement,\n PibblEmptyNode,\n} from '../element/types.js';\nimport type { PibblKeyboardNavigationOptions } from './types.js';\nimport {\n createDirectionalBoundary,\n createFocusManager,\n requireFocusManager,\n type PibblFocusManager,\n} from './focus-manager.js';\n\nconst FOCUS_MANAGEMENT_ENHANCER_KEY = Symbol('Pibbl focus management');\nconst FOCUS_IMPLEMENTATION_MARKER = 'PIBBL_FOCUS_MANAGEMENT_V1';\nconst KEYBOARD_NAVIGATION_ENHANCER_KEY = Symbol('Pibbl keyboard navigation');\n\nconst focusManagementDescriptor: PibblElementEnhancerDescriptor = {\n key: FOCUS_MANAGEMENT_ENHANCER_KEY,\n mount: ({ instance }) => {\n const manager = createFocusManager(instance.eventRoot, instance);\n return {\n update: () => undefined,\n enter: () => manager.beginCollection(),\n exit: success => manager.finishCollection(success),\n dispose: () => manager.dispose(),\n };\n },\n};\n\nconst keyboardNavigationDescriptor: PibblElementEnhancerDescriptor = {\n key: KEYBOARD_NAVIGATION_ENHANCER_KEY,\n mount: ({ instance }) => {\n const boundary = createDirectionalBoundary(instance);\n let manager: PibblFocusManager | undefined;\n return {\n update: () => undefined,\n enter: () => {\n manager = requireFocusManager(instance.eventRoot);\n manager.enterDirectionalBoundary(boundary);\n },\n exit: () => {\n try {\n manager?.exitDirectionalBoundary(boundary);\n } finally {\n manager = undefined;\n }\n },\n dispose: () => undefined,\n };\n },\n};\n\ntype PibblPolicyChild =\n | PibblElement<any>\n | PibblEmptyNode\n | readonly PibblPolicyChild[]\n | (Iterable<PibblPolicyChild> & { readonly charAt?: never });\n\n/**\n * Authored inputs for FocusManagement, including the declared data and presentation options.\n *\n * @see {@link FocusManagement}\n */\nexport interface FocusManagementProps {\n /** The single child receiving a logical focus manager. See {@link PibblPolicyChild}. */\n readonly children: PibblPolicyChild;\n}\n\n/**\n * Authored inputs for KeyboardNavigation, including the declared data and presentation options.\n *\n * @see {@link PibblKeyboardNavigationOptions}\n * @see {@link KeyboardNavigation}\n */\nexport interface KeyboardNavigationProps extends PibblKeyboardNavigationOptions {\n /** The single child receiving a directional keyboard-navigation boundary. See {@link PibblPolicyChild}. */\n readonly children: PibblPolicyChild;\n}\n\n/**\n * Adds one logical focus manager to exactly one child without adding identity.\n *\n * @param props - Authored component inputs, supplied through JSX or createElement. See the linked\n * props and style types.\n * @throws When called directly; Pibbl mounts this component through JSX or createElement.\n *\n * @see {@link FocusManagementProps}\n */\nexport const FocusManagement = /* @__PURE__ */ definePolicyComponent<FocusManagementProps>(\n 'FocusManagement',\n (_policy, child) => {\n if (hasElementEnhancer(child, FOCUS_MANAGEMENT_ENHANCER_KEY)) {\n throw new Error(\n `${FOCUS_IMPLEMENTATION_MARKER}: FocusManagement cannot be applied ` +\n 'more than once to the same Pibbl element.',\n );\n }\n return appendElementEnhancer(child, focusManagementDescriptor);\n },\n);\n\n/**\n * Adds one directional-navigation boundary without adding identity.\n *\n * @param props - Authored component inputs, supplied through JSX or createElement. See the linked\n * props and style types.\n * @throws When called directly; Pibbl mounts this component through JSX or createElement.\n *\n * @see {@link KeyboardNavigationProps}\n */\nexport const KeyboardNavigation = /* @__PURE__ */ definePolicyComponent<KeyboardNavigationProps>(\n 'KeyboardNavigation',\n (policy, child) => {\n const options = policy.props as KeyboardNavigationProps;\n if (options.mode !== 'directional') {\n throw new Error('KeyboardNavigation mode must be \"directional\".');\n }\n if (hasElementEnhancer(child, KEYBOARD_NAVIGATION_ENHANCER_KEY)) {\n throw new Error(\n 'KeyboardNavigation cannot be applied more than once to the same Pibbl element.',\n );\n }\n return appendElementEnhancer(child, keyboardNavigationDescriptor);\n },\n);\n\nfunction definePolicyComponent<P>(\n name: string,\n prepare: ElementPolicyDefinition['prepare'],\n): PibblComponent<P> {\n const component = function PibblPolicyComponent(): never {\n throw new Error(\n `${name} is a Pibbl component and was invoked outside the Pibbl renderer.\\n` +\n `Use <${name} ... /> in a Pibbl JSX file or ` +\n `createElement(${name}, props).`,\n );\n } as PibblComponent<P>;\n Object.defineProperty(component, 'name', {\n configurable: true,\n value: name,\n });\n setElementPolicyDefinition(component, { prepare });\n return component;\n}\n"],
5
+ "mappings": "AAAA;AAAA,EACE;AAAA,EACA;AAAA,OAEK;AACP;AAAA,EACE;AAAA,OAEK;AAOP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OAEK;AAEP,MAAM,gCAAgC,uBAAO,wBAAwB;AACrE,MAAM,8BAA8B;AACpC,MAAM,mCAAmC,uBAAO,2BAA2B;AAE3E,MAAM,4BAA4D;AAAA,EAChE,KAAK;AAAA,EACL,OAAO,CAAC,EAAE,SAAS,MAAM;AACvB,UAAM,UAAU,mBAAmB,SAAS,WAAW,QAAQ;AAC/D,WAAO;AAAA,MACL,QAAQ,MAAM;AAAA,MACd,OAAO,MAAM,QAAQ,gBAAgB;AAAA,MACrC,MAAM,aAAW,QAAQ,iBAAiB,OAAO;AAAA,MACjD,SAAS,MAAM,QAAQ,QAAQ;AAAA,IACjC;AAAA,EACF;AACF;AAEA,MAAM,+BAA+D;AAAA,EACnE,KAAK;AAAA,EACL,OAAO,CAAC,EAAE,SAAS,MAAM;AACvB,UAAM,WAAW,0BAA0B,QAAQ;AACnD,QAAI;AACJ,WAAO;AAAA,MACL,QAAQ,MAAM;AAAA,MACd,OAAO,MAAM;AACX,kBAAU,oBAAoB,SAAS,SAAS;AAChD,gBAAQ,yBAAyB,QAAQ;AAAA,MAC3C;AAAA,MACA,MAAM,MAAM;AACV,YAAI;AACF,mBAAS,wBAAwB,QAAQ;AAAA,QAC3C,UAAE;AACA,oBAAU;AAAA,QACZ;AAAA,MACF;AAAA,MACA,SAAS,MAAM;AAAA,IACjB;AAAA,EACF;AACF;AAsCO,MAAM,kBAAkC;AAAA,EAC7C;AAAA,EACA,CAAC,SAAS,UAAU;AAClB,QAAI,mBAAmB,OAAO,6BAA6B,GAAG;AAC5D,YAAM,IAAI;AAAA,QACR,GAAG,2BAA2B;AAAA,MAEhC;AAAA,IACF;AACA,WAAO,sBAAsB,OAAO,yBAAyB;AAAA,EAC/D;AACF;AAWO,MAAM,qBAAqC;AAAA,EAChD;AAAA,EACA,CAAC,QAAQ,UAAU;AACjB,UAAM,UAAU,OAAO;AACvB,QAAI,QAAQ,SAAS,eAAe;AAClC,YAAM,IAAI,MAAM,gDAAgD;AAAA,IAClE;AACA,QAAI,mBAAmB,OAAO,gCAAgC,GAAG;AAC/D,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AACA,WAAO,sBAAsB,OAAO,4BAA4B;AAAA,EAClE;AACF;AAEA,SAAS,sBACP,MACA,SACmB;AACnB,QAAM,YAAY,SAAS,uBAA8B;AACvD,UAAM,IAAI;AAAA,MACR,GAAG,IAAI;AAAA,OACC,IAAI,gDACK,IAAI;AAAA,IACvB;AAAA,EACF;AACA,SAAO,eAAe,WAAW,QAAQ;AAAA,IACvC,cAAc;AAAA,IACd,OAAO;AAAA,EACT,CAAC;AACD,6BAA2B,WAAW,EAAE,QAAQ,CAAC;AACjD,SAAO;AACT;",
6
+ "names": []
7
+ }