@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
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/lib/layout/absolute.ts"],
4
- "sourcesContent": ["import { ResponsiveStylePreparation, preparedStyleValue, preparedStyleQuery, type PreparedQuery } from '../style/responsive.js';\nimport { definePrimitive } from '../define-primitive.js';\nimport { EMPTY_STYLE } from '../style/empty-style.js';\nimport { materializeContainerChildren } from '../element/children.js';\nimport { clonePibblElement } from '../element/create-element.js';\nimport {\n getPrimitiveDefinition,\n getChildPrimitiveReceiverToken,\n setPlacementConsumed,\n} from '../element/metadata.js';\nimport { resolvePrimitiveStyleInput } from '../element/resolve-primitive-inputs.js';\nimport type { PibblElement } from '../element/types.js';\nimport { GLOBAL_STATE } from '../global-state.js';\nimport { normalizeEdges } from '../style/normalize.js';\nimport { resolveLength } from '../style/resolve-length.js';\nimport {\n extractSystemFilter,\n setPreNormalizedStyle,\n withoutSystemFilter,\n} from '../style/resolve-dispatch.js';\nimport type {\n BoxStyle,\n LayoutItemStyle,\n ResolvedBoxStyle,\n} from '../style/types.js';\nimport type {\n PibblNodeInput,\n PibblRenderTransaction,\n RenderingContext2D,\n StyleResolutionContext,\n SystemStyle,\n} from '../types.js';\nimport { layoutDiagnostic } from '../style/diagnostics.js';\nimport {\n type PibblStructuralEventProps,\n wireStructuralEvents,\n} from '../components/structural-events.js';\nimport { pushLayoutBox } from './context.js';\nimport { recordLayoutEvaluation } from './diagnostics.js';\nimport { resolveBox } from './box.js';\nimport {\n createPlacementIdentityHint,\n placeChild,\n} from './place-child.js';\nimport type { LayoutBox } from './types.js';\nimport { withReceiverInputProvision } from '../signals/input-provision.js';\n\n/**\n * Supported geometry and presentation properties for Absolute.\n *\n * @see {@link BoxStyle}\n * @see {@link LayoutItemStyle}\n * @see {@link Absolute}\n */\nexport type AbsoluteStyle = BoxStyle & LayoutItemStyle;\n\n/**\n * Authored inputs for Absolute, including the declared data and presentation options.\n *\n * @see {@link PibblNodeInput}\n * @see {@link Absolute}\n */\nexport interface AbsoluteProps extends PibblStructuralEventProps {\n /** Descendant content or the callback that supplies it. See {@link PibblNodeInput}. */\n children: PibblNodeInput;\n}\n\ninterface ResolvedAbsoluteStyle extends SystemStyle {\n box: ResolvedBoxStyle;\n overflow: 'visible' | 'clip';\n}\n\ntype LayoutReceiver = 'Absolute' | 'Overlay' | 'Flow' | 'Flex' | 'Grid';\n\nconst preparedLayoutTransactions = new WeakMap<\n PibblRenderTransaction,\n WeakMap<object, readonly PibblElement<any>[]>\n>();\n\nfunction renderAbsolute(\n props: AbsoluteProps,\n style: Readonly<ResolvedAbsoluteStyle>,\n ctx: RenderingContext2D,\n) {\n wireStructuralEvents(props);\n const children = prepareLayoutChildren(props.children, 'Absolute');\n recordLayoutEvaluation();\n const content = style.box.contentBox;\n ctx.translate(content.x, content.y);\n const localContent = Object.freeze({\n x: 0,\n y: 0,\n width: content.width,\n height: content.height,\n });\n const releaseLayout = pushLayoutBox(localContent);\n GLOBAL_STATE.componentRefs!.onAfterRender = releaseLayout;\n\n let occurrence = 0;\n return placeDirectChildren(\n children,\n localContent,\n child => resolveAbsoluteChildPlacement(\n localContent,\n child,\n getChildPrimitiveReceiverToken(\n GLOBAL_STATE.renderTransaction,\n GLOBAL_STATE.primitiveReceiverToken,\n occurrence++,\n ),\n ),\n style.overflow,\n );\n}\n\n/**\n * Describes absolute layout for JSX or createElement authoring.\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 AbsoluteProps}\n * @see {@link AbsoluteStyle}\n */\nexport const Absolute = definePrimitive<\n AbsoluteProps,\n AbsoluteStyle,\n AbsoluteStyle,\n ResolvedAbsoluteStyle\n>(renderAbsolute, {\n childInput: 'structural',\n resolveStyle: (style, context) => ({\n box: resolveContainerBox(style, context, 'Absolute', 'absolute'),\n overflow: style.overflow ?? 'visible',\n }),\n});\n\n/** @internal Resolves a layout container without inspecting its children. */\nexport function resolveContainerBox(\n style: Readonly<BoxStyle>,\n context: Readonly<StyleResolutionContext>,\n component: string,\n algorithm: string,\n): ResolvedBoxStyle {\n return resolveLayoutBox(style, context, component, algorithm, false);\n}\n\nexport function placeAbsoluteChild(\n container: Readonly<LayoutBox>,\n child: PibblElement<any>,\n): LayoutBox {\n return resolveAbsoluteChildPlacement(container, child).box;\n}\n\nfunction resolveAbsoluteChildPlacement(\n container: Readonly<LayoutBox>,\n child: PibblElement<any>,\n receiverToken?: object,\n): { box: LayoutBox; element: PibblElement<any> } {\n const prepared = prepareDirectChildStyle(child, receiverToken, container);\n const style = preparedStyleValue(prepared) as Readonly<\n BoxStyle & LayoutItemStyle\n >;\n const resolved = resolveDirectChildBox(container, child, 'absolute', style);\n const context = childDiagnosticContext(child, container, 'absolute');\n const left = resolveLength(style.left ?? 0, container.width, 'left', context)!;\n const top = resolveLength(style.top ?? 0, container.height, 'top', context)!;\n const box = {\n x: finitePlacement(container.x + left, 'left', left, context),\n y: finitePlacement(container.y + top, 'top', top, context),\n width: resolved.borderBox.width,\n height: resolved.borderBox.height,\n };\n return {\n box,\n element: childWithUsedSize(\n child,\n style,\n resolved.contentBox.width,\n resolved.contentBox.height,\n receiverToken,\n preparedStyleQuery(prepared),\n ),\n };\n}\n\n/** @internal Carries normalized finite content size into the eventual render. */\nexport function childWithUsedSize(\n child: PibblElement<any>,\n style: Readonly<SystemStyle>,\n width: number,\n height: number,\n receiverToken?: object,\n query?: PreparedQuery,\n): PibblElement<any> {\n const renderedChild = clonePibblElement(child);\n setPlacementConsumed(renderedChild);\n setPreNormalizedStyle(renderedChild, Object.freeze({\n ...style,\n width,\n height,\n }), child, receiverToken, query);\n return renderedChild;\n}\n\n/** @internal Shared by the initial direct-child layout algorithms. */\nexport function resolveDirectChildBox(\n container: Readonly<LayoutBox>,\n child: PibblElement<any>,\n algorithm: string,\n style: Readonly<SystemStyle> = normalizeDirectChildStyle(child, undefined, container),\n): ResolvedBoxStyle {\n return resolveLayoutBox(\n style as Readonly<BoxStyle>,\n {\n allocation: container,\n percentageBasis: container,\n constraints: {\n minWidth: 0,\n maxWidth: container.width,\n minHeight: 0,\n maxHeight: container.height,\n },\n component: child.type.name || 'Anonymous',\n algorithm: 'render-dispatch',\n },\n child.type.name || 'Anonymous',\n algorithm,\n true,\n );\n}\n\n/** @internal Normalizes a descriptor without resolving or invoking its callback. */\nexport function normalizeDirectChildStyle(\n child: PibblElement<any>,\n receiverToken?: object,\n queryBasis?: Readonly<LayoutBox>,\n): Readonly<SystemStyle> {\n return preparedStyleValue(prepareDirectChildStyle(child, receiverToken, queryBasis));\n}\n\n/** Carries responsive eligibility with this normalization, never with a token. */\nexport function prepareDirectChildStyle(\n child: PibblElement<any>,\n receiverToken?: object,\n queryBasis?: Readonly<LayoutBox>,\n): Readonly<SystemStyle> | ResponsiveStylePreparation<Readonly<SystemStyle>> {\n const definition = getPrimitiveDefinition(child.type);\n const prepared = withReceiverInputProvision(\n GLOBAL_STATE.renderTransaction,\n receiverToken,\n () => resolvePrimitiveStyleInput(\n (child.props as { readonly style?: unknown }).style,\n child, queryBasis,\n ) ?? EMPTY_STYLE,\n );\n const style = preparedStyleValue(prepared);\n const filter = extractSystemFilter(style);\n const normalized = definition?.normalizeStyle ?\n definition.normalizeStyle(withoutSystemFilter(style)) :\n withoutSystemFilter(style);\n const final = { ...normalized, ...(filter === undefined ? {} : { filter }), ...(style.transition === undefined ? {} : { transition: (style as Readonly<SystemStyle>).transition }) };\n if (prepared instanceof ResponsiveStylePreparation) {\n prepared.style = final;\n return prepared;\n }\n return final;\n}\n\n/** @internal Converts source-order descriptors to stable placed children. */\nexport function placeDirectChildren(\n children: readonly PibblElement<any>[],\n contentBox: Readonly<LayoutBox>,\n place: (child: PibblElement<any>) => LayoutBox | {\n box: LayoutBox;\n element: PibblElement<any>;\n },\n overflow: 'visible' | 'clip',\n): PibblElement<any>[] {\n const occurrences = new Map<Function, number>();\n const placed: PibblElement<any>[] = [];\n for (const child of children) {\n const occurrence = child.key === undefined ?\n occurrences.get(child.type) ?? 0 :\n 0;\n if (child.key === undefined) {\n occurrences.set(child.type, occurrence + 1);\n }\n const placement = place(child);\n const box = 'box' in placement ? placement.box : placement;\n const element = 'box' in placement ? placement.element : child;\n placed.push(placeChild({\n element,\n box,\n clipInChildSpace: overflow === 'clip' ? {\n x: contentBox.x - box.x,\n y: contentBox.y - box.y,\n width: contentBox.width,\n height: contentBox.height,\n } : undefined,\n identityHint: createPlacementIdentityHint(child, occurrence),\n }));\n }\n return placed;\n}\n\n/** @internal Prepares one finite direct-child sequence for a layout boundary. */\nexport function materializeLayoutChildren(\n children: PibblNodeInput,\n receiver: LayoutReceiver,\n): readonly PibblElement<any>[] {\n // Placement identity owns layout sibling keys. Deferring its check preserves\n // fail-closed teardown when a later duplicate follows an acquired child.\n return materializeContainerChildren(children, receiver, {\n validateKeys: false,\n });\n}\n\n/** @internal Shares one direct sequence between an occurrence's measurement and paint. */\nexport function prepareLayoutChildren(\n children: PibblNodeInput,\n receiver: LayoutReceiver,\n): readonly PibblElement<any>[] {\n const transaction = GLOBAL_STATE.renderTransaction;\n const receiverToken = GLOBAL_STATE.primitiveReceiverToken;\n if (!transaction || !receiverToken) {\n return materializeLayoutChildren(children, receiver);\n }\n\n let receivers = preparedLayoutTransactions.get(transaction);\n if (!receivers) {\n receivers = new WeakMap();\n preparedLayoutTransactions.set(transaction, receivers);\n }\n const prepared = receivers.get(receiverToken);\n if (prepared) return prepared;\n const materialized = withReceiverInputProvision(\n transaction,\n receiverToken,\n () => materializeLayoutChildren(children, receiver),\n );\n receivers.set(receiverToken, materialized);\n return materialized;\n}\n\nfunction resolveLayoutBox(\n style: Readonly<BoxStyle>,\n context: Readonly<StyleResolutionContext>,\n component: string,\n algorithm: string,\n requireDefinite: boolean,\n): ResolvedBoxStyle {\n if (requireDefinite && (style.width === undefined || style.width === 'auto')) {\n throw requiredDimension(component, 'width', style.width, context, algorithm);\n }\n if (requireDefinite && (style.height === undefined || style.height === 'auto')) {\n throw requiredDimension(component, 'height', style.height, context, algorithm);\n }\n\n const diagnosticContext = {\n component,\n algorithm,\n constraints: context.constraints,\n };\n const width = resolveOptionalAllocationLength(\n style.width,\n context.percentageBasis.width,\n 'width',\n diagnosticContext,\n );\n const height = resolveOptionalAllocationLength(\n style.height,\n context.percentageBasis.height,\n 'height',\n diagnosticContext,\n );\n const minWidth = resolveOptionalAllocationLength(\n style.minWidth,\n context.percentageBasis.width,\n 'minWidth',\n diagnosticContext,\n );\n const maxWidth = resolveOptionalAllocationLength(\n style.maxWidth,\n context.percentageBasis.width,\n 'maxWidth',\n diagnosticContext,\n );\n const minHeight = resolveOptionalAllocationLength(\n style.minHeight,\n context.percentageBasis.height,\n 'minHeight',\n diagnosticContext,\n );\n const maxHeight = resolveOptionalAllocationLength(\n style.maxHeight,\n context.percentageBasis.height,\n 'maxHeight',\n diagnosticContext,\n );\n const padding = normalizeEdges(style.padding, 'padding', diagnosticContext);\n const allowOverflow = requireDefinite;\n const maxConstraintWidth = allowOverflow ? allocationCeiling(\n context.allocation.width,\n [width, minWidth, maxWidth],\n padding.left + padding.right,\n 'width',\n diagnosticContext,\n ) : context.allocation.width;\n const maxConstraintHeight = allowOverflow ? allocationCeiling(\n context.allocation.height,\n [height, minHeight, maxHeight],\n padding.top + padding.bottom,\n 'height',\n diagnosticContext,\n ) : context.allocation.height;\n\n return resolveBox({\n ...style,\n width,\n height,\n minWidth,\n maxWidth,\n minHeight,\n maxHeight,\n }, {\n minWidth: 0,\n maxWidth: maxConstraintWidth,\n minHeight: 0,\n maxHeight: maxConstraintHeight,\n }, diagnosticContext);\n}\n\nfunction resolveOptionalAllocationLength(\n value: BoxStyle['width'],\n reference: number,\n property: string,\n context: Parameters<typeof resolveLength>[3],\n): number | undefined {\n if (value === undefined) return undefined;\n return resolveLength(value, reference, property, context);\n}\n\nfunction allocationCeiling(\n allocation: number,\n values: readonly (number | undefined)[],\n padding: number,\n property: string,\n context: Parameters<typeof resolveLength>[3],\n): number {\n const ceiling = Math.max(allocation, ...values.filter(\n (value): value is number => value !== undefined,\n )) + padding;\n if (!Number.isFinite(ceiling)) {\n throw layoutDiagnostic({\n ...context,\n property,\n value: ceiling,\n reason: 'resolved allocation arithmetic must remain finite',\n });\n }\n return ceiling;\n}\n\nfunction requiredDimension(\n component: string,\n property: 'width' | 'height',\n value: unknown,\n context: Readonly<StyleResolutionContext>,\n algorithm: string,\n) {\n return layoutDiagnostic({\n component,\n property,\n value: value ?? 'auto',\n algorithm,\n constraints: context.constraints,\n reason: 'requires a definite dimension until measurement is available',\n });\n}\n\nfunction childDiagnosticContext(\n child: PibblElement<any>,\n container: Readonly<LayoutBox>,\n algorithm: string,\n) {\n return {\n component: child.type.name || 'Anonymous',\n algorithm,\n constraints: {\n minWidth: 0,\n maxWidth: container.width,\n minHeight: 0,\n maxHeight: container.height,\n },\n };\n}\n\nfunction finitePlacement(\n resolved: number,\n property: string,\n value: unknown,\n context: ReturnType<typeof childDiagnosticContext>,\n): number {\n if (!Number.isFinite(resolved)) {\n throw layoutDiagnostic({\n ...context,\n property,\n value,\n reason: 'resolved placement arithmetic must remain finite',\n });\n }\n return resolved;\n}\n"],
5
- "mappings": "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",
6
- "names": []
4
+ "sourcesContent": ["import { recordAllocationStyle, configureAllocationCheckpointAdapter, withAllocationCheckpoint, mountedAllocationCheckpointOwner } from './allocation-checkpoint.js';\nimport { participatingLayoutChildren, layoutParticipationPlan, type LayoutParticipationSource } from './participation.js';\nimport { allocatedContentBoxStyle, contentBoxStyle } from './box-sizing.js';\nimport { recordWasmAllocationPass, recordWasmAllocationItem, recordWasmAllocationCacheHit, nativeLayout } from './wasm/region.js';\nimport { registerKnownLayoutPreflight, isKnownLayoutType, claimPreparedLayoutPlan, stagePreparedLayoutPlan, prepareKnownLayoutDescendants, preparePlacedKnownLayout, takePreparedChildStyle, stagePreparedChildStyle, type PreparedLayoutPlan } from './prepared-root.js';\nimport { isLayoutComponent, prepareLayoutComponent } from './define-layout-component.js';\nimport { ResponsiveStylePreparation, getStyleMeasurementMode, preparedStyleValue, preparedStyleQuery, type PreparedQuery } from '../style/responsive.js';\nimport { definePrimitive } from '../define-primitive.js';\nimport { EMPTY_STYLE } from '../style/empty-style.js';\nimport { materializeContainerChildren } from '../element/children.js';\nimport { clonePibblElement } from '../element/create-element.js';\nimport {\n getElementMetadata,\n setElementMetadata,\n getPrimitiveDefinition,\n getChildPrimitiveReceiverToken,\n setPlacementConsumed,\n} from '../element/metadata.js';\nimport { resolvePrimitiveStyleInput } from '../element/resolve-primitive-inputs.js';\nimport type { PibblElement } from '../element/types.js';\nimport { GLOBAL_STATE } from '../global-state.js';\nimport { normalizeBoxInsets, hasPercentageBoxPadding, resolveAllocatedInsets } from './box-insets.js';\nimport { isFitContent, isIntrinsicSizingValue, resolveScalarSizingLength } from '../style/sizing-length.js';\nimport {\n extractSystemFilter,\n setPreNormalizedStyle, setAllocatedContentSize,\n withoutSystemFilter,\n} from '../style/resolve-dispatch.js';\nimport type {\n BoxStyle,\n LayoutItemStyle,\n ResolvedBoxStyle,\n} from '../style/types.js';\nimport type {\n IntrinsicMeasureInput,\n IntrinsicSizesResult,\n CanvasMeasurementService,\n PibblNodeInput,\n PibblRenderTransaction,\n RenderingContext2D,\n StyleResolutionContext,\n SystemStyle,\n} from '../types.js';\nimport { measureElement, measureIntrinsicElement } from './measure.js';\nimport { canvasMeasurementService } from './canvas-measurement.js';\nimport { layoutDiagnostic } from '../style/diagnostics.js';\nimport {\n type PibblStructuralEventProps,\n wireStructuralEvents,\n} from '../components/structural-events.js';\nimport { pushLayoutBox, resolvePositionedContainingBox } from './context.js';\nimport { recordLayoutEvaluation } from './diagnostics.js';\nimport { resolveBox } from './box.js';\nimport {\n createPlacementIdentityHint,\n placeChild,\n} from './place-child.js';\nimport type { LayoutBox } from './types.js';\nimport { withReceiverInputProvision, captureReceiverInputProvision } from '../signals/input-provision.js';\nimport { assertSupportedChildPosition } from './positioning-diagnostics.js';\n\n/**\n * Supported geometry and presentation properties for Absolute.\n *\n * @see {@link BoxStyle}\n * @see {@link LayoutItemStyle}\n * @see {@link Absolute}\n */\nexport type AbsoluteStyle = BoxStyle & LayoutItemStyle;\n\n/**\n * Authored inputs for Absolute, including the declared data and presentation options.\n *\n * @see {@link PibblNodeInput}\n * @see {@link Absolute}\n */\nexport interface AbsoluteProps extends PibblStructuralEventProps {\n /** Descendant content or the callback that supplies it. See {@link PibblNodeInput}. */\n children: PibblNodeInput;\n}\n\n// Parent input is private metadata, not a recursively validated resolved value.\nconst ABSOLUTE_CONTAINING_BOX_STYLE = Symbol('pibbl.absolute-containing-box-style');\n\ninterface ResolvedAbsoluteStyle extends SystemStyle {\n box: ResolvedBoxStyle;\n [ABSOLUTE_CONTAINING_BOX_STYLE]: Readonly<AbsoluteStyle>;\n overflow: 'visible' | 'clip';\n}\n\ntype LayoutReceiver = 'Absolute' | 'Overlay' | 'Flow' | 'Flex' | 'Grid' | 'Layer';\n\nconst preparedLayoutTransactions = new WeakMap<\n PibblRenderTransaction,\n WeakMap<object, readonly PibblElement<any>[]>\n>();\n\nfunction renderAbsolute(\n props: AbsoluteProps,\n style: Readonly<ResolvedAbsoluteStyle>,\n ctx: RenderingContext2D,\n) {\n wireStructuralEvents(props);\n const ordinaryChildren = nativeLayout ? undefined : prepareLayoutChildren(props.children, 'Absolute');\n recordLayoutEvaluation();\n const content = style.box.contentBox;\n ctx.translate(content.x, content.y);\n const localContent = Object.freeze({\n x: 0,\n y: 0,\n width: content.width,\n height: content.height,\n });\n const releaseLayout = pushLayoutBox(localContent, {\n logicalOffset: content,\n containingBlock: resolvePositionedContainingBox(\n style[ABSOLUTE_CONTAINING_BOX_STYLE],\n localContent,\n 'Absolute',\n ),\n });\n GLOBAL_STATE.componentRefs!.onAfterRender = releaseLayout;\n\n const prepared = nativeLayout ? claimPreparedLayoutPlan(GLOBAL_STATE.componentRefs!.element, localContent) : undefined;\n const children = prepared?.children ?? ordinaryChildren ?? prepareLayoutChildren(props.children, 'Absolute');\n const placements = prepared?.placements ?? (nativeLayout ? withAllocationCheckpoint(mountedAllocationCheckpointOwner(), { children, content: localContent, settings: style, onHit: recordWasmAllocationCacheHit, calculate: () => prepareAbsolutePlacements(children, localContent) }) : undefined);\n let placementIndex = 0;\n let occurrence = 0;\n return placeDirectChildren(\n children,\n localContent,\n (child, childOccurrence) => {\n const placement = placements ? placements[placementIndex++] : resolveAbsoluteChildPlacement(localContent, child, getChildPrimitiveReceiverToken(\n GLOBAL_STATE.renderTransaction, GLOBAL_STATE.primitiveReceiverToken, occurrence++,\n ));\n if (nativeLayout && !prepared) preparePlacedKnownLayout(placement.element, childOccurrence);\n return placement;\n },\n style.overflow,\n );\n}\n\n/**\n * Describes absolute layout for JSX or createElement authoring.\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 AbsoluteProps}\n * @see {@link AbsoluteStyle}\n */\nexport const Absolute = definePrimitive<\n AbsoluteProps,\n AbsoluteStyle,\n AbsoluteStyle,\n ResolvedAbsoluteStyle\n>(renderAbsolute, {\n childInput: 'structural',\n resolveStyle: (style, context) => {\n if (nativeLayout && hasPercentageBoxPadding(style)) {\n style = resolveAllocatedInsets(style, { width: context.percentageBasis.width,\n context: { ...context, component: 'Absolute', algorithm: 'absolute' } });\n }\n return {\n box: resolveContainerBox(style, context, 'Absolute', 'absolute'),\n [ABSOLUTE_CONTAINING_BOX_STYLE]: style,\n overflow: style.overflow ?? 'visible',\n };\n },\n measureIntrinsic: (input) => measureUnionIntrinsic(input, 'Absolute'),\n});\n\n/** Pure paired intrinsic contributions for stacking known layout owners. */\nexport function measureUnionIntrinsic<S extends SystemStyle>(\n input: IntrinsicMeasureInput<{ readonly children: PibblNodeInput }, S>,\n receiver: LayoutReceiver,\n): IntrinsicSizesResult {\n const owner = {\n x: 0,\n y: 0,\n width: intrinsicMaximum(input.constraints.width),\n height: intrinsicMaximum(input.constraints.height),\n };\n const children = materializeLayoutChildren(input.props.children, receiver);\n let minWidth = 0, minHeight = 0, maxWidth = 0, maxHeight = 0;\n for (let index = 0; index < children.length; index++) {\n const child = children[index]!;\n const receiverToken = getChildPrimitiveReceiverToken(\n GLOBAL_STATE.renderTransaction,\n GLOBAL_STATE.primitiveReceiverToken,\n index,\n );\n const prepared = prepareDirectChildStyle(child, receiverToken, owner);\n let style = preparedStyleValue(prepared) as Readonly<BoxStyle & LayoutItemStyle>;\n if (hasIntrinsicUnionPercentage(style)) {\n return { status: 'unsupported', reason: `${receiver} intrinsic percentage child sizes require a definite owner allocation` };\n }\n if (style.boxSizing !== undefined) {\n style = contentBoxStyle(style, {\n width: owner.width,\n height: owner.height,\n context: { component: child.type.name || 'Anonymous', algorithm: `${receiver} intrinsic measurement`, constraints: {\n minWidth: 0, maxWidth: owner.width, minHeight: 0, maxHeight: owner.height,\n } },\n });\n }\n assertSupportedChildPosition(receiver, child, style, false, false);\n const insets = normalizeBoxInsets(style, {\n component: child.type.name || 'Anonymous', algorithm: `${receiver} intrinsic measurement`,\n constraints: { minWidth: 0, maxWidth: owner.width, minHeight: 0, maxHeight: owner.height },\n });\n let measured: IntrinsicSizesResult;\n if (typeof style.width === 'number' && typeof style.height === 'number') {\n measured = {\n status: 'measured',\n minContent: { width: style.width, height: style.height },\n maxContent: { width: style.width, height: style.height },\n };\n } else {\n const measuredChild = clonePibblElement(child);\n setPreNormalizedStyle(measuredChild, style, child, receiverToken, preparedStyleQuery(prepared));\n measured = measureIntrinsicElement(measuredChild, {\n minWidth: 0, maxWidth: owner.width, minHeight: 0, maxHeight: owner.height,\n }, input.service);\n if (measured.status !== 'measured') return measured;\n }\n const minimumWidth = (typeof style.width === 'number' ? style.width : measured.minContent.width) + insets.left + insets.right;\n const maximumWidth = (typeof style.width === 'number' ? style.width : measured.maxContent.width) + insets.left + insets.right;\n const minimumHeight = (typeof style.height === 'number' ? style.height : measured.minContent.height) + insets.top + insets.bottom;\n const maximumHeight = (typeof style.height === 'number' ? style.height : measured.maxContent.height) + insets.top + insets.bottom;\n const left = intrinsicOffset(receiver === 'Absolute' ? style.left : undefined, 'left', receiver);\n const top = intrinsicOffset(receiver === 'Absolute' ? style.top : undefined, 'top', receiver);\n if (left.status === 'unsupported') return { status: 'unsupported', reason: left.reason };\n if (top.status === 'unsupported') return { status: 'unsupported', reason: top.reason };\n minWidth = Math.max(minWidth, left.value + minimumWidth);\n minHeight = Math.max(minHeight, top.value + minimumHeight);\n maxWidth = Math.max(maxWidth, left.value + maximumWidth);\n maxHeight = Math.max(maxHeight, top.value + maximumHeight);\n }\n return { status: 'measured', minContent: { width: minWidth, height: minHeight }, maxContent: { width: maxWidth, height: maxHeight } };\n}\n\nfunction intrinsicMaximum(constraint: IntrinsicMeasureInput<{ readonly children: PibblNodeInput }>['constraints']['width']): number {\n return constraint.kind === 'bounded' ? constraint.max : Number.MAX_SAFE_INTEGER;\n}\n\nfunction hasIntrinsicUnionPercentage(style: Readonly<BoxStyle & LayoutItemStyle>): boolean {\n return hasPercentageBoxPadding(style) || intrinsicPercentage(style.width) || intrinsicPercentage(style.height) ||\n intrinsicPercentage(style.minWidth) || intrinsicPercentage(style.maxWidth) ||\n intrinsicPercentage(style.minHeight) || intrinsicPercentage(style.maxHeight) ||\n intrinsicPercentage(style.left) || intrinsicPercentage(style.top);\n}\n\nfunction intrinsicPercentage(value: unknown): boolean {\n return typeof value === 'string' && value.endsWith('%');\n}\n\nfunction intrinsicOffset(\n value: LayoutItemStyle['left'] | undefined,\n property: 'left' | 'top',\n receiver: LayoutReceiver,\n): Readonly<{ status: 'measured'; value: number }> | Readonly<{ status: 'unsupported'; reason: string }> {\n if (value === undefined) return { status: 'measured', value: 0 };\n if (typeof value !== 'number' || !Number.isFinite(value)) {\n return { status: 'unsupported', reason: `${receiver} intrinsic ${property} offset must be finite and numeric` };\n }\n return { status: 'measured', value: Math.max(0, value) };\n}\n\nfunction prepareAbsolutePlacements(children: readonly PibblElement<any>[], content: Readonly<LayoutBox>): { box: LayoutBox; element: PibblElement<any> }[] {\n recordWasmAllocationPass();\n const placements: { box: LayoutBox; element: PibblElement<any> }[] = [];\n for (let index = 0; index < children.length; index++) {\n recordWasmAllocationItem();\n placements.push(resolveAbsoluteChildPlacement(content, children[index], getChildPrimitiveReceiverToken(GLOBAL_STATE.renderTransaction, GLOBAL_STATE.primitiveReceiverToken, index)));\n }\n return placements;\n}\n\nif (nativeLayout) registerKnownLayoutPreflight(Absolute, (element, style, content, receiver, slot) => {\n const previous = GLOBAL_STATE.primitiveReceiverToken;\n GLOBAL_STATE.primitiveReceiverToken = receiver;\n const releaseLayout = pushLayoutBox(content, {\n containingBlock: resolvePositionedContainingBox(\n style as Readonly<AbsoluteStyle>,\n content,\n 'Absolute',\n ),\n });\n try {\n const children = prepareLayoutChildren(element.props.children, 'Absolute');\n const placements = withAllocationCheckpoint(slot, { children, content, settings: style, onHit: recordWasmAllocationCacheHit, calculate: () => prepareAbsolutePlacements(children, content) });\n const plan: PreparedLayoutPlan = { content, children, placements };\n prepareKnownLayoutDescendants(plan, slot);\n stagePreparedLayoutPlan(slot, plan);\n } finally {\n releaseLayout();\n GLOBAL_STATE.primitiveReceiverToken = previous;\n }\n});\n\n/** @internal Resolves a layout container without inspecting its children. */\nexport function resolveContainerBox(\n style: Readonly<BoxStyle>,\n context: Readonly<StyleResolutionContext>,\n component: string,\n algorithm: string,\n): ResolvedBoxStyle {\n return resolveLayoutBox(style, context, component, algorithm, false);\n}\n\nexport function placeAbsoluteChild(\n container: Readonly<LayoutBox>,\n child: PibblElement<any>,\n): LayoutBox {\n return resolveAbsoluteChildPlacement(container, child).box;\n}\n\nfunction resolveAbsoluteChildPlacement(\n container: Readonly<LayoutBox>,\n child: PibblElement<any>,\n receiverToken?: object,\n): { box: LayoutBox; element: PibblElement<any> } {\n const prepared = prepareDirectChildStyle(child, receiverToken, container);\n let style = preparedStyleValue(prepared) as Readonly<\n BoxStyle & LayoutItemStyle\n >;\n if (nativeLayout && GLOBAL_STATE.currentPibblInstance && getStyleMeasurementMode() === undefined && hasPercentageBoxPadding(style)) {\n style = resolveAllocatedInsets(style, { width: container.width, context: childDiagnosticContext(child, container, 'absolute') });\n }\n // Absolute retains legacy left/top placement but never accepts Flex's explicit mode.\n assertSupportedChildPosition('Absolute', child, style, false, false);\n const resolved = resolveDirectChildBox(container, child, 'absolute', style, undefined, receiverToken);\n const context = childDiagnosticContext(child, container, 'absolute');\n const left = resolveScalarSizingLength(style.left ?? 0, container.width, 'left', context)!;\n const top = resolveScalarSizingLength(style.top ?? 0, container.height, 'top', context)!;\n const box = {\n x: finitePlacement(container.x + left, 'left', left, context),\n y: finitePlacement(container.y + top, 'top', top, context),\n width: resolved.borderBox.width,\n height: resolved.borderBox.height,\n };\n const element = childWithUsedSize(\n child,\n style,\n resolved.contentBox.width,\n resolved.contentBox.height,\n receiverToken,\n preparedStyleQuery(prepared),\n );\n return { box, element };\n}\n\n/** @internal Carries normalized finite content size into the eventual render. */\nexport function childWithUsedSize(\n child: PibblElement<any>,\n style: Readonly<SystemStyle>,\n width: number,\n height: number,\n receiverToken?: object,\n query?: PreparedQuery,\n): PibblElement<any> {\n const renderedChild = clonePibblElement(child);\n setPlacementConsumed(renderedChild);\n setPreNormalizedStyle(renderedChild, Object.freeze(allocatedContentBoxStyle(style, width, height)), child, receiverToken, query);\n return renderedChild;\n}\n\n/** Rebinds current raw inputs while carrying only a settled content allocation. */\nexport function childWithCachedUsedSize(child: PibblElement<any>, width: number, height: number): PibblElement<any> {\n const renderedChild = clonePibblElement(child);\n setPlacementConsumed(renderedChild);\n setAllocatedContentSize(renderedChild, width, height);\n return renderedChild;\n}\n\n/** @internal Shared by the initial direct-child layout algorithms. */\nexport function resolveDirectChildBox(\n container: Readonly<LayoutBox>,\n child: PibblElement<any>,\n algorithm: string,\n style: Readonly<SystemStyle> = normalizeDirectChildStyle(child, undefined, container),\n service?: CanvasMeasurementService,\n receiverToken?: object,\n): ResolvedBoxStyle {\n const boxStyle = style as Readonly<BoxStyle>;\n if (hasIntrinsicDirectLength(boxStyle)) return resolveIntrinsicDirectChildBox(container, child, algorithm, boxStyle, service, receiverToken);\n return resolveLayoutBox(\n boxStyle,\n {\n allocation: container,\n percentageBasis: container,\n constraints: {\n minWidth: 0,\n maxWidth: container.width,\n minHeight: 0,\n maxHeight: container.height,\n },\n component: child.type.name || 'Anonymous',\n algorithm: 'render-dispatch',\n },\n child.type.name || 'Anonymous',\n algorithm,\n true,\n );\n}\n\nfunction hasIntrinsicDirectLength(style: Readonly<BoxStyle>): boolean {\n return isIntrinsicSizingValue(style.width) || isIntrinsicSizingValue(style.height) ||\n isIntrinsicSizingValue(style.minWidth) || isIntrinsicSizingValue(style.maxWidth) ||\n isIntrinsicSizingValue(style.minHeight) || isIntrinsicSizingValue(style.maxHeight);\n}\n\nfunction resolveIntrinsicDirectChildBox(container: Readonly<LayoutBox>, child: PibblElement<any>, algorithm: string, style: Readonly<BoxStyle>, service?: CanvasMeasurementService, receiverToken?: object): ResolvedBoxStyle {\n const context = childDiagnosticContext(child, container, algorithm);\n const measurement = service ?? (GLOBAL_STATE.renderContext ? canvasMeasurementService(GLOBAL_STATE.renderContext) : undefined);\n if (!measurement) throw layoutDiagnostic({ ...context, property: 'width', value: style.width, reason: 'intrinsic sizing requires a Canvas measurement service' });\n const pairedChild = clonePibblElement(child);\n setPreNormalizedStyle(pairedChild, style, child, receiverToken);\n const paired = measureIntrinsicElement(pairedChild, { minWidth: 0, maxWidth: container.width, minHeight: 0, maxHeight: container.height }, measurement);\n if (paired.status !== 'measured') throw layoutDiagnostic({ ...context, property: 'width', value: style.width, reason: `intrinsic measurement is required but unsupported: ${paired.reason}` });\n let width = intrinsicDirectLength(style.width, paired.minContent.width, paired.maxContent.width, container.width, 'width', context);\n const minWidth = intrinsicDirectLength(style.minWidth, paired.minContent.width, paired.maxContent.width, container.width, 'minWidth', context);\n const maxWidth = intrinsicDirectLength(style.maxWidth, paired.minContent.width, paired.maxContent.width, container.width, 'maxWidth', context);\n let height = intrinsicDirectLength(style.height, paired.minContent.height, paired.maxContent.height, container.height, 'height', context);\n const minHeight = intrinsicDirectLength(style.minHeight, paired.minContent.height, paired.maxContent.height, container.height, 'minHeight', context);\n const maxHeight = intrinsicDirectLength(style.maxHeight, paired.minContent.height, paired.maxContent.height, container.height, 'maxHeight', context);\n if (width !== undefined) {\n const minimum = minWidth ?? scalarDirectBound(style.minWidth, container.width, 'minWidth', context) ?? 0;\n const maximum = maxWidth ?? scalarDirectBound(style.maxWidth, container.width, 'maxWidth', context) ?? Number.POSITIVE_INFINITY;\n width = Math.min(maximum, Math.max(minimum, width));\n }\n if (height === undefined && width !== undefined) {\n const measuredChild = clonePibblElement(child);\n setPreNormalizedStyle(measuredChild, { ...style, boxSizing: 'content-box', width, minWidth: undefined, maxWidth: undefined } as Readonly<BoxStyle>, child, receiverToken);\n const measured = measureElement(measuredChild, { minWidth: width, maxWidth: width, minHeight: 0, maxHeight: container.height }, measurement);\n if (measured.status !== 'measured') throw layoutDiagnostic({ ...context, property: 'height', value: style.height ?? 'auto', reason: `constrained measurement is required but unsupported: ${measured.reason}` });\n height = measured.size.height;\n }\n const insets = normalizeBoxInsets(style, context);\n const horizontal = style.boxSizing === 'border-box' ? insets.left + insets.right : 0;\n const vertical = style.boxSizing === 'border-box' ? insets.top + insets.bottom : 0;\n return resolveLayoutBox({ ...style,\n width: width === undefined ? style.width : width + horizontal,\n height: height === undefined ? style.height : height + vertical,\n minWidth: minWidth === undefined ? style.minWidth : minWidth + horizontal,\n maxWidth: maxWidth === undefined ? style.maxWidth : maxWidth + horizontal,\n minHeight: minHeight === undefined ? style.minHeight : minHeight + vertical,\n maxHeight: maxHeight === undefined ? style.maxHeight : maxHeight + vertical,\n }, { allocation: container, percentageBasis: container, constraints: { minWidth: 0, maxWidth: container.width, minHeight: 0, maxHeight: container.height }, component: child.type.name || 'Anonymous', algorithm: 'render-dispatch' }, child.type.name || 'Anonymous', algorithm, true);\n}\n\nfunction intrinsicDirectLength(value: BoxStyle['width'], minimum: number, maximum: number, reference: number, property: string, context: Parameters<typeof resolveScalarSizingLength>[3]): number | undefined {\n if (value === 'min-content') return minimum;\n if (value === 'max-content') return maximum;\n if (isFitContent(value)) {\n const limit = resolveScalarSizingLength(value.limit, reference, property, context)!;\n return Math.min(maximum, Math.max(minimum, limit));\n }\n return undefined;\n}\n\nfunction scalarDirectBound(value: BoxStyle['width'] | undefined, reference: number, property: string, context: Parameters<typeof resolveScalarSizingLength>[3]): number | undefined {\n return value === undefined || isIntrinsicSizingValue(value) ? undefined : resolveScalarSizingLength(value, reference, property, context);\n}\n\n/** @internal Normalizes a descriptor without resolving or invoking its callback. */\nexport function normalizeDirectChildStyle(\n child: PibblElement<any>,\n receiverToken?: object,\n queryBasis?: Readonly<LayoutBox>,\n): Readonly<SystemStyle> {\n return preparedStyleValue(prepareDirectChildStyle(child, receiverToken, queryBasis));\n}\n\n/** Carries responsive eligibility with this normalization, never with a token. */\nexport function prepareDirectChildStyle(\n child: PibblElement<any>,\n receiverToken?: object,\n queryBasis?: Readonly<LayoutBox>,\n flexMargins = false,\n): Readonly<SystemStyle> | ResponsiveStylePreparation<Readonly<SystemStyle>> {\n configureAllocationCheckpointAdapter(prepareDirectChildStyle, childWithUsedSize, takePreparedChildStyle, stagePreparedChildStyle, isLayoutComponent, isKnownLayoutType, prepareLayoutComponent);\n const staged = takePreparedChildStyle(child, receiverToken, queryBasis);\n if (staged) { recordAllocationStyle(receiverToken, staged); return staged; }\n let source = child;\n const captured = captureReceiverInputProvision(\n GLOBAL_STATE.renderTransaction,\n receiverToken,\n () => {\n if (isLayoutComponent(child.type)) source = prepareLayoutComponent(child, { receiverToken });\n return resolvePrimitiveStyleInput(\n (source.props as { readonly style?: unknown }).style,\n source, queryBasis,\n ) ?? EMPTY_STYLE;\n },\n );\n const prepared = captured.value;\n const definition = getPrimitiveDefinition(source.type);\n const style = preparedStyleValue(prepared);\n if (!flexMargins) {\n const values = style as Readonly<Record<string, unknown>>;\n const property = values.margin !== undefined ? 'margin' : values.marginTop !== undefined ? 'marginTop' :\n values.marginRight !== undefined ? 'marginRight' : values.marginBottom !== undefined ? 'marginBottom' :\n values.marginLeft !== undefined ? 'marginLeft' : values.marginStart !== undefined ? 'marginStart' :\n values.marginEnd !== undefined ? 'marginEnd' : undefined;\n if (property) throw layoutDiagnostic({ component: child.type.name, algorithm: 'layout', property,\n value: values[property], reason: 'margins currently require experimental Flex' });\n }\n const filter = extractSystemFilter(style);\n const normalized = definition?.normalizeStyle ?\n definition.normalizeStyle(withoutSystemFilter(style)) :\n withoutSystemFilter(style);\n const final = { ...normalized, ...(filter === undefined ? {} : { filter }), ...(style.transition === undefined ? {} : { transition: (style as Readonly<SystemStyle>).transition }) };\n if (prepared instanceof ResponsiveStylePreparation) {\n prepared.style = final;\n recordAllocationStyle(receiverToken, prepared, captured.receipt);\n return prepared;\n }\n recordAllocationStyle(receiverToken, final, captured.receipt);\n return final;\n}\n\n/** @internal Converts source-order descriptors to stable placed children. */\nexport function placeDirectChildren(\n children: readonly PibblElement<any>[],\n contentBox: Readonly<LayoutBox>,\n place: (child: PibblElement<any>, occurrence: number) => LayoutBox | {\n box: LayoutBox;\n element: PibblElement<any>;\n },\n overflow: 'visible' | 'clip',\n): PibblElement<any>[] {\n const participation = layoutParticipationPlan(children);\n if (participation) {\n const renderSequence = (sequence: readonly LayoutParticipationSource[], insideContents: boolean): PibblElement<any>[] => {\n const occurrences = new Map<Function, number>();\n const result: PibblElement<any>[] = [];\n for (const node of sequence) {\n const child = node.element;\n const occurrence = child.key === undefined ? occurrences.get(child.type) ?? 0 : 0;\n if (child.key === undefined) occurrences.set(child.type, occurrence + 1);\n let element: PibblElement<any>, box: LayoutBox;\n if (node.children) {\n element = clonePibblElement(child);\n setElementMetadata(element, { ...getElementMetadata(element), layoutContentsChildren: renderSequence(node.children, true) });\n box = { x: 0, y: 0, width: contentBox.width, height: contentBox.height };\n } else if (node.hidden) {\n element = child;\n box = { x: 0, y: 0, width: 0, height: 0 };\n } else {\n const placement = place(child, occurrence);\n box = 'box' in placement ? placement.box : placement;\n element = 'box' in placement ? placement.element : child;\n }\n result.push(placeChild({ element, box,\n clipInChildSpace: overflow === 'clip' && !insideContents ? {\n x: contentBox.x - box.x, y: contentBox.y - box.y,\n width: contentBox.width, height: contentBox.height,\n } : undefined,\n identityHint: createPlacementIdentityHint(child, occurrence),\n }));\n }\n return result;\n };\n return renderSequence(participation, false);\n }\n const occurrences = new Map<Function, number>();\n const placed: PibblElement<any>[] = [];\n for (const child of children) {\n const occurrence = child.key === undefined ? occurrences.get(child.type) ?? 0 : 0;\n if (child.key === undefined) occurrences.set(child.type, occurrence + 1);\n const placement = place(child, occurrence);\n const box = 'box' in placement ? placement.box : placement;\n const element = 'box' in placement ? placement.element : child;\n placed.push(placeChild({ element, box,\n clipInChildSpace: overflow === 'clip' ? {\n x: contentBox.x - box.x, y: contentBox.y - box.y,\n width: contentBox.width, height: contentBox.height,\n } : undefined,\n identityHint: createPlacementIdentityHint(child, occurrence),\n }));\n }\n return placed;\n}\n\n/** @internal Prepares one finite direct-child sequence for a layout boundary. */\nexport function materializeLayoutChildren(\n children: PibblNodeInput,\n receiver: LayoutReceiver,\n): readonly PibblElement<any>[] {\n // Placement identity owns layout sibling keys. Deferring its check preserves\n // fail-closed teardown when a later duplicate follows an acquired child.\n return participatingLayoutChildren(materializeContainerChildren(children, receiver, {\n validateKeys: false,\n }));\n}\n\n/** @internal Shares one direct sequence between an occurrence's measurement and paint. */\nexport function prepareLayoutChildren(\n children: PibblNodeInput,\n receiver: LayoutReceiver,\n): readonly PibblElement<any>[] {\n const transaction = GLOBAL_STATE.renderTransaction;\n const receiverToken = GLOBAL_STATE.primitiveReceiverToken;\n if (!transaction || !receiverToken) {\n return materializeLayoutChildren(children, receiver);\n }\n\n let receivers = preparedLayoutTransactions.get(transaction);\n if (!receivers) {\n receivers = new WeakMap();\n preparedLayoutTransactions.set(transaction, receivers);\n }\n const prepared = receivers.get(receiverToken);\n if (prepared) return prepared;\n const materialized = withReceiverInputProvision(\n transaction,\n receiverToken,\n () => materializeLayoutChildren(children, receiver),\n );\n receivers.set(receiverToken, materialized);\n return materialized;\n}\n\nfunction resolveLayoutBox(\n style: Readonly<BoxStyle>,\n context: Readonly<StyleResolutionContext>,\n component: string,\n algorithm: string,\n requireDefinite: boolean,\n): ResolvedBoxStyle {\n if (requireDefinite && (style.width === undefined || style.width === 'auto')) {\n throw requiredDimension(component, 'width', style.width, context, algorithm);\n }\n if (requireDefinite && (style.height === undefined || style.height === 'auto')) {\n throw requiredDimension(component, 'height', style.height, context, algorithm);\n }\n\n const diagnosticContext = {\n component,\n algorithm,\n constraints: context.constraints,\n };\n const width = resolveOptionalAllocationLength(\n style.width,\n context.percentageBasis.width,\n 'width',\n diagnosticContext,\n );\n const height = resolveOptionalAllocationLength(\n style.height,\n context.percentageBasis.height,\n 'height',\n diagnosticContext,\n );\n const minWidth = resolveOptionalAllocationLength(\n style.minWidth,\n context.percentageBasis.width,\n 'minWidth',\n diagnosticContext,\n );\n const maxWidth = resolveOptionalAllocationLength(\n style.maxWidth,\n context.percentageBasis.width,\n 'maxWidth',\n diagnosticContext,\n );\n const minHeight = resolveOptionalAllocationLength(\n style.minHeight,\n context.percentageBasis.height,\n 'minHeight',\n diagnosticContext,\n );\n const maxHeight = resolveOptionalAllocationLength(\n style.maxHeight,\n context.percentageBasis.height,\n 'maxHeight',\n diagnosticContext,\n );\n const padding = normalizeBoxInsets(style, diagnosticContext);\n const allowOverflow = requireDefinite;\n const maxConstraintWidth = allowOverflow ? allocationCeiling(\n context.allocation.width,\n [width, minWidth, maxWidth],\n padding.left + padding.right,\n 'width',\n diagnosticContext,\n ) : context.allocation.width;\n const maxConstraintHeight = allowOverflow ? allocationCeiling(\n context.allocation.height,\n [height, minHeight, maxHeight],\n padding.top + padding.bottom,\n 'height',\n diagnosticContext,\n ) : context.allocation.height;\n\n return resolveBox({\n ...style,\n width,\n height,\n minWidth,\n maxWidth,\n minHeight,\n maxHeight,\n }, {\n minWidth: 0,\n maxWidth: maxConstraintWidth,\n minHeight: 0,\n maxHeight: maxConstraintHeight,\n }, diagnosticContext);\n}\n\nfunction resolveOptionalAllocationLength(\n value: BoxStyle['width'],\n reference: number,\n property: string,\n context: Parameters<typeof resolveScalarSizingLength>[3],\n): number | undefined {\n if (value === undefined) return undefined;\n return resolveScalarSizingLength(value, reference, property, context);\n}\n\nfunction allocationCeiling(\n allocation: number,\n values: readonly (number | undefined)[],\n padding: number,\n property: string,\n context: Parameters<typeof resolveScalarSizingLength>[3],\n): number {\n const ceiling = Math.max(allocation, ...values.filter(\n (value): value is number => value !== undefined,\n )) + padding;\n if (!Number.isFinite(ceiling)) {\n throw layoutDiagnostic({\n ...context,\n property,\n value: ceiling,\n reason: 'resolved allocation arithmetic must remain finite',\n });\n }\n return ceiling;\n}\n\nfunction requiredDimension(\n component: string,\n property: 'width' | 'height',\n value: unknown,\n context: Readonly<StyleResolutionContext>,\n algorithm: string,\n) {\n return layoutDiagnostic({\n component,\n property,\n value: value ?? 'auto',\n algorithm,\n constraints: context.constraints,\n reason: 'requires a definite dimension until measurement is available',\n });\n}\n\nfunction childDiagnosticContext(\n child: PibblElement<any>,\n container: Readonly<LayoutBox>,\n algorithm: string,\n) {\n return {\n component: child.type.name || 'Anonymous',\n algorithm,\n constraints: {\n minWidth: 0,\n maxWidth: container.width,\n minHeight: 0,\n maxHeight: container.height,\n },\n };\n}\n\nfunction finitePlacement(\n resolved: number,\n property: string,\n value: unknown,\n context: ReturnType<typeof childDiagnosticContext>,\n): number {\n if (!Number.isFinite(resolved)) {\n throw layoutDiagnostic({\n ...context,\n property,\n value,\n reason: 'resolved placement arithmetic must remain finite',\n });\n }\n return resolved;\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["occurrences"]
7
7
  }
@@ -0,0 +1,11 @@
1
+ export declare function checkpointGeneration(owner: object): number;
2
+ export declare function registerCheckpointDisposal(owner: object, dispose: () => void): void;
3
+ /** Release numeric snapshots and reverse input relationships with their owner. */
4
+ export declare function disposeAllocationCheckpoint(owner: object): void;
5
+ /** Allocation-only owners do not create an otherwise unused native arena. */
6
+ export declare function mountedAllocationCheckpointOwner(): object | undefined;
7
+ export declare function adoptAllocationCheckpointOwner(owner: object): void;
8
+ /** Separate numeric phases share the owning region's lifetime, not each other's snapshots. */
9
+ export declare function allocationCheckpointPhaseOwner(owner: object, key: unknown): object;
10
+ /** Retire unreachable numeric phases only when the new preparation commits. */
11
+ export declare function retainAllocationCheckpointPhases(owner: object, keys: readonly unknown[]): void;
@@ -0,0 +1,86 @@
1
+ import { GLOBAL_STATE } from "../global-state.js";
2
+ const mountedOwners = /* @__PURE__ */ new WeakMap();
3
+ const phases = /* @__PURE__ */ new WeakMap();
4
+ const generations = /* @__PURE__ */ new WeakMap();
5
+ const disposals = /* @__PURE__ */ new WeakMap();
6
+ function checkpointGeneration(owner) {
7
+ return generations.get(owner) ?? 0;
8
+ }
9
+ function registerCheckpointDisposal(owner, dispose) {
10
+ disposals.set(owner, dispose);
11
+ }
12
+ function disposeAllocationCheckpoint(owner) {
13
+ for (const phase of phases.get(owner)?.values() ?? []) disposeAllocationCheckpoint(phase);
14
+ phases.delete(owner);
15
+ disposals.get(owner)?.();
16
+ disposals.delete(owner);
17
+ generations.set(owner, checkpointGeneration(owner) + 1);
18
+ }
19
+ function mountedAllocationCheckpointOwner() {
20
+ const refs = GLOBAL_STATE.componentRefs;
21
+ if (!refs) return;
22
+ let owner = mountedOwners.get(refs);
23
+ if (!owner) {
24
+ owner = refs;
25
+ mountedOwners.set(refs, owner);
26
+ const owned = owner;
27
+ refs.teardowns.add(() => {
28
+ disposeAllocationCheckpoint(owned);
29
+ mountedOwners.delete(refs);
30
+ });
31
+ }
32
+ return owner;
33
+ }
34
+ function adoptAllocationCheckpointOwner(owner) {
35
+ const refs = GLOBAL_STATE.componentRefs;
36
+ if (refs) mountedOwners.set(refs, owner);
37
+ }
38
+ function allocationCheckpointPhaseOwner(owner, key) {
39
+ let entries = phases.get(owner);
40
+ if (!entries) {
41
+ entries = /* @__PURE__ */ new Map();
42
+ phases.set(owner, entries);
43
+ }
44
+ let phase = entries.get(key);
45
+ if (!phase) {
46
+ phase = {};
47
+ entries.set(key, phase);
48
+ }
49
+ return phase;
50
+ }
51
+ function retainAllocationCheckpointPhases(owner, keys) {
52
+ const transaction = GLOBAL_STATE.renderTransaction;
53
+ if (!transaction) return;
54
+ let retained = pendingPhases.get(transaction);
55
+ if (!retained) {
56
+ retained = /* @__PURE__ */ new Map();
57
+ pendingPhases.set(transaction, retained);
58
+ const pending = retained;
59
+ transaction.onFinish((success) => {
60
+ pendingPhases.delete(transaction);
61
+ if (!success) return;
62
+ for (const [owner2, retention] of pending) {
63
+ if (checkpointGeneration(owner2) !== retention.generation) continue;
64
+ const entries = phases.get(owner2);
65
+ if (!entries) continue;
66
+ for (const [key, phase] of entries) if (!retention.keys.has(key)) {
67
+ disposeAllocationCheckpoint(phase);
68
+ entries.delete(key);
69
+ }
70
+ if (!entries.size) phases.delete(owner2);
71
+ }
72
+ });
73
+ }
74
+ retained.set(owner, { keys: new Set(keys), generation: checkpointGeneration(owner) });
75
+ }
76
+ const pendingPhases = /* @__PURE__ */ new WeakMap();
77
+ export {
78
+ adoptAllocationCheckpointOwner,
79
+ allocationCheckpointPhaseOwner,
80
+ checkpointGeneration,
81
+ disposeAllocationCheckpoint,
82
+ mountedAllocationCheckpointOwner,
83
+ registerCheckpointDisposal,
84
+ retainAllocationCheckpointPhases
85
+ };
86
+ //# sourceMappingURL=allocation-checkpoint-owner.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/lib/layout/allocation-checkpoint-owner.ts"],
4
+ "sourcesContent": ["import { GLOBAL_STATE } from '../global-state.js';\nconst mountedOwners = new WeakMap<object, object>();\nconst phases = new WeakMap<object, Map<unknown, object>>();\nconst generations = new WeakMap<object, number>();\nconst disposals = new WeakMap<object, () => void>();\nexport function checkpointGeneration(owner: object): number { return generations.get(owner) ?? 0; }\nexport function registerCheckpointDisposal(owner: object, dispose: () => void): void { disposals.set(owner, dispose); }\n/** Release numeric snapshots and reverse input relationships with their owner. */\nexport function disposeAllocationCheckpoint(owner: object): void {\n for (const phase of phases.get(owner)?.values() ?? []) disposeAllocationCheckpoint(phase);\n phases.delete(owner);\n disposals.get(owner)?.(); disposals.delete(owner);\n generations.set(owner, checkpointGeneration(owner) + 1);\n}\n\n/** Allocation-only owners do not create an otherwise unused native arena. */\nexport function mountedAllocationCheckpointOwner(): object | undefined {\n const refs = GLOBAL_STATE.componentRefs;\n if (!refs) return;\n let owner = mountedOwners.get(refs);\n if (!owner) {\n owner = refs; mountedOwners.set(refs, owner);\n const owned = owner;\n refs.teardowns.add(() => { disposeAllocationCheckpoint(owned); mountedOwners.delete(refs); });\n }\n return owner;\n}\nexport function adoptAllocationCheckpointOwner(owner: object): void {\n const refs = GLOBAL_STATE.componentRefs;\n if (refs) mountedOwners.set(refs, owner);\n}\n\n/** Separate numeric phases share the owning region's lifetime, not each other's snapshots. */\nexport function allocationCheckpointPhaseOwner(owner: object, key: unknown): object {\n let entries = phases.get(owner);\n if (!entries) { entries = new Map(); phases.set(owner, entries); }\n let phase = entries.get(key);\n if (!phase) { phase = {}; entries.set(key, phase); }\n return phase;\n}\n\n/** Retire unreachable numeric phases only when the new preparation commits. */\nexport function retainAllocationCheckpointPhases(owner: object, keys: readonly unknown[]): void {\n const transaction = GLOBAL_STATE.renderTransaction;\n if (!transaction) return;\n let retained = pendingPhases.get(transaction);\n if (!retained) {\n retained = new Map(); pendingPhases.set(transaction, retained);\n const pending = retained;\n transaction.onFinish(success => {\n pendingPhases.delete(transaction);\n if (!success) return;\n for (const [owner, retention] of pending) {\n if (checkpointGeneration(owner) !== retention.generation) continue;\n const entries = phases.get(owner);\n if (!entries) continue;\n for (const [key, phase] of entries) if (!retention.keys.has(key)) {\n disposeAllocationCheckpoint(phase); entries.delete(key);\n }\n if (!entries.size) phases.delete(owner);\n }\n });\n }\n retained.set(owner, { keys: new Set(keys), generation: checkpointGeneration(owner) });\n}\nconst pendingPhases = new WeakMap<object, Map<object, { keys: Set<unknown>; generation: number }>>();\n"],
5
+ "mappings": "AAAA,SAAS,oBAAoB;AAC7B,MAAM,gBAAgB,oBAAI,QAAwB;AAClD,MAAM,SAAS,oBAAI,QAAsC;AACzD,MAAM,cAAc,oBAAI,QAAwB;AAChD,MAAM,YAAY,oBAAI,QAA4B;AAC3C,SAAS,qBAAqB,OAAuB;AAAE,SAAO,YAAY,IAAI,KAAK,KAAK;AAAG;AAC3F,SAAS,2BAA2B,OAAe,SAA2B;AAAE,YAAU,IAAI,OAAO,OAAO;AAAG;AAE/G,SAAS,4BAA4B,OAAqB;AAC/D,aAAW,SAAS,OAAO,IAAI,KAAK,GAAG,OAAO,KAAK,CAAC,EAAG,6BAA4B,KAAK;AACxF,SAAO,OAAO,KAAK;AACnB,YAAU,IAAI,KAAK,IAAI;AAAG,YAAU,OAAO,KAAK;AAChD,cAAY,IAAI,OAAO,qBAAqB,KAAK,IAAI,CAAC;AACxD;AAGO,SAAS,mCAAuD;AACrE,QAAM,OAAO,aAAa;AAC1B,MAAI,CAAC,KAAM;AACX,MAAI,QAAQ,cAAc,IAAI,IAAI;AAClC,MAAI,CAAC,OAAO;AACV,YAAQ;AAAM,kBAAc,IAAI,MAAM,KAAK;AAC3C,UAAM,QAAQ;AACd,SAAK,UAAU,IAAI,MAAM;AAAE,kCAA4B,KAAK;AAAG,oBAAc,OAAO,IAAI;AAAA,IAAG,CAAC;AAAA,EAC9F;AACA,SAAO;AACT;AACO,SAAS,+BAA+B,OAAqB;AAClE,QAAM,OAAO,aAAa;AAC1B,MAAI,KAAM,eAAc,IAAI,MAAM,KAAK;AACzC;AAGO,SAAS,+BAA+B,OAAe,KAAsB;AAClF,MAAI,UAAU,OAAO,IAAI,KAAK;AAC9B,MAAI,CAAC,SAAS;AAAE,cAAU,oBAAI,IAAI;AAAG,WAAO,IAAI,OAAO,OAAO;AAAA,EAAG;AACjE,MAAI,QAAQ,QAAQ,IAAI,GAAG;AAC3B,MAAI,CAAC,OAAO;AAAE,YAAQ,CAAC;AAAG,YAAQ,IAAI,KAAK,KAAK;AAAA,EAAG;AACnD,SAAO;AACT;AAGO,SAAS,iCAAiC,OAAe,MAAgC;AAC9F,QAAM,cAAc,aAAa;AACjC,MAAI,CAAC,YAAa;AAClB,MAAI,WAAW,cAAc,IAAI,WAAW;AAC5C,MAAI,CAAC,UAAU;AACb,eAAW,oBAAI,IAAI;AAAG,kBAAc,IAAI,aAAa,QAAQ;AAC7D,UAAM,UAAU;AAChB,gBAAY,SAAS,aAAW;AAC9B,oBAAc,OAAO,WAAW;AAChC,UAAI,CAAC,QAAS;AACd,iBAAW,CAACA,QAAO,SAAS,KAAK,SAAS;AACxC,YAAI,qBAAqBA,MAAK,MAAM,UAAU,WAAY;AAC1D,cAAM,UAAU,OAAO,IAAIA,MAAK;AAChC,YAAI,CAAC,QAAS;AACd,mBAAW,CAAC,KAAK,KAAK,KAAK,QAAS,KAAI,CAAC,UAAU,KAAK,IAAI,GAAG,GAAG;AAChE,sCAA4B,KAAK;AAAG,kBAAQ,OAAO,GAAG;AAAA,QACxD;AACA,YAAI,CAAC,QAAQ,KAAM,QAAO,OAAOA,MAAK;AAAA,MACxC;AAAA,IACF,CAAC;AAAA,EACH;AACA,WAAS,IAAI,OAAO,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,YAAY,qBAAqB,KAAK,EAAE,CAAC;AACtF;AACA,MAAM,gBAAgB,oBAAI,QAAyE;",
6
+ "names": ["owner"]
7
+ }
@@ -0,0 +1,53 @@
1
+ export { disposeAllocationCheckpoint, mountedAllocationCheckpointOwner } from './allocation-checkpoint-owner.js';
2
+ import type { PibblElement } from '../element/types.js';
3
+ import { type ReceiverInputProvisionReceipt } from '../signals/input-provision.js';
4
+ import { type PreparedQuery } from '../style/responsive.js';
5
+ import type { SystemStyle } from '../types.js';
6
+ import type { takePreparedChildStyle as TakePreparedStyle, stagePreparedChildStyle as StagePreparedStyle } from './prepared-root.js';
7
+ import type { prepareDirectChildStyle as PrepareStyle, childWithUsedSize as PlaceStyle } from './absolute.js';
8
+ declare let prepareDirectChildStyle: typeof PrepareStyle;
9
+ declare let prepareDescription: (element: PibblElement<any>, options?: {
10
+ receiverToken?: object;
11
+ }) => PibblElement<any>;
12
+ /** Installed lazily by the existing direct-style boundary to avoid module cycles. */
13
+ export declare function configureAllocationCheckpointAdapter(prepare: typeof PrepareStyle, place: typeof PlaceStyle, takePrepared: typeof TakePreparedStyle, stagePrepared: typeof StagePreparedStyle, described: (type: Function) => boolean, structural: (type: Function) => boolean, describe: typeof prepareDescription): void;
14
+ import type { LayoutBox } from './types.js';
15
+ type PreparedStyle = ReturnType<typeof prepareDirectChildStyle>;
16
+ type Placement = {
17
+ box: LayoutBox;
18
+ element: PibblElement<any>;
19
+ };
20
+ export declare function markVolatileAllocationQuery(): void;
21
+ export declare function allocationQueryVolatilityRevision(): number;
22
+ export declare function declineUntracedAllocationQuery(): void;
23
+ export declare function allocationQueryReplayRevision(): number;
24
+ /** Called at the existing normalization boundary; never sizes or places an item. */
25
+ export declare function recordAllocationStyle(receiver: object | undefined, prepared: PreparedStyle, receipt?: ReceiverInputProvisionReceipt): void;
26
+ /** Records actual demanded pure queries, including their selected constraints. */
27
+ export declare function allocationMeasurement<T>(element: PibblElement<any>, execute: (element: PibblElement<any>) => T, allowResponsive?: boolean): T;
28
+ /** A query without a replayable receiver/constraint record stays on the normal path. */
29
+ export declare function declineUnrecordedAllocationMeasurement(): void;
30
+ export interface AllocationCheckpointOptions<P extends Placement> {
31
+ children: readonly PibblElement<any>[];
32
+ content: Readonly<LayoutBox>;
33
+ settings: unknown;
34
+ flexMargins?: boolean;
35
+ /** Numeric output of a current prerequisite phase, never its receiver leases. */
36
+ continuation?: unknown;
37
+ receiverTokens?: readonly object[];
38
+ pending?: {
39
+ read(index: number): {
40
+ style: Readonly<SystemStyle>;
41
+ data: unknown;
42
+ } | undefined;
43
+ replay(index: number, style: Readonly<SystemStyle>, receiver: object, query: PreparedQuery | undefined, data: unknown): P;
44
+ };
45
+ calculate(): P[];
46
+ onHit?(): void;
47
+ }
48
+ /**
49
+ * A numeric-region checkpoint. It bypasses the actual family allocator, leaving
50
+ * its work counters at their original call sites. Mutable input verification is
51
+ * deliberately separate from sizing/measurement/placement visits.
52
+ */
53
+ export declare function withAllocationCheckpoint<P extends Placement>(owner: object | undefined, options: AllocationCheckpointOptions<P>): P[];