@pibbl/core 0.0.2 → 0.0.3-alpha.109.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (549) hide show
  1. package/THIRD_PARTY_NOTICES.txt +81 -0
  2. package/dist/features/physics/2d-testing.d.ts +1 -1
  3. package/dist/features/physics/2d-testing.js +2 -2
  4. package/dist/features/physics/2d-testing.js.map +2 -2
  5. package/dist/features/physics/lib/2d/canvas/components.js +25 -21
  6. package/dist/features/physics/lib/2d/canvas/components.js.map +2 -2
  7. package/dist/features/physics/lib/2d/canvas/presentation.js +1 -2
  8. package/dist/features/physics/lib/2d/canvas/presentation.js.map +2 -2
  9. package/dist/features/physics/lib/2d/collision/casts.js +4 -2
  10. package/dist/features/physics/lib/2d/collision/casts.js.map +2 -2
  11. package/dist/features/physics/lib/2d/runtime/controller.js +1 -1
  12. package/dist/features/physics/lib/2d/runtime/controller.js.map +2 -2
  13. package/dist/features/physics/lib/2d/runtime/obstacles.js +9 -11
  14. package/dist/features/physics/lib/2d/runtime/obstacles.js.map +2 -2
  15. package/dist/features/physics/lib/2d/shapes.js +8 -9
  16. package/dist/features/physics/lib/2d/shapes.js.map +2 -2
  17. package/dist/features/physics/lib/2d/world/rapier.js +22 -26
  18. package/dist/features/physics/lib/2d/world/rapier.js.map +2 -2
  19. package/dist/features/sprites/loader.js +6 -3
  20. package/dist/features/sprites/loader.js.map +2 -2
  21. package/dist/features/textures/index.d.ts +12 -2
  22. package/dist/features/textures/index.js +33 -1
  23. package/dist/features/textures/index.js.map +2 -2
  24. package/dist/features/textures/lib/chemical-field.d.ts +56 -0
  25. package/dist/features/textures/lib/chemical-field.js +154 -0
  26. package/dist/features/textures/lib/chemical-field.js.map +7 -0
  27. package/dist/features/textures/lib/chemical-recipes.d.ts +119 -0
  28. package/dist/features/textures/lib/chemical-recipes.js +275 -0
  29. package/dist/features/textures/lib/chemical-recipes.js.map +7 -0
  30. package/dist/features/textures/lib/definitions.d.ts +3 -18
  31. package/dist/features/textures/lib/definitions.js +17 -24
  32. package/dist/features/textures/lib/definitions.js.map +2 -2
  33. package/dist/features/textures/lib/geometric-patterns.d.ts +149 -0
  34. package/dist/features/textures/lib/geometric-patterns.js +305 -0
  35. package/dist/features/textures/lib/geometric-patterns.js.map +7 -0
  36. package/dist/features/textures/lib/gray-scott.d.ts +55 -0
  37. package/dist/features/textures/lib/gray-scott.js +37 -0
  38. package/dist/features/textures/lib/gray-scott.js.map +7 -0
  39. package/dist/features/textures/lib/palette.js +1 -3
  40. package/dist/features/textures/lib/palette.js.map +2 -2
  41. package/dist/features/textures/lib/patterns.d.ts +123 -0
  42. package/dist/features/textures/lib/patterns.js +344 -0
  43. package/dist/features/textures/lib/patterns.js.map +7 -0
  44. package/dist/features/textures/lib/rain-drops.js +2 -1
  45. package/dist/features/textures/lib/rain-drops.js.map +2 -2
  46. package/dist/features/textures/lib/reaction-diffusion.d.ts +3 -2
  47. package/dist/features/textures/lib/reaction-diffusion.js +9 -20
  48. package/dist/features/textures/lib/reaction-diffusion.js.map +2 -2
  49. package/dist/features/textures/lib/simulation.d.ts +10 -4
  50. package/dist/features/textures/lib/simulation.js +23 -13
  51. package/dist/features/textures/lib/simulation.js.map +2 -2
  52. package/dist/features/textures/lib/wasm/electric.js +8 -1
  53. package/dist/features/textures/lib/wasm/electric.js.map +2 -2
  54. package/dist/features/textures/lib/water-surface.js +1 -3
  55. package/dist/features/textures/lib/water-surface.js.map +2 -2
  56. package/dist/features/viz/index.d.ts +68 -6
  57. package/dist/features/viz/index.js +164 -2
  58. package/dist/features/viz/index.js.map +2 -2
  59. package/dist/features/viz/inspection/bar.d.ts +79 -0
  60. package/dist/features/viz/inspection/bar.js +49 -0
  61. package/dist/features/viz/inspection/bar.js.map +7 -0
  62. package/dist/features/viz/inspection/candle.d.ts +156 -0
  63. package/dist/features/viz/inspection/candle.js +120 -0
  64. package/dist/features/viz/inspection/candle.js.map +7 -0
  65. package/dist/features/viz/inspection/capture-types.d.ts +65 -0
  66. package/dist/features/viz/inspection/capture.d.ts +16 -0
  67. package/dist/features/viz/inspection/capture.js +49 -0
  68. package/dist/features/viz/inspection/capture.js.map +7 -0
  69. package/dist/features/viz/inspection/handler.d.ts +36 -0
  70. package/dist/features/viz/inspection/handler.js +91 -0
  71. package/dist/features/viz/inspection/handler.js.map +7 -0
  72. package/dist/features/viz/inspection/ohlc-bar.d.ts +132 -0
  73. package/dist/features/viz/inspection/ohlc-bar.js +118 -0
  74. package/dist/features/viz/inspection/ohlc-bar.js.map +7 -0
  75. package/dist/features/viz/inspection/owned-ref.d.ts +16 -0
  76. package/dist/features/viz/inspection/owned-ref.js +99 -0
  77. package/dist/features/viz/inspection/owned-ref.js.map +7 -0
  78. package/dist/features/viz/inspection/painted-point.d.ts +22 -0
  79. package/dist/features/viz/inspection/painted-point.js +29 -0
  80. package/dist/features/viz/inspection/painted-point.js.map +7 -0
  81. package/dist/features/viz/inspection/queries.d.ts +100 -0
  82. package/dist/features/viz/inspection/queries.js +192 -0
  83. package/dist/features/viz/inspection/queries.js.map +7 -0
  84. package/dist/features/viz/inspection/query-types.d.ts +177 -0
  85. package/dist/features/viz/inspection/volume.d.ts +104 -0
  86. package/dist/features/viz/inspection/volume.js +95 -0
  87. package/dist/features/viz/inspection/volume.js.map +7 -0
  88. package/dist/features/viz/inspection.d.ts +19 -0
  89. package/dist/features/viz/inspection.js +54 -0
  90. package/dist/features/viz/inspection.js.map +7 -0
  91. package/dist/features/viz/inspection.mjs +1 -0
  92. package/dist/features/viz/lib/area-series.d.ts +62 -0
  93. package/dist/features/viz/lib/area-series.js +120 -0
  94. package/dist/features/viz/lib/area-series.js.map +7 -0
  95. package/dist/features/viz/lib/axis-title.js +2 -1
  96. package/dist/features/viz/lib/axis-title.js.map +2 -2
  97. package/dist/features/viz/lib/axis.js +1 -1
  98. package/dist/features/viz/lib/axis.js.map +2 -2
  99. package/dist/features/viz/lib/bar-series.d.ts +3 -1
  100. package/dist/features/viz/lib/bar-series.js +16 -1
  101. package/dist/features/viz/lib/bar-series.js.map +2 -2
  102. package/dist/features/viz/lib/baseline-series.d.ts +55 -0
  103. package/dist/features/viz/lib/baseline-series.js +136 -0
  104. package/dist/features/viz/lib/baseline-series.js.map +7 -0
  105. package/dist/features/viz/lib/candlestick-series.d.ts +62 -0
  106. package/dist/features/viz/lib/candlestick-series.js +150 -0
  107. package/dist/features/viz/lib/candlestick-series.js.map +7 -0
  108. package/dist/features/viz/lib/censored-point-series.d.ts +71 -0
  109. package/dist/features/viz/lib/censored-point-series.js +129 -0
  110. package/dist/features/viz/lib/censored-point-series.js.map +7 -0
  111. package/dist/features/viz/lib/color-context.d.ts +4 -0
  112. package/dist/features/viz/lib/color-context.js +41 -0
  113. package/dist/features/viz/lib/color-context.js.map +7 -0
  114. package/dist/features/viz/lib/color-math.d.ts +4 -0
  115. package/dist/features/viz/lib/color-math.js +31 -0
  116. package/dist/features/viz/lib/color-math.js.map +7 -0
  117. package/dist/features/viz/lib/color-types.d.ts +53 -0
  118. package/dist/features/viz/lib/curve-definition.d.ts +49 -0
  119. package/dist/features/viz/lib/curve-definition.js +142 -0
  120. package/dist/features/viz/lib/curve-definition.js.map +7 -0
  121. package/dist/features/viz/lib/diverging-color-scale.d.ts +11 -0
  122. package/dist/features/viz/lib/diverging-color-scale.js +51 -0
  123. package/dist/features/viz/lib/diverging-color-scale.js.map +7 -0
  124. package/dist/features/viz/lib/domain-navigation.d.ts +40 -0
  125. package/dist/features/viz/lib/domain-navigation.js +77 -0
  126. package/dist/features/viz/lib/domain-navigation.js.map +7 -0
  127. package/dist/features/viz/lib/editable-chart-elements.d.ts +178 -0
  128. package/dist/features/viz/lib/editable-chart-elements.js +733 -0
  129. package/dist/features/viz/lib/editable-chart-elements.js.map +7 -0
  130. package/dist/features/viz/lib/financial-aggregation.d.ts +127 -0
  131. package/dist/features/viz/lib/financial-aggregation.js +116 -0
  132. package/dist/features/viz/lib/financial-aggregation.js.map +7 -0
  133. package/dist/features/viz/lib/financial-autoscale.d.ts +64 -0
  134. package/dist/features/viz/lib/financial-autoscale.js +61 -0
  135. package/dist/features/viz/lib/financial-autoscale.js.map +7 -0
  136. package/dist/features/viz/lib/financial-comparison.d.ts +62 -0
  137. package/dist/features/viz/lib/financial-comparison.js +98 -0
  138. package/dist/features/viz/lib/financial-comparison.js.map +7 -0
  139. package/dist/features/viz/lib/financial-geometry.d.ts +77 -0
  140. package/dist/features/viz/lib/financial-geometry.js +67 -0
  141. package/dist/features/viz/lib/financial-geometry.js.map +7 -0
  142. package/dist/features/viz/lib/financial-indicators.d.ts +114 -0
  143. package/dist/features/viz/lib/financial-indicators.js +135 -0
  144. package/dist/features/viz/lib/financial-indicators.js.map +7 -0
  145. package/dist/features/viz/lib/financial-oscillators.d.ts +171 -0
  146. package/dist/features/viz/lib/financial-oscillators.js +265 -0
  147. package/dist/features/viz/lib/financial-oscillators.js.map +7 -0
  148. package/dist/features/viz/lib/graph/bipartite.d.ts +14 -0
  149. package/dist/features/viz/lib/graph/bipartite.js +250 -0
  150. package/dist/features/viz/lib/graph/bipartite.js.map +7 -0
  151. package/dist/features/viz/lib/graph/chord.d.ts +44 -0
  152. package/dist/features/viz/lib/graph/chord.js +348 -0
  153. package/dist/features/viz/lib/graph/chord.js.map +7 -0
  154. package/dist/features/viz/lib/graph/dependency.d.ts +26 -0
  155. package/dist/features/viz/lib/graph/dependency.js +140 -0
  156. package/dist/features/viz/lib/graph/dependency.js.map +7 -0
  157. package/dist/features/viz/lib/graph/force.d.ts +28 -0
  158. package/dist/features/viz/lib/graph/force.js +580 -0
  159. package/dist/features/viz/lib/graph/force.js.map +7 -0
  160. package/dist/features/viz/lib/graph/hierarchy.d.ts +21 -0
  161. package/dist/features/viz/lib/graph/hierarchy.js +112 -0
  162. package/dist/features/viz/lib/graph/hierarchy.js.map +7 -0
  163. package/dist/features/viz/lib/graph/icicle.d.ts +16 -0
  164. package/dist/features/viz/lib/graph/icicle.js +153 -0
  165. package/dist/features/viz/lib/graph/icicle.js.map +7 -0
  166. package/dist/features/viz/lib/graph/matrix.d.ts +30 -0
  167. package/dist/features/viz/lib/graph/matrix.js +243 -0
  168. package/dist/features/viz/lib/graph/matrix.js.map +7 -0
  169. package/dist/features/viz/lib/graph/neighborhood.d.ts +11 -0
  170. package/dist/features/viz/lib/graph/neighborhood.js +281 -0
  171. package/dist/features/viz/lib/graph/neighborhood.js.map +7 -0
  172. package/dist/features/viz/lib/graph/routes.d.ts +35 -0
  173. package/dist/features/viz/lib/graph/routes.js +101 -0
  174. package/dist/features/viz/lib/graph/routes.js.map +7 -0
  175. package/dist/features/viz/lib/graph/sankey.d.ts +44 -0
  176. package/dist/features/viz/lib/graph/sankey.js +341 -0
  177. package/dist/features/viz/lib/graph/sankey.js.map +7 -0
  178. package/dist/features/viz/lib/graph/shared.d.ts +59 -0
  179. package/dist/features/viz/lib/graph/shared.js +301 -0
  180. package/dist/features/viz/lib/graph/shared.js.map +7 -0
  181. package/dist/features/viz/lib/graph/tree.d.ts +11 -0
  182. package/dist/features/viz/lib/graph/tree.js +232 -0
  183. package/dist/features/viz/lib/graph/tree.js.map +7 -0
  184. package/dist/features/viz/lib/graph/treemap.d.ts +20 -0
  185. package/dist/features/viz/lib/graph/treemap.js +227 -0
  186. package/dist/features/viz/lib/graph/treemap.js.map +7 -0
  187. package/dist/features/viz/lib/graph/types.d.ts +1097 -0
  188. package/dist/features/viz/lib/hover-card.js +8 -9
  189. package/dist/features/viz/lib/hover-card.js.map +2 -2
  190. package/dist/features/viz/lib/hover-data.d.ts +1 -1
  191. package/dist/features/viz/lib/hover-data.js +5 -2
  192. package/dist/features/viz/lib/hover-data.js.map +2 -2
  193. package/dist/features/viz/lib/interval-band-series.d.ts +49 -0
  194. package/dist/features/viz/lib/interval-band-series.js +136 -0
  195. package/dist/features/viz/lib/interval-band-series.js.map +7 -0
  196. package/dist/features/viz/lib/interval-diamond-series.d.ts +43 -0
  197. package/dist/features/viz/lib/interval-diamond-series.js +122 -0
  198. package/dist/features/viz/lib/interval-diamond-series.js.map +7 -0
  199. package/dist/features/viz/lib/interval-series.d.ts +79 -0
  200. package/dist/features/viz/lib/interval-series.js +158 -0
  201. package/dist/features/viz/lib/interval-series.js.map +7 -0
  202. package/dist/features/viz/lib/layout-pie.js +9 -13
  203. package/dist/features/viz/lib/layout-pie.js.map +2 -2
  204. package/dist/features/viz/lib/line-series.d.ts +1 -1
  205. package/dist/features/viz/lib/line-series.js +47 -28
  206. package/dist/features/viz/lib/line-series.js.map +2 -2
  207. package/dist/features/viz/lib/linear-scale.js +1 -1
  208. package/dist/features/viz/lib/linear-scale.js.map +2 -2
  209. package/dist/features/viz/lib/monotone-curve.d.ts +11 -0
  210. package/dist/features/viz/lib/monotone-curve.js +63 -0
  211. package/dist/features/viz/lib/monotone-curve.js.map +7 -0
  212. package/dist/features/viz/lib/numeric-range-interpolation.d.ts +15 -0
  213. package/dist/features/viz/lib/numeric-range-interpolation.js +36 -0
  214. package/dist/features/viz/lib/numeric-range-interpolation.js.map +7 -0
  215. package/dist/features/viz/lib/ohlc-bar-series.d.ts +55 -0
  216. package/dist/features/viz/lib/ohlc-bar-series.js +168 -0
  217. package/dist/features/viz/lib/ohlc-bar-series.js.map +7 -0
  218. package/dist/features/viz/lib/paired-series.d.ts +44 -0
  219. package/dist/features/viz/lib/paired-series.js +93 -0
  220. package/dist/features/viz/lib/paired-series.js.map +7 -0
  221. package/dist/features/viz/lib/pie-layout.js +2 -1
  222. package/dist/features/viz/lib/pie-layout.js.map +2 -2
  223. package/dist/features/viz/lib/plot-series.js +11 -6
  224. package/dist/features/viz/lib/plot-series.js.map +2 -2
  225. package/dist/features/viz/lib/plot-types.d.ts +4 -3
  226. package/dist/features/viz/lib/point-series.d.ts +1 -1
  227. package/dist/features/viz/lib/point-series.js +36 -9
  228. package/dist/features/viz/lib/point-series.js.map +2 -2
  229. package/dist/features/viz/lib/point-types.d.ts +5 -2
  230. package/dist/features/viz/lib/reference-band.js +4 -1
  231. package/dist/features/viz/lib/reference-band.js.map +2 -2
  232. package/dist/features/viz/lib/scale-context.d.ts +1 -1
  233. package/dist/features/viz/lib/scale-ticks.js +21 -6
  234. package/dist/features/viz/lib/scale-ticks.js.map +2 -2
  235. package/dist/features/viz/lib/sequential-color-scale.d.ts +11 -0
  236. package/dist/features/viz/lib/sequential-color-scale.js +49 -0
  237. package/dist/features/viz/lib/sequential-color-scale.js.map +7 -0
  238. package/dist/features/viz/lib/series-position.d.ts +12 -0
  239. package/dist/features/viz/lib/series-position.js +44 -0
  240. package/dist/features/viz/lib/series-position.js.map +7 -0
  241. package/dist/features/viz/lib/step-curves.d.ts +19 -0
  242. package/dist/features/viz/lib/step-curves.js +53 -0
  243. package/dist/features/viz/lib/step-curves.js.map +7 -0
  244. package/dist/features/viz/lib/threshold-color-scale.d.ts +43 -0
  245. package/dist/features/viz/lib/threshold-color-scale.js +59 -0
  246. package/dist/features/viz/lib/threshold-color-scale.js.map +7 -0
  247. package/dist/features/viz/lib/trading-time-mapping.d.ts +32 -0
  248. package/dist/features/viz/lib/trading-time-mapping.js +89 -0
  249. package/dist/features/viz/lib/trading-time-mapping.js.map +7 -0
  250. package/dist/features/viz/lib/trading-time-scale.d.ts +83 -0
  251. package/dist/features/viz/lib/trading-time-scale.js +96 -0
  252. package/dist/features/viz/lib/trading-time-scale.js.map +7 -0
  253. package/dist/features/viz/lib/trajectory-series.d.ts +71 -0
  254. package/dist/features/viz/lib/trajectory-series.js +111 -0
  255. package/dist/features/viz/lib/trajectory-series.js.map +7 -0
  256. package/dist/features/viz/lib/types.d.ts +20 -4
  257. package/dist/features/viz/lib/use-continuous-scale.js +6 -1
  258. package/dist/features/viz/lib/use-continuous-scale.js.map +2 -2
  259. package/dist/features/viz/lib/utc-scale.js +11 -10
  260. package/dist/features/viz/lib/utc-scale.js.map +2 -2
  261. package/dist/features/viz/lib/volume-series.d.ts +59 -0
  262. package/dist/features/viz/lib/volume-series.js +117 -0
  263. package/dist/features/viz/lib/volume-series.js.map +7 -0
  264. package/dist/features/viz/lib/weighted-point-series.d.ts +71 -0
  265. package/dist/features/viz/lib/weighted-point-series.js +169 -0
  266. package/dist/features/viz/lib/weighted-point-series.js.map +7 -0
  267. package/dist/filters/backdrop-contrast-gpu.d.ts +5 -0
  268. package/dist/filters/backdrop-contrast-gpu.js +33 -0
  269. package/dist/filters/backdrop-contrast-gpu.js.map +7 -0
  270. package/dist/filters/backdrop-contrast.d.ts +21 -0
  271. package/dist/filters/backdrop-contrast.js +61 -0
  272. package/dist/filters/backdrop-contrast.js.map +7 -0
  273. package/dist/filters/displacement.js +1 -1
  274. package/dist/filters/displacement.js.map +2 -2
  275. package/dist/filters/emboss-gpu.d.ts +4 -0
  276. package/dist/filters/emboss-gpu.js +39 -0
  277. package/dist/filters/emboss-gpu.js.map +7 -0
  278. package/dist/filters/emboss.d.ts +32 -0
  279. package/dist/filters/emboss.js +104 -0
  280. package/dist/filters/emboss.js.map +7 -0
  281. package/dist/filters/filter-executor.d.ts +11 -4
  282. package/dist/filters/filter-executor.js +104 -49
  283. package/dist/filters/filter-executor.js.map +2 -2
  284. package/dist/filters/reflected-light.js +1 -1
  285. package/dist/filters/reflected-light.js.map +2 -2
  286. package/dist/filters/reflection-gpu.d.ts +3 -1
  287. package/dist/filters/reflection-gpu.js +5 -2
  288. package/dist/filters/reflection-gpu.js.map +2 -2
  289. package/dist/filters/render-backdrop-contrast-boundary.d.ts +31 -0
  290. package/dist/filters/render-backdrop-contrast-boundary.js +116 -0
  291. package/dist/filters/render-backdrop-contrast-boundary.js.map +7 -0
  292. package/dist/filters/render-emboss-boundary.d.ts +13 -0
  293. package/dist/filters/render-emboss-boundary.js +131 -0
  294. package/dist/filters/render-emboss-boundary.js.map +7 -0
  295. package/dist/filters.d.ts +9 -5
  296. package/dist/filters.js +4 -0
  297. package/dist/filters.js.map +2 -2
  298. package/dist/index.d.ts +9 -5
  299. package/dist/index.js +18 -2
  300. package/dist/index.js.map +2 -2
  301. package/dist/internal.d.ts +4 -0
  302. package/dist/internal.js +6 -0
  303. package/dist/internal.js.map +2 -2
  304. package/dist/layout-kernel.d.ts +12 -0
  305. package/dist/layout-kernel.js +11 -0
  306. package/dist/layout-kernel.js.map +7 -0
  307. package/dist/layout-kernel.mjs +1 -0
  308. package/dist/lib/backend/types.d.ts +13 -1
  309. package/dist/lib/backend/types.js.map +2 -2
  310. package/dist/lib/components/arc-geometry.js +2 -1
  311. package/dist/lib/components/arc-geometry.js.map +2 -2
  312. package/dist/lib/components/g.js +2 -0
  313. package/dist/lib/components/g.js.map +2 -2
  314. package/dist/lib/components/html-box.js +2 -1
  315. package/dist/lib/components/html-box.js.map +2 -2
  316. package/dist/lib/components/img.js +3 -3
  317. package/dist/lib/components/img.js.map +2 -2
  318. package/dist/lib/components/layer.js +98 -16
  319. package/dist/lib/components/layer.js.map +3 -3
  320. package/dist/lib/components/text.d.ts +16 -0
  321. package/dist/lib/components/text.js +131 -24
  322. package/dist/lib/components/text.js.map +2 -2
  323. package/dist/lib/define-primitive.d.ts +4 -2
  324. package/dist/lib/define-primitive.js +3 -1
  325. package/dist/lib/define-primitive.js.map +2 -2
  326. package/dist/lib/element/metadata.d.ts +9 -0
  327. package/dist/lib/element/metadata.js +19 -0
  328. package/dist/lib/element/metadata.js.map +2 -2
  329. package/dist/lib/element/resolve-primitive-inputs.d.ts +2 -0
  330. package/dist/lib/element/resolve-primitive-inputs.js +17 -4
  331. package/dist/lib/element/resolve-primitive-inputs.js.map +2 -2
  332. package/dist/lib/events/event-facade.d.ts +18 -0
  333. package/dist/lib/events/event-facade.js +28 -2
  334. package/dist/lib/events/event-facade.js.map +2 -2
  335. package/dist/lib/events/hit-test.js +2 -1
  336. package/dist/lib/events/hit-test.js.map +2 -2
  337. package/dist/lib/events/propagation.d.ts +2 -1
  338. package/dist/lib/events/propagation.js +22 -16
  339. package/dist/lib/events/propagation.js.map +2 -2
  340. package/dist/lib/events/registrations.d.ts +10 -0
  341. package/dist/lib/events/registrations.js +160 -5
  342. package/dist/lib/events/registrations.js.map +2 -2
  343. package/dist/lib/execute-render.js +25 -1
  344. package/dist/lib/execute-render.js.map +2 -2
  345. package/dist/lib/filter/filter-region.js +3 -10
  346. package/dist/lib/filter/filter-region.js.map +2 -2
  347. package/dist/lib/focus/focus-manager.d.ts +8 -1
  348. package/dist/lib/focus/focus-manager.js +87 -43
  349. package/dist/lib/focus/focus-manager.js.map +2 -2
  350. package/dist/lib/focus/geometry.d.ts +2 -0
  351. package/dist/lib/focus/geometry.js +6 -0
  352. package/dist/lib/focus/geometry.js.map +2 -2
  353. package/dist/lib/geometry/path-bend-guide.js +1 -1
  354. package/dist/lib/geometry/path-bend-guide.js.map +2 -2
  355. package/dist/lib/geometry/path-geometry.js +12 -11
  356. package/dist/lib/geometry/path-geometry.js.map +2 -2
  357. package/dist/lib/geometry/path-transforms.js +17 -21
  358. package/dist/lib/geometry/path-transforms.js.map +2 -2
  359. package/dist/lib/geometry/path-warp-bezier.js +3 -1
  360. package/dist/lib/geometry/path-warp-bezier.js.map +2 -2
  361. package/dist/lib/geometry/path-warp.js +1 -1
  362. package/dist/lib/geometry/path-warp.js.map +2 -2
  363. package/dist/lib/global-state.js +2 -0
  364. package/dist/lib/global-state.js.map +2 -2
  365. package/dist/lib/html/html-events.d.ts +32 -0
  366. package/dist/lib/html/html-events.js +179 -0
  367. package/dist/lib/html/html-events.js.map +7 -0
  368. package/dist/lib/html/html-service.d.ts +8 -2
  369. package/dist/lib/html/html-service.js +198 -65
  370. package/dist/lib/html/html-service.js.map +2 -2
  371. package/dist/lib/html/overlay-config.js +7 -6
  372. package/dist/lib/html/overlay-config.js.map +2 -2
  373. package/dist/lib/html/types.d.ts +29 -2
  374. package/dist/lib/layout/absolute.d.ts +11 -5
  375. package/dist/lib/layout/absolute.js +329 -55
  376. package/dist/lib/layout/absolute.js.map +3 -3
  377. package/dist/lib/layout/allocation-checkpoint-owner.d.ts +11 -0
  378. package/dist/lib/layout/allocation-checkpoint-owner.js +86 -0
  379. package/dist/lib/layout/allocation-checkpoint-owner.js.map +7 -0
  380. package/dist/lib/layout/allocation-checkpoint.d.ts +53 -0
  381. package/dist/lib/layout/allocation-checkpoint.js +463 -0
  382. package/dist/lib/layout/allocation-checkpoint.js.map +7 -0
  383. package/dist/lib/layout/allocation-dependencies.d.ts +30 -0
  384. package/dist/lib/layout/allocation-dependencies.js +90 -0
  385. package/dist/lib/layout/allocation-dependencies.js.map +7 -0
  386. package/dist/lib/layout/allocation-revision.d.ts +13 -0
  387. package/dist/lib/layout/allocation-revision.js +67 -0
  388. package/dist/lib/layout/allocation-revision.js.map +7 -0
  389. package/dist/lib/layout/box-insets.d.ts +17 -0
  390. package/dist/lib/layout/box-insets.js +138 -0
  391. package/dist/lib/layout/box-insets.js.map +7 -0
  392. package/dist/lib/layout/box-sizing.d.ts +16 -0
  393. package/dist/lib/layout/box-sizing.js +77 -0
  394. package/dist/lib/layout/box-sizing.js.map +7 -0
  395. package/dist/lib/layout/box.js +42 -12
  396. package/dist/lib/layout/box.js.map +2 -2
  397. package/dist/lib/layout/canvas-measurement.d.ts +13 -0
  398. package/dist/lib/layout/canvas-measurement.js +57 -0
  399. package/dist/lib/layout/canvas-measurement.js.map +7 -0
  400. package/dist/lib/layout/context.d.ts +35 -6
  401. package/dist/lib/layout/context.js +72 -3
  402. package/dist/lib/layout/context.js.map +2 -2
  403. package/dist/lib/layout/define-layout-component.d.ts +23 -0
  404. package/dist/lib/layout/define-layout-component.js +84 -0
  405. package/dist/lib/layout/define-layout-component.js.map +7 -0
  406. package/dist/lib/layout/flex-allocation-cache.d.ts +42 -0
  407. package/dist/lib/layout/flex-baseline-mode.d.ts +2 -0
  408. package/dist/lib/layout/flex-baseline-mode.js +7 -0
  409. package/dist/lib/layout/flex-baseline-mode.js.map +7 -0
  410. package/dist/lib/layout/flex.d.ts +50 -15
  411. package/dist/lib/layout/flex.js +2124 -195
  412. package/dist/lib/layout/flex.js.map +3 -3
  413. package/dist/lib/layout/flow.js +225 -49
  414. package/dist/lib/layout/flow.js.map +2 -2
  415. package/dist/lib/layout/geometry-publication.d.ts +53 -0
  416. package/dist/lib/layout/geometry-publication.js +244 -0
  417. package/dist/lib/layout/geometry-publication.js.map +7 -0
  418. package/dist/lib/layout/grid-kernel.d.ts +63 -0
  419. package/dist/lib/layout/grid-kernel.js +168 -0
  420. package/dist/lib/layout/grid-kernel.js.map +7 -0
  421. package/dist/lib/layout/grid.d.ts +63 -4
  422. package/dist/lib/layout/grid.js +767 -171
  423. package/dist/lib/layout/grid.js.map +3 -3
  424. package/dist/lib/layout/measure.d.ts +55 -3
  425. package/dist/lib/layout/measure.js +448 -15
  426. package/dist/lib/layout/measure.js.map +2 -2
  427. package/dist/lib/layout/overlay.js +81 -23
  428. package/dist/lib/layout/overlay.js.map +2 -2
  429. package/dist/lib/layout/participation.d.ts +27 -0
  430. package/dist/lib/layout/participation.js +188 -0
  431. package/dist/lib/layout/participation.js.map +7 -0
  432. package/dist/lib/layout/place-child.js +1 -1
  433. package/dist/lib/layout/place-child.js.map +2 -2
  434. package/dist/lib/layout/positioning-diagnostics.d.ts +1 -1
  435. package/dist/lib/layout/positioning-diagnostics.js +13 -2
  436. package/dist/lib/layout/positioning-diagnostics.js.map +2 -2
  437. package/dist/lib/layout/prepared-root.d.ts +121 -0
  438. package/dist/lib/layout/prepared-root.js +360 -0
  439. package/dist/lib/layout/prepared-root.js.map +7 -0
  440. package/dist/lib/layout/standalone-kernel.d.ts +60 -0
  441. package/dist/lib/layout/standalone-kernel.js +722 -0
  442. package/dist/lib/layout/standalone-kernel.js.map +7 -0
  443. package/dist/lib/layout/topology.d.ts +21 -0
  444. package/dist/lib/layout/topology.js +113 -0
  445. package/dist/lib/layout/topology.js.map +7 -0
  446. package/dist/lib/layout/types.d.ts +5 -0
  447. package/dist/lib/layout/wasm/artifact.d.ts +1 -0
  448. package/dist/lib/layout/wasm/artifact.js +5 -0
  449. package/dist/lib/layout/wasm/artifact.js.map +7 -0
  450. package/dist/lib/layout/wasm/bytes.d.ts +1 -0
  451. package/dist/lib/layout/wasm/bytes.js +5 -0
  452. package/dist/lib/layout/wasm/bytes.js.map +7 -0
  453. package/dist/lib/layout/wasm/embedded.d.ts +2 -0
  454. package/dist/lib/layout/wasm/embedded.js +12 -0
  455. package/dist/lib/layout/wasm/embedded.js.map +7 -0
  456. package/dist/lib/layout/wasm/layout.wasm +0 -0
  457. package/dist/lib/layout/wasm/module.d.ts +8 -0
  458. package/dist/lib/layout/wasm/module.js +70 -0
  459. package/dist/lib/layout/wasm/module.js.map +7 -0
  460. package/dist/lib/layout/wasm/region.d.ts +267 -0
  461. package/dist/lib/layout/wasm/region.js +1018 -0
  462. package/dist/lib/layout/wasm/region.js.map +7 -0
  463. package/dist/lib/manipulation/controller.js +4 -7
  464. package/dist/lib/manipulation/controller.js.map +2 -2
  465. package/dist/lib/manipulation/frame.js +1 -1
  466. package/dist/lib/manipulation/frame.js.map +2 -2
  467. package/dist/lib/manipulation/handles.js +32 -33
  468. package/dist/lib/manipulation/handles.js.map +2 -2
  469. package/dist/lib/manipulation/solve.js +12 -10
  470. package/dist/lib/manipulation/solve.js.map +2 -2
  471. package/dist/lib/mount-pibbl.js +1 -0
  472. package/dist/lib/mount-pibbl.js.map +2 -2
  473. package/dist/lib/mount-prepared-pibbl.d.ts +5 -0
  474. package/dist/lib/mount-prepared-pibbl.js +29 -0
  475. package/dist/lib/mount-prepared-pibbl.js.map +7 -0
  476. package/dist/lib/mount-request.d.ts +8 -0
  477. package/dist/lib/mount-request.js +41 -0
  478. package/dist/lib/mount-request.js.map +7 -0
  479. package/dist/lib/pibbl.d.ts +21 -13
  480. package/dist/lib/pibbl.js +18 -16
  481. package/dist/lib/pibbl.js.map +2 -2
  482. package/dist/lib/recording/recording.d.ts +43 -0
  483. package/dist/lib/recording/recording.js +555 -0
  484. package/dist/lib/recording/recording.js.map +7 -0
  485. package/dist/lib/recording/types.d.ts +118 -0
  486. package/dist/lib/recording/wasm-bytes.d.ts +1 -0
  487. package/dist/lib/recording/wasm-bytes.js +5 -0
  488. package/dist/lib/recording/wasm-bytes.js.map +7 -0
  489. package/dist/lib/recording/worker-source.d.ts +1 -0
  490. package/dist/lib/recording/worker-source.js +5 -0
  491. package/dist/lib/recording/worker-source.js.map +7 -0
  492. package/dist/lib/render-layer/controller.d.ts +9 -3
  493. package/dist/lib/render-layer/controller.js +259 -110
  494. package/dist/lib/render-layer/controller.js.map +2 -2
  495. package/dist/lib/render-transaction.d.ts +12 -2
  496. package/dist/lib/render-transaction.js +69 -1
  497. package/dist/lib/render-transaction.js.map +2 -2
  498. package/dist/lib/render.js +32 -8
  499. package/dist/lib/render.js.map +2 -2
  500. package/dist/lib/scheduler/realm-scheduler.d.ts +2 -0
  501. package/dist/lib/scheduler/realm-scheduler.js +55 -26
  502. package/dist/lib/scheduler/realm-scheduler.js.map +2 -2
  503. package/dist/lib/scheduler/renderer-participant.js +1 -0
  504. package/dist/lib/scheduler/renderer-participant.js.map +2 -2
  505. package/dist/lib/series-inspection-frame.d.ts +18 -0
  506. package/dist/lib/series-inspection-frame.js +70 -0
  507. package/dist/lib/series-inspection-frame.js.map +7 -0
  508. package/dist/lib/signals/edge.d.ts +7 -4
  509. package/dist/lib/signals/edge.js +25 -3
  510. package/dist/lib/signals/edge.js.map +2 -2
  511. package/dist/lib/signals/graph.d.ts +16 -2
  512. package/dist/lib/signals/graph.js +54 -12
  513. package/dist/lib/signals/graph.js.map +2 -2
  514. package/dist/lib/signals/input-provision.d.ts +15 -0
  515. package/dist/lib/signals/input-provision.js +53 -3
  516. package/dist/lib/signals/input-provision.js.map +2 -2
  517. package/dist/lib/signals/render-consumer.d.ts +3 -0
  518. package/dist/lib/signals/render-consumer.js +22 -14
  519. package/dist/lib/signals/render-consumer.js.map +2 -2
  520. package/dist/lib/style/positioning.d.ts +50 -2
  521. package/dist/lib/style/positioning.js +28 -4
  522. package/dist/lib/style/positioning.js.map +2 -2
  523. package/dist/lib/style/resolve-built-in.d.ts +4 -3
  524. package/dist/lib/style/resolve-built-in.js +17 -3
  525. package/dist/lib/style/resolve-built-in.js.map +2 -2
  526. package/dist/lib/style/resolve-dispatch.d.ts +3 -0
  527. package/dist/lib/style/resolve-dispatch.js +77 -4
  528. package/dist/lib/style/resolve-dispatch.js.map +2 -2
  529. package/dist/lib/style/resolve-length.d.ts +2 -0
  530. package/dist/lib/style/resolve-length.js +13 -9
  531. package/dist/lib/style/resolve-length.js.map +2 -2
  532. package/dist/lib/style/sizing-length.d.ts +51 -0
  533. package/dist/lib/style/sizing-length.js +77 -0
  534. package/dist/lib/style/sizing-length.js.map +7 -0
  535. package/dist/lib/style/types.d.ts +63 -25
  536. package/dist/lib/surface/root-surface.js +10 -6
  537. package/dist/lib/surface/root-surface.js.map +2 -2
  538. package/dist/lib/textures/texture.js +10 -8
  539. package/dist/lib/textures/texture.js.map +2 -2
  540. package/dist/lib/transitions/capture.js +4 -1
  541. package/dist/lib/transitions/capture.js.map +2 -2
  542. package/dist/lib/transitions/embers-physics.js +17 -10
  543. package/dist/lib/transitions/embers-physics.js.map +2 -2
  544. package/dist/lib/types.d.ts +110 -1
  545. package/dist/sync.d.ts +16 -0
  546. package/dist/sync.js +13 -0
  547. package/dist/sync.js.map +7 -0
  548. package/dist/sync.mjs +1 -0
  549. package/package.json +26 -3
