@pibbl/core 0.0.2 → 0.0.3-alpha.109.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 (549) hide show
  1. package/THIRD_PARTY_NOTICES.txt +81 -0
  2. package/dist/features/physics/2d-testing.d.ts +1 -1
  3. package/dist/features/physics/2d-testing.js +2 -2
  4. package/dist/features/physics/2d-testing.js.map +2 -2
  5. package/dist/features/physics/lib/2d/canvas/components.js +25 -21
  6. package/dist/features/physics/lib/2d/canvas/components.js.map +2 -2
  7. package/dist/features/physics/lib/2d/canvas/presentation.js +1 -2
  8. package/dist/features/physics/lib/2d/canvas/presentation.js.map +2 -2
  9. package/dist/features/physics/lib/2d/collision/casts.js +4 -2
  10. package/dist/features/physics/lib/2d/collision/casts.js.map +2 -2
  11. package/dist/features/physics/lib/2d/runtime/controller.js +1 -1
  12. package/dist/features/physics/lib/2d/runtime/controller.js.map +2 -2
  13. package/dist/features/physics/lib/2d/runtime/obstacles.js +9 -11
  14. package/dist/features/physics/lib/2d/runtime/obstacles.js.map +2 -2
  15. package/dist/features/physics/lib/2d/shapes.js +8 -9
  16. package/dist/features/physics/lib/2d/shapes.js.map +2 -2
  17. package/dist/features/physics/lib/2d/world/rapier.js +22 -26
  18. package/dist/features/physics/lib/2d/world/rapier.js.map +2 -2
  19. package/dist/features/sprites/loader.js +6 -3
  20. package/dist/features/sprites/loader.js.map +2 -2
  21. package/dist/features/textures/index.d.ts +12 -2
  22. package/dist/features/textures/index.js +33 -1
  23. package/dist/features/textures/index.js.map +2 -2
  24. package/dist/features/textures/lib/chemical-field.d.ts +56 -0
  25. package/dist/features/textures/lib/chemical-field.js +154 -0
  26. package/dist/features/textures/lib/chemical-field.js.map +7 -0
  27. package/dist/features/textures/lib/chemical-recipes.d.ts +119 -0
  28. package/dist/features/textures/lib/chemical-recipes.js +275 -0
  29. package/dist/features/textures/lib/chemical-recipes.js.map +7 -0
  30. package/dist/features/textures/lib/definitions.d.ts +3 -18
  31. package/dist/features/textures/lib/definitions.js +17 -24
  32. package/dist/features/textures/lib/definitions.js.map +2 -2
  33. package/dist/features/textures/lib/geometric-patterns.d.ts +149 -0
  34. package/dist/features/textures/lib/geometric-patterns.js +305 -0
  35. package/dist/features/textures/lib/geometric-patterns.js.map +7 -0
  36. package/dist/features/textures/lib/gray-scott.d.ts +55 -0
  37. package/dist/features/textures/lib/gray-scott.js +37 -0
  38. package/dist/features/textures/lib/gray-scott.js.map +7 -0
  39. package/dist/features/textures/lib/palette.js +1 -3
  40. package/dist/features/textures/lib/palette.js.map +2 -2
  41. package/dist/features/textures/lib/patterns.d.ts +123 -0
  42. package/dist/features/textures/lib/patterns.js +344 -0
  43. package/dist/features/textures/lib/patterns.js.map +7 -0
  44. package/dist/features/textures/lib/rain-drops.js +2 -1
  45. package/dist/features/textures/lib/rain-drops.js.map +2 -2
  46. package/dist/features/textures/lib/reaction-diffusion.d.ts +3 -2
  47. package/dist/features/textures/lib/reaction-diffusion.js +9 -20
  48. package/dist/features/textures/lib/reaction-diffusion.js.map +2 -2
  49. package/dist/features/textures/lib/simulation.d.ts +10 -4
  50. package/dist/features/textures/lib/simulation.js +23 -13
  51. package/dist/features/textures/lib/simulation.js.map +2 -2
  52. package/dist/features/textures/lib/wasm/electric.js +8 -1
  53. package/dist/features/textures/lib/wasm/electric.js.map +2 -2
  54. package/dist/features/textures/lib/water-surface.js +1 -3
  55. package/dist/features/textures/lib/water-surface.js.map +2 -2
  56. package/dist/features/viz/index.d.ts +68 -6
  57. package/dist/features/viz/index.js +164 -2
  58. package/dist/features/viz/index.js.map +2 -2
  59. package/dist/features/viz/inspection/bar.d.ts +79 -0
  60. package/dist/features/viz/inspection/bar.js +49 -0
  61. package/dist/features/viz/inspection/bar.js.map +7 -0
  62. package/dist/features/viz/inspection/candle.d.ts +156 -0
  63. package/dist/features/viz/inspection/candle.js +120 -0
  64. package/dist/features/viz/inspection/candle.js.map +7 -0
  65. package/dist/features/viz/inspection/capture-types.d.ts +65 -0
  66. package/dist/features/viz/inspection/capture.d.ts +16 -0
  67. package/dist/features/viz/inspection/capture.js +49 -0
  68. package/dist/features/viz/inspection/capture.js.map +7 -0
  69. package/dist/features/viz/inspection/handler.d.ts +36 -0
  70. package/dist/features/viz/inspection/handler.js +91 -0
  71. package/dist/features/viz/inspection/handler.js.map +7 -0
  72. package/dist/features/viz/inspection/ohlc-bar.d.ts +132 -0
  73. package/dist/features/viz/inspection/ohlc-bar.js +118 -0
  74. package/dist/features/viz/inspection/ohlc-bar.js.map +7 -0
  75. package/dist/features/viz/inspection/owned-ref.d.ts +16 -0
  76. package/dist/features/viz/inspection/owned-ref.js +99 -0
  77. package/dist/features/viz/inspection/owned-ref.js.map +7 -0
  78. package/dist/features/viz/inspection/painted-point.d.ts +22 -0
  79. package/dist/features/viz/inspection/painted-point.js +29 -0
  80. package/dist/features/viz/inspection/painted-point.js.map +7 -0
  81. package/dist/features/viz/inspection/queries.d.ts +100 -0
  82. package/dist/features/viz/inspection/queries.js +192 -0
  83. package/dist/features/viz/inspection/queries.js.map +7 -0
  84. package/dist/features/viz/inspection/query-types.d.ts +177 -0
  85. package/dist/features/viz/inspection/volume.d.ts +104 -0
  86. package/dist/features/viz/inspection/volume.js +95 -0
  87. package/dist/features/viz/inspection/volume.js.map +7 -0
  88. package/dist/features/viz/inspection.d.ts +19 -0
  89. package/dist/features/viz/inspection.js +54 -0
  90. package/dist/features/viz/inspection.js.map +7 -0
  91. package/dist/features/viz/inspection.mjs +1 -0
  92. package/dist/features/viz/lib/area-series.d.ts +62 -0
  93. package/dist/features/viz/lib/area-series.js +120 -0
  94. package/dist/features/viz/lib/area-series.js.map +7 -0
  95. package/dist/features/viz/lib/axis-title.js +2 -1
  96. package/dist/features/viz/lib/axis-title.js.map +2 -2
  97. package/dist/features/viz/lib/axis.js +1 -1
  98. package/dist/features/viz/lib/axis.js.map +2 -2
  99. package/dist/features/viz/lib/bar-series.d.ts +3 -1
  100. package/dist/features/viz/lib/bar-series.js +16 -1
  101. package/dist/features/viz/lib/bar-series.js.map +2 -2
  102. package/dist/features/viz/lib/baseline-series.d.ts +55 -0
  103. package/dist/features/viz/lib/baseline-series.js +136 -0
  104. package/dist/features/viz/lib/baseline-series.js.map +7 -0
  105. package/dist/features/viz/lib/candlestick-series.d.ts +62 -0
  106. package/dist/features/viz/lib/candlestick-series.js +150 -0
  107. package/dist/features/viz/lib/candlestick-series.js.map +7 -0
  108. package/dist/features/viz/lib/censored-point-series.d.ts +71 -0
  109. package/dist/features/viz/lib/censored-point-series.js +129 -0
  110. package/dist/features/viz/lib/censored-point-series.js.map +7 -0
  111. package/dist/features/viz/lib/color-context.d.ts +4 -0
  112. package/dist/features/viz/lib/color-context.js +41 -0
  113. package/dist/features/viz/lib/color-context.js.map +7 -0
  114. package/dist/features/viz/lib/color-math.d.ts +4 -0
  115. package/dist/features/viz/lib/color-math.js +31 -0
  116. package/dist/features/viz/lib/color-math.js.map +7 -0
  117. package/dist/features/viz/lib/color-types.d.ts +53 -0
  118. package/dist/features/viz/lib/curve-definition.d.ts +49 -0
  119. package/dist/features/viz/lib/curve-definition.js +142 -0
  120. package/dist/features/viz/lib/curve-definition.js.map +7 -0
  121. package/dist/features/viz/lib/diverging-color-scale.d.ts +11 -0
  122. package/dist/features/viz/lib/diverging-color-scale.js +51 -0
  123. package/dist/features/viz/lib/diverging-color-scale.js.map +7 -0
  124. package/dist/features/viz/lib/domain-navigation.d.ts +40 -0
  125. package/dist/features/viz/lib/domain-navigation.js +77 -0
  126. package/dist/features/viz/lib/domain-navigation.js.map +7 -0
  127. package/dist/features/viz/lib/editable-chart-elements.d.ts +178 -0
  128. package/dist/features/viz/lib/editable-chart-elements.js +733 -0
  129. package/dist/features/viz/lib/editable-chart-elements.js.map +7 -0
  130. package/dist/features/viz/lib/financial-aggregation.d.ts +127 -0
  131. package/dist/features/viz/lib/financial-aggregation.js +116 -0
  132. package/dist/features/viz/lib/financial-aggregation.js.map +7 -0
  133. package/dist/features/viz/lib/financial-autoscale.d.ts +64 -0
  134. package/dist/features/viz/lib/financial-autoscale.js +61 -0
  135. package/dist/features/viz/lib/financial-autoscale.js.map +7 -0
  136. package/dist/features/viz/lib/financial-comparison.d.ts +62 -0
  137. package/dist/features/viz/lib/financial-comparison.js +98 -0
  138. package/dist/features/viz/lib/financial-comparison.js.map +7 -0
  139. package/dist/features/viz/lib/financial-geometry.d.ts +77 -0
  140. package/dist/features/viz/lib/financial-geometry.js +67 -0
  141. package/dist/features/viz/lib/financial-geometry.js.map +7 -0
  142. package/dist/features/viz/lib/financial-indicators.d.ts +114 -0
  143. package/dist/features/viz/lib/financial-indicators.js +135 -0
  144. package/dist/features/viz/lib/financial-indicators.js.map +7 -0
  145. package/dist/features/viz/lib/financial-oscillators.d.ts +171 -0
  146. package/dist/features/viz/lib/financial-oscillators.js +265 -0
  147. package/dist/features/viz/lib/financial-oscillators.js.map +7 -0
  148. package/dist/features/viz/lib/graph/bipartite.d.ts +14 -0
  149. package/dist/features/viz/lib/graph/bipartite.js +250 -0
  150. package/dist/features/viz/lib/graph/bipartite.js.map +7 -0
  151. package/dist/features/viz/lib/graph/chord.d.ts +44 -0
  152. package/dist/features/viz/lib/graph/chord.js +348 -0
  153. package/dist/features/viz/lib/graph/chord.js.map +7 -0
  154. package/dist/features/viz/lib/graph/dependency.d.ts +26 -0
  155. package/dist/features/viz/lib/graph/dependency.js +140 -0
  156. package/dist/features/viz/lib/graph/dependency.js.map +7 -0
  157. package/dist/features/viz/lib/graph/force.d.ts +28 -0
  158. package/dist/features/viz/lib/graph/force.js +580 -0
  159. package/dist/features/viz/lib/graph/force.js.map +7 -0
  160. package/dist/features/viz/lib/graph/hierarchy.d.ts +21 -0
  161. package/dist/features/viz/lib/graph/hierarchy.js +112 -0
  162. package/dist/features/viz/lib/graph/hierarchy.js.map +7 -0
  163. package/dist/features/viz/lib/graph/icicle.d.ts +16 -0
  164. package/dist/features/viz/lib/graph/icicle.js +153 -0
  165. package/dist/features/viz/lib/graph/icicle.js.map +7 -0
  166. package/dist/features/viz/lib/graph/matrix.d.ts +30 -0
  167. package/dist/features/viz/lib/graph/matrix.js +243 -0
  168. package/dist/features/viz/lib/graph/matrix.js.map +7 -0
  169. package/dist/features/viz/lib/graph/neighborhood.d.ts +11 -0
  170. package/dist/features/viz/lib/graph/neighborhood.js +281 -0
  171. package/dist/features/viz/lib/graph/neighborhood.js.map +7 -0
  172. package/dist/features/viz/lib/graph/routes.d.ts +35 -0
  173. package/dist/features/viz/lib/graph/routes.js +101 -0
  174. package/dist/features/viz/lib/graph/routes.js.map +7 -0
  175. package/dist/features/viz/lib/graph/sankey.d.ts +44 -0
  176. package/dist/features/viz/lib/graph/sankey.js +341 -0
  177. package/dist/features/viz/lib/graph/sankey.js.map +7 -0
  178. package/dist/features/viz/lib/graph/shared.d.ts +59 -0
  179. package/dist/features/viz/lib/graph/shared.js +301 -0
  180. package/dist/features/viz/lib/graph/shared.js.map +7 -0
  181. package/dist/features/viz/lib/graph/tree.d.ts +11 -0
  182. package/dist/features/viz/lib/graph/tree.js +232 -0
  183. package/dist/features/viz/lib/graph/tree.js.map +7 -0
  184. package/dist/features/viz/lib/graph/treemap.d.ts +20 -0
  185. package/dist/features/viz/lib/graph/treemap.js +227 -0
  186. package/dist/features/viz/lib/graph/treemap.js.map +7 -0
  187. package/dist/features/viz/lib/graph/types.d.ts +1097 -0
  188. package/dist/features/viz/lib/hover-card.js +8 -9
  189. package/dist/features/viz/lib/hover-card.js.map +2 -2
  190. package/dist/features/viz/lib/hover-data.d.ts +1 -1
  191. package/dist/features/viz/lib/hover-data.js +5 -2
  192. package/dist/features/viz/lib/hover-data.js.map +2 -2
  193. package/dist/features/viz/lib/interval-band-series.d.ts +49 -0
  194. package/dist/features/viz/lib/interval-band-series.js +136 -0
  195. package/dist/features/viz/lib/interval-band-series.js.map +7 -0
  196. package/dist/features/viz/lib/interval-diamond-series.d.ts +43 -0
  197. package/dist/features/viz/lib/interval-diamond-series.js +122 -0
  198. package/dist/features/viz/lib/interval-diamond-series.js.map +7 -0
  199. package/dist/features/viz/lib/interval-series.d.ts +79 -0
  200. package/dist/features/viz/lib/interval-series.js +158 -0
  201. package/dist/features/viz/lib/interval-series.js.map +7 -0
  202. package/dist/features/viz/lib/layout-pie.js +9 -13
  203. package/dist/features/viz/lib/layout-pie.js.map +2 -2
  204. package/dist/features/viz/lib/line-series.d.ts +1 -1
  205. package/dist/features/viz/lib/line-series.js +47 -28
  206. package/dist/features/viz/lib/line-series.js.map +2 -2
  207. package/dist/features/viz/lib/linear-scale.js +1 -1
  208. package/dist/features/viz/lib/linear-scale.js.map +2 -2
  209. package/dist/features/viz/lib/monotone-curve.d.ts +11 -0
  210. package/dist/features/viz/lib/monotone-curve.js +63 -0
  211. package/dist/features/viz/lib/monotone-curve.js.map +7 -0
  212. package/dist/features/viz/lib/numeric-range-interpolation.d.ts +15 -0
  213. package/dist/features/viz/lib/numeric-range-interpolation.js +36 -0
  214. package/dist/features/viz/lib/numeric-range-interpolation.js.map +7 -0
  215. package/dist/features/viz/lib/ohlc-bar-series.d.ts +55 -0
  216. package/dist/features/viz/lib/ohlc-bar-series.js +168 -0
  217. package/dist/features/viz/lib/ohlc-bar-series.js.map +7 -0
  218. package/dist/features/viz/lib/paired-series.d.ts +44 -0
  219. package/dist/features/viz/lib/paired-series.js +93 -0
  220. package/dist/features/viz/lib/paired-series.js.map +7 -0
  221. package/dist/features/viz/lib/pie-layout.js +2 -1
  222. package/dist/features/viz/lib/pie-layout.js.map +2 -2
  223. package/dist/features/viz/lib/plot-series.js +11 -6
  224. package/dist/features/viz/lib/plot-series.js.map +2 -2
  225. package/dist/features/viz/lib/plot-types.d.ts +4 -3
  226. package/dist/features/viz/lib/point-series.d.ts +1 -1
  227. package/dist/features/viz/lib/point-series.js +36 -9
  228. package/dist/features/viz/lib/point-series.js.map +2 -2
  229. package/dist/features/viz/lib/point-types.d.ts +5 -2
  230. package/dist/features/viz/lib/reference-band.js +4 -1
  231. package/dist/features/viz/lib/reference-band.js.map +2 -2
  232. package/dist/features/viz/lib/scale-context.d.ts +1 -1
  233. package/dist/features/viz/lib/scale-ticks.js +21 -6
  234. package/dist/features/viz/lib/scale-ticks.js.map +2 -2
  235. package/dist/features/viz/lib/sequential-color-scale.d.ts +11 -0
  236. package/dist/features/viz/lib/sequential-color-scale.js +49 -0
  237. package/dist/features/viz/lib/sequential-color-scale.js.map +7 -0
  238. package/dist/features/viz/lib/series-position.d.ts +12 -0
  239. package/dist/features/viz/lib/series-position.js +44 -0
  240. package/dist/features/viz/lib/series-position.js.map +7 -0
  241. package/dist/features/viz/lib/step-curves.d.ts +19 -0
  242. package/dist/features/viz/lib/step-curves.js +53 -0
  243. package/dist/features/viz/lib/step-curves.js.map +7 -0
  244. package/dist/features/viz/lib/threshold-color-scale.d.ts +43 -0
  245. package/dist/features/viz/lib/threshold-color-scale.js +59 -0
  246. package/dist/features/viz/lib/threshold-color-scale.js.map +7 -0
  247. package/dist/features/viz/lib/trading-time-mapping.d.ts +32 -0
  248. package/dist/features/viz/lib/trading-time-mapping.js +89 -0
  249. package/dist/features/viz/lib/trading-time-mapping.js.map +7 -0
  250. package/dist/features/viz/lib/trading-time-scale.d.ts +83 -0
  251. package/dist/features/viz/lib/trading-time-scale.js +96 -0
  252. package/dist/features/viz/lib/trading-time-scale.js.map +7 -0
  253. package/dist/features/viz/lib/trajectory-series.d.ts +71 -0
  254. package/dist/features/viz/lib/trajectory-series.js +111 -0
  255. package/dist/features/viz/lib/trajectory-series.js.map +7 -0
  256. package/dist/features/viz/lib/types.d.ts +20 -4
  257. package/dist/features/viz/lib/use-continuous-scale.js +6 -1
  258. package/dist/features/viz/lib/use-continuous-scale.js.map +2 -2
  259. package/dist/features/viz/lib/utc-scale.js +11 -10
  260. package/dist/features/viz/lib/utc-scale.js.map +2 -2
  261. package/dist/features/viz/lib/volume-series.d.ts +59 -0
  262. package/dist/features/viz/lib/volume-series.js +117 -0
  263. package/dist/features/viz/lib/volume-series.js.map +7 -0
  264. package/dist/features/viz/lib/weighted-point-series.d.ts +71 -0
  265. package/dist/features/viz/lib/weighted-point-series.js +169 -0
  266. package/dist/features/viz/lib/weighted-point-series.js.map +7 -0
  267. package/dist/filters/backdrop-contrast-gpu.d.ts +5 -0
  268. package/dist/filters/backdrop-contrast-gpu.js +33 -0
  269. package/dist/filters/backdrop-contrast-gpu.js.map +7 -0
  270. package/dist/filters/backdrop-contrast.d.ts +21 -0
  271. package/dist/filters/backdrop-contrast.js +61 -0
  272. package/dist/filters/backdrop-contrast.js.map +7 -0
  273. package/dist/filters/displacement.js +1 -1
  274. package/dist/filters/displacement.js.map +2 -2
  275. package/dist/filters/emboss-gpu.d.ts +4 -0
  276. package/dist/filters/emboss-gpu.js +39 -0
  277. package/dist/filters/emboss-gpu.js.map +7 -0
  278. package/dist/filters/emboss.d.ts +32 -0
  279. package/dist/filters/emboss.js +104 -0
  280. package/dist/filters/emboss.js.map +7 -0
  281. package/dist/filters/filter-executor.d.ts +11 -4
  282. package/dist/filters/filter-executor.js +104 -49
  283. package/dist/filters/filter-executor.js.map +2 -2
  284. package/dist/filters/reflected-light.js +1 -1
  285. package/dist/filters/reflected-light.js.map +2 -2
  286. package/dist/filters/reflection-gpu.d.ts +3 -1
  287. package/dist/filters/reflection-gpu.js +5 -2
  288. package/dist/filters/reflection-gpu.js.map +2 -2
  289. package/dist/filters/render-backdrop-contrast-boundary.d.ts +31 -0
  290. package/dist/filters/render-backdrop-contrast-boundary.js +116 -0
  291. package/dist/filters/render-backdrop-contrast-boundary.js.map +7 -0
  292. package/dist/filters/render-emboss-boundary.d.ts +13 -0
  293. package/dist/filters/render-emboss-boundary.js +131 -0
  294. package/dist/filters/render-emboss-boundary.js.map +7 -0
  295. package/dist/filters.d.ts +9 -5
  296. package/dist/filters.js +4 -0
  297. package/dist/filters.js.map +2 -2
  298. package/dist/index.d.ts +9 -5
  299. package/dist/index.js +18 -2
  300. package/dist/index.js.map +2 -2
  301. package/dist/internal.d.ts +4 -0
  302. package/dist/internal.js +6 -0
  303. package/dist/internal.js.map +2 -2
  304. package/dist/layout-kernel.d.ts +12 -0
  305. package/dist/layout-kernel.js +11 -0
  306. package/dist/layout-kernel.js.map +7 -0
  307. package/dist/layout-kernel.mjs +1 -0
  308. package/dist/lib/backend/types.d.ts +13 -1
  309. package/dist/lib/backend/types.js.map +2 -2
  310. package/dist/lib/components/arc-geometry.js +2 -1
  311. package/dist/lib/components/arc-geometry.js.map +2 -2
  312. package/dist/lib/components/g.js +2 -0
  313. package/dist/lib/components/g.js.map +2 -2
  314. package/dist/lib/components/html-box.js +2 -1
  315. package/dist/lib/components/html-box.js.map +2 -2
  316. package/dist/lib/components/img.js +3 -3
  317. package/dist/lib/components/img.js.map +2 -2
  318. package/dist/lib/components/layer.js +98 -16
  319. package/dist/lib/components/layer.js.map +3 -3
  320. package/dist/lib/components/text.d.ts +16 -0
  321. package/dist/lib/components/text.js +131 -24
  322. package/dist/lib/components/text.js.map +2 -2
  323. package/dist/lib/define-primitive.d.ts +4 -2
  324. package/dist/lib/define-primitive.js +3 -1
  325. package/dist/lib/define-primitive.js.map +2 -2
  326. package/dist/lib/element/metadata.d.ts +9 -0
  327. package/dist/lib/element/metadata.js +19 -0
  328. package/dist/lib/element/metadata.js.map +2 -2
  329. package/dist/lib/element/resolve-primitive-inputs.d.ts +2 -0
  330. package/dist/lib/element/resolve-primitive-inputs.js +17 -4
  331. package/dist/lib/element/resolve-primitive-inputs.js.map +2 -2
  332. package/dist/lib/events/event-facade.d.ts +18 -0
  333. package/dist/lib/events/event-facade.js +28 -2
  334. package/dist/lib/events/event-facade.js.map +2 -2
  335. package/dist/lib/events/hit-test.js +2 -1
  336. package/dist/lib/events/hit-test.js.map +2 -2
  337. package/dist/lib/events/propagation.d.ts +2 -1
  338. package/dist/lib/events/propagation.js +22 -16
  339. package/dist/lib/events/propagation.js.map +2 -2
  340. package/dist/lib/events/registrations.d.ts +10 -0
  341. package/dist/lib/events/registrations.js +160 -5
  342. package/dist/lib/events/registrations.js.map +2 -2
  343. package/dist/lib/execute-render.js +25 -1
  344. package/dist/lib/execute-render.js.map +2 -2
  345. package/dist/lib/filter/filter-region.js +3 -10
  346. package/dist/lib/filter/filter-region.js.map +2 -2
  347. package/dist/lib/focus/focus-manager.d.ts +8 -1
  348. package/dist/lib/focus/focus-manager.js +87 -43
  349. package/dist/lib/focus/focus-manager.js.map +2 -2
  350. package/dist/lib/focus/geometry.d.ts +2 -0
  351. package/dist/lib/focus/geometry.js +6 -0
  352. package/dist/lib/focus/geometry.js.map +2 -2
  353. package/dist/lib/geometry/path-bend-guide.js +1 -1
  354. package/dist/lib/geometry/path-bend-guide.js.map +2 -2
  355. package/dist/lib/geometry/path-geometry.js +12 -11
  356. package/dist/lib/geometry/path-geometry.js.map +2 -2
  357. package/dist/lib/geometry/path-transforms.js +17 -21
  358. package/dist/lib/geometry/path-transforms.js.map +2 -2
  359. package/dist/lib/geometry/path-warp-bezier.js +3 -1
  360. package/dist/lib/geometry/path-warp-bezier.js.map +2 -2
  361. package/dist/lib/geometry/path-warp.js +1 -1
  362. package/dist/lib/geometry/path-warp.js.map +2 -2
  363. package/dist/lib/global-state.js +2 -0
  364. package/dist/lib/global-state.js.map +2 -2
  365. package/dist/lib/html/html-events.d.ts +32 -0
  366. package/dist/lib/html/html-events.js +179 -0
  367. package/dist/lib/html/html-events.js.map +7 -0
  368. package/dist/lib/html/html-service.d.ts +8 -2
  369. package/dist/lib/html/html-service.js +198 -65
  370. package/dist/lib/html/html-service.js.map +2 -2
  371. package/dist/lib/html/overlay-config.js +7 -6
  372. package/dist/lib/html/overlay-config.js.map +2 -2
  373. package/dist/lib/html/types.d.ts +29 -2
  374. package/dist/lib/layout/absolute.d.ts +11 -5
  375. package/dist/lib/layout/absolute.js +329 -55
  376. package/dist/lib/layout/absolute.js.map +3 -3
  377. package/dist/lib/layout/allocation-checkpoint-owner.d.ts +11 -0
  378. package/dist/lib/layout/allocation-checkpoint-owner.js +86 -0
  379. package/dist/lib/layout/allocation-checkpoint-owner.js.map +7 -0
  380. package/dist/lib/layout/allocation-checkpoint.d.ts +53 -0
  381. package/dist/lib/layout/allocation-checkpoint.js +463 -0
  382. package/dist/lib/layout/allocation-checkpoint.js.map +7 -0
  383. package/dist/lib/layout/allocation-dependencies.d.ts +30 -0
  384. package/dist/lib/layout/allocation-dependencies.js +90 -0
  385. package/dist/lib/layout/allocation-dependencies.js.map +7 -0
  386. package/dist/lib/layout/allocation-revision.d.ts +13 -0
  387. package/dist/lib/layout/allocation-revision.js +67 -0
  388. package/dist/lib/layout/allocation-revision.js.map +7 -0
  389. package/dist/lib/layout/box-insets.d.ts +17 -0
  390. package/dist/lib/layout/box-insets.js +138 -0
  391. package/dist/lib/layout/box-insets.js.map +7 -0
  392. package/dist/lib/layout/box-sizing.d.ts +16 -0
  393. package/dist/lib/layout/box-sizing.js +77 -0
  394. package/dist/lib/layout/box-sizing.js.map +7 -0
  395. package/dist/lib/layout/box.js +42 -12
  396. package/dist/lib/layout/box.js.map +2 -2
  397. package/dist/lib/layout/canvas-measurement.d.ts +13 -0
  398. package/dist/lib/layout/canvas-measurement.js +57 -0
  399. package/dist/lib/layout/canvas-measurement.js.map +7 -0
  400. package/dist/lib/layout/context.d.ts +35 -6
  401. package/dist/lib/layout/context.js +72 -3
  402. package/dist/lib/layout/context.js.map +2 -2
  403. package/dist/lib/layout/define-layout-component.d.ts +23 -0
  404. package/dist/lib/layout/define-layout-component.js +84 -0
  405. package/dist/lib/layout/define-layout-component.js.map +7 -0
  406. package/dist/lib/layout/flex-allocation-cache.d.ts +42 -0
  407. package/dist/lib/layout/flex-baseline-mode.d.ts +2 -0
  408. package/dist/lib/layout/flex-baseline-mode.js +7 -0
  409. package/dist/lib/layout/flex-baseline-mode.js.map +7 -0
  410. package/dist/lib/layout/flex.d.ts +50 -15
  411. package/dist/lib/layout/flex.js +2124 -195
  412. package/dist/lib/layout/flex.js.map +3 -3
  413. package/dist/lib/layout/flow.js +225 -49
  414. package/dist/lib/layout/flow.js.map +2 -2
  415. package/dist/lib/layout/geometry-publication.d.ts +53 -0
  416. package/dist/lib/layout/geometry-publication.js +244 -0
  417. package/dist/lib/layout/geometry-publication.js.map +7 -0
  418. package/dist/lib/layout/grid-kernel.d.ts +63 -0
  419. package/dist/lib/layout/grid-kernel.js +168 -0
  420. package/dist/lib/layout/grid-kernel.js.map +7 -0
  421. package/dist/lib/layout/grid.d.ts +63 -4
  422. package/dist/lib/layout/grid.js +767 -171
  423. package/dist/lib/layout/grid.js.map +3 -3
  424. package/dist/lib/layout/measure.d.ts +55 -3
  425. package/dist/lib/layout/measure.js +448 -15
  426. package/dist/lib/layout/measure.js.map +2 -2
  427. package/dist/lib/layout/overlay.js +81 -23
  428. package/dist/lib/layout/overlay.js.map +2 -2
  429. package/dist/lib/layout/participation.d.ts +27 -0
  430. package/dist/lib/layout/participation.js +188 -0
  431. package/dist/lib/layout/participation.js.map +7 -0
  432. package/dist/lib/layout/place-child.js +1 -1
  433. package/dist/lib/layout/place-child.js.map +2 -2
  434. package/dist/lib/layout/positioning-diagnostics.d.ts +1 -1
  435. package/dist/lib/layout/positioning-diagnostics.js +13 -2
  436. package/dist/lib/layout/positioning-diagnostics.js.map +2 -2
  437. package/dist/lib/layout/prepared-root.d.ts +121 -0
  438. package/dist/lib/layout/prepared-root.js +360 -0
  439. package/dist/lib/layout/prepared-root.js.map +7 -0
  440. package/dist/lib/layout/standalone-kernel.d.ts +60 -0
  441. package/dist/lib/layout/standalone-kernel.js +722 -0
  442. package/dist/lib/layout/standalone-kernel.js.map +7 -0
  443. package/dist/lib/layout/topology.d.ts +21 -0
  444. package/dist/lib/layout/topology.js +113 -0
  445. package/dist/lib/layout/topology.js.map +7 -0
  446. package/dist/lib/layout/types.d.ts +5 -0
  447. package/dist/lib/layout/wasm/artifact.d.ts +1 -0
  448. package/dist/lib/layout/wasm/artifact.js +5 -0
  449. package/dist/lib/layout/wasm/artifact.js.map +7 -0
  450. package/dist/lib/layout/wasm/bytes.d.ts +1 -0
  451. package/dist/lib/layout/wasm/bytes.js +5 -0
  452. package/dist/lib/layout/wasm/bytes.js.map +7 -0
  453. package/dist/lib/layout/wasm/embedded.d.ts +2 -0
  454. package/dist/lib/layout/wasm/embedded.js +12 -0
  455. package/dist/lib/layout/wasm/embedded.js.map +7 -0
  456. package/dist/lib/layout/wasm/layout.wasm +0 -0
  457. package/dist/lib/layout/wasm/module.d.ts +8 -0
  458. package/dist/lib/layout/wasm/module.js +70 -0
  459. package/dist/lib/layout/wasm/module.js.map +7 -0
  460. package/dist/lib/layout/wasm/region.d.ts +267 -0
  461. package/dist/lib/layout/wasm/region.js +1018 -0
  462. package/dist/lib/layout/wasm/region.js.map +7 -0
  463. package/dist/lib/manipulation/controller.js +4 -7
  464. package/dist/lib/manipulation/controller.js.map +2 -2
  465. package/dist/lib/manipulation/frame.js +1 -1
  466. package/dist/lib/manipulation/frame.js.map +2 -2
  467. package/dist/lib/manipulation/handles.js +32 -33
  468. package/dist/lib/manipulation/handles.js.map +2 -2
  469. package/dist/lib/manipulation/solve.js +12 -10
  470. package/dist/lib/manipulation/solve.js.map +2 -2
  471. package/dist/lib/mount-pibbl.js +1 -0
  472. package/dist/lib/mount-pibbl.js.map +2 -2
  473. package/dist/lib/mount-prepared-pibbl.d.ts +5 -0
  474. package/dist/lib/mount-prepared-pibbl.js +29 -0
  475. package/dist/lib/mount-prepared-pibbl.js.map +7 -0
  476. package/dist/lib/mount-request.d.ts +8 -0
  477. package/dist/lib/mount-request.js +41 -0
  478. package/dist/lib/mount-request.js.map +7 -0
  479. package/dist/lib/pibbl.d.ts +21 -13
  480. package/dist/lib/pibbl.js +18 -16
  481. package/dist/lib/pibbl.js.map +2 -2
  482. package/dist/lib/recording/recording.d.ts +43 -0
  483. package/dist/lib/recording/recording.js +555 -0
  484. package/dist/lib/recording/recording.js.map +7 -0
  485. package/dist/lib/recording/types.d.ts +118 -0
  486. package/dist/lib/recording/wasm-bytes.d.ts +1 -0
  487. package/dist/lib/recording/wasm-bytes.js +5 -0
  488. package/dist/lib/recording/wasm-bytes.js.map +7 -0
  489. package/dist/lib/recording/worker-source.d.ts +1 -0
  490. package/dist/lib/recording/worker-source.js +5 -0
  491. package/dist/lib/recording/worker-source.js.map +7 -0
  492. package/dist/lib/render-layer/controller.d.ts +9 -3
  493. package/dist/lib/render-layer/controller.js +259 -110
  494. package/dist/lib/render-layer/controller.js.map +2 -2
  495. package/dist/lib/render-transaction.d.ts +12 -2
  496. package/dist/lib/render-transaction.js +69 -1
  497. package/dist/lib/render-transaction.js.map +2 -2
  498. package/dist/lib/render.js +32 -8
  499. package/dist/lib/render.js.map +2 -2
  500. package/dist/lib/scheduler/realm-scheduler.d.ts +2 -0
  501. package/dist/lib/scheduler/realm-scheduler.js +55 -26
  502. package/dist/lib/scheduler/realm-scheduler.js.map +2 -2
  503. package/dist/lib/scheduler/renderer-participant.js +1 -0
  504. package/dist/lib/scheduler/renderer-participant.js.map +2 -2
  505. package/dist/lib/series-inspection-frame.d.ts +18 -0
  506. package/dist/lib/series-inspection-frame.js +70 -0
  507. package/dist/lib/series-inspection-frame.js.map +7 -0
  508. package/dist/lib/signals/edge.d.ts +7 -4
  509. package/dist/lib/signals/edge.js +25 -3
  510. package/dist/lib/signals/edge.js.map +2 -2
  511. package/dist/lib/signals/graph.d.ts +16 -2
  512. package/dist/lib/signals/graph.js +54 -12
  513. package/dist/lib/signals/graph.js.map +2 -2
  514. package/dist/lib/signals/input-provision.d.ts +15 -0
  515. package/dist/lib/signals/input-provision.js +53 -3
  516. package/dist/lib/signals/input-provision.js.map +2 -2
  517. package/dist/lib/signals/render-consumer.d.ts +3 -0
  518. package/dist/lib/signals/render-consumer.js +22 -14
  519. package/dist/lib/signals/render-consumer.js.map +2 -2
  520. package/dist/lib/style/positioning.d.ts +50 -2
  521. package/dist/lib/style/positioning.js +28 -4
  522. package/dist/lib/style/positioning.js.map +2 -2
  523. package/dist/lib/style/resolve-built-in.d.ts +4 -3
  524. package/dist/lib/style/resolve-built-in.js +17 -3
  525. package/dist/lib/style/resolve-built-in.js.map +2 -2
  526. package/dist/lib/style/resolve-dispatch.d.ts +3 -0
  527. package/dist/lib/style/resolve-dispatch.js +77 -4
  528. package/dist/lib/style/resolve-dispatch.js.map +2 -2
  529. package/dist/lib/style/resolve-length.d.ts +2 -0
  530. package/dist/lib/style/resolve-length.js +13 -9
  531. package/dist/lib/style/resolve-length.js.map +2 -2
  532. package/dist/lib/style/sizing-length.d.ts +51 -0
  533. package/dist/lib/style/sizing-length.js +77 -0
  534. package/dist/lib/style/sizing-length.js.map +7 -0
  535. package/dist/lib/style/types.d.ts +63 -25
  536. package/dist/lib/surface/root-surface.js +10 -6
  537. package/dist/lib/surface/root-surface.js.map +2 -2
  538. package/dist/lib/textures/texture.js +10 -8
  539. package/dist/lib/textures/texture.js.map +2 -2
  540. package/dist/lib/transitions/capture.js +4 -1
  541. package/dist/lib/transitions/capture.js.map +2 -2
  542. package/dist/lib/transitions/embers-physics.js +17 -10
  543. package/dist/lib/transitions/embers-physics.js.map +2 -2
  544. package/dist/lib/types.d.ts +110 -1
  545. package/dist/sync.d.ts +16 -0
  546. package/dist/sync.js +13 -0
  547. package/dist/sync.js.map +7 -0
  548. package/dist/sync.mjs +1 -0
  549. package/package.json +26 -3
@@ -0,0 +1,244 @@
1
+ import { resolveStagedTargetRootBounds } from "../focus/geometry.js";
2
+ import { PibblPaintEntryKind } from "../events/paint-entry.js";
3
+ import { GLOBAL_STATE } from "../global-state.js";
4
+ import { getLogicalLayoutOrigin } from "./context.js";
5
+ let nextNodeId = 0;
6
+ const nodeIds = /* @__PURE__ */ new WeakMap();
7
+ const EMPTY = Object.freeze({ generation: 0, boxes: Object.freeze([]), changed: Object.freeze([]) });
8
+ const owners = /* @__PURE__ */ new WeakMap();
9
+ const pending = /* @__PURE__ */ new WeakMap();
10
+ function snapshotLayoutGeometry(instance) {
11
+ return owners.get(instance.interactionRoot ?? instance)?.snapshot ?? EMPTY;
12
+ }
13
+ function beginLayoutGeometry(instance, transaction) {
14
+ const root = instance.interactionRoot ?? instance;
15
+ let owner = owners.get(root);
16
+ if (!owner) {
17
+ owner = { instances: /* @__PURE__ */ new Map(), snapshot: EMPTY, paint: /* @__PURE__ */ new Map(), targets: /* @__PURE__ */ new Map() };
18
+ owners.set(root, owner);
19
+ root.mainTeardowns.add(() => {
20
+ owners.delete(root);
21
+ owner.instances.clear();
22
+ owner.snapshot = EMPTY;
23
+ owner.paint = /* @__PURE__ */ new Map();
24
+ owner.targets = /* @__PURE__ */ new Map();
25
+ });
26
+ }
27
+ let roots = pending.get(transaction);
28
+ if (!roots) {
29
+ roots = /* @__PURE__ */ new Map();
30
+ pending.set(transaction, roots);
31
+ }
32
+ let instances = roots.get(root);
33
+ if (!instances) {
34
+ instances = /* @__PURE__ */ new Map();
35
+ roots.set(root, instances);
36
+ const staged = instances, committed = owner;
37
+ let candidate;
38
+ let next;
39
+ let paint;
40
+ let targets;
41
+ transaction.onPreflight?.(() => {
42
+ targets = /* @__PURE__ */ new Map();
43
+ committed.candidateTargets = targets;
44
+ for (const target of root.eventRoot.targets) {
45
+ if (!retiredTargets.get(transaction)?.has(target)) targets.set(target, preparedLayoutTargetBounds(transaction, target));
46
+ }
47
+ for (const target of preparedTargets.get(transaction)?.keys() ?? []) {
48
+ if ((target.owner.interactionRoot ?? target.owner) === root && !retiredTargets.get(transaction)?.has(target)) targets.set(target, preparedLayoutTargetBounds(transaction, target));
49
+ }
50
+ next = new Map(committed.instances);
51
+ paint = new Map(committed.paint);
52
+ for (const instance2 of staged.keys()) {
53
+ const entries = [];
54
+ for (const entry of instance2.paintEntries) {
55
+ const transform = copyMatrix(entry.transform);
56
+ const clippingStack = Object.freeze(entry.clippingStack.map((clip) => Object.freeze({
57
+ ...clip,
58
+ path: new Path2D(clip.path),
59
+ transform: copyMatrix(clip.transform)
60
+ })));
61
+ entries.push(entry.paintKind === PibblPaintEntryKind.Path ? Object.freeze({ ...entry, path: new Path2D(entry.path), transform, clippingStack }) : Object.freeze({ ...entry, bounds: new Path2D(entry.bounds), transform, clippingStack }));
62
+ }
63
+ paint.set(instance2, Object.freeze(entries));
64
+ }
65
+ for (const [instance2, boxes2] of staged) next.set(instance2, boxes2);
66
+ const boxes = [], changed = [];
67
+ for (const [instance2, entries] of next) {
68
+ if (instance2.mainTeardowns.closed) {
69
+ next.delete(instance2);
70
+ paint.delete(instance2);
71
+ continue;
72
+ }
73
+ const previous = committed.instances.get(instance2);
74
+ for (const [component, box] of entries) {
75
+ validate(box);
76
+ boxes.push(box);
77
+ const before = previous?.get(component);
78
+ if (!before || !sameBox(before, box)) changed.push(Object.freeze({ previous: before, current: box }));
79
+ }
80
+ }
81
+ for (const [instance2, entries] of committed.instances) {
82
+ const current = next.get(instance2);
83
+ for (const [component, previous] of entries) if (!current?.has(component)) changed.push(Object.freeze({ previous, current: void 0 }));
84
+ }
85
+ candidate = Object.freeze({ generation: committed.snapshot.generation + 1, boxes: Object.freeze(boxes), changed: Object.freeze(changed) });
86
+ });
87
+ const adopt = () => {
88
+ if (candidate && next && paint && targets && !root.mainTeardowns.closed) {
89
+ committed.instances = next;
90
+ committed.snapshot = candidate;
91
+ committed.paint = paint;
92
+ committed.targets = targets;
93
+ }
94
+ };
95
+ if (transaction.onAdopt) transaction.onAdopt(adopt);
96
+ transaction.onFinish((success) => {
97
+ if (success && !transaction.onAdopt) adopt();
98
+ if (!success && transaction.failed !== false) {
99
+ committed.instances.clear();
100
+ committed.snapshot = EMPTY;
101
+ committed.paint = /* @__PURE__ */ new Map();
102
+ committed.targets = /* @__PURE__ */ new Map();
103
+ }
104
+ if (committed.candidateTargets === targets) committed.candidateTargets = void 0;
105
+ staged.clear();
106
+ roots.delete(root);
107
+ if (!roots.size) pending.delete(transaction);
108
+ });
109
+ }
110
+ instances.set(instance, /* @__PURE__ */ new Map());
111
+ }
112
+ function stageLayoutGeometry(component) {
113
+ const instance = GLOBAL_STATE.currentPibblInstance, transaction = GLOBAL_STATE.renderTransaction;
114
+ const allocation = GLOBAL_STATE.layoutStack?.at(-1)?.allocation;
115
+ if (!instance || !transaction || !allocation) return;
116
+ const entries = pending.get(transaction)?.get(instance.interactionRoot ?? instance)?.get(instance);
117
+ if (!entries) return;
118
+ const origin = getLogicalLayoutOrigin();
119
+ let nodeId = nodeIds.get(component);
120
+ if (nodeId === void 0) {
121
+ nodeId = ++nextNodeId;
122
+ nodeIds.set(component, nodeId);
123
+ }
124
+ entries.set(component, Object.freeze({
125
+ nodeId,
126
+ width: allocation.width,
127
+ height: allocation.height,
128
+ x: origin.x,
129
+ y: origin.y
130
+ }));
131
+ }
132
+ function validate(box) {
133
+ if (!Number.isFinite(box.width) || !Number.isFinite(box.height) || box.width < 0 || box.height < 0 || !Number.isFinite(box.x) || !Number.isFinite(box.y)) throw new Error("Layout geometry publication requires finite logical boxes and origins.");
134
+ }
135
+ function sameBox(a, b) {
136
+ return a.width === b.width && a.height === b.height && a.x === b.x && a.y === b.y;
137
+ }
138
+ function committedLayoutPaintEntries(instance) {
139
+ const owner = owners.get(instance.interactionRoot ?? instance);
140
+ if (!owner) return;
141
+ return owner.paint.get(instance) ?? [];
142
+ }
143
+ function committedInstanceRootTransform(instance) {
144
+ const root = instance.eventRoot.rootInstance;
145
+ if (!root || instance.mainTeardowns.closed) return;
146
+ let owner = instance;
147
+ let transform = new DOMMatrix();
148
+ while (owner !== root) {
149
+ const parent = owner.parent && GLOBAL_STATE.pibblInstances.get(owner.parent);
150
+ if (!parent || parent.mainTeardowns.closed) return;
151
+ const entries = committedLayoutPaintEntries(parent) ?? Array.from(parent.paintEntries);
152
+ const bridge = entries.find((entry) => (entry.paintKind === PibblPaintEntryKind.NestedInstance || entry.paintKind === PibblPaintEntryKind.Resolver) && entry.instance === owner);
153
+ if (!bridge) return;
154
+ transform = bridge.transform.multiply(transform);
155
+ owner = parent;
156
+ }
157
+ return transform;
158
+ }
159
+ function copyMatrix(matrix) {
160
+ return new DOMMatrix([matrix.a, matrix.b, matrix.c, matrix.d, matrix.e, matrix.f]);
161
+ }
162
+ function releaseLayoutTargetGeometry(target) {
163
+ const owner = owners.get(target.owner.interactionRoot ?? target.owner);
164
+ owner?.targets.delete(target);
165
+ owner?.candidateTargets?.delete(target);
166
+ const transaction = GLOBAL_STATE.renderTransaction ?? target.owner.eventRoot.renderTransaction;
167
+ if (transaction) {
168
+ stageLayoutTargetRetirement(transaction, target);
169
+ preparedTargets.get(transaction)?.delete(target);
170
+ preparedTargetResults.get(transaction)?.delete(target);
171
+ }
172
+ }
173
+ function committedLayoutTargetBounds(target) {
174
+ const owner = owners.get(target.owner.interactionRoot ?? target.owner);
175
+ return owner?.targets;
176
+ }
177
+ const preparedHtml = /* @__PURE__ */ new WeakMap();
178
+ function stageLayoutHtmlGeometry(transaction, region, geometry) {
179
+ let entries = preparedHtml.get(transaction);
180
+ if (!entries) {
181
+ entries = /* @__PURE__ */ new Map();
182
+ preparedHtml.set(transaction, entries);
183
+ transaction.onFinish(() => preparedHtml.delete(transaction));
184
+ }
185
+ entries.set(region, geometry);
186
+ }
187
+ function preparedLayoutHtmlGeometry(transaction, region) {
188
+ return preparedHtml.get(transaction)?.get(region);
189
+ }
190
+ const preparedTargets = /* @__PURE__ */ new WeakMap();
191
+ const preparedTargetResults = /* @__PURE__ */ new WeakMap();
192
+ const retiredTargets = /* @__PURE__ */ new WeakMap();
193
+ function stageLayoutTargetRetirement(transaction, target) {
194
+ let entries = retiredTargets.get(transaction);
195
+ if (!entries) {
196
+ entries = /* @__PURE__ */ new Set();
197
+ retiredTargets.set(transaction, entries);
198
+ transaction.onFinish(() => retiredTargets.delete(transaction));
199
+ }
200
+ entries.add(target);
201
+ }
202
+ function stageLayoutTargetGeometry(transaction, target, geometry) {
203
+ if (retiredTargets.get(transaction)?.has(target)) return;
204
+ let entries = preparedTargets.get(transaction);
205
+ if (!entries) {
206
+ entries = /* @__PURE__ */ new Map();
207
+ preparedTargets.set(transaction, entries);
208
+ transaction.onFinish(() => preparedTargets.delete(transaction));
209
+ }
210
+ entries.set(target, geometry);
211
+ }
212
+ function preparedLayoutTargetBounds(transaction, target) {
213
+ let results = preparedTargetResults.get(transaction);
214
+ if (!results) {
215
+ results = /* @__PURE__ */ new Map();
216
+ preparedTargetResults.set(transaction, results);
217
+ transaction.onFinish(() => preparedTargetResults.delete(transaction));
218
+ }
219
+ if (results.has(target)) return results.get(target);
220
+ const staged = preparedTargets.get(transaction)?.get(target);
221
+ const bounds = staged ? resolveStagedTargetRootBounds({
222
+ ...target,
223
+ keyboardNavigationBounds: staged.bounds,
224
+ keyboardNavigationPoints: void 0,
225
+ paintEntry: { ...target.paintEntry, transform: staged.transform }
226
+ }) : resolveStagedTargetRootBounds(target);
227
+ results.set(target, bounds);
228
+ return bounds;
229
+ }
230
+ export {
231
+ beginLayoutGeometry,
232
+ committedInstanceRootTransform,
233
+ committedLayoutPaintEntries,
234
+ committedLayoutTargetBounds,
235
+ preparedLayoutHtmlGeometry,
236
+ preparedLayoutTargetBounds,
237
+ releaseLayoutTargetGeometry,
238
+ snapshotLayoutGeometry,
239
+ stageLayoutGeometry,
240
+ stageLayoutHtmlGeometry,
241
+ stageLayoutTargetGeometry,
242
+ stageLayoutTargetRetirement
243
+ };
244
+ //# sourceMappingURL=geometry-publication.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/lib/layout/geometry-publication.ts"],
4
+ "sourcesContent": ["import type { HtmlFocusRegion } from '../focus/html-focus-region.js';\nimport { resolveStagedTargetRootBounds } from '../focus/geometry.js';\nimport type { PibblEventTargetRegistration } from '../events/registrations.js';\nimport type { LayoutBox } from './types.js';\nimport { PibblPaintEntryKind, type PibblPaintEntry } from '../events/paint-entry.js';\nimport { GLOBAL_STATE } from '../global-state.js';\nimport { getLogicalLayoutOrigin } from './context.js';\nimport type { PibblComponentRefs, PibblInstance, PibblRenderTransaction } from '../types.js';\n\ninterface GeometryBox {\n readonly nodeId: number;\n readonly width: number;\n readonly height: number;\n readonly x: number;\n readonly y: number;\n}\ninterface GeometryChange {\n readonly previous: GeometryBox | undefined;\n readonly current: GeometryBox | undefined;\n}\ninterface GeometrySnapshot {\n readonly generation: number;\n readonly boxes: readonly GeometryBox[];\n readonly changed: readonly GeometryChange[];\n}\ntype InstanceGeometry = ReadonlyMap<PibblComponentRefs<any>, GeometryBox>;\ninterface GeometryOwner {\n instances: Map<PibblInstance, InstanceGeometry>;\n snapshot: GeometrySnapshot;\n paint: ReadonlyMap<PibblInstance, readonly PibblPaintEntry[]>;\n targets: Map<PibblEventTargetRegistration, Readonly<LayoutBox> | undefined>;\n candidateTargets?: Map<PibblEventTargetRegistration, Readonly<LayoutBox> | undefined>;\n}\nlet nextNodeId = 0;\nconst nodeIds = new WeakMap<PibblComponentRefs<any>, number>();\nconst EMPTY: GeometrySnapshot = Object.freeze({ generation: 0, boxes: Object.freeze([]), changed: Object.freeze([]) });\nconst owners = new WeakMap<PibblInstance, GeometryOwner>();\nconst pending = new WeakMap<PibblRenderTransaction, Map<PibblInstance, Map<PibblInstance, Map<PibblComponentRefs<any>, GeometryBox>>>>();\n\n/** Internal immutable receipt; it never establishes a reactive geometry-to-style edge. */\nexport function snapshotLayoutGeometry(instance: PibblInstance): GeometrySnapshot {\n return owners.get(instance.interactionRoot ?? instance)?.snapshot ?? EMPTY;\n}\n\n/** Start one instance's staged geometry, preserving clean managed Layer receipts. */\nexport function beginLayoutGeometry(instance: PibblInstance, transaction: PibblRenderTransaction): void {\n const root = instance.interactionRoot ?? instance;\n let owner = owners.get(root);\n if (!owner) {\n owner = { instances: new Map(), snapshot: EMPTY, paint: new Map(), targets: new Map() };\n owners.set(root, owner);\n root.mainTeardowns.add(() => { owners.delete(root); owner!.instances.clear(); owner!.snapshot = EMPTY; owner!.paint = new Map(); owner!.targets = new Map(); });\n }\n let roots = pending.get(transaction);\n if (!roots) { roots = new Map(); pending.set(transaction, roots); }\n let instances = roots.get(root);\n if (!instances) {\n instances = new Map(); roots.set(root, instances);\n const staged = instances, committed = owner;\n let candidate: GeometrySnapshot | undefined;\n let next: Map<PibblInstance, InstanceGeometry> | undefined;\n let paint: Map<PibblInstance, readonly PibblPaintEntry[]> | undefined;\n let targets: Map<PibblEventTargetRegistration, Readonly<LayoutBox> | undefined> | undefined;\n transaction.onPreflight?.(() => {\n targets = new Map();\n committed.candidateTargets = targets;\n for (const target of root.eventRoot.targets) {\n if (!retiredTargets.get(transaction)?.has(target)) targets.set(target, preparedLayoutTargetBounds(transaction, target));\n }\n for (const target of preparedTargets.get(transaction)?.keys() ?? []) {\n if ((target.owner.interactionRoot ?? target.owner) === root && !retiredTargets.get(transaction)?.has(target)) targets.set(target, preparedLayoutTargetBounds(transaction, target));\n }\n next = new Map(committed.instances);\n paint = new Map(committed.paint);\n for (const instance of staged.keys()) {\n const entries: PibblPaintEntry[] = [];\n for (const entry of instance.paintEntries) {\n const transform = copyMatrix(entry.transform);\n const clippingStack = Object.freeze(entry.clippingStack.map(clip => Object.freeze({\n ...clip, path: new Path2D(clip.path), transform: copyMatrix(clip.transform),\n })));\n entries.push(entry.paintKind === PibblPaintEntryKind.Path ?\n Object.freeze({ ...entry, path: new Path2D(entry.path), transform, clippingStack }) :\n Object.freeze({ ...entry, bounds: new Path2D(entry.bounds), transform, clippingStack }));\n }\n paint.set(instance, Object.freeze(entries));\n }\n for (const [instance, boxes] of staged) next.set(instance, boxes);\n const boxes: GeometryBox[] = [], changed: GeometryChange[] = [];\n for (const [instance, entries] of next) {\n if (instance.mainTeardowns.closed) { next.delete(instance); paint.delete(instance); continue; }\n const previous = committed.instances.get(instance);\n for (const [component, box] of entries) {\n validate(box);\n boxes.push(box);\n const before = previous?.get(component);\n if (!before || !sameBox(before, box)) changed.push(Object.freeze({ previous: before, current: box }));\n }\n }\n for (const [instance, entries] of committed.instances) {\n const current = next.get(instance);\n for (const [component, previous] of entries) if (!current?.has(component)) changed.push(Object.freeze({ previous, current: undefined }));\n }\n candidate = Object.freeze({ generation: committed.snapshot.generation + 1, boxes: Object.freeze(boxes), changed: Object.freeze(changed) });\n });\n const adopt = () => {\n // Preflight performs allocation and validation. Adoption is pointer swaps only.\n if (candidate && next && paint && targets && !root.mainTeardowns.closed) {\n committed.instances = next; committed.snapshot = candidate; committed.paint = paint; committed.targets = targets;\n }\n };\n if (transaction.onAdopt) transaction.onAdopt(adopt);\n transaction.onFinish(success => {\n if (success && !transaction.onAdopt) adopt();\n if (!success && transaction.failed !== false) { committed.instances.clear(); committed.snapshot = EMPTY; committed.paint = new Map(); committed.targets = new Map(); }\n if (committed.candidateTargets === targets) committed.candidateTargets = undefined;\n staged.clear(); roots!.delete(root);\n if (!roots!.size) pending.delete(transaction);\n });\n }\n instances.set(instance, new Map());\n}\n\n/** Record the final logical allocation and accumulated layout origin for this generation. */\nexport function stageLayoutGeometry(component: PibblComponentRefs<any>): void {\n const instance = GLOBAL_STATE.currentPibblInstance, transaction = GLOBAL_STATE.renderTransaction;\n const allocation = GLOBAL_STATE.layoutStack?.at(-1)?.allocation;\n if (!instance || !transaction || !allocation) return;\n const entries = pending.get(transaction)?.get(instance.interactionRoot ?? instance)?.get(instance);\n if (!entries) return;\n const origin = getLogicalLayoutOrigin();\n let nodeId = nodeIds.get(component);\n if (nodeId === undefined) { nodeId = ++nextNodeId; nodeIds.set(component, nodeId); }\n entries.set(component, Object.freeze({ nodeId, width: allocation.width, height: allocation.height,\n x: origin.x, y: origin.y }));\n}\nfunction validate(box: GeometryBox): void {\n if (!Number.isFinite(box.width) || !Number.isFinite(box.height) || box.width < 0 || box.height < 0 ||\n !Number.isFinite(box.x) || !Number.isFinite(box.y)) throw new Error('Layout geometry publication requires finite logical boxes and origins.');\n}\nfunction sameBox(a: GeometryBox, b: GeometryBox): boolean {\n return a.width === b.width && a.height === b.height && a.x === b.x && a.y === b.y;\n}\n\n\n/** Input reads the last successful geometry, never the mutable paint preparation ledger. */\nexport function committedLayoutPaintEntries(instance: PibblInstance): readonly PibblPaintEntry[] | undefined {\n const owner = owners.get(instance.interactionRoot ?? instance);\n // Unmanaged test/backend registrations keep their existing immediate semantics.\n if (!owner) return;\n return owner.paint.get(instance) ?? [];\n}\n\n/** Composes only committed parent bridges, including clean managed Layers. */\nexport function committedInstanceRootTransform(instance: PibblInstance): DOMMatrix | undefined {\n const root = instance.eventRoot.rootInstance;\n if (!root || instance.mainTeardowns.closed) return;\n let owner = instance;\n let transform = new DOMMatrix();\n while (owner !== root) {\n const parent = owner.parent && GLOBAL_STATE.pibblInstances.get(owner.parent);\n if (!parent || parent.mainTeardowns.closed) return;\n const entries = committedLayoutPaintEntries(parent) ?? Array.from(parent.paintEntries);\n const bridge = entries.find(entry => (entry.paintKind === PibblPaintEntryKind.NestedInstance || entry.paintKind === PibblPaintEntryKind.Resolver) && entry.instance === owner);\n if (!bridge) return;\n transform = bridge.transform.multiply(transform);\n owner = parent;\n }\n return transform;\n}\n\nfunction copyMatrix(matrix: DOMMatrix): DOMMatrix {\n return new DOMMatrix([matrix.a, matrix.b, matrix.c, matrix.d, matrix.e, matrix.f]);\n}\n\n/** Released registrations cannot be retained by either committed or prepared geometry. */\nexport function releaseLayoutTargetGeometry(target: PibblEventTargetRegistration): void {\n const owner = owners.get(target.owner.interactionRoot ?? target.owner);\n owner?.targets.delete(target);\n owner?.candidateTargets?.delete(target);\n const transaction = GLOBAL_STATE.renderTransaction ?? target.owner.eventRoot.renderTransaction;\n if (transaction) {\n stageLayoutTargetRetirement(transaction, target);\n preparedTargets.get(transaction)?.delete(target);\n preparedTargetResults.get(transaction)?.delete(target);\n }\n}\n\n/** Returns a published target rectangle, including an intentional absent rectangle. */\nexport function committedLayoutTargetBounds(target: PibblEventTargetRegistration): ReadonlyMap<PibblEventTargetRegistration, Readonly<LayoutBox> | undefined> | undefined {\n const owner = owners.get(target.owner.interactionRoot ?? target.owner);\n return owner?.targets;\n}\n\n\ninterface PreparedHtmlGeometry { readonly active: boolean; readonly bounds: Readonly<LayoutBox>; }\nconst preparedHtml = new WeakMap<PibblRenderTransaction, Map<HtmlFocusRegion, PreparedHtmlGeometry>>();\n\n/** HTML and focus preflight share one candidate, without mutating the live region. */\nexport function stageLayoutHtmlGeometry(transaction: PibblRenderTransaction, region: HtmlFocusRegion, geometry: PreparedHtmlGeometry): void {\n let entries = preparedHtml.get(transaction);\n if (!entries) {\n entries = new Map(); preparedHtml.set(transaction, entries);\n transaction.onFinish(() => preparedHtml.delete(transaction));\n }\n entries.set(region, geometry);\n}\n\nexport function preparedLayoutHtmlGeometry(transaction: PibblRenderTransaction, region: HtmlFocusRegion): PreparedHtmlGeometry | undefined {\n return preparedHtml.get(transaction)?.get(region);\n}\n\n\ninterface PreparedTargetGeometry {\n readonly bounds: Readonly<LayoutBox> | undefined;\n readonly transform: DOMMatrix;\n}\nconst preparedTargets = new WeakMap<PibblRenderTransaction, Map<PibblEventTargetRegistration, PreparedTargetGeometry>>();\nconst preparedTargetResults = new WeakMap<PibblRenderTransaction, Map<PibblEventTargetRegistration, Readonly<LayoutBox> | undefined>>();\n\nconst retiredTargets = new WeakMap<PibblRenderTransaction, Set<PibblEventTargetRegistration>>();\n\n/** Excludes retiring registrations from the candidate without touching committed ownership. */\nexport function stageLayoutTargetRetirement(transaction: PibblRenderTransaction, target: PibblEventTargetRegistration): void {\n let entries = retiredTargets.get(transaction);\n if (!entries) {\n entries = new Set(); retiredTargets.set(transaction, entries);\n transaction.onFinish(() => retiredTargets.delete(transaction));\n }\n entries.add(target);\n}\n\n/** External renderer targets join geometry preparation without changing live registrations. */\nexport function stageLayoutTargetGeometry(transaction: PibblRenderTransaction, target: PibblEventTargetRegistration, geometry: PreparedTargetGeometry): void {\n if (retiredTargets.get(transaction)?.has(target)) return;\n let entries = preparedTargets.get(transaction);\n if (!entries) {\n entries = new Map(); preparedTargets.set(transaction, entries);\n transaction.onFinish(() => preparedTargets.delete(transaction));\n }\n entries.set(target, geometry);\n}\n\n/** The shared preflight result used by both the receipt and focus candidates. */\nexport function preparedLayoutTargetBounds(transaction: PibblRenderTransaction, target: PibblEventTargetRegistration): Readonly<LayoutBox> | undefined {\n let results = preparedTargetResults.get(transaction);\n if (!results) {\n results = new Map(); preparedTargetResults.set(transaction, results);\n transaction.onFinish(() => preparedTargetResults.delete(transaction));\n }\n if (results.has(target)) return results.get(target);\n const staged = preparedTargets.get(transaction)?.get(target);\n const bounds = staged ? resolveStagedTargetRootBounds({ ...target,\n keyboardNavigationBounds: staged.bounds, keyboardNavigationPoints: undefined,\n paintEntry: { ...target.paintEntry, transform: staged.transform } as NonNullable<PibblEventTargetRegistration['paintEntry']>,\n }) : resolveStagedTargetRootBounds(target);\n results.set(target, bounds);\n return bounds;\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["instance", "boxes"]
7
+ }
@@ -0,0 +1,63 @@
1
+ /** Private v2 Grid WASM protocol. ABI wiring supplies these exports. */
2
+ export interface GridV2Kernel {
3
+ grid_v2_create(): number;
4
+ grid_v2_generation(handle: number): number;
5
+ grid_v2_dispose(handle: number, generation: number): number;
6
+ grid_v2_resize_tracks(handle: number, generation: number, count: number, axis: number): number;
7
+ grid_v2_resolve_tracks(handle: number, generation: number, bound: number, gap: number, axis: number): number;
8
+ grid_v2_resize_contributions(handle: number, generation: number, count: number, axis: number): number;
9
+ grid_v2_apply_contributions(handle: number, generation: number, gap: number, axis: number): number;
10
+ grid_v2_resize_cells(handle: number, generation: number, count: number): number;
11
+ grid_v2_place_cells(handle: number, generation: number, columnsPointer: number, columns: number, rowsPointer: number, rows: number, columnGap: number, rowGap: number): number;
12
+ grid_v2_assign_cells(handle: number, generation: number, columns: number, rows: number, flow: number): number;
13
+ grid_v2_assigned_columns(handle: number, generation: number): number;
14
+ grid_v2_assigned_rows(handle: number, generation: number): number;
15
+ grid_v2_collapse_auto_fit(handle: number, generation: number, axis: number, explicit: number): number;
16
+ grid_v2_auto_fit_keep(handle: number, generation: number, index: number, axis: number): number;
17
+ memory: WebAssembly.Memory;
18
+ }
19
+ export declare const GRID_V2_TRACK_STRIDE = 7;
20
+ export declare const GRID_V2_CELL_STRIDE = 8;
21
+ export interface GridV2Cell {
22
+ readonly columnStart: number;
23
+ readonly columnSpan: number;
24
+ readonly rowStart: number;
25
+ readonly rowSpan: number;
26
+ }
27
+ export interface GridV2AutoFitCollapse {
28
+ readonly keep: readonly boolean[];
29
+ readonly cells: readonly GridV2Cell[];
30
+ }
31
+ export declare class GridV2Region {
32
+ private readonly kernel;
33
+ private readonly release?;
34
+ readonly handle: number;
35
+ readonly generation: number;
36
+ private disposed;
37
+ private readonly pointers;
38
+ private readonly counts;
39
+ private cellPointer;
40
+ private cellCount;
41
+ constructor(kernel: GridV2Kernel, release?: (() => void) | undefined);
42
+ dispose(): void;
43
+ /** A trapped instance cannot safely re-enter Rust, but still releases host ownership. */
44
+ abandon(): void;
45
+ tracks(records: readonly number[], bound: number, gap: number, axis: 0 | 1): readonly number[];
46
+ /** Returns the current resolved values after native contribution passes. */
47
+ resolvedTracks(axis: 0 | 1): readonly number[];
48
+ contributions(records: readonly number[], gap: number, axis: 0 | 1): void;
49
+ assign(cells: readonly GridV2Cell[], columns: number, rows: number, flow: 0 | 1 | 2 | 3): Readonly<{
50
+ cells: GridV2Cell[];
51
+ columns: number;
52
+ rows: number;
53
+ }>;
54
+ collapseAutoFit(axis: 0 | 1, explicit: number): GridV2AutoFitCollapse;
55
+ cells(cells: readonly GridV2Cell[], flow: 0 | 1 | 2 | 3, columnGap: number, rowGap: number): readonly {
56
+ x: number;
57
+ y: number;
58
+ width: number;
59
+ height: number;
60
+ }[];
61
+ private writeCells;
62
+ private readCells;
63
+ }
@@ -0,0 +1,168 @@
1
+ const GRID_V2_TRACK_STRIDE = 7;
2
+ const GRID_V2_CELL_STRIDE = 8;
3
+ class GridV2Region {
4
+ constructor(kernel, release) {
5
+ this.kernel = kernel;
6
+ this.release = release;
7
+ this.handle = kernel.grid_v2_create();
8
+ this.generation = this.handle ? kernel.grid_v2_generation(this.handle) : 0;
9
+ if (!this.generation) throw new Error("Grid v2 arena allocation failed");
10
+ }
11
+ kernel;
12
+ release;
13
+ handle;
14
+ generation;
15
+ disposed = false;
16
+ pointers = [0, 0];
17
+ counts = [0, 0];
18
+ cellPointer = 0;
19
+ cellCount = 0;
20
+ dispose() {
21
+ if (this.disposed) return;
22
+ this.disposed = true;
23
+ try {
24
+ if (this.kernel.grid_v2_dispose(this.handle, this.generation) !== 0) throw new Error("Grid v2 arena disposal failed");
25
+ } finally {
26
+ this.release?.();
27
+ }
28
+ }
29
+ /** A trapped instance cannot safely re-enter Rust, but still releases host ownership. */
30
+ abandon() {
31
+ if (this.disposed) return;
32
+ this.disposed = true;
33
+ this.release?.();
34
+ }
35
+ tracks(records, bound, gap, axis) {
36
+ if (this.disposed || records.length % GRID_V2_TRACK_STRIDE) {
37
+ throw new RangeError("Invalid Grid v2 track input");
38
+ }
39
+ const count = records.length / GRID_V2_TRACK_STRIDE;
40
+ const pointer = this.kernel.grid_v2_resize_tracks(this.handle, this.generation, count, axis);
41
+ if (!pointer) throw new RangeError("Grid v2 track storage allocation failed");
42
+ let values = new Float64Array(this.kernel.memory.buffer, pointer, records.length);
43
+ values.set(records);
44
+ if (this.kernel.grid_v2_resolve_tracks(this.handle, this.generation, bound, gap, axis) !== 0) {
45
+ throw new RangeError("Grid v2 track resolution failed");
46
+ }
47
+ values = new Float64Array(this.kernel.memory.buffer, pointer, records.length);
48
+ this.pointers[axis] = pointer;
49
+ this.counts[axis] = count;
50
+ const resolved = new Array(count);
51
+ for (let index = 0; index < count; index++) {
52
+ resolved[index] = values[index * GRID_V2_TRACK_STRIDE + 6];
53
+ }
54
+ return resolved;
55
+ }
56
+ /** Returns the current resolved values after native contribution passes. */
57
+ resolvedTracks(axis) {
58
+ if (this.disposed || !this.pointers[axis]) {
59
+ throw new RangeError("Grid v2 resolved tracks require initialized track storage");
60
+ }
61
+ const count = this.counts[axis];
62
+ const values = new Float64Array(
63
+ this.kernel.memory.buffer,
64
+ this.pointers[axis],
65
+ count * GRID_V2_TRACK_STRIDE
66
+ );
67
+ const resolved = new Array(count);
68
+ for (let index = 0; index < count; index++) {
69
+ resolved[index] = values[index * GRID_V2_TRACK_STRIDE + 6];
70
+ }
71
+ return resolved;
72
+ }
73
+ contributions(records, gap, axis) {
74
+ if (this.disposed || records.length % 4) {
75
+ throw new RangeError("Invalid Grid intrinsic contribution input");
76
+ }
77
+ const pointer = this.kernel.grid_v2_resize_contributions(this.handle, this.generation, records.length / 4, axis);
78
+ if (!pointer && records.length) throw new RangeError("Grid contribution storage allocation failed");
79
+ new Float64Array(this.kernel.memory.buffer, pointer, records.length).set(records);
80
+ if (this.kernel.grid_v2_apply_contributions(this.handle, this.generation, gap, axis) !== 0) {
81
+ throw new RangeError("Grid contribution resolution failed");
82
+ }
83
+ }
84
+ assign(cells, columns, rows, flow) {
85
+ const pointer = this.writeCells(cells);
86
+ if (this.kernel.grid_v2_assign_cells(this.handle, this.generation, columns, rows, flow) !== 0) {
87
+ throw new RangeError("Grid v2 cell assignment failed");
88
+ }
89
+ return {
90
+ cells: this.readCells(pointer, cells.length),
91
+ columns: this.kernel.grid_v2_assigned_columns(this.handle, this.generation),
92
+ rows: this.kernel.grid_v2_assigned_rows(this.handle, this.generation)
93
+ };
94
+ }
95
+ collapseAutoFit(axis, explicit) {
96
+ if (this.disposed) throw new RangeError("Grid v2 region is disposed");
97
+ const count = axis === 0 ? this.kernel.grid_v2_assigned_columns(this.handle, this.generation) : this.kernel.grid_v2_assigned_rows(this.handle, this.generation);
98
+ if (this.kernel.grid_v2_collapse_auto_fit(this.handle, this.generation, axis, explicit) !== 0) {
99
+ throw new RangeError("Grid auto-fit collapse failed");
100
+ }
101
+ const keep = new Array(count);
102
+ for (let index = 0; index < count; index++) {
103
+ keep[index] = this.kernel.grid_v2_auto_fit_keep(this.handle, this.generation, index, axis) !== 0;
104
+ }
105
+ return { keep, cells: this.readCells(this.cellPointer, this.cellCount) };
106
+ }
107
+ cells(cells, flow, columnGap, rowGap) {
108
+ if (this.disposed || !this.pointers[0] || !this.pointers[1]) {
109
+ throw new RangeError("Grid v2 cells require resolved tracks");
110
+ }
111
+ const pointer = this.writeCells(cells);
112
+ if (this.kernel.grid_v2_assign_cells(this.handle, this.generation, this.counts[0], this.counts[1], flow) !== 0) {
113
+ throw new RangeError("Grid v2 cell assignment failed");
114
+ }
115
+ if (this.kernel.grid_v2_place_cells(this.handle, this.generation, this.pointers[0], this.counts[0], this.pointers[1], this.counts[1], columnGap, rowGap) !== 0) {
116
+ throw new RangeError("Grid v2 cell placement failed");
117
+ }
118
+ const values = new Float64Array(this.kernel.memory.buffer, pointer, cells.length * GRID_V2_CELL_STRIDE);
119
+ const placements = new Array(cells.length);
120
+ for (let index = 0; index < cells.length; index++) {
121
+ const offset = index * GRID_V2_CELL_STRIDE;
122
+ placements[index] = {
123
+ x: values[offset + 4],
124
+ y: values[offset + 5],
125
+ width: values[offset + 6],
126
+ height: values[offset + 7]
127
+ };
128
+ }
129
+ return placements;
130
+ }
131
+ writeCells(cells) {
132
+ if (this.disposed) throw new RangeError("Grid v2 region is disposed");
133
+ const pointer = this.kernel.grid_v2_resize_cells(this.handle, this.generation, cells.length);
134
+ if (!pointer && cells.length) throw new RangeError("Grid v2 cell storage allocation failed");
135
+ const values = new Float64Array(this.kernel.memory.buffer, pointer, cells.length * GRID_V2_CELL_STRIDE);
136
+ for (let index = 0; index < cells.length; index++) {
137
+ const cell = cells[index];
138
+ const offset = index * GRID_V2_CELL_STRIDE;
139
+ values[offset] = cell.columnStart;
140
+ values[offset + 1] = cell.columnSpan;
141
+ values[offset + 2] = cell.rowStart;
142
+ values[offset + 3] = cell.rowSpan;
143
+ }
144
+ this.cellPointer = pointer;
145
+ this.cellCount = cells.length;
146
+ return pointer;
147
+ }
148
+ readCells(pointer, count) {
149
+ const values = new Float64Array(this.kernel.memory.buffer, pointer, count * GRID_V2_CELL_STRIDE);
150
+ const cells = new Array(count);
151
+ for (let index = 0; index < count; index++) {
152
+ const offset = index * GRID_V2_CELL_STRIDE;
153
+ cells[index] = {
154
+ columnStart: values[offset],
155
+ columnSpan: values[offset + 1],
156
+ rowStart: values[offset + 2],
157
+ rowSpan: values[offset + 3]
158
+ };
159
+ }
160
+ return cells;
161
+ }
162
+ }
163
+ export {
164
+ GRID_V2_CELL_STRIDE,
165
+ GRID_V2_TRACK_STRIDE,
166
+ GridV2Region
167
+ };
168
+ //# sourceMappingURL=grid-kernel.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/lib/layout/grid-kernel.ts"],
4
+ "sourcesContent": ["/** Private v2 Grid WASM protocol. ABI wiring supplies these exports. */\nexport interface GridV2Kernel {\n grid_v2_create(): number;\n grid_v2_generation(handle: number): number;\n grid_v2_dispose(handle: number, generation: number): number;\n grid_v2_resize_tracks(handle: number, generation: number, count: number, axis: number): number;\n grid_v2_resolve_tracks(handle: number, generation: number, bound: number, gap: number, axis: number): number;\n grid_v2_resize_contributions(handle: number, generation: number, count: number, axis: number): number;\n grid_v2_apply_contributions(handle: number, generation: number, gap: number, axis: number): number;\n grid_v2_resize_cells(handle: number, generation: number, count: number): number;\n grid_v2_place_cells(handle: number, generation: number, columnsPointer: number, columns: number, rowsPointer: number, rows: number, columnGap: number, rowGap: number): number;\n grid_v2_assign_cells(handle: number, generation: number, columns: number, rows: number, flow: number): number;\n grid_v2_assigned_columns(handle: number, generation: number): number;\n grid_v2_assigned_rows(handle: number, generation: number): number;\n grid_v2_collapse_auto_fit(handle: number, generation: number, axis: number, explicit: number): number;\n grid_v2_auto_fit_keep(handle: number, generation: number, index: number, axis: number): number;\n memory: WebAssembly.Memory;\n}\n\nexport const GRID_V2_TRACK_STRIDE = 7;\nexport const GRID_V2_CELL_STRIDE = 8;\n\nexport interface GridV2Cell {\n readonly columnStart: number;\n readonly columnSpan: number;\n readonly rowStart: number;\n readonly rowSpan: number;\n}\n\nexport interface GridV2AutoFitCollapse {\n readonly keep: readonly boolean[];\n readonly cells: readonly GridV2Cell[];\n}\n\nexport class GridV2Region {\n readonly handle: number;\n readonly generation: number;\n private disposed = false;\n private readonly pointers = [0, 0];\n private readonly counts = [0, 0];\n private cellPointer = 0;\n private cellCount = 0;\n\n constructor(private readonly kernel: GridV2Kernel, private readonly release?: () => void) {\n this.handle = kernel.grid_v2_create();\n this.generation = this.handle ? kernel.grid_v2_generation(this.handle) : 0;\n if (!this.generation) throw new Error('Grid v2 arena allocation failed');\n }\n\n dispose(): void {\n if (this.disposed) return;\n this.disposed = true;\n try {\n if (this.kernel.grid_v2_dispose(this.handle, this.generation) !== 0) throw new Error('Grid v2 arena disposal failed');\n } finally { this.release?.(); }\n }\n\n /** A trapped instance cannot safely re-enter Rust, but still releases host ownership. */\n abandon(): void {\n if (this.disposed) return;\n this.disposed = true;\n this.release?.();\n }\n\n tracks(records: readonly number[], bound: number, gap: number, axis: 0 | 1): readonly number[] {\n if (this.disposed || records.length % GRID_V2_TRACK_STRIDE) {\n throw new RangeError('Invalid Grid v2 track input');\n }\n const count = records.length / GRID_V2_TRACK_STRIDE;\n const pointer = this.kernel.grid_v2_resize_tracks(this.handle, this.generation, count, axis);\n if (!pointer) throw new RangeError('Grid v2 track storage allocation failed');\n let values = new Float64Array(this.kernel.memory.buffer, pointer, records.length);\n values.set(records);\n if (this.kernel.grid_v2_resolve_tracks(this.handle, this.generation, bound, gap, axis) !== 0) {\n throw new RangeError('Grid v2 track resolution failed');\n }\n values = new Float64Array(this.kernel.memory.buffer, pointer, records.length);\n this.pointers[axis] = pointer;\n this.counts[axis] = count;\n const resolved = new Array<number>(count);\n for (let index = 0; index < count; index++) {\n resolved[index] = values[index * GRID_V2_TRACK_STRIDE + 6]!;\n }\n return resolved;\n }\n\n /** Returns the current resolved values after native contribution passes. */\n resolvedTracks(axis: 0 | 1): readonly number[] {\n if (this.disposed || !this.pointers[axis]) {\n throw new RangeError('Grid v2 resolved tracks require initialized track storage');\n }\n const count = this.counts[axis];\n const values = new Float64Array(\n this.kernel.memory.buffer,\n this.pointers[axis],\n count * GRID_V2_TRACK_STRIDE,\n );\n const resolved = new Array<number>(count);\n for (let index = 0; index < count; index++) {\n resolved[index] = values[index * GRID_V2_TRACK_STRIDE + 6]!;\n }\n return resolved;\n }\n\n contributions(records: readonly number[], gap: number, axis: 0 | 1): void {\n if (this.disposed || records.length % 4) {\n throw new RangeError('Invalid Grid intrinsic contribution input');\n }\n const pointer = this.kernel.grid_v2_resize_contributions(this.handle, this.generation, records.length / 4, axis);\n if (!pointer && records.length) throw new RangeError('Grid contribution storage allocation failed');\n new Float64Array(this.kernel.memory.buffer, pointer, records.length).set(records);\n if (this.kernel.grid_v2_apply_contributions(this.handle, this.generation, gap, axis) !== 0) {\n throw new RangeError('Grid contribution resolution failed');\n }\n }\n\n assign(cells: readonly GridV2Cell[], columns: number, rows: number, flow: 0 | 1 | 2 | 3): Readonly<{ cells: GridV2Cell[]; columns: number; rows: number }> {\n const pointer = this.writeCells(cells);\n if (this.kernel.grid_v2_assign_cells(this.handle, this.generation, columns, rows, flow) !== 0) {\n throw new RangeError('Grid v2 cell assignment failed');\n }\n return {\n cells: this.readCells(pointer, cells.length),\n columns: this.kernel.grid_v2_assigned_columns(this.handle, this.generation),\n rows: this.kernel.grid_v2_assigned_rows(this.handle, this.generation),\n };\n }\n\n collapseAutoFit(axis: 0 | 1, explicit: number): GridV2AutoFitCollapse {\n if (this.disposed) throw new RangeError('Grid v2 region is disposed');\n const count = axis === 0\n ? this.kernel.grid_v2_assigned_columns(this.handle, this.generation)\n : this.kernel.grid_v2_assigned_rows(this.handle, this.generation);\n if (this.kernel.grid_v2_collapse_auto_fit(this.handle, this.generation, axis, explicit) !== 0) {\n throw new RangeError('Grid auto-fit collapse failed');\n }\n const keep = new Array<boolean>(count);\n for (let index = 0; index < count; index++) {\n keep[index] = this.kernel.grid_v2_auto_fit_keep(this.handle, this.generation, index, axis) !== 0;\n }\n return { keep, cells: this.readCells(this.cellPointer, this.cellCount) };\n }\n\n cells(cells: readonly GridV2Cell[], flow: 0 | 1 | 2 | 3, columnGap: number, rowGap: number): readonly { x: number; y: number; width: number; height: number }[] {\n if (this.disposed || !this.pointers[0] || !this.pointers[1]) {\n throw new RangeError('Grid v2 cells require resolved tracks');\n }\n const pointer = this.writeCells(cells);\n if (this.kernel.grid_v2_assign_cells(this.handle, this.generation, this.counts[0], this.counts[1], flow) !== 0) {\n throw new RangeError('Grid v2 cell assignment failed');\n }\n if (this.kernel.grid_v2_place_cells(this.handle, this.generation, this.pointers[0], this.counts[0], this.pointers[1], this.counts[1], columnGap, rowGap) !== 0) {\n throw new RangeError('Grid v2 cell placement failed');\n }\n const values = new Float64Array(this.kernel.memory.buffer, pointer, cells.length * GRID_V2_CELL_STRIDE);\n const placements = new Array<{ x: number; y: number; width: number; height: number }>(cells.length);\n for (let index = 0; index < cells.length; index++) {\n const offset = index * GRID_V2_CELL_STRIDE;\n placements[index] = {\n x: values[offset + 4]!,\n y: values[offset + 5]!,\n width: values[offset + 6]!,\n height: values[offset + 7]!,\n };\n }\n return placements;\n }\n\n private writeCells(cells: readonly GridV2Cell[]): number {\n if (this.disposed) throw new RangeError('Grid v2 region is disposed');\n const pointer = this.kernel.grid_v2_resize_cells(this.handle, this.generation, cells.length);\n if (!pointer && cells.length) throw new RangeError('Grid v2 cell storage allocation failed');\n const values = new Float64Array(this.kernel.memory.buffer, pointer, cells.length * GRID_V2_CELL_STRIDE);\n for (let index = 0; index < cells.length; index++) {\n const cell = cells[index]!;\n const offset = index * GRID_V2_CELL_STRIDE;\n values[offset] = cell.columnStart;\n values[offset + 1] = cell.columnSpan;\n values[offset + 2] = cell.rowStart;\n values[offset + 3] = cell.rowSpan;\n }\n this.cellPointer = pointer;\n this.cellCount = cells.length;\n return pointer;\n }\n\n private readCells(pointer: number, count: number): GridV2Cell[] {\n const values = new Float64Array(this.kernel.memory.buffer, pointer, count * GRID_V2_CELL_STRIDE);\n const cells = new Array<GridV2Cell>(count);\n for (let index = 0; index < count; index++) {\n const offset = index * GRID_V2_CELL_STRIDE;\n cells[index] = {\n columnStart: values[offset]!,\n columnSpan: values[offset + 1]!,\n rowStart: values[offset + 2]!,\n rowSpan: values[offset + 3]!,\n };\n }\n return cells;\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -1,14 +1,67 @@
1
1
  import type { PibblElement } from '../element/types.js';
2
2
  import { type PibblStructuralEventProps } from '../components/structural-events.js';
3
+ import { type FitContent, type SizingKeyword } from '../style/sizing-length.js';
3
4
  import type { BoxStyle, LayoutItemStyle } from '../style/types.js';
4
5
  import type { CanvasMeasurementService, PibblNodeInput, MeasureResult } from '../types.js';
5
6
  import type { Constraints, LayoutBox } from './types.js';
6
- /**
7
- * A fixed logical size, percentage of available space, or fractional share of remaining grid space.
7
+ /** A scalar, fractional, or intrinsic breadth accepted by a Grid track.
8
8
  *
9
- * @see {@link GridStyle}
9
+ * @see {@link GridTrack}
10
+ */
11
+ export type GridTrackBreadth = number | `${number}%` | `${number}fr` | SizingKeyword | FitContent | 'auto';
12
+ /** A bounded Grid track whose minimum and maximum are resolved by the Grid owner.
13
+ *
14
+ * @see {@link GridTrack}
15
+ */
16
+ export interface GridMinMaxTrack {
17
+ /** Identifies the bounded track definition. See {@link GridMinMaxTrack}. */
18
+ readonly kind: 'minmax';
19
+ /** Minimum track breadth. See {@link GridTrackBreadth}. */
20
+ readonly min: GridTrackBreadth;
21
+ /** Maximum track breadth. See {@link GridTrackBreadth}. */
22
+ readonly max: GridTrackBreadth;
23
+ }
24
+ /** A repeated {@link GridTrack} list. `auto-fill` and `auto-fit` use the available axis size. */
25
+ export interface GridRepeatTrack {
26
+ /** Identifies the repetition definition. See {@link GridRepeatTrack}. */
27
+ readonly kind: 'repeat';
28
+ /** Fixed count or automatic fill/fit policy. See {@link GridRepeatTrack}. */
29
+ readonly count: number | 'auto-fill' | 'auto-fit';
30
+ /** Ordered pattern to repeat. See {@link GridTrack}. */
31
+ readonly tracks: readonly GridTrack[];
32
+ }
33
+ /** A fixed logical size, percentage, fraction, intrinsic breadth, minmax, or repeat track. See {@link GridTrackBreadth}, {@link GridMinMaxTrack}, {@link GridRepeatTrack}. */
34
+ export type GridTrack = GridTrackBreadth | GridMinMaxTrack | GridRepeatTrack;
35
+ /** Creates an immutable bounded Grid track.
36
+ * @param options - The minimum and maximum breadths.
37
+ * @returns An immutable `minmax` track definition.
38
+ * @see {@link GridTrack}
39
+ */
40
+ export declare function minmax(options: Readonly<{
41
+ min: GridTrackBreadth;
42
+ max: GridTrackBreadth;
43
+ }>): GridMinMaxTrack;
44
+ /** Repeats Grid tracks a fixed number of times.
45
+ * @param tracks - The track sequence to repeat.
46
+ * @param options - The repeat count.
47
+ * @returns An immutable repeated track definition.
48
+ * @see {@link GridTrack}
49
+ */
50
+ export declare function repeatTracks(tracks: readonly GridTrack[], options: Readonly<{
51
+ count: number;
52
+ }>): GridRepeatTrack;
53
+ /** Repeats Grid tracks to fill the available axis.
54
+ * @param tracks - The track sequence to repeat.
55
+ * @returns An immutable auto-fill track definition.
56
+ * @see {@link GridTrack}
57
+ */
58
+ export declare function autoFillTracks(...tracks: readonly GridTrack[]): GridRepeatTrack;
59
+ /** Repeats Grid tracks to fit occupied cells in the available axis.
60
+ * @param tracks - The track sequence to repeat.
61
+ * @returns An immutable auto-fit track definition.
62
+ * @see {@link GridTrack}
10
63
  */
11
- export type GridTrack = number | `${number}%` | `${number}fr`;
64
+ export declare function autoFitTracks(...tracks: readonly GridTrack[]): GridRepeatTrack;
12
65
  type GridAlignment = 'stretch' | 'start' | 'center' | 'end';
13
66
  /**
14
67
  * Supported geometry and presentation properties for Grid.
@@ -27,6 +80,12 @@ export interface GridStyle extends BoxStyle, LayoutItemStyle {
27
80
  justifyItems?: GridAlignment;
28
81
  /** Default alignment of children on the cross or block axis. See {@link GridAlignment}. */
29
82
  alignItems?: GridAlignment;
83
+ /** Placement direction and dense-packing policy for automatically placed children. */
84
+ gridAutoFlow?: 'row' | 'column' | 'row dense' | 'column dense';
85
+ /** Track used when automatic placement creates an implicit column. */
86
+ gridAutoColumns?: GridTrack;
87
+ /** Track used when automatic placement creates an implicit row. */
88
+ gridAutoRows?: GridTrack;
30
89
  /** Spacing between adjacent items. See {@link GridStyle}. */
31
90
  gap?: number;
32
91
  /** Space between adjacent rows or items on the row axis. See {@link GridStyle}. */