@@ -0,0 +1,90 @@
1
+ const owners = /* @__PURE__ */ new WeakMap();
2
+ const pending = /* @__PURE__ */ new WeakMap();
3
+ const allocationRoles = 1 | 2 | 4 | 64;
4
+ let activeDependencies = 0;
5
+ let activeBindings = 0;
6
+ class AllocationDependency {
7
+ constructor(invalidate) {
8
+ this.invalidate = invalidate;
9
+ activeDependencies++;
10
+ }
11
+ invalidate;
12
+ owner;
13
+ disposed = false;
14
+ notify(roles) {
15
+ if (!this.disposed && roles & allocationRoles) this.invalidate(roles & allocationRoles);
16
+ }
17
+ adopt(owner) {
18
+ if (this.disposed || this.owner === owner) return;
19
+ this.detach();
20
+ this.owner = owner;
21
+ activeBindings++;
22
+ let dependencies = owners.get(owner);
23
+ if (!dependencies) {
24
+ dependencies = /* @__PURE__ */ new Set();
25
+ owners.set(owner, dependencies);
26
+ }
27
+ dependencies.add(this);
28
+ }
29
+ detach() {
30
+ if (!this.owner) return;
31
+ const dependencies = owners.get(this.owner);
32
+ dependencies?.delete(this);
33
+ if (!dependencies?.size) owners.delete(this.owner);
34
+ this.owner = void 0;
35
+ activeBindings--;
36
+ }
37
+ release(owner) {
38
+ if (this.owner !== owner) return;
39
+ this.detach();
40
+ this.notify(1);
41
+ }
42
+ dispose() {
43
+ if (this.disposed) return;
44
+ this.disposed = true;
45
+ this.detach();
46
+ activeDependencies--;
47
+ }
48
+ }
49
+ function stageAllocationDependency(transaction, receiver, dependency) {
50
+ let receivers = pending.get(transaction);
51
+ if (!receivers) {
52
+ receivers = /* @__PURE__ */ new WeakMap();
53
+ pending.set(transaction, receivers);
54
+ transaction.onFinish(() => pending.delete(transaction));
55
+ }
56
+ let dependencies = receivers.get(receiver);
57
+ if (!dependencies) {
58
+ dependencies = /* @__PURE__ */ new Set();
59
+ receivers.set(receiver, dependencies);
60
+ }
61
+ dependencies.add(dependency);
62
+ }
63
+ function adoptAllocationReceiver(transaction, receiver, owner) {
64
+ const dependencies = pending.get(transaction)?.get(receiver);
65
+ if (!dependencies) return;
66
+ transaction.onFinish((success) => {
67
+ if (success && !owner.teardowns?.closed) for (const dependency of dependencies) dependency.adopt(owner);
68
+ });
69
+ }
70
+ function invalidateAllocationReceiver(owner, roles) {
71
+ if (!(roles & allocationRoles)) return;
72
+ const dependencies = owners.get(owner);
73
+ if (dependencies) for (const dependency of dependencies) dependency.notify(roles);
74
+ }
75
+ function releaseAllocationReceiver(owner) {
76
+ const dependencies = owners.get(owner);
77
+ if (dependencies) for (const dependency of dependencies) dependency.release(owner);
78
+ }
79
+ function snapshotAllocationDependencies() {
80
+ return { dependencies: activeDependencies, bindings: activeBindings };
81
+ }
82
+ export {
83
+ AllocationDependency,
84
+ adoptAllocationReceiver,
85
+ invalidateAllocationReceiver,
86
+ releaseAllocationReceiver,
87
+ snapshotAllocationDependencies,
88
+ stageAllocationDependency
89
+ };
90
+ //# sourceMappingURL=allocation-dependencies.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/lib/layout/allocation-dependencies.ts"],
4
+ "sourcesContent": ["import type { PibblRenderTransaction } from '../types.js';\n\n// These are numeric input relationships, not reactive subscriptions. The existing\n// receiver's single combined-role consumer remains the sole signal lease owner.\nconst owners = new WeakMap<object, Set<AllocationDependency>>();\nconst pending = new WeakMap<PibblRenderTransaction, WeakMap<object, Set<AllocationDependency>>>();\nconst allocationRoles = 1 | 2 | 4 | 64;\nlet activeDependencies = 0;\nlet activeBindings = 0;\n\n/** One numeric contribution consumed by an allocating region. */\nexport class AllocationDependency {\n private owner: object | undefined;\n private disposed = false;\n constructor(private readonly invalidate: (roles: number) => void) { activeDependencies++; }\n notify(roles: number): void {\n if (!this.disposed && (roles & allocationRoles)) this.invalidate(roles & allocationRoles);\n }\n adopt(owner: object): void {\n if (this.disposed || this.owner === owner) return;\n this.detach();\n this.owner = owner; activeBindings++;\n let dependencies = owners.get(owner);\n if (!dependencies) { dependencies = new Set(); owners.set(owner, dependencies); }\n dependencies.add(this);\n }\n private detach(): void {\n if (!this.owner) return;\n const dependencies = owners.get(this.owner);\n dependencies?.delete(this);\n if (!dependencies?.size) owners.delete(this.owner);\n this.owner = undefined; activeBindings--;\n }\n release(owner: object): void {\n if (this.owner !== owner) return;\n this.detach();\n this.notify(1);\n }\n dispose(): void { if (this.disposed) return; this.disposed = true; this.detach(); activeDependencies--; }\n}\n\n/** Stage correspondence using this transaction's receiver, never an old token. */\nexport function stageAllocationDependency(transaction: PibblRenderTransaction, receiver: object, dependency: AllocationDependency): void {\n let receivers = pending.get(transaction);\n if (!receivers) { receivers = new WeakMap(); pending.set(transaction, receivers); transaction.onFinish(() => pending.delete(transaction)); }\n let dependencies = receivers.get(receiver);\n if (!dependencies) { dependencies = new Set(); receivers.set(receiver, dependencies); }\n dependencies.add(dependency);\n}\n\n/** Publish identity correspondence only after successful receiver adoption. */\nexport function adoptAllocationReceiver(transaction: PibblRenderTransaction, receiver: object, owner: object & { readonly teardowns?: { readonly closed: boolean } }): void {\n const dependencies = pending.get(transaction)?.get(receiver);\n if (!dependencies) return;\n transaction.onFinish(success => { if (success && !owner.teardowns?.closed) for (const dependency of dependencies) dependency.adopt(owner); });\n}\n\n/** Called by the existing combined-role receiver consumer, before coalescing paint. */\nexport function invalidateAllocationReceiver(owner: object, roles: number): void {\n if (!(roles & allocationRoles)) return;\n const dependencies = owners.get(owner);\n if (dependencies) for (const dependency of dependencies) dependency.notify(roles);\n}\n\n/** Removal releases reverse numeric relationships without holding component refs. */\nexport function releaseAllocationReceiver(owner: object): void {\n const dependencies = owners.get(owner);\n if (dependencies) for (const dependency of dependencies) dependency.release(owner);\n}\n\n/** Internal ownership diagnostics; numeric relationships acquire no signal lease. */\nexport function snapshotAllocationDependencies(): Readonly<{ dependencies: number; bindings: number }> {\n return { dependencies: activeDependencies, bindings: activeBindings };\n}\n"],
5
+ "mappings": "AAIA,MAAM,SAAS,oBAAI,QAA2C;AAC9D,MAAM,UAAU,oBAAI,QAA4E;AAChG,MAAM,kBAAkB,IAAI,IAAI,IAAI;AACpC,IAAI,qBAAqB;AACzB,IAAI,iBAAiB;AAGd,MAAM,qBAAqB;AAAA,EAGhC,YAA6B,YAAqC;AAArC;AAAuC;AAAA,EAAsB;AAAA,EAA7D;AAAA,EAFrB;AAAA,EACA,WAAW;AAAA,EAEnB,OAAO,OAAqB;AAC1B,QAAI,CAAC,KAAK,YAAa,QAAQ,gBAAkB,MAAK,WAAW,QAAQ,eAAe;AAAA,EAC1F;AAAA,EACA,MAAM,OAAqB;AACzB,QAAI,KAAK,YAAY,KAAK,UAAU,MAAO;AAC3C,SAAK,OAAO;AACZ,SAAK,QAAQ;AAAO;AACpB,QAAI,eAAe,OAAO,IAAI,KAAK;AACnC,QAAI,CAAC,cAAc;AAAE,qBAAe,oBAAI,IAAI;AAAG,aAAO,IAAI,OAAO,YAAY;AAAA,IAAG;AAChF,iBAAa,IAAI,IAAI;AAAA,EACvB;AAAA,EACQ,SAAe;AACrB,QAAI,CAAC,KAAK,MAAO;AACjB,UAAM,eAAe,OAAO,IAAI,KAAK,KAAK;AAC1C,kBAAc,OAAO,IAAI;AACzB,QAAI,CAAC,cAAc,KAAM,QAAO,OAAO,KAAK,KAAK;AACjD,SAAK,QAAQ;AAAW;AAAA,EAC1B;AAAA,EACA,QAAQ,OAAqB;AAC3B,QAAI,KAAK,UAAU,MAAO;AAC1B,SAAK,OAAO;AACZ,SAAK,OAAO,CAAC;AAAA,EACf;AAAA,EACA,UAAgB;AAAE,QAAI,KAAK,SAAU;AAAQ,SAAK,WAAW;AAAM,SAAK,OAAO;AAAG;AAAA,EAAsB;AAC1G;AAGO,SAAS,0BAA0B,aAAqC,UAAkB,YAAwC;AACvI,MAAI,YAAY,QAAQ,IAAI,WAAW;AACvC,MAAI,CAAC,WAAW;AAAE,gBAAY,oBAAI,QAAQ;AAAG,YAAQ,IAAI,aAAa,SAAS;AAAG,gBAAY,SAAS,MAAM,QAAQ,OAAO,WAAW,CAAC;AAAA,EAAG;AAC3I,MAAI,eAAe,UAAU,IAAI,QAAQ;AACzC,MAAI,CAAC,cAAc;AAAE,mBAAe,oBAAI,IAAI;AAAG,cAAU,IAAI,UAAU,YAAY;AAAA,EAAG;AACtF,eAAa,IAAI,UAAU;AAC7B;AAGO,SAAS,wBAAwB,aAAqC,UAAkB,OAA6E;AAC1K,QAAM,eAAe,QAAQ,IAAI,WAAW,GAAG,IAAI,QAAQ;AAC3D,MAAI,CAAC,aAAc;AACnB,cAAY,SAAS,aAAW;AAAE,QAAI,WAAW,CAAC,MAAM,WAAW,OAAQ,YAAW,cAAc,aAAc,YAAW,MAAM,KAAK;AAAA,EAAG,CAAC;AAC9I;AAGO,SAAS,6BAA6B,OAAe,OAAqB;AAC/E,MAAI,EAAE,QAAQ,iBAAkB;AAChC,QAAM,eAAe,OAAO,IAAI,KAAK;AACrC,MAAI,aAAc,YAAW,cAAc,aAAc,YAAW,OAAO,KAAK;AAClF;AAGO,SAAS,0BAA0B,OAAqB;AAC7D,QAAM,eAAe,OAAO,IAAI,KAAK;AACrC,MAAI,aAAc,YAAW,cAAc,aAAc,YAAW,QAAQ,KAAK;AACnF;AAGO,SAAS,iCAAuF;AACrG,SAAO,EAAE,cAAc,oBAAoB,UAAU,eAAe;AACtE;",
6
+ "names": []
7
+ }
@@ -0,0 +1,13 @@
1
+ import type { PibblInstance } from '../types.js';
2
+ export interface AllocationInputState {
3
+ readonly structural: number;
4
+ readonly metric: number;
5
+ }
6
+ export declare function allocationOwner(): PibblInstance | undefined;
7
+ export declare function setAllocationOwner(owner: PibblInstance | undefined): PibblInstance | undefined;
8
+ export declare function allocationInputRevision(owner?: PibblInstance | undefined): number;
9
+ export declare function allocationStructuralRevision(owner?: PibblInstance | undefined): number;
10
+ export declare function allocationInputState(owner?: PibblInstance | undefined): AllocationInputState;
11
+ export declare function allocationExplicitRevision(owner?: PibblInstance | undefined): number;
12
+ export declare function invalidateAllocationInputs(owner?: PibblInstance, kind?: 'structural' | 'metric'): void;
13
+ export declare function invalidateReceiverAllocationInputs(owner: PibblInstance | undefined, kind: 'structural' | 'metric'): void;
@@ -0,0 +1,67 @@
1
+ import { GLOBAL_STATE } from "../global-state.js";
2
+ let nextRevision = 0;
3
+ let fallbackStructuralRevision = 0;
4
+ let fallbackMetricRevision = 0;
5
+ let fallbackExplicitRevision = 0;
6
+ const explicitRevisions = /* @__PURE__ */ new WeakMap();
7
+ let isolatedOwner;
8
+ const revisions = /* @__PURE__ */ new WeakMap();
9
+ function allocationOwner() {
10
+ const owner = isolatedOwner ?? GLOBAL_STATE.currentPibblInstance;
11
+ return owner?.interactionRoot ?? owner;
12
+ }
13
+ function setAllocationOwner(owner) {
14
+ const previous = isolatedOwner;
15
+ isolatedOwner = owner;
16
+ return previous;
17
+ }
18
+ function allocationInputRevision(owner = allocationOwner()) {
19
+ const state = allocationInputState(owner);
20
+ return Math.max(state.structural, state.metric);
21
+ }
22
+ function allocationStructuralRevision(owner = allocationOwner()) {
23
+ const local = owner ? revisions.get(owner.interactionRoot ?? owner) : void 0;
24
+ return Math.max(fallbackStructuralRevision, local?.structural ?? 0);
25
+ }
26
+ function allocationInputState(owner = allocationOwner()) {
27
+ const local = owner ? revisions.get(owner.interactionRoot ?? owner) : void 0;
28
+ return {
29
+ structural: Math.max(fallbackStructuralRevision, local?.structural ?? 0),
30
+ metric: Math.max(fallbackMetricRevision, local?.metric ?? 0)
31
+ };
32
+ }
33
+ function allocationExplicitRevision(owner = allocationOwner()) {
34
+ return Math.max(fallbackExplicitRevision, owner ? explicitRevisions.get(owner.interactionRoot ?? owner) ?? 0 : 0);
35
+ }
36
+ function invalidateAllocationInputs(owner, kind = "structural") {
37
+ advanceAllocationInputs(owner, kind, true);
38
+ }
39
+ function invalidateReceiverAllocationInputs(owner, kind) {
40
+ advanceAllocationInputs(owner, kind, false);
41
+ }
42
+ function advanceAllocationInputs(owner, kind, explicit) {
43
+ const revision = ++nextRevision;
44
+ if (explicit) {
45
+ if (owner) explicitRevisions.set(owner.interactionRoot ?? owner, revision);
46
+ else fallbackExplicitRevision = revision;
47
+ }
48
+ if (!owner) {
49
+ if (kind === "metric") fallbackMetricRevision = revision;
50
+ else fallbackStructuralRevision = revision;
51
+ return;
52
+ }
53
+ const key = owner.interactionRoot ?? owner;
54
+ const previous = revisions.get(key) ?? { structural: 0, metric: 0 };
55
+ revisions.set(key, kind === "metric" ? { ...previous, metric: revision } : { ...previous, structural: revision });
56
+ }
57
+ export {
58
+ allocationExplicitRevision,
59
+ allocationInputRevision,
60
+ allocationInputState,
61
+ allocationOwner,
62
+ allocationStructuralRevision,
63
+ invalidateAllocationInputs,
64
+ invalidateReceiverAllocationInputs,
65
+ setAllocationOwner
66
+ };
67
+ //# sourceMappingURL=allocation-revision.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/lib/layout/allocation-revision.ts"],
4
+ "sourcesContent": ["import { GLOBAL_STATE } from '../global-state.js';\nimport type { PibblInstance } from '../types.js';\n\n// Existing signal roles drive one revision per owning root. Unknown consumers\n// retain the conservative realm-wide fallback; this is not another signal graph.\nlet nextRevision = 0;\nlet fallbackStructuralRevision = 0;\nlet fallbackMetricRevision = 0;\nlet fallbackExplicitRevision = 0;\nconst explicitRevisions = new WeakMap<PibblInstance, number>();\nlet isolatedOwner: PibblInstance | undefined;\ninterface AllocationRevisions { structural: number; metric: number; }\nconst revisions = new WeakMap<PibblInstance, AllocationRevisions>();\n\nexport interface AllocationInputState {\n readonly structural: number;\n readonly metric: number;\n}\n\nexport function allocationOwner(): PibblInstance | undefined {\n const owner = isolatedOwner ?? GLOBAL_STATE.currentPibblInstance;\n return owner?.interactionRoot ?? owner;\n}\nexport function setAllocationOwner(owner: PibblInstance | undefined): PibblInstance | undefined {\n const previous = isolatedOwner; isolatedOwner = owner; return previous;\n}\nexport function allocationInputRevision(owner = allocationOwner()): number {\n const state = allocationInputState(owner);\n return Math.max(state.structural, state.metric);\n}\nexport function allocationStructuralRevision(owner = allocationOwner()): number {\n const local = owner ? revisions.get(owner.interactionRoot ?? owner) : undefined;\n return Math.max(fallbackStructuralRevision, local?.structural ?? 0);\n}\nexport function allocationInputState(owner = allocationOwner()): AllocationInputState {\n const local = owner ? revisions.get(owner.interactionRoot ?? owner) : undefined;\n return {\n structural: Math.max(fallbackStructuralRevision, local?.structural ?? 0),\n metric: Math.max(fallbackMetricRevision, local?.metric ?? 0),\n };\n}\nexport function allocationExplicitRevision(owner = allocationOwner()): number {\n return Math.max(fallbackExplicitRevision, owner ? explicitRevisions.get(owner.interactionRoot ?? owner) ?? 0 : 0);\n}\nexport function invalidateAllocationInputs(owner?: PibblInstance, kind: 'structural' | 'metric' = 'structural'): void {\n advanceAllocationInputs(owner, kind, true);\n}\nexport function invalidateReceiverAllocationInputs(owner: PibblInstance | undefined, kind: 'structural' | 'metric'): void {\n advanceAllocationInputs(owner, kind, false);\n}\nfunction advanceAllocationInputs(owner: PibblInstance | undefined, kind: 'structural' | 'metric', explicit: boolean): void {\n const revision = ++nextRevision;\n if (explicit) {\n if (owner) explicitRevisions.set(owner.interactionRoot ?? owner, revision);\n else fallbackExplicitRevision = revision;\n }\n if (!owner) {\n if (kind === 'metric') fallbackMetricRevision = revision;\n else fallbackStructuralRevision = revision;\n return;\n }\n const key = owner.interactionRoot ?? owner;\n const previous = revisions.get(key) ?? { structural: 0, metric: 0 };\n revisions.set(key, kind === 'metric' ? { ...previous, metric: revision } : { ...previous, structural: revision });\n}\n"],
5
+ "mappings": "AAAA,SAAS,oBAAoB;AAK7B,IAAI,eAAe;AACnB,IAAI,6BAA6B;AACjC,IAAI,yBAAyB;AAC7B,IAAI,2BAA2B;AAC/B,MAAM,oBAAoB,oBAAI,QAA+B;AAC7D,IAAI;AAEJ,MAAM,YAAY,oBAAI,QAA4C;AAO3D,SAAS,kBAA6C;AAC3D,QAAM,QAAQ,iBAAiB,aAAa;AAC5C,SAAO,OAAO,mBAAmB;AACnC;AACO,SAAS,mBAAmB,OAA6D;AAC9F,QAAM,WAAW;AAAe,kBAAgB;AAAO,SAAO;AAChE;AACO,SAAS,wBAAwB,QAAQ,gBAAgB,GAAW;AACzE,QAAM,QAAQ,qBAAqB,KAAK;AACxC,SAAO,KAAK,IAAI,MAAM,YAAY,MAAM,MAAM;AAChD;AACO,SAAS,6BAA6B,QAAQ,gBAAgB,GAAW;AAC9E,QAAM,QAAQ,QAAQ,UAAU,IAAI,MAAM,mBAAmB,KAAK,IAAI;AACtE,SAAO,KAAK,IAAI,4BAA4B,OAAO,cAAc,CAAC;AACpE;AACO,SAAS,qBAAqB,QAAQ,gBAAgB,GAAyB;AACpF,QAAM,QAAQ,QAAQ,UAAU,IAAI,MAAM,mBAAmB,KAAK,IAAI;AACtE,SAAO;AAAA,IACL,YAAY,KAAK,IAAI,4BAA4B,OAAO,cAAc,CAAC;AAAA,IACvE,QAAQ,KAAK,IAAI,wBAAwB,OAAO,UAAU,CAAC;AAAA,EAC7D;AACF;AACO,SAAS,2BAA2B,QAAQ,gBAAgB,GAAW;AAC5E,SAAO,KAAK,IAAI,0BAA0B,QAAQ,kBAAkB,IAAI,MAAM,mBAAmB,KAAK,KAAK,IAAI,CAAC;AAClH;AACO,SAAS,2BAA2B,OAAuB,OAAgC,cAAoB;AACpH,0BAAwB,OAAO,MAAM,IAAI;AAC3C;AACO,SAAS,mCAAmC,OAAkC,MAAqC;AACxH,0BAAwB,OAAO,MAAM,KAAK;AAC5C;AACA,SAAS,wBAAwB,OAAkC,MAA+B,UAAyB;AACzH,QAAM,WAAW,EAAE;AACnB,MAAI,UAAU;AACZ,QAAI,MAAO,mBAAkB,IAAI,MAAM,mBAAmB,OAAO,QAAQ;AAAA,QACpE,4BAA2B;AAAA,EAClC;AACA,MAAI,CAAC,OAAO;AACV,QAAI,SAAS,SAAU,0BAAyB;AAAA,QAC3C,8BAA6B;AAClC;AAAA,EACF;AACA,QAAM,MAAM,MAAM,mBAAmB;AACrC,QAAM,WAAW,UAAU,IAAI,GAAG,KAAK,EAAE,YAAY,GAAG,QAAQ,EAAE;AAClE,YAAU,IAAI,KAAK,SAAS,WAAW,EAAE,GAAG,UAAU,QAAQ,SAAS,IAAI,EAAE,GAAG,UAAU,YAAY,SAAS,CAAC;AAClH;",
6
+ "names": []
7
+ }
@@ -0,0 +1,17 @@
1
+ import { type LayoutDiagnosticContext } from '../style/diagnostics.js';
2
+ import type { BoxStyle } from '../style/types.js';
3
+ import type { Edges } from './types.js';
4
+ /** Internal layout insets; painted stroke is deliberately independent. */
5
+ export declare function normalizeBoxInsets(style: Readonly<BoxStyle>, context: Readonly<LayoutDiagnosticContext>): Edges;
6
+ /** @internal Resolves padding only for positioned containing-box coordinates. */
7
+ export declare function normalizePaddingInsets(style: Readonly<BoxStyle>, context: Readonly<LayoutDiagnosticContext>): Edges;
8
+ /** Internal admission check; no inferred percentage reference. */
9
+ export declare function hasPercentagePadding(value: unknown): boolean;
10
+ /** Resolves participating Flex insets once; ordinary physical numeric styles keep identity. */
11
+ export declare function resolveAllocatedInsets<S extends BoxStyle>(style: Readonly<S>, options: {
12
+ width: number;
13
+ layoutDirection?: 'ltr' | 'rtl';
14
+ context: Readonly<LayoutDiagnosticContext>;
15
+ }): Readonly<S>;
16
+ /** Internal raw percentage admission; no allocation is inferred from constraints. */
17
+ export declare function hasPercentageBoxPadding(style: Readonly<BoxStyle>, inheritedDirection?: 'ltr' | 'rtl'): boolean;
@@ -0,0 +1,138 @@
1
+ import { getLayoutDirection } from "./context.js";
2
+ import { nativeLayout } from "./wasm/region.js";
3
+ import { normalizeEdges } from "../style/normalize.js";
4
+ import { layoutDiagnostic } from "../style/diagnostics.js";
5
+ import { resolveLength } from "../style/resolve-length.js";
6
+ function normalizeBoxInsets(style, context) {
7
+ const padding = numericPadding(style, context);
8
+ if (style.borderWidth === void 0 && style.borderStartWidth === void 0 && style.borderEndWidth === void 0) return padding;
9
+ const border = numericBorder(style, context);
10
+ const top = padding.top + border.top, right = padding.right + border.right;
11
+ const bottom = padding.bottom + border.bottom, left = padding.left + border.left;
12
+ if (!Number.isFinite(top) || !Number.isFinite(right) || !Number.isFinite(bottom) || !Number.isFinite(left)) {
13
+ throw layoutDiagnostic({ ...context, property: "borderWidth", value: style.borderWidth, reason: "combined padding and border insets must be finite" });
14
+ }
15
+ return { top, right, bottom, left };
16
+ }
17
+ function normalizePaddingInsets(style, context) {
18
+ return numericPadding(style, context);
19
+ }
20
+ function hasPercentagePadding(value) {
21
+ if (typeof value === "string") return value.endsWith("%");
22
+ if (value === null || typeof value !== "object") return false;
23
+ const edges = value;
24
+ return typeof edges.top === "string" && edges.top.endsWith("%") || typeof edges.right === "string" && edges.right.endsWith("%") || typeof edges.bottom === "string" && edges.bottom.endsWith("%") || typeof edges.left === "string" && edges.left.endsWith("%");
25
+ }
26
+ function resolveAllocatedInsets(style, options) {
27
+ if (style.borderStartWidth !== void 0 || style.borderEndWidth !== void 0) {
28
+ const borderWidth = numericBorder(style, options.context, options.layoutDirection);
29
+ style = { ...style, borderWidth, borderStartWidth: void 0, borderEndWidth: void 0 };
30
+ }
31
+ const value = style.padding;
32
+ if (style.paddingStart !== void 0 || style.paddingEnd !== void 0) {
33
+ requireLogicalPadding(style, options.context);
34
+ const direction = receiverDirection(style, options.layoutDirection);
35
+ const logicalLeft = direction === "rtl" ? style.paddingEnd : style.paddingStart;
36
+ const logicalRight = direction === "rtl" ? style.paddingStart : style.paddingEnd;
37
+ validatePaddingInput(value, options.context);
38
+ const edges = value !== null && typeof value === "object" ? value : void 0;
39
+ const uniform = typeof value === "number" ? value : typeof value === "string" ? value : 0;
40
+ const padding2 = {
41
+ top: allocatedPaddingEdge(edges?.top ?? uniform, options.width, "padding.top", options.context),
42
+ right: allocatedPaddingEdge(logicalRight !== void 0 ? logicalRight : edges?.right ?? uniform, options.width, logicalRight !== void 0 ? direction === "rtl" ? "paddingStart" : "paddingEnd" : "padding.right", options.context),
43
+ bottom: allocatedPaddingEdge(edges?.bottom ?? uniform, options.width, "padding.bottom", options.context),
44
+ left: allocatedPaddingEdge(logicalLeft !== void 0 ? logicalLeft : edges?.left ?? uniform, options.width, logicalLeft !== void 0 ? direction === "rtl" ? "paddingEnd" : "paddingStart" : "padding.left", options.context)
45
+ };
46
+ return { ...style, padding: padding2, paddingStart: void 0, paddingEnd: void 0 };
47
+ }
48
+ if (!hasPercentagePadding(value)) return style;
49
+ let padding;
50
+ if (typeof value === "string") {
51
+ const edge = allocatedPaddingEdge(value, options.width, "padding", options.context);
52
+ padding = { top: edge, right: edge, bottom: edge, left: edge };
53
+ } else {
54
+ const edges = value;
55
+ padding = {
56
+ top: allocatedPaddingEdge(edges.top ?? 0, options.width, "padding.top", options.context),
57
+ right: allocatedPaddingEdge(edges.right ?? 0, options.width, "padding.right", options.context),
58
+ bottom: allocatedPaddingEdge(edges.bottom ?? 0, options.width, "padding.bottom", options.context),
59
+ left: allocatedPaddingEdge(edges.left ?? 0, options.width, "padding.left", options.context)
60
+ };
61
+ }
62
+ return { ...style, padding };
63
+ }
64
+ function allocatedPaddingEdge(value, width, property, context) {
65
+ const resolved = resolveLength(value, width, property, context);
66
+ if (resolved === void 0 || resolved < 0) throw layoutDiagnostic({ ...context, property, value, reason: "padding must be finite and nonnegative" });
67
+ return resolved;
68
+ }
69
+ function hasPercentageBoxPadding(style, inheritedDirection) {
70
+ if (style.paddingStart === void 0 && style.paddingEnd === void 0) return hasPercentagePadding(style.padding);
71
+ const value = style.padding;
72
+ if (typeof value === "string" && hasPercentagePadding(value)) return true;
73
+ const edges = value !== null && typeof value === "object" ? value : void 0;
74
+ const direction = receiverDirection(style, inheritedDirection);
75
+ const left = direction === "rtl" ? style.paddingEnd : style.paddingStart;
76
+ const right = direction === "rtl" ? style.paddingStart : style.paddingEnd;
77
+ return hasPercentagePadding(edges?.top) || hasPercentagePadding(edges?.bottom) || hasPercentagePadding(left !== void 0 ? left : edges?.left) || hasPercentagePadding(right !== void 0 ? right : edges?.right);
78
+ }
79
+ function receiverDirection(style, inherited) {
80
+ return style.layoutDirection ?? inherited ?? getLayoutDirection();
81
+ }
82
+ function requireLogicalPadding(style, context) {
83
+ if (!nativeLayout) throw layoutDiagnostic({ ...context, property: style.paddingStart !== void 0 ? "paddingStart" : "paddingEnd", value: style.paddingStart ?? style.paddingEnd, reason: "logical padding requires the experimental layout engine" });
84
+ }
85
+ function validatePaddingInput(value, context) {
86
+ if (value === void 0 || typeof value === "number" || typeof value === "string" || value !== null && typeof value === "object" && !Array.isArray(value)) return;
87
+ throw layoutDiagnostic({ ...context, property: "padding", value, reason: "uses an unsupported edge value" });
88
+ }
89
+ function numericPadding(style, context) {
90
+ if (style.paddingStart === void 0 && style.paddingEnd === void 0) return normalizeEdges(style.padding, "padding", context);
91
+ requireLogicalPadding(style, context);
92
+ const direction = receiverDirection(style);
93
+ const logicalLeft = direction === "rtl" ? style.paddingEnd : style.paddingStart;
94
+ const logicalRight = direction === "rtl" ? style.paddingStart : style.paddingEnd;
95
+ const value = style.padding;
96
+ validatePaddingInput(value, context);
97
+ const edges = value !== null && typeof value === "object" ? value : void 0;
98
+ const uniform = typeof value === "number" ? value : typeof value === "string" ? value : 0;
99
+ return {
100
+ top: numericPaddingEdge(edges?.top ?? uniform, "padding.top", context),
101
+ right: numericPaddingEdge(logicalRight !== void 0 ? logicalRight : edges?.right ?? uniform, logicalRight !== void 0 ? direction === "rtl" ? "paddingStart" : "paddingEnd" : "padding.right", context),
102
+ bottom: numericPaddingEdge(edges?.bottom ?? uniform, "padding.bottom", context),
103
+ left: numericPaddingEdge(logicalLeft !== void 0 ? logicalLeft : edges?.left ?? uniform, logicalLeft !== void 0 ? direction === "rtl" ? "paddingEnd" : "paddingStart" : "padding.left", context)
104
+ };
105
+ }
106
+ function numericPaddingEdge(value, property, context) {
107
+ if (typeof value !== "number" || !Number.isFinite(value) || value < 0) throw layoutDiagnostic({ ...context, property, value, reason: "padding must be finite and nonnegative; percentages require an actual finite Flex allocation" });
108
+ return value;
109
+ }
110
+ function numericBorder(style, context, inheritedDirection) {
111
+ if (style.borderStartWidth === void 0 && style.borderEndWidth === void 0) return normalizeEdges(style.borderWidth, "borderWidth", context);
112
+ if (!nativeLayout) throw layoutDiagnostic({ ...context, property: style.borderStartWidth !== void 0 ? "borderStartWidth" : "borderEndWidth", value: style.borderStartWidth !== void 0 ? style.borderStartWidth : style.borderEndWidth, reason: "logical layout borders require the experimental layout engine" });
113
+ const direction = receiverDirection(style, inheritedDirection);
114
+ const logicalLeft = direction === "rtl" ? style.borderEndWidth : style.borderStartWidth;
115
+ const logicalRight = direction === "rtl" ? style.borderStartWidth : style.borderEndWidth;
116
+ const value = style.borderWidth;
117
+ if (!(value === void 0 || typeof value === "number" || value !== null && typeof value === "object" && !Array.isArray(value))) throw layoutDiagnostic({ ...context, property: "borderWidth", value, reason: "layout borders require numeric physical edge values" });
118
+ const edges = value !== null && typeof value === "object" ? value : void 0;
119
+ const uniform = typeof value === "number" ? value : 0;
120
+ return {
121
+ top: numericBorderEdge(edges?.top ?? uniform, "borderWidth.top", context),
122
+ right: numericBorderEdge(logicalRight !== void 0 ? logicalRight : edges?.right ?? uniform, logicalRight !== void 0 ? direction === "rtl" ? "borderStartWidth" : "borderEndWidth" : "borderWidth.right", context),
123
+ bottom: numericBorderEdge(edges?.bottom ?? uniform, "borderWidth.bottom", context),
124
+ left: numericBorderEdge(logicalLeft !== void 0 ? logicalLeft : edges?.left ?? uniform, logicalLeft !== void 0 ? direction === "rtl" ? "borderEndWidth" : "borderStartWidth" : "borderWidth.left", context)
125
+ };
126
+ }
127
+ function numericBorderEdge(value, property, context) {
128
+ if (typeof value !== "number" || !Number.isFinite(value) || value < 0) throw layoutDiagnostic({ ...context, property, value, reason: "layout border width must be a finite nonnegative number; percentages are unsupported" });
129
+ return value;
130
+ }
131
+ export {
132
+ hasPercentageBoxPadding,
133
+ hasPercentagePadding,
134
+ normalizeBoxInsets,
135
+ normalizePaddingInsets,
136
+ resolveAllocatedInsets
137
+ };
138
+ //# sourceMappingURL=box-insets.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/lib/layout/box-insets.ts"],
4
+ "sourcesContent": ["import { getLayoutDirection } from './context.js';\nimport { nativeLayout } from './wasm/region.js';\nimport { normalizeEdges } from '../style/normalize.js';\nimport { layoutDiagnostic, type LayoutDiagnosticContext } from '../style/diagnostics.js';\nimport { resolveLength } from '../style/resolve-length.js';\nimport type { BoxStyle, EdgeValues, Percentage } from '../style/types.js';\nimport type { Edges } from './types.js';\n\n/** Internal layout insets; painted stroke is deliberately independent. */\nexport function normalizeBoxInsets(style: Readonly<BoxStyle>, context: Readonly<LayoutDiagnosticContext>): Edges {\n const padding = numericPadding(style, context);\n if (style.borderWidth === undefined && style.borderStartWidth === undefined && style.borderEndWidth === undefined) return padding;\n const border = numericBorder(style, context);\n const top = padding.top + border.top, right = padding.right + border.right;\n const bottom = padding.bottom + border.bottom, left = padding.left + border.left;\n if (!Number.isFinite(top) || !Number.isFinite(right) || !Number.isFinite(bottom) || !Number.isFinite(left)) {\n throw layoutDiagnostic({ ...context, property: 'borderWidth', value: style.borderWidth, reason: 'combined padding and border insets must be finite' });\n }\n return { top, right, bottom, left };\n}\n\n/** @internal Resolves padding only for positioned containing-box coordinates. */\nexport function normalizePaddingInsets(\n style: Readonly<BoxStyle>,\n context: Readonly<LayoutDiagnosticContext>,\n): Edges {\n return numericPadding(style, context);\n}\n\n/** Internal admission check; no inferred percentage reference. */\nexport function hasPercentagePadding(value: unknown): boolean {\n if (typeof value === 'string') return value.endsWith('%');\n if (value === null || typeof value !== 'object') return false;\n const edges = value as { top?: unknown; right?: unknown; bottom?: unknown; left?: unknown };\n return typeof edges.top === 'string' && edges.top.endsWith('%') ||\n typeof edges.right === 'string' && edges.right.endsWith('%') ||\n typeof edges.bottom === 'string' && edges.bottom.endsWith('%') ||\n typeof edges.left === 'string' && edges.left.endsWith('%');\n}\n/** Resolves participating Flex insets once; ordinary physical numeric styles keep identity. */\nexport function resolveAllocatedInsets<S extends BoxStyle>(style: Readonly<S>, options: { width: number; layoutDirection?: 'ltr' | 'rtl'; context: Readonly<LayoutDiagnosticContext> }): Readonly<S> {\n if (style.borderStartWidth !== undefined || style.borderEndWidth !== undefined) {\n const borderWidth = numericBorder(style, options.context, options.layoutDirection);\n style = { ...style, borderWidth, borderStartWidth: undefined, borderEndWidth: undefined };\n }\n const value = style.padding;\n if (style.paddingStart !== undefined || style.paddingEnd !== undefined) {\n requireLogicalPadding(style, options.context);\n const direction = receiverDirection(style, options.layoutDirection);\n const logicalLeft = direction === 'rtl' ? style.paddingEnd : style.paddingStart;\n const logicalRight = direction === 'rtl' ? style.paddingStart : style.paddingEnd;\n validatePaddingInput(value, options.context);\n const edges = value !== null && typeof value === 'object' ? value : undefined;\n const uniform = typeof value === 'number' ? value : typeof value === 'string' ? value as Percentage : 0;\n const padding = {\n top: allocatedPaddingEdge(edges?.top ?? uniform, options.width, 'padding.top', options.context),\n right: allocatedPaddingEdge(logicalRight !== undefined ? logicalRight : edges?.right ?? uniform, options.width, logicalRight !== undefined ? direction === 'rtl' ? 'paddingStart' : 'paddingEnd' : 'padding.right', options.context),\n bottom: allocatedPaddingEdge(edges?.bottom ?? uniform, options.width, 'padding.bottom', options.context),\n left: allocatedPaddingEdge(logicalLeft !== undefined ? logicalLeft : edges?.left ?? uniform, options.width, logicalLeft !== undefined ? direction === 'rtl' ? 'paddingEnd' : 'paddingStart' : 'padding.left', options.context),\n };\n return { ...style, padding, paddingStart: undefined, paddingEnd: undefined };\n }\n if (!hasPercentagePadding(value)) return style;\n let padding: Edges;\n if (typeof value === 'string') {\n const edge = allocatedPaddingEdge(value, options.width, 'padding', options.context);\n padding = { top: edge, right: edge, bottom: edge, left: edge };\n } else {\n const edges = value as Exclude<EdgeValues<number | Percentage>,number | Percentage>;\n padding = {\n top: allocatedPaddingEdge(edges.top ?? 0, options.width, 'padding.top', options.context),\n right: allocatedPaddingEdge(edges.right ?? 0, options.width, 'padding.right', options.context),\n bottom: allocatedPaddingEdge(edges.bottom ?? 0, options.width, 'padding.bottom', options.context),\n left: allocatedPaddingEdge(edges.left ?? 0, options.width, 'padding.left', options.context),\n };\n }\n return { ...style, padding };\n}\nfunction allocatedPaddingEdge(value: number | Percentage, width: number, property: string, context: Readonly<LayoutDiagnosticContext>): number {\n const resolved = resolveLength(value, width, property, context);\n if (resolved === undefined || resolved < 0) throw layoutDiagnostic({ ...context, property, value, reason: 'padding must be finite and nonnegative' });\n return resolved;\n}\n\n/** Internal raw percentage admission; no allocation is inferred from constraints. */\nexport function hasPercentageBoxPadding(style: Readonly<BoxStyle>, inheritedDirection?: 'ltr' | 'rtl'): boolean {\n if (style.paddingStart === undefined && style.paddingEnd === undefined) return hasPercentagePadding(style.padding);\n const value = style.padding;\n if (typeof value === 'string' && hasPercentagePadding(value)) return true;\n const edges = value !== null && typeof value === 'object' ? value : undefined;\n const direction = receiverDirection(style, inheritedDirection);\n const left = direction === 'rtl' ? style.paddingEnd : style.paddingStart;\n const right = direction === 'rtl' ? style.paddingStart : style.paddingEnd;\n return hasPercentagePadding(edges?.top) || hasPercentagePadding(edges?.bottom) ||\n hasPercentagePadding(left !== undefined ? left : edges?.left) ||\n hasPercentagePadding(right !== undefined ? right : edges?.right);\n}\nfunction receiverDirection(style: Readonly<BoxStyle>, inherited?: 'ltr' | 'rtl'): 'ltr' | 'rtl' {\n return (style as Readonly<BoxStyle & { layoutDirection?: 'ltr' | 'rtl' }>).layoutDirection ?? inherited ?? getLayoutDirection();\n}\nfunction requireLogicalPadding(style: Readonly<BoxStyle>, context: Readonly<LayoutDiagnosticContext>): void {\n if (!nativeLayout) throw layoutDiagnostic({ ...context, property: style.paddingStart !== undefined ? 'paddingStart' : 'paddingEnd', value: style.paddingStart ?? style.paddingEnd, reason: 'logical padding requires the experimental layout engine' });\n}\nfunction validatePaddingInput(value: BoxStyle['padding'], context: Readonly<LayoutDiagnosticContext>): void {\n if (value === undefined || typeof value === 'number' || typeof value === 'string' ||\n value !== null && typeof value === 'object' && !Array.isArray(value)) return;\n throw layoutDiagnostic({ ...context, property: 'padding', value, reason: 'uses an unsupported edge value' });\n}\nfunction numericPadding(style: Readonly<BoxStyle>, context: Readonly<LayoutDiagnosticContext>): Edges {\n if (style.paddingStart === undefined && style.paddingEnd === undefined) return normalizeEdges(style.padding as EdgeValues | undefined, 'padding', context);\n requireLogicalPadding(style, context);\n const direction = receiverDirection(style);\n const logicalLeft = direction === 'rtl' ? style.paddingEnd : style.paddingStart;\n const logicalRight = direction === 'rtl' ? style.paddingStart : style.paddingEnd;\n const value = style.padding;\n validatePaddingInput(value, context);\n const edges = value !== null && typeof value === 'object' ? value : undefined;\n const uniform = typeof value === 'number' ? value : typeof value === 'string' ? value as Percentage : 0;\n return {\n top: numericPaddingEdge(edges?.top ?? uniform, 'padding.top', context),\n right: numericPaddingEdge(logicalRight !== undefined ? logicalRight : edges?.right ?? uniform, logicalRight !== undefined ? direction === 'rtl' ? 'paddingStart' : 'paddingEnd' : 'padding.right', context),\n bottom: numericPaddingEdge(edges?.bottom ?? uniform, 'padding.bottom', context),\n left: numericPaddingEdge(logicalLeft !== undefined ? logicalLeft : edges?.left ?? uniform, logicalLeft !== undefined ? direction === 'rtl' ? 'paddingEnd' : 'paddingStart' : 'padding.left', context),\n };\n}\nfunction numericPaddingEdge(value: unknown, property: string, context: Readonly<LayoutDiagnosticContext>): number {\n if (typeof value !== 'number' || !Number.isFinite(value) || value < 0) throw layoutDiagnostic({ ...context, property, value, reason: 'padding must be finite and nonnegative; percentages require an actual finite Flex allocation' });\n return value;\n}\n\nfunction numericBorder(style: Readonly<BoxStyle>, context: Readonly<LayoutDiagnosticContext>, inheritedDirection?: 'ltr' | 'rtl'): Edges {\n if (style.borderStartWidth === undefined && style.borderEndWidth === undefined) return normalizeEdges(style.borderWidth, 'borderWidth', context);\n if (!nativeLayout) throw layoutDiagnostic({ ...context, property: style.borderStartWidth !== undefined ? 'borderStartWidth' : 'borderEndWidth', value: style.borderStartWidth !== undefined ? style.borderStartWidth : style.borderEndWidth, reason: 'logical layout borders require the experimental layout engine' });\n const direction = receiverDirection(style, inheritedDirection);\n const logicalLeft = direction === 'rtl' ? style.borderEndWidth : style.borderStartWidth;\n const logicalRight = direction === 'rtl' ? style.borderStartWidth : style.borderEndWidth;\n const value = style.borderWidth;\n if (!(value === undefined || typeof value === 'number' || value !== null && typeof value === 'object' && !Array.isArray(value))) throw layoutDiagnostic({ ...context, property: 'borderWidth', value, reason: 'layout borders require numeric physical edge values' });\n const edges = value !== null && typeof value === 'object' ? value : undefined;\n const uniform = typeof value === 'number' ? value : 0;\n return {\n top: numericBorderEdge(edges?.top ?? uniform, 'borderWidth.top', context),\n right: numericBorderEdge(logicalRight !== undefined ? logicalRight : edges?.right ?? uniform, logicalRight !== undefined ? direction === 'rtl' ? 'borderStartWidth' : 'borderEndWidth' : 'borderWidth.right', context),\n bottom: numericBorderEdge(edges?.bottom ?? uniform, 'borderWidth.bottom', context),\n left: numericBorderEdge(logicalLeft !== undefined ? logicalLeft : edges?.left ?? uniform, logicalLeft !== undefined ? direction === 'rtl' ? 'borderEndWidth' : 'borderStartWidth' : 'borderWidth.left', context),\n };\n}\nfunction numericBorderEdge(value: unknown, property: string, context: Readonly<LayoutDiagnosticContext>): number {\n if (typeof value !== 'number' || !Number.isFinite(value) || value < 0) throw layoutDiagnostic({ ...context, property, value, reason: 'layout border width must be a finite nonnegative number; percentages are unsupported' });\n return value;\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["padding"]
7
+ }
@@ -0,0 +1,16 @@
1
+ import type { BoxStyle } from '../style/types.js';
2
+ import { type SizingLength } from '../style/sizing-length.js';
3
+ import { type LayoutDiagnosticContext } from '../style/diagnostics.js';
4
+ export declare function borderBoxPaddingFloor(style: Readonly<BoxStyle>): boolean;
5
+ export declare function validateBoxSizing(style: Readonly<BoxStyle>, context: Readonly<LayoutDiagnosticContext>): void;
6
+ /** Converts authored outer inputs once; ordinary content-box styles are returned unchanged. */
7
+ export declare function contentBoxStyle<S extends BoxStyle & {
8
+ flexBasis?: SizingLength;
9
+ }>(style: Readonly<S>, options: {
10
+ width: number;
11
+ height: number;
12
+ mainAxis?: 'width' | 'height';
13
+ context: Readonly<LayoutDiagnosticContext>;
14
+ }): Readonly<S>;
15
+ /** Settled dimensions are already content values; authored bounds have been applied. */
16
+ export declare function allocatedContentBoxStyle<S extends BoxStyle>(style: Readonly<S>, width: number, height: number): Readonly<S>;
@@ -0,0 +1,77 @@
1
+ import { isIntrinsicSizingValue, resolveScalarSizingLength } from "../style/sizing-length.js";
2
+ import { normalizeBoxInsets } from "./box-insets.js";
3
+ import { layoutDiagnostic } from "../style/diagnostics.js";
4
+ const BORDER_BOX_CONTENT = /* @__PURE__ */ Symbol("pibbl.border-box-content");
5
+ function borderBoxPaddingFloor(style) {
6
+ return style.boxSizing === "border-box" || style[BORDER_BOX_CONTENT] === true;
7
+ }
8
+ function validateBoxSizing(style, context) {
9
+ if (style.boxSizing !== void 0 && style.boxSizing !== "content-box" && style.boxSizing !== "border-box") {
10
+ throw layoutDiagnostic({ ...context, property: "boxSizing", value: style.boxSizing, reason: "must be content-box or border-box" });
11
+ }
12
+ }
13
+ function contentBoxStyle(style, options) {
14
+ validateBoxSizing(style, options.context);
15
+ if (style.boxSizing !== "border-box") return style;
16
+ const padding = normalizeBoxInsets(style, options.context);
17
+ const horizontal = padding.left + padding.right, vertical = padding.top + padding.bottom;
18
+ const width = options.mainAxis === "width" && isIntrinsicSizingValue(style.width) ? void 0 : nonnegativeLength(style.width, options.width, "width", options.context);
19
+ const height = options.mainAxis === "height" && isIntrinsicSizingValue(style.height) ? void 0 : nonnegativeLength(style.height, options.height, "height", options.context);
20
+ const preserveIntrinsicMinWidth = options.mainAxis === "width" && isIntrinsicSizingValue(style.minWidth);
21
+ const preserveIntrinsicMaxWidth = options.mainAxis === "width" && isIntrinsicSizingValue(style.maxWidth);
22
+ const minWidth = preserveIntrinsicMinWidth ? void 0 : nonnegativeLength(style.minWidth, options.width, "minWidth", options.context);
23
+ const maxWidth = preserveIntrinsicMaxWidth ? void 0 : nonnegativeLength(style.maxWidth, options.width, "maxWidth", options.context);
24
+ const preserveIntrinsicMinHeight = options.mainAxis === "height" && isIntrinsicSizingValue(style.minHeight);
25
+ const preserveIntrinsicMaxHeight = options.mainAxis === "height" && isIntrinsicSizingValue(style.maxHeight);
26
+ const minHeight = preserveIntrinsicMinHeight ? void 0 : nonnegativeLength(style.minHeight, options.height, "minHeight", options.context);
27
+ const maxHeight = preserveIntrinsicMaxHeight ? void 0 : nonnegativeLength(style.maxHeight, options.height, "maxHeight", options.context);
28
+ if (minWidth !== void 0 && maxWidth !== void 0 && minWidth > maxWidth) throw layoutDiagnostic({ ...options.context, property: "minWidth", value: minWidth, reason: "minimum must not exceed maximum" });
29
+ if (minHeight !== void 0 && maxHeight !== void 0 && minHeight > maxHeight) throw layoutDiagnostic({ ...options.context, property: "minHeight", value: minHeight, reason: "minimum must not exceed maximum" });
30
+ const result = {
31
+ ...style,
32
+ boxSizing: "content-box",
33
+ [BORDER_BOX_CONTENT]: true,
34
+ width: width === void 0 ? style.width : Math.max(0, width - horizontal),
35
+ height: height === void 0 ? style.height : Math.max(0, height - vertical),
36
+ minWidth: preserveIntrinsicMinWidth ? style.minWidth : minWidth === void 0 ? void 0 : Math.max(0, minWidth - horizontal),
37
+ maxWidth: preserveIntrinsicMaxWidth ? style.maxWidth : maxWidth === void 0 ? void 0 : Math.max(0, maxWidth - horizontal),
38
+ minHeight: preserveIntrinsicMinHeight ? style.minHeight : minHeight === void 0 ? void 0 : Math.max(0, minHeight - vertical),
39
+ maxHeight: preserveIntrinsicMaxHeight ? style.maxHeight : maxHeight === void 0 ? void 0 : Math.max(0, maxHeight - vertical)
40
+ };
41
+ if (options.mainAxis && style.flexBasis !== void 0 && style.flexBasis !== "auto") {
42
+ if (isIntrinsicSizingValue(style.flexBasis)) {
43
+ result.flexBasis = style.flexBasis;
44
+ } else {
45
+ const basis = nonnegativeLength(style.flexBasis, options.mainAxis === "width" ? options.width : options.height, "flexBasis", options.context);
46
+ result.flexBasis = Math.max(0, basis - (options.mainAxis === "width" ? horizontal : vertical));
47
+ }
48
+ }
49
+ return result;
50
+ }
51
+ function allocatedContentBoxStyle(style, width, height) {
52
+ if (style.boxSizing !== "border-box") return { ...style, width, height };
53
+ return {
54
+ ...style,
55
+ boxSizing: "content-box",
56
+ [BORDER_BOX_CONTENT]: true,
57
+ width,
58
+ height,
59
+ minWidth: void 0,
60
+ maxWidth: void 0,
61
+ minHeight: void 0,
62
+ maxHeight: void 0
63
+ };
64
+ }
65
+ function nonnegativeLength(value, reference, property, context) {
66
+ if (value === void 0) return void 0;
67
+ const resolved = resolveScalarSizingLength(value, reference, property, context);
68
+ if (resolved !== void 0 && resolved < 0) throw layoutDiagnostic({ ...context, property, value, reason: "must be nonnegative when used as a layout allocation" });
69
+ return resolved;
70
+ }
71
+ export {
72
+ allocatedContentBoxStyle,
73
+ borderBoxPaddingFloor,
74
+ contentBoxStyle,
75
+ validateBoxSizing
76
+ };
77
+ //# sourceMappingURL=box-sizing.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/lib/layout/box-sizing.ts"],
4
+ "sourcesContent": ["import type { BoxStyle } from '../style/types.js';\nimport { isIntrinsicSizingValue, resolveScalarSizingLength, type SizingLength } from '../style/sizing-length.js';\nimport { normalizeBoxInsets } from './box-insets.js';\nimport { layoutDiagnostic, type LayoutDiagnosticContext } from '../style/diagnostics.js';\n\n// Private canonical-input marker survives internal descriptor/style copies.\nconst BORDER_BOX_CONTENT = Symbol('pibbl.border-box-content');\ntype CanonicalBox = { [BORDER_BOX_CONTENT]?: true };\n\nexport function borderBoxPaddingFloor(style: Readonly<BoxStyle>): boolean {\n return style.boxSizing === 'border-box' || (style as CanonicalBox)[BORDER_BOX_CONTENT] === true;\n}\nexport function validateBoxSizing(style: Readonly<BoxStyle>, context: Readonly<LayoutDiagnosticContext>): void {\n if (style.boxSizing !== undefined && style.boxSizing !== 'content-box' && style.boxSizing !== 'border-box') {\n throw layoutDiagnostic({ ...context, property: 'boxSizing', value: style.boxSizing, reason: 'must be content-box or border-box' });\n }\n}\n\n/** Converts authored outer inputs once; ordinary content-box styles are returned unchanged. */\nexport function contentBoxStyle<S extends BoxStyle & { flexBasis?: SizingLength }>(style: Readonly<S>, options: { width: number; height: number; mainAxis?: 'width' | 'height'; context: Readonly<LayoutDiagnosticContext> }): Readonly<S> {\n validateBoxSizing(style, options.context);\n if (style.boxSizing !== 'border-box') return style;\n const padding = normalizeBoxInsets(style, options.context);\n const horizontal = padding.left + padding.right, vertical = padding.top + padding.bottom;\n // Main-axis intrinsic values are content contributions, not authored outer\n // lengths. Preserve them until the owning Flex resolves the contribution;\n // scalar outer bounds still canonicalize once below.\n const width = options.mainAxis === 'width' && isIntrinsicSizingValue(style.width) ? undefined :\n nonnegativeLength(style.width, options.width, 'width', options.context);\n const height = options.mainAxis === 'height' && isIntrinsicSizingValue(style.height) ? undefined : nonnegativeLength(style.height, options.height, 'height', options.context);\n const preserveIntrinsicMinWidth = options.mainAxis === 'width' && isIntrinsicSizingValue(style.minWidth);\n const preserveIntrinsicMaxWidth = options.mainAxis === 'width' && isIntrinsicSizingValue(style.maxWidth);\n const minWidth = preserveIntrinsicMinWidth ? undefined : nonnegativeLength(style.minWidth, options.width, 'minWidth', options.context);\n const maxWidth = preserveIntrinsicMaxWidth ? undefined : nonnegativeLength(style.maxWidth, options.width, 'maxWidth', options.context);\n const preserveIntrinsicMinHeight = options.mainAxis === 'height' && isIntrinsicSizingValue(style.minHeight);\n const preserveIntrinsicMaxHeight = options.mainAxis === 'height' && isIntrinsicSizingValue(style.maxHeight);\n const minHeight = preserveIntrinsicMinHeight ? undefined : nonnegativeLength(style.minHeight, options.height, 'minHeight', options.context);\n const maxHeight = preserveIntrinsicMaxHeight ? undefined : nonnegativeLength(style.maxHeight, options.height, 'maxHeight', options.context);\n if (minWidth !== undefined && maxWidth !== undefined && minWidth > maxWidth) throw layoutDiagnostic({ ...options.context, property: 'minWidth', value: minWidth, reason: 'minimum must not exceed maximum' });\n if (minHeight !== undefined && maxHeight !== undefined && minHeight > maxHeight) throw layoutDiagnostic({ ...options.context, property: 'minHeight', value: minHeight, reason: 'minimum must not exceed maximum' });\n const result: BoxStyle & { flexBasis?: SizingLength } & CanonicalBox = { ...style, boxSizing: 'content-box' as const, [BORDER_BOX_CONTENT]: true as const,\n width: width === undefined ? style.width : Math.max(0, width-horizontal),\n height: height === undefined ? style.height : Math.max(0, height-vertical),\n minWidth: preserveIntrinsicMinWidth ? style.minWidth : minWidth === undefined ? undefined : Math.max(0, minWidth-horizontal),\n maxWidth: preserveIntrinsicMaxWidth ? style.maxWidth : maxWidth === undefined ? undefined : Math.max(0, maxWidth-horizontal),\n minHeight: preserveIntrinsicMinHeight ? style.minHeight : minHeight === undefined ? undefined : Math.max(0, minHeight-vertical),\n maxHeight: preserveIntrinsicMaxHeight ? style.maxHeight : maxHeight === undefined ? undefined : Math.max(0, maxHeight-vertical),\n };\n if (options.mainAxis && style.flexBasis !== undefined && style.flexBasis !== 'auto') {\n if (isIntrinsicSizingValue(style.flexBasis)) {\n result.flexBasis = style.flexBasis;\n } else {\n const basis = nonnegativeLength(style.flexBasis, options.mainAxis === 'width' ? options.width : options.height, 'flexBasis', options.context)!;\n result.flexBasis = Math.max(0, basis-(options.mainAxis === 'width' ? horizontal : vertical));\n }\n }\n return result as Readonly<S>;\n}\n\n/** Settled dimensions are already content values; authored bounds have been applied. */\nexport function allocatedContentBoxStyle<S extends BoxStyle>(style: Readonly<S>, width: number, height: number): Readonly<S> {\n if (style.boxSizing !== 'border-box') return { ...style, width, height };\n return { ...style, boxSizing: 'content-box', [BORDER_BOX_CONTENT]: true,\n width, height, minWidth: undefined, maxWidth: undefined, minHeight: undefined, maxHeight: undefined };\n}\nfunction nonnegativeLength(value: SizingLength | undefined, reference: number, property: string, context: Readonly<LayoutDiagnosticContext>): number | undefined {\n if (value === undefined) return undefined;\n const resolved = resolveScalarSizingLength(value, reference, property, context);\n if (resolved !== undefined && resolved < 0) throw layoutDiagnostic({ ...context, property, value, reason: 'must be nonnegative when used as a layout allocation' });\n return resolved;\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }