@pibbl/core 0.0.1 → 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 (683) hide show
  1. package/README.md +1 -1
  2. package/THIRD_PARTY_NOTICES.txt +81 -0
  3. package/dist/features/machines/animation.d.ts +64 -0
  4. package/dist/features/machines/animation.js +55 -0
  5. package/dist/features/machines/animation.js.map +7 -0
  6. package/dist/features/machines/animation.mjs +1 -0
  7. package/dist/features/machines/assign.d.ts +16 -0
  8. package/dist/features/machines/assign.js +15 -0
  9. package/dist/features/machines/assign.js.map +7 -0
  10. package/dist/features/machines/callback.d.ts +9 -0
  11. package/dist/features/machines/callback.js +7 -0
  12. package/dist/features/machines/callback.js.map +7 -0
  13. package/dist/features/machines/hook.d.ts +30 -0
  14. package/dist/features/machines/hook.js +37 -0
  15. package/dist/features/machines/hook.js.map +7 -0
  16. package/dist/features/machines/index.d.ts +6 -0
  17. package/dist/features/machines/index.js +12 -0
  18. package/dist/features/machines/index.js.map +7 -0
  19. package/dist/features/machines/index.mjs +1 -0
  20. package/dist/features/machines/runtime.d.ts +18 -0
  21. package/dist/features/machines/runtime.js +363 -0
  22. package/dist/features/machines/runtime.js.map +7 -0
  23. package/dist/features/machines/types.d.ts +164 -0
  24. package/dist/features/physics/2d-geometry.d.ts +3 -3
  25. package/dist/features/physics/2d-geometry.js.map +1 -1
  26. package/dist/features/physics/2d-testing.d.ts +1 -1
  27. package/dist/features/physics/2d-testing.js +2 -2
  28. package/dist/features/physics/2d-testing.js.map +2 -2
  29. package/dist/features/physics/2d.d.ts +115 -62
  30. package/dist/features/physics/2d.js +59 -28
  31. package/dist/features/physics/2d.js.map +2 -2
  32. package/dist/features/physics/lib/2d/canvas/components.js +25 -21
  33. package/dist/features/physics/lib/2d/canvas/components.js.map +2 -2
  34. package/dist/features/physics/lib/2d/canvas/presentation.js +1 -2
  35. package/dist/features/physics/lib/2d/canvas/presentation.js.map +2 -2
  36. package/dist/features/physics/lib/2d/collision/casts.js +4 -2
  37. package/dist/features/physics/lib/2d/collision/casts.js.map +2 -2
  38. package/dist/features/physics/lib/2d/query-types.d.ts +6 -0
  39. package/dist/features/physics/lib/2d/runtime/controller.d.ts +7 -6
  40. package/dist/features/physics/lib/2d/runtime/controller.js +1 -1
  41. package/dist/features/physics/lib/2d/runtime/controller.js.map +2 -2
  42. package/dist/features/physics/lib/2d/runtime/obstacles.js +9 -11
  43. package/dist/features/physics/lib/2d/runtime/obstacles.js.map +2 -2
  44. package/dist/features/physics/lib/2d/shapes.js +8 -9
  45. package/dist/features/physics/lib/2d/shapes.js.map +2 -2
  46. package/dist/features/physics/lib/2d/types.d.ts +8 -30
  47. package/dist/features/physics/lib/2d/world/queries.d.ts +7 -6
  48. package/dist/features/physics/lib/2d/world/queries.js.map +2 -2
  49. package/dist/features/physics/lib/2d/world/rapier.js +22 -26
  50. package/dist/features/physics/lib/2d/world/rapier.js.map +2 -2
  51. package/dist/features/sprites/formats/aseprite.d.ts +5 -0
  52. package/dist/features/sprites/formats/texture-packer.d.ts +5 -0
  53. package/dist/features/sprites/index.d.ts +6 -0
  54. package/dist/features/sprites/loader.d.ts +25 -0
  55. package/dist/features/sprites/loader.js +6 -3
  56. package/dist/features/sprites/loader.js.map +2 -2
  57. package/dist/features/sprites/model.d.ts +75 -0
  58. package/dist/features/sprites/sprite.d.ts +22 -0
  59. package/dist/features/textures/index.d.ts +12 -2
  60. package/dist/features/textures/index.js +33 -1
  61. package/dist/features/textures/index.js.map +2 -2
  62. package/dist/features/textures/lib/chemical-field.d.ts +56 -0
  63. package/dist/features/textures/lib/chemical-field.js +154 -0
  64. package/dist/features/textures/lib/chemical-field.js.map +7 -0
  65. package/dist/features/textures/lib/chemical-recipes.d.ts +119 -0
  66. package/dist/features/textures/lib/chemical-recipes.js +275 -0
  67. package/dist/features/textures/lib/chemical-recipes.js.map +7 -0
  68. package/dist/features/textures/lib/definitions.d.ts +3 -18
  69. package/dist/features/textures/lib/definitions.js +17 -24
  70. package/dist/features/textures/lib/definitions.js.map +2 -2
  71. package/dist/features/textures/lib/geometric-patterns.d.ts +149 -0
  72. package/dist/features/textures/lib/geometric-patterns.js +305 -0
  73. package/dist/features/textures/lib/geometric-patterns.js.map +7 -0
  74. package/dist/features/textures/lib/gray-scott.d.ts +55 -0
  75. package/dist/features/textures/lib/gray-scott.js +37 -0
  76. package/dist/features/textures/lib/gray-scott.js.map +7 -0
  77. package/dist/features/textures/lib/palette.js +1 -3
  78. package/dist/features/textures/lib/palette.js.map +2 -2
  79. package/dist/features/textures/lib/patterns.d.ts +123 -0
  80. package/dist/features/textures/lib/patterns.js +344 -0
  81. package/dist/features/textures/lib/patterns.js.map +7 -0
  82. package/dist/features/textures/lib/rain-drops.js +2 -1
  83. package/dist/features/textures/lib/rain-drops.js.map +2 -2
  84. package/dist/features/textures/lib/reaction-diffusion.d.ts +3 -2
  85. package/dist/features/textures/lib/reaction-diffusion.js +9 -20
  86. package/dist/features/textures/lib/reaction-diffusion.js.map +2 -2
  87. package/dist/features/textures/lib/simulation.d.ts +10 -4
  88. package/dist/features/textures/lib/simulation.js +23 -13
  89. package/dist/features/textures/lib/simulation.js.map +2 -2
  90. package/dist/features/textures/lib/wasm/electric.js +8 -1
  91. package/dist/features/textures/lib/wasm/electric.js.map +2 -2
  92. package/dist/features/textures/lib/water-surface.js +1 -3
  93. package/dist/features/textures/lib/water-surface.js.map +2 -2
  94. package/dist/features/viz/index.d.ts +92 -5
  95. package/dist/features/viz/index.js +202 -4
  96. package/dist/features/viz/index.js.map +2 -2
  97. package/dist/features/viz/inspection/bar.d.ts +79 -0
  98. package/dist/features/viz/inspection/bar.js +49 -0
  99. package/dist/features/viz/inspection/bar.js.map +7 -0
  100. package/dist/features/viz/inspection/candle.d.ts +156 -0
  101. package/dist/features/viz/inspection/candle.js +120 -0
  102. package/dist/features/viz/inspection/candle.js.map +7 -0
  103. package/dist/features/viz/inspection/capture-types.d.ts +65 -0
  104. package/dist/features/viz/inspection/capture.d.ts +16 -0
  105. package/dist/features/viz/inspection/capture.js +49 -0
  106. package/dist/features/viz/inspection/capture.js.map +7 -0
  107. package/dist/features/viz/inspection/handler.d.ts +36 -0
  108. package/dist/features/viz/inspection/handler.js +91 -0
  109. package/dist/features/viz/inspection/handler.js.map +7 -0
  110. package/dist/features/viz/inspection/ohlc-bar.d.ts +132 -0
  111. package/dist/features/viz/inspection/ohlc-bar.js +118 -0
  112. package/dist/features/viz/inspection/ohlc-bar.js.map +7 -0
  113. package/dist/features/viz/inspection/owned-ref.d.ts +16 -0
  114. package/dist/features/viz/inspection/owned-ref.js +99 -0
  115. package/dist/features/viz/inspection/owned-ref.js.map +7 -0
  116. package/dist/features/viz/inspection/painted-point.d.ts +22 -0
  117. package/dist/features/viz/inspection/painted-point.js +29 -0
  118. package/dist/features/viz/inspection/painted-point.js.map +7 -0
  119. package/dist/features/viz/inspection/queries.d.ts +100 -0
  120. package/dist/features/viz/inspection/queries.js +192 -0
  121. package/dist/features/viz/inspection/queries.js.map +7 -0
  122. package/dist/features/viz/inspection/query-types.d.ts +177 -0
  123. package/dist/features/viz/inspection/volume.d.ts +104 -0
  124. package/dist/features/viz/inspection/volume.js +95 -0
  125. package/dist/features/viz/inspection/volume.js.map +7 -0
  126. package/dist/features/viz/inspection.d.ts +19 -0
  127. package/dist/features/viz/inspection.js +54 -0
  128. package/dist/features/viz/inspection.js.map +7 -0
  129. package/dist/features/viz/inspection.mjs +1 -0
  130. package/dist/features/viz/lib/area-series.d.ts +62 -0
  131. package/dist/features/viz/lib/area-series.js +120 -0
  132. package/dist/features/viz/lib/area-series.js.map +7 -0
  133. package/dist/features/viz/lib/axis-labels.d.ts +2 -0
  134. package/dist/features/viz/lib/axis-labels.js +41 -0
  135. package/dist/features/viz/lib/axis-labels.js.map +7 -0
  136. package/dist/features/viz/lib/axis-title.d.ts +23 -0
  137. package/dist/features/viz/lib/axis-title.js +24 -0
  138. package/dist/features/viz/lib/axis-title.js.map +7 -0
  139. package/dist/features/viz/lib/axis.d.ts +1 -1
  140. package/dist/features/viz/lib/axis.js +50 -50
  141. package/dist/features/viz/lib/axis.js.map +2 -2
  142. package/dist/features/viz/lib/bar-scale.d.ts +7 -0
  143. package/dist/features/viz/lib/bar-scale.js +34 -0
  144. package/dist/features/viz/lib/bar-scale.js.map +7 -0
  145. package/dist/features/viz/lib/bar-series.d.ts +3 -1
  146. package/dist/features/viz/lib/bar-series.js +21 -5
  147. package/dist/features/viz/lib/bar-series.js.map +2 -2
  148. package/dist/features/viz/lib/baseline-series.d.ts +55 -0
  149. package/dist/features/viz/lib/baseline-series.js +136 -0
  150. package/dist/features/viz/lib/baseline-series.js.map +7 -0
  151. package/dist/features/viz/lib/candlestick-series.d.ts +62 -0
  152. package/dist/features/viz/lib/candlestick-series.js +150 -0
  153. package/dist/features/viz/lib/candlestick-series.js.map +7 -0
  154. package/dist/features/viz/lib/censored-point-series.d.ts +71 -0
  155. package/dist/features/viz/lib/censored-point-series.js +129 -0
  156. package/dist/features/viz/lib/censored-point-series.js.map +7 -0
  157. package/dist/features/viz/lib/chart-lines.d.ts +41 -0
  158. package/dist/features/viz/lib/chart-lines.js +32 -0
  159. package/dist/features/viz/lib/chart-lines.js.map +7 -0
  160. package/dist/features/viz/lib/color-context.d.ts +4 -0
  161. package/dist/features/viz/lib/color-context.js +41 -0
  162. package/dist/features/viz/lib/color-context.js.map +7 -0
  163. package/dist/features/viz/lib/color-math.d.ts +4 -0
  164. package/dist/features/viz/lib/color-math.js +31 -0
  165. package/dist/features/viz/lib/color-math.js.map +7 -0
  166. package/dist/features/viz/lib/color-types.d.ts +53 -0
  167. package/dist/features/viz/lib/curve-definition.d.ts +49 -0
  168. package/dist/features/viz/lib/curve-definition.js +142 -0
  169. package/dist/features/viz/lib/curve-definition.js.map +7 -0
  170. package/dist/features/viz/lib/diverging-color-scale.d.ts +11 -0
  171. package/dist/features/viz/lib/diverging-color-scale.js +51 -0
  172. package/dist/features/viz/lib/diverging-color-scale.js.map +7 -0
  173. package/dist/features/viz/lib/domain-navigation.d.ts +40 -0
  174. package/dist/features/viz/lib/domain-navigation.js +77 -0
  175. package/dist/features/viz/lib/domain-navigation.js.map +7 -0
  176. package/dist/features/viz/lib/editable-chart-elements.d.ts +178 -0
  177. package/dist/features/viz/lib/editable-chart-elements.js +733 -0
  178. package/dist/features/viz/lib/editable-chart-elements.js.map +7 -0
  179. package/dist/features/viz/lib/financial-aggregation.d.ts +127 -0
  180. package/dist/features/viz/lib/financial-aggregation.js +116 -0
  181. package/dist/features/viz/lib/financial-aggregation.js.map +7 -0
  182. package/dist/features/viz/lib/financial-autoscale.d.ts +64 -0
  183. package/dist/features/viz/lib/financial-autoscale.js +61 -0
  184. package/dist/features/viz/lib/financial-autoscale.js.map +7 -0
  185. package/dist/features/viz/lib/financial-comparison.d.ts +62 -0
  186. package/dist/features/viz/lib/financial-comparison.js +98 -0
  187. package/dist/features/viz/lib/financial-comparison.js.map +7 -0
  188. package/dist/features/viz/lib/financial-geometry.d.ts +77 -0
  189. package/dist/features/viz/lib/financial-geometry.js +67 -0
  190. package/dist/features/viz/lib/financial-geometry.js.map +7 -0
  191. package/dist/features/viz/lib/financial-indicators.d.ts +114 -0
  192. package/dist/features/viz/lib/financial-indicators.js +135 -0
  193. package/dist/features/viz/lib/financial-indicators.js.map +7 -0
  194. package/dist/features/viz/lib/financial-oscillators.d.ts +171 -0
  195. package/dist/features/viz/lib/financial-oscillators.js +265 -0
  196. package/dist/features/viz/lib/financial-oscillators.js.map +7 -0
  197. package/dist/features/viz/lib/graph/bipartite.d.ts +14 -0
  198. package/dist/features/viz/lib/graph/bipartite.js +250 -0
  199. package/dist/features/viz/lib/graph/bipartite.js.map +7 -0
  200. package/dist/features/viz/lib/graph/chord.d.ts +44 -0
  201. package/dist/features/viz/lib/graph/chord.js +348 -0
  202. package/dist/features/viz/lib/graph/chord.js.map +7 -0
  203. package/dist/features/viz/lib/graph/dependency.d.ts +26 -0
  204. package/dist/features/viz/lib/graph/dependency.js +140 -0
  205. package/dist/features/viz/lib/graph/dependency.js.map +7 -0
  206. package/dist/features/viz/lib/graph/force.d.ts +28 -0
  207. package/dist/features/viz/lib/graph/force.js +580 -0
  208. package/dist/features/viz/lib/graph/force.js.map +7 -0
  209. package/dist/features/viz/lib/graph/hierarchy.d.ts +21 -0
  210. package/dist/features/viz/lib/graph/hierarchy.js +112 -0
  211. package/dist/features/viz/lib/graph/hierarchy.js.map +7 -0
  212. package/dist/features/viz/lib/graph/icicle.d.ts +16 -0
  213. package/dist/features/viz/lib/graph/icicle.js +153 -0
  214. package/dist/features/viz/lib/graph/icicle.js.map +7 -0
  215. package/dist/features/viz/lib/graph/matrix.d.ts +30 -0
  216. package/dist/features/viz/lib/graph/matrix.js +243 -0
  217. package/dist/features/viz/lib/graph/matrix.js.map +7 -0
  218. package/dist/features/viz/lib/graph/neighborhood.d.ts +11 -0
  219. package/dist/features/viz/lib/graph/neighborhood.js +281 -0
  220. package/dist/features/viz/lib/graph/neighborhood.js.map +7 -0
  221. package/dist/features/viz/lib/graph/routes.d.ts +35 -0
  222. package/dist/features/viz/lib/graph/routes.js +101 -0
  223. package/dist/features/viz/lib/graph/routes.js.map +7 -0
  224. package/dist/features/viz/lib/graph/sankey.d.ts +44 -0
  225. package/dist/features/viz/lib/graph/sankey.js +341 -0
  226. package/dist/features/viz/lib/graph/sankey.js.map +7 -0
  227. package/dist/features/viz/lib/graph/shared.d.ts +59 -0
  228. package/dist/features/viz/lib/graph/shared.js +301 -0
  229. package/dist/features/viz/lib/graph/shared.js.map +7 -0
  230. package/dist/features/viz/lib/graph/tree.d.ts +11 -0
  231. package/dist/features/viz/lib/graph/tree.js +232 -0
  232. package/dist/features/viz/lib/graph/tree.js.map +7 -0
  233. package/dist/features/viz/lib/graph/treemap.d.ts +20 -0
  234. package/dist/features/viz/lib/graph/treemap.js +227 -0
  235. package/dist/features/viz/lib/graph/treemap.js.map +7 -0
  236. package/dist/features/viz/lib/graph/types.d.ts +1097 -0
  237. package/dist/features/viz/lib/hover-card.js +8 -9
  238. package/dist/features/viz/lib/hover-card.js.map +2 -2
  239. package/dist/features/viz/lib/hover-data.d.ts +1 -1
  240. package/dist/features/viz/lib/hover-data.js +6 -3
  241. package/dist/features/viz/lib/hover-data.js.map +2 -2
  242. package/dist/features/viz/lib/hover-types.d.ts +5 -5
  243. package/dist/features/viz/lib/interval-band-series.d.ts +49 -0
  244. package/dist/features/viz/lib/interval-band-series.js +136 -0
  245. package/dist/features/viz/lib/interval-band-series.js.map +7 -0
  246. package/dist/features/viz/lib/interval-diamond-series.d.ts +43 -0
  247. package/dist/features/viz/lib/interval-diamond-series.js +122 -0
  248. package/dist/features/viz/lib/interval-diamond-series.js.map +7 -0
  249. package/dist/features/viz/lib/interval-series.d.ts +79 -0
  250. package/dist/features/viz/lib/interval-series.js +158 -0
  251. package/dist/features/viz/lib/interval-series.js.map +7 -0
  252. package/dist/features/viz/lib/layout-pie.js +9 -13
  253. package/dist/features/viz/lib/layout-pie.js.map +2 -2
  254. package/dist/features/viz/lib/line-series.d.ts +1 -1
  255. package/dist/features/viz/lib/line-series.js +47 -28
  256. package/dist/features/viz/lib/line-series.js.map +2 -2
  257. package/dist/features/viz/lib/linear-scale-component.d.ts +7 -0
  258. package/dist/features/viz/lib/linear-scale-component.js +18 -0
  259. package/dist/features/viz/lib/linear-scale-component.js.map +7 -0
  260. package/dist/features/viz/lib/linear-scale.js +1 -1
  261. package/dist/features/viz/lib/linear-scale.js.map +2 -2
  262. package/dist/features/viz/lib/log-scale-component.d.ts +7 -0
  263. package/dist/features/viz/lib/log-scale-component.js +19 -0
  264. package/dist/features/viz/lib/log-scale-component.js.map +7 -0
  265. package/dist/features/viz/lib/log-scale.d.ts +2 -0
  266. package/dist/features/viz/lib/log-scale.js +53 -0
  267. package/dist/features/viz/lib/log-scale.js.map +7 -0
  268. package/dist/features/viz/lib/monotone-curve.d.ts +11 -0
  269. package/dist/features/viz/lib/monotone-curve.js +63 -0
  270. package/dist/features/viz/lib/monotone-curve.js.map +7 -0
  271. package/dist/features/viz/lib/nearest.d.ts +9 -9
  272. package/dist/features/viz/lib/nearest.js.map +1 -1
  273. package/dist/features/viz/lib/numeric-range-interpolation.d.ts +15 -0
  274. package/dist/features/viz/lib/numeric-range-interpolation.js +36 -0
  275. package/dist/features/viz/lib/numeric-range-interpolation.js.map +7 -0
  276. package/dist/features/viz/lib/numeric-ticks.d.ts +38 -0
  277. package/dist/features/viz/lib/numeric-ticks.js +54 -0
  278. package/dist/features/viz/lib/numeric-ticks.js.map +7 -0
  279. package/dist/features/viz/lib/ohlc-bar-series.d.ts +55 -0
  280. package/dist/features/viz/lib/ohlc-bar-series.js +168 -0
  281. package/dist/features/viz/lib/ohlc-bar-series.js.map +7 -0
  282. package/dist/features/viz/lib/paired-series.d.ts +44 -0
  283. package/dist/features/viz/lib/paired-series.js +93 -0
  284. package/dist/features/viz/lib/paired-series.js.map +7 -0
  285. package/dist/features/viz/lib/pie-layout.js +2 -1
  286. package/dist/features/viz/lib/pie-layout.js.map +2 -2
  287. package/dist/features/viz/lib/plot-series.js +11 -6
  288. package/dist/features/viz/lib/plot-series.js.map +2 -2
  289. package/dist/features/viz/lib/plot-types.d.ts +4 -3
  290. package/dist/features/viz/lib/point-scale-component.d.ts +7 -0
  291. package/dist/features/viz/lib/point-scale-component.js +19 -0
  292. package/dist/features/viz/lib/point-scale-component.js.map +7 -0
  293. package/dist/features/viz/lib/point-scale.d.ts +2 -0
  294. package/dist/features/viz/lib/point-scale.js +45 -0
  295. package/dist/features/viz/lib/point-scale.js.map +7 -0
  296. package/dist/features/viz/lib/point-series.d.ts +1 -1
  297. package/dist/features/viz/lib/point-series.js +36 -9
  298. package/dist/features/viz/lib/point-series.js.map +2 -2
  299. package/dist/features/viz/lib/point-types.d.ts +5 -2
  300. package/dist/features/viz/lib/reference-band.d.ts +16 -0
  301. package/dist/features/viz/lib/reference-band.js +30 -0
  302. package/dist/features/viz/lib/reference-band.js.map +7 -0
  303. package/dist/features/viz/lib/scale-adjust.js +9 -4
  304. package/dist/features/viz/lib/scale-adjust.js.map +2 -2
  305. package/dist/features/viz/lib/scale-context.d.ts +5 -4
  306. package/dist/features/viz/lib/scale-context.js +15 -11
  307. package/dist/features/viz/lib/scale-context.js.map +2 -2
  308. package/dist/features/viz/lib/scale-provider.d.ts +2 -0
  309. package/dist/features/viz/lib/scale-provider.js +13 -0
  310. package/dist/features/viz/lib/scale-provider.js.map +7 -0
  311. package/dist/features/viz/lib/scale-ticks.d.ts +5 -0
  312. package/dist/features/viz/lib/scale-ticks.js +64 -0
  313. package/dist/features/viz/lib/scale-ticks.js.map +7 -0
  314. package/dist/features/viz/lib/scale-view.d.ts +4 -0
  315. package/dist/features/viz/lib/scale-view.js +21 -0
  316. package/dist/features/viz/lib/scale-view.js.map +7 -0
  317. package/dist/features/viz/lib/sequential-color-scale.d.ts +11 -0
  318. package/dist/features/viz/lib/sequential-color-scale.js +49 -0
  319. package/dist/features/viz/lib/sequential-color-scale.js.map +7 -0
  320. package/dist/features/viz/lib/series-position.d.ts +12 -0
  321. package/dist/features/viz/lib/series-position.js +44 -0
  322. package/dist/features/viz/lib/series-position.js.map +7 -0
  323. package/dist/features/viz/lib/step-curves.d.ts +19 -0
  324. package/dist/features/viz/lib/step-curves.js +53 -0
  325. package/dist/features/viz/lib/step-curves.js.map +7 -0
  326. package/dist/features/viz/lib/symlog-scale-component.d.ts +7 -0
  327. package/dist/features/viz/lib/symlog-scale-component.js +19 -0
  328. package/dist/features/viz/lib/symlog-scale-component.js.map +7 -0
  329. package/dist/features/viz/lib/symlog-scale.d.ts +2 -0
  330. package/dist/features/viz/lib/symlog-scale.js +38 -0
  331. package/dist/features/viz/lib/symlog-scale.js.map +7 -0
  332. package/dist/features/viz/lib/threshold-color-scale.d.ts +43 -0
  333. package/dist/features/viz/lib/threshold-color-scale.js +59 -0
  334. package/dist/features/viz/lib/threshold-color-scale.js.map +7 -0
  335. package/dist/features/viz/lib/trading-time-mapping.d.ts +32 -0
  336. package/dist/features/viz/lib/trading-time-mapping.js +89 -0
  337. package/dist/features/viz/lib/trading-time-mapping.js.map +7 -0
  338. package/dist/features/viz/lib/trading-time-scale.d.ts +83 -0
  339. package/dist/features/viz/lib/trading-time-scale.js +96 -0
  340. package/dist/features/viz/lib/trading-time-scale.js.map +7 -0
  341. package/dist/features/viz/lib/trajectory-series.d.ts +71 -0
  342. package/dist/features/viz/lib/trajectory-series.js +111 -0
  343. package/dist/features/viz/lib/trajectory-series.js.map +7 -0
  344. package/dist/features/viz/lib/types.d.ts +114 -21
  345. package/dist/features/viz/lib/use-bar-scale.d.ts +8 -0
  346. package/dist/features/viz/lib/use-bar-scale.js +9 -0
  347. package/dist/features/viz/lib/use-bar-scale.js.map +7 -0
  348. package/dist/features/viz/lib/use-continuous-scale.d.ts +8 -0
  349. package/dist/features/viz/lib/use-continuous-scale.js +14 -0
  350. package/dist/features/viz/lib/use-continuous-scale.js.map +7 -0
  351. package/dist/features/viz/lib/use-linear-scale.d.ts +8 -0
  352. package/dist/features/viz/lib/use-linear-scale.js +9 -0
  353. package/dist/features/viz/lib/use-linear-scale.js.map +7 -0
  354. package/dist/features/viz/lib/use-log-scale.d.ts +8 -0
  355. package/dist/features/viz/lib/use-log-scale.js +9 -0
  356. package/dist/features/viz/lib/use-log-scale.js.map +7 -0
  357. package/dist/features/viz/lib/use-point-scale.d.ts +8 -0
  358. package/dist/features/viz/lib/use-point-scale.js +9 -0
  359. package/dist/features/viz/lib/use-point-scale.js.map +7 -0
  360. package/dist/features/viz/lib/use-symlog-scale.d.ts +8 -0
  361. package/dist/features/viz/lib/use-symlog-scale.js +9 -0
  362. package/dist/features/viz/lib/use-symlog-scale.js.map +7 -0
  363. package/dist/features/viz/lib/use-utc-scale.d.ts +8 -0
  364. package/dist/features/viz/lib/use-utc-scale.js +9 -0
  365. package/dist/features/viz/lib/use-utc-scale.js.map +7 -0
  366. package/dist/features/viz/lib/utc-labels.d.ts +12 -0
  367. package/dist/features/viz/lib/utc-labels.js +27 -0
  368. package/dist/features/viz/lib/utc-labels.js.map +7 -0
  369. package/dist/features/viz/lib/utc-scale-component.d.ts +7 -0
  370. package/dist/features/viz/lib/utc-scale-component.js +18 -0
  371. package/dist/features/viz/lib/utc-scale-component.js.map +7 -0
  372. package/dist/features/viz/lib/utc-scale.d.ts +21 -0
  373. package/dist/features/viz/lib/utc-scale.js +124 -0
  374. package/dist/features/viz/lib/utc-scale.js.map +7 -0
  375. package/dist/features/viz/lib/volume-series.d.ts +59 -0
  376. package/dist/features/viz/lib/volume-series.js +117 -0
  377. package/dist/features/viz/lib/volume-series.js.map +7 -0
  378. package/dist/features/viz/lib/weighted-point-series.d.ts +71 -0
  379. package/dist/features/viz/lib/weighted-point-series.js +169 -0
  380. package/dist/features/viz/lib/weighted-point-series.js.map +7 -0
  381. package/dist/filters/backdrop-contrast-gpu.d.ts +5 -0
  382. package/dist/filters/backdrop-contrast-gpu.js +33 -0
  383. package/dist/filters/backdrop-contrast-gpu.js.map +7 -0
  384. package/dist/filters/backdrop-contrast.d.ts +21 -0
  385. package/dist/filters/backdrop-contrast.js +61 -0
  386. package/dist/filters/backdrop-contrast.js.map +7 -0
  387. package/dist/filters/displacement.js +1 -1
  388. package/dist/filters/displacement.js.map +2 -2
  389. package/dist/filters/emboss-gpu.d.ts +4 -0
  390. package/dist/filters/emboss-gpu.js +39 -0
  391. package/dist/filters/emboss-gpu.js.map +7 -0
  392. package/dist/filters/emboss.d.ts +32 -0
  393. package/dist/filters/emboss.js +104 -0
  394. package/dist/filters/emboss.js.map +7 -0
  395. package/dist/filters/filter-executor.d.ts +11 -4
  396. package/dist/filters/filter-executor.js +104 -49
  397. package/dist/filters/filter-executor.js.map +2 -2
  398. package/dist/filters/reflected-light.js +1 -1
  399. package/dist/filters/reflected-light.js.map +2 -2
  400. package/dist/filters/reflection-gpu.d.ts +3 -1
  401. package/dist/filters/reflection-gpu.js +5 -2
  402. package/dist/filters/reflection-gpu.js.map +2 -2
  403. package/dist/filters/render-backdrop-contrast-boundary.d.ts +31 -0
  404. package/dist/filters/render-backdrop-contrast-boundary.js +116 -0
  405. package/dist/filters/render-backdrop-contrast-boundary.js.map +7 -0
  406. package/dist/filters/render-emboss-boundary.d.ts +13 -0
  407. package/dist/filters/render-emboss-boundary.js +131 -0
  408. package/dist/filters/render-emboss-boundary.js.map +7 -0
  409. package/dist/filters.d.ts +9 -5
  410. package/dist/filters.js +4 -0
  411. package/dist/filters.js.map +2 -2
  412. package/dist/index.d.ts +10 -6
  413. package/dist/index.js +18 -2
  414. package/dist/index.js.map +2 -2
  415. package/dist/internal.d.ts +4 -0
  416. package/dist/internal.js +6 -0
  417. package/dist/internal.js.map +2 -2
  418. package/dist/layout-kernel.d.ts +12 -0
  419. package/dist/layout-kernel.js +11 -0
  420. package/dist/layout-kernel.js.map +7 -0
  421. package/dist/layout-kernel.mjs +1 -0
  422. package/dist/lib/animation/definition.d.ts +5 -3
  423. package/dist/lib/animation/definition.js +29 -4
  424. package/dist/lib/animation/definition.js.map +2 -2
  425. package/dist/lib/animation/playback.d.ts +8 -0
  426. package/dist/lib/animation/playback.js +33 -11
  427. package/dist/lib/animation/playback.js.map +2 -2
  428. package/dist/lib/animation/spring.d.ts +3 -1
  429. package/dist/lib/animation/spring.js.map +2 -2
  430. package/dist/lib/animation/types.d.ts +29 -73
  431. package/dist/lib/backend/types.d.ts +13 -1
  432. package/dist/lib/backend/types.js.map +2 -2
  433. package/dist/lib/components/arc-geometry.js +2 -1
  434. package/dist/lib/components/arc-geometry.js.map +2 -2
  435. package/dist/lib/components/g.js +2 -0
  436. package/dist/lib/components/g.js.map +2 -2
  437. package/dist/lib/components/html-box.js +2 -1
  438. package/dist/lib/components/html-box.js.map +2 -2
  439. package/dist/lib/components/img.js +3 -3
  440. package/dist/lib/components/img.js.map +2 -2
  441. package/dist/lib/components/layer.js +98 -16
  442. package/dist/lib/components/layer.js.map +3 -3
  443. package/dist/lib/components/text.d.ts +16 -0
  444. package/dist/lib/components/text.js +131 -24
  445. package/dist/lib/components/text.js.map +2 -2
  446. package/dist/lib/define-primitive.d.ts +4 -2
  447. package/dist/lib/define-primitive.js +3 -1
  448. package/dist/lib/define-primitive.js.map +2 -2
  449. package/dist/lib/element/metadata.d.ts +9 -0
  450. package/dist/lib/element/metadata.js +19 -0
  451. package/dist/lib/element/metadata.js.map +2 -2
  452. package/dist/lib/element/resolve-primitive-inputs.d.ts +2 -0
  453. package/dist/lib/element/resolve-primitive-inputs.js +17 -4
  454. package/dist/lib/element/resolve-primitive-inputs.js.map +2 -2
  455. package/dist/lib/events/event-facade.d.ts +18 -0
  456. package/dist/lib/events/event-facade.js +28 -2
  457. package/dist/lib/events/event-facade.js.map +2 -2
  458. package/dist/lib/events/hit-test.js +2 -1
  459. package/dist/lib/events/hit-test.js.map +2 -2
  460. package/dist/lib/events/propagation.d.ts +2 -1
  461. package/dist/lib/events/propagation.js +22 -16
  462. package/dist/lib/events/propagation.js.map +2 -2
  463. package/dist/lib/events/registrations.d.ts +10 -0
  464. package/dist/lib/events/registrations.js +160 -5
  465. package/dist/lib/events/registrations.js.map +2 -2
  466. package/dist/lib/execute-render.js +25 -1
  467. package/dist/lib/execute-render.js.map +2 -2
  468. package/dist/lib/filter/filter-region.js +3 -10
  469. package/dist/lib/filter/filter-region.js.map +2 -2
  470. package/dist/lib/focus/focus-manager.d.ts +8 -1
  471. package/dist/lib/focus/focus-manager.js +87 -43
  472. package/dist/lib/focus/focus-manager.js.map +2 -2
  473. package/dist/lib/focus/geometry.d.ts +2 -0
  474. package/dist/lib/focus/geometry.js +6 -0
  475. package/dist/lib/focus/geometry.js.map +2 -2
  476. package/dist/lib/geometry/path-bend-guide.js +1 -1
  477. package/dist/lib/geometry/path-bend-guide.js.map +2 -2
  478. package/dist/lib/geometry/path-geometry.js +12 -11
  479. package/dist/lib/geometry/path-geometry.js.map +2 -2
  480. package/dist/lib/geometry/path-transforms.js +17 -21
  481. package/dist/lib/geometry/path-transforms.js.map +2 -2
  482. package/dist/lib/geometry/path-warp-bezier.js +3 -1
  483. package/dist/lib/geometry/path-warp-bezier.js.map +2 -2
  484. package/dist/lib/geometry/path-warp.js +1 -1
  485. package/dist/lib/geometry/path-warp.js.map +2 -2
  486. package/dist/lib/global-state.js +2 -0
  487. package/dist/lib/global-state.js.map +2 -2
  488. package/dist/lib/hooks/use-animated-value.d.ts +11 -21
  489. package/dist/lib/hooks/use-animated-value.js +23 -70
  490. package/dist/lib/hooks/use-animated-value.js.map +3 -3
  491. package/dist/lib/hooks/use-playback.js +1 -0
  492. package/dist/lib/hooks/use-playback.js.map +2 -2
  493. package/dist/lib/html/html-events.d.ts +32 -0
  494. package/dist/lib/html/html-events.js +179 -0
  495. package/dist/lib/html/html-events.js.map +7 -0
  496. package/dist/lib/html/html-service.d.ts +8 -2
  497. package/dist/lib/html/html-service.js +198 -65
  498. package/dist/lib/html/html-service.js.map +2 -2
  499. package/dist/lib/html/overlay-config.js +7 -6
  500. package/dist/lib/html/overlay-config.js.map +2 -2
  501. package/dist/lib/html/types.d.ts +29 -2
  502. package/dist/lib/layout/absolute.d.ts +11 -5
  503. package/dist/lib/layout/absolute.js +329 -55
  504. package/dist/lib/layout/absolute.js.map +3 -3
  505. package/dist/lib/layout/allocation-checkpoint-owner.d.ts +11 -0
  506. package/dist/lib/layout/allocation-checkpoint-owner.js +86 -0
  507. package/dist/lib/layout/allocation-checkpoint-owner.js.map +7 -0
  508. package/dist/lib/layout/allocation-checkpoint.d.ts +53 -0
  509. package/dist/lib/layout/allocation-checkpoint.js +463 -0
  510. package/dist/lib/layout/allocation-checkpoint.js.map +7 -0
  511. package/dist/lib/layout/allocation-dependencies.d.ts +30 -0
  512. package/dist/lib/layout/allocation-dependencies.js +90 -0
  513. package/dist/lib/layout/allocation-dependencies.js.map +7 -0
  514. package/dist/lib/layout/allocation-revision.d.ts +13 -0
  515. package/dist/lib/layout/allocation-revision.js +67 -0
  516. package/dist/lib/layout/allocation-revision.js.map +7 -0
  517. package/dist/lib/layout/box-insets.d.ts +17 -0
  518. package/dist/lib/layout/box-insets.js +138 -0
  519. package/dist/lib/layout/box-insets.js.map +7 -0
  520. package/dist/lib/layout/box-sizing.d.ts +16 -0
  521. package/dist/lib/layout/box-sizing.js +77 -0
  522. package/dist/lib/layout/box-sizing.js.map +7 -0
  523. package/dist/lib/layout/box.js +42 -12
  524. package/dist/lib/layout/box.js.map +2 -2
  525. package/dist/lib/layout/canvas-measurement.d.ts +13 -0
  526. package/dist/lib/layout/canvas-measurement.js +57 -0
  527. package/dist/lib/layout/canvas-measurement.js.map +7 -0
  528. package/dist/lib/layout/context.d.ts +35 -6
  529. package/dist/lib/layout/context.js +72 -3
  530. package/dist/lib/layout/context.js.map +2 -2
  531. package/dist/lib/layout/define-layout-component.d.ts +23 -0
  532. package/dist/lib/layout/define-layout-component.js +84 -0
  533. package/dist/lib/layout/define-layout-component.js.map +7 -0
  534. package/dist/lib/layout/flex-allocation-cache.d.ts +42 -0
  535. package/dist/lib/layout/flex-baseline-mode.d.ts +2 -0
  536. package/dist/lib/layout/flex-baseline-mode.js +7 -0
  537. package/dist/lib/layout/flex-baseline-mode.js.map +7 -0
  538. package/dist/lib/layout/flex.d.ts +50 -15
  539. package/dist/lib/layout/flex.js +2124 -195
  540. package/dist/lib/layout/flex.js.map +3 -3
  541. package/dist/lib/layout/flow.js +225 -49
  542. package/dist/lib/layout/flow.js.map +2 -2
  543. package/dist/lib/layout/geometry-publication.d.ts +53 -0
  544. package/dist/lib/layout/geometry-publication.js +244 -0
  545. package/dist/lib/layout/geometry-publication.js.map +7 -0
  546. package/dist/lib/layout/grid-kernel.d.ts +63 -0
  547. package/dist/lib/layout/grid-kernel.js +168 -0
  548. package/dist/lib/layout/grid-kernel.js.map +7 -0
  549. package/dist/lib/layout/grid.d.ts +63 -4
  550. package/dist/lib/layout/grid.js +767 -171
  551. package/dist/lib/layout/grid.js.map +3 -3
  552. package/dist/lib/layout/measure.d.ts +55 -3
  553. package/dist/lib/layout/measure.js +448 -15
  554. package/dist/lib/layout/measure.js.map +2 -2
  555. package/dist/lib/layout/overlay.js +81 -23
  556. package/dist/lib/layout/overlay.js.map +2 -2
  557. package/dist/lib/layout/participation.d.ts +27 -0
  558. package/dist/lib/layout/participation.js +188 -0
  559. package/dist/lib/layout/participation.js.map +7 -0
  560. package/dist/lib/layout/place-child.js +1 -1
  561. package/dist/lib/layout/place-child.js.map +2 -2
  562. package/dist/lib/layout/positioning-diagnostics.d.ts +1 -1
  563. package/dist/lib/layout/positioning-diagnostics.js +13 -2
  564. package/dist/lib/layout/positioning-diagnostics.js.map +2 -2
  565. package/dist/lib/layout/prepared-root.d.ts +121 -0
  566. package/dist/lib/layout/prepared-root.js +360 -0
  567. package/dist/lib/layout/prepared-root.js.map +7 -0
  568. package/dist/lib/layout/standalone-kernel.d.ts +60 -0
  569. package/dist/lib/layout/standalone-kernel.js +722 -0
  570. package/dist/lib/layout/standalone-kernel.js.map +7 -0
  571. package/dist/lib/layout/topology.d.ts +21 -0
  572. package/dist/lib/layout/topology.js +113 -0
  573. package/dist/lib/layout/topology.js.map +7 -0
  574. package/dist/lib/layout/types.d.ts +5 -0
  575. package/dist/lib/layout/wasm/artifact.d.ts +1 -0
  576. package/dist/lib/layout/wasm/artifact.js +5 -0
  577. package/dist/lib/layout/wasm/artifact.js.map +7 -0
  578. package/dist/lib/layout/wasm/bytes.d.ts +1 -0
  579. package/dist/lib/layout/wasm/bytes.js +5 -0
  580. package/dist/lib/layout/wasm/bytes.js.map +7 -0
  581. package/dist/lib/layout/wasm/embedded.d.ts +2 -0
  582. package/dist/lib/layout/wasm/embedded.js +12 -0
  583. package/dist/lib/layout/wasm/embedded.js.map +7 -0
  584. package/dist/lib/layout/wasm/layout.wasm +0 -0
  585. package/dist/lib/layout/wasm/module.d.ts +8 -0
  586. package/dist/lib/layout/wasm/module.js +70 -0
  587. package/dist/lib/layout/wasm/module.js.map +7 -0
  588. package/dist/lib/layout/wasm/region.d.ts +267 -0
  589. package/dist/lib/layout/wasm/region.js +1018 -0
  590. package/dist/lib/layout/wasm/region.js.map +7 -0
  591. package/dist/lib/manipulation/controller.js +4 -7
  592. package/dist/lib/manipulation/controller.js.map +2 -2
  593. package/dist/lib/manipulation/frame.js +1 -1
  594. package/dist/lib/manipulation/frame.js.map +2 -2
  595. package/dist/lib/manipulation/handles.js +32 -33
  596. package/dist/lib/manipulation/handles.js.map +2 -2
  597. package/dist/lib/manipulation/solve.js +12 -10
  598. package/dist/lib/manipulation/solve.js.map +2 -2
  599. package/dist/lib/mount-pibbl.js +1 -0
  600. package/dist/lib/mount-pibbl.js.map +2 -2
  601. package/dist/lib/mount-prepared-pibbl.d.ts +5 -0
  602. package/dist/lib/mount-prepared-pibbl.js +29 -0
  603. package/dist/lib/mount-prepared-pibbl.js.map +7 -0
  604. package/dist/lib/mount-request.d.ts +8 -0
  605. package/dist/lib/mount-request.js +41 -0
  606. package/dist/lib/mount-request.js.map +7 -0
  607. package/dist/lib/pibbl.d.ts +21 -13
  608. package/dist/lib/pibbl.js +18 -16
  609. package/dist/lib/pibbl.js.map +2 -2
  610. package/dist/lib/recording/recording.d.ts +43 -0
  611. package/dist/lib/recording/recording.js +555 -0
  612. package/dist/lib/recording/recording.js.map +7 -0
  613. package/dist/lib/recording/types.d.ts +118 -0
  614. package/dist/lib/recording/wasm-bytes.d.ts +1 -0
  615. package/dist/lib/recording/wasm-bytes.js +5 -0
  616. package/dist/lib/recording/wasm-bytes.js.map +7 -0
  617. package/dist/lib/recording/worker-source.d.ts +1 -0
  618. package/dist/lib/recording/worker-source.js +5 -0
  619. package/dist/lib/recording/worker-source.js.map +7 -0
  620. package/dist/lib/render-layer/controller.d.ts +9 -3
  621. package/dist/lib/render-layer/controller.js +259 -110
  622. package/dist/lib/render-layer/controller.js.map +2 -2
  623. package/dist/lib/render-transaction.d.ts +12 -2
  624. package/dist/lib/render-transaction.js +69 -1
  625. package/dist/lib/render-transaction.js.map +2 -2
  626. package/dist/lib/render.js +32 -8
  627. package/dist/lib/render.js.map +2 -2
  628. package/dist/lib/scheduler/realm-scheduler.d.ts +2 -0
  629. package/dist/lib/scheduler/realm-scheduler.js +55 -26
  630. package/dist/lib/scheduler/realm-scheduler.js.map +2 -2
  631. package/dist/lib/scheduler/renderer-participant.js +1 -0
  632. package/dist/lib/scheduler/renderer-participant.js.map +2 -2
  633. package/dist/lib/series-inspection-frame.d.ts +18 -0
  634. package/dist/lib/series-inspection-frame.js +70 -0
  635. package/dist/lib/series-inspection-frame.js.map +7 -0
  636. package/dist/lib/signals/edge.d.ts +7 -4
  637. package/dist/lib/signals/edge.js +25 -3
  638. package/dist/lib/signals/edge.js.map +2 -2
  639. package/dist/lib/signals/graph.d.ts +16 -2
  640. package/dist/lib/signals/graph.js +54 -12
  641. package/dist/lib/signals/graph.js.map +2 -2
  642. package/dist/lib/signals/input-provision.d.ts +15 -0
  643. package/dist/lib/signals/input-provision.js +53 -3
  644. package/dist/lib/signals/input-provision.js.map +2 -2
  645. package/dist/lib/signals/render-consumer.d.ts +3 -0
  646. package/dist/lib/signals/render-consumer.js +22 -14
  647. package/dist/lib/signals/render-consumer.js.map +2 -2
  648. package/dist/lib/style/positioning.d.ts +50 -2
  649. package/dist/lib/style/positioning.js +28 -4
  650. package/dist/lib/style/positioning.js.map +2 -2
  651. package/dist/lib/style/resolve-built-in.d.ts +4 -3
  652. package/dist/lib/style/resolve-built-in.js +17 -3
  653. package/dist/lib/style/resolve-built-in.js.map +2 -2
  654. package/dist/lib/style/resolve-dispatch.d.ts +3 -0
  655. package/dist/lib/style/resolve-dispatch.js +77 -4
  656. package/dist/lib/style/resolve-dispatch.js.map +2 -2
  657. package/dist/lib/style/resolve-length.d.ts +2 -0
  658. package/dist/lib/style/resolve-length.js +13 -9
  659. package/dist/lib/style/resolve-length.js.map +2 -2
  660. package/dist/lib/style/sizing-length.d.ts +51 -0
  661. package/dist/lib/style/sizing-length.js +77 -0
  662. package/dist/lib/style/sizing-length.js.map +7 -0
  663. package/dist/lib/style/types.d.ts +63 -25
  664. package/dist/lib/surface/root-surface.js +10 -6
  665. package/dist/lib/surface/root-surface.js.map +2 -2
  666. package/dist/lib/textures/texture.js +10 -8
  667. package/dist/lib/textures/texture.js.map +2 -2
  668. package/dist/lib/transitions/capture.js +4 -1
  669. package/dist/lib/transitions/capture.js.map +2 -2
  670. package/dist/lib/transitions/embers-physics.js +17 -10
  671. package/dist/lib/transitions/embers-physics.js.map +2 -2
  672. package/dist/lib/types.d.ts +110 -1
  673. package/dist/sync.d.ts +16 -0
  674. package/dist/sync.js +13 -0
  675. package/dist/sync.js.map +7 -0
  676. package/dist/sync.mjs +1 -0
  677. package/package.json +43 -6
  678. package/dist/features/viz/lib/scale.d.ts +0 -11
  679. package/dist/features/viz/lib/scale.js +0 -80
  680. package/dist/features/viz/lib/scale.js.map +0 -7
  681. package/dist/features/viz/lib/use-scale.d.ts +0 -20
  682. package/dist/features/viz/lib/use-scale.js +0 -10
  683. package/dist/features/viz/lib/use-scale.js.map +0 -7
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/lib/mount-pibbl.ts"],
4
- "sourcesContent": ["import { reserveHtmlOverlay } from './html/overlay-config.js';\nimport {\n cleanupPibblInstance,\n GLOBAL_STATE,\n NO_PENDING_ROOT,\n} from './global-state.js';\nimport { PIBBL_EVENT_TYPES } from './events/event-definitions.js';\nimport {\n dispatchNativeEvent,\n refreshInteractionCursor,\n releaseEventNodeState,\n} from './events/dispatch.js';\nimport { createNativeListenerHub } from './events/native-listener-hub.js';\nimport type { PibblEventType as DOMPibblEventType } from './events/types.js';\nimport { Teardowns } from './teardowns.js';\nimport {\n Canvas,\n PibblController,\n PibblEventRoot,\n PibblInstance,\n PibblNativeObserver,\n type PibblNode,\n} from './types.js';\nimport type { PibblConfig, PibblSurfaceSnapshot } from './surface/types.js';\nimport {\n createLegacyLayerSurfaceState,\n createRootSurfaceState,\n mountRootSurface,\n} from './surface/root-surface.js';\nimport { CANVAS_2D_BACKEND } from './backend/canvas-2d-backend.js';\nimport type {\n PibblBackendDriver,\n PibblBackendMount,\n PibblBackendMountOptions,\n} from './backend/types.js';\nimport { createLayerSurface } from './surface/resolve-surface.js';\nimport { executeRender } from './execute-render.js';\nimport { update } from './update.js';\nimport {\n queueBeginCommand,\n registerRootInstance,\n} from './scheduler/realm-scheduler.js';\nimport type { PibblBeginCommandHandle } from './scheduler/types.js';\n\ntype MountPibblConfig = PibblConfig & {\n parent?: Canvas;\n surface?: PibblSurfaceSnapshot;\n driver?: PibblBackendDriver<unknown>;\n};\n\nexport function mountPibbl(\n canvas: Canvas,\n element: PibblNode,\n config?: MountPibblConfig,\n): PibblController {\n if (GLOBAL_STATE.pibblInstances.has(canvas)) {\n throw new Error('Pibbl is already mounted on this element.');\n }\n const mainTeardowns = new Teardowns();\n const signal = config?.signal;\n let ownedInstance: PibblInstance | undefined;\n const controller: PibblController = {\n dispose(): void {\n const instance = ownedInstance;\n if (!instance) {\n return;\n }\n cleanupPibblInstance(instance);\n ownedInstance = undefined;\n },\n };\n const parent = config?.parent;\n const rootCanvas = isHTMLCanvas(canvas) ? canvas : undefined;\n const surface = parent || !rootCanvas ?\n config?.surface ?\n { kind: 'layer' as const, managed: true, snapshot: config.surface } :\n createLegacyLayerSurfaceState(canvas.width, canvas.height) :\n createRootSurfaceState(rootCanvas, config);\n\n const parentInstance = parent ? GLOBAL_STATE.pibblInstances.get(parent) : undefined;\n if (parent && !parentInstance) {\n throw new Error('Parent Pibbl interaction root not found');\n }\n\n let pibblInstance: PibblInstance;\n const eventRoot: PibblEventRoot = parentInstance?.eventRoot ?? createEventRoot(\n rootCanvas,\n mainTeardowns,\n (type, event) => {\n dispatchNativeEvent(pibblInstance, type, event);\n },\n );\n\n pibblInstance = {\n canvas,\n controller,\n root: element,\n pendingRoot: NO_PENDING_ROOT,\n pendingUpdateParents: false,\n refs: new Map(),\n renderGeneration: 0,\n renderSeenIds: new Set(),\n renderSeenKeys: new Set(),\n requestedRenderRevision: 0,\n completedRenderRevision: 0,\n renderTimestamp: 0,\n mainTeardowns,\n eventRoot,\n regions: new Set(),\n paintEntries: new Set(),\n cursorDefaults: new Set(),\n interaction: {\n hoveredRegion: undefined,\n primaryDown: undefined,\n primaryUp: undefined,\n auxiliaryDown: new Map(),\n auxiliaryUp: new Map(),\n clickStreakTarget: undefined,\n clickStreak: 0,\n cursorRegion: undefined,\n cursorDefault: undefined,\n pointerCanvas: undefined,\n cursorCanvas: undefined,\n cursorStyle: undefined,\n },\n interactionRoot: undefined,\n parent,\n eventParent: undefined,\n focusParentBridge: undefined,\n rootLayoutBox: Object.freeze({\n x: 0,\n y: 0,\n width: surface.snapshot?.logicalWidth ??\n (surface.kind === 'root' && surface.config.mode === 'fixed' ?\n surface.config.width :\n surface.kind === 'root' ? surface.display.width : canvas.width),\n height: surface.snapshot?.logicalHeight ??\n (surface.kind === 'root' && surface.config.mode === 'fixed' ?\n surface.config.height :\n surface.kind === 'root' ? surface.display.height : canvas.height),\n }),\n surface,\n optionalServices: new Map(),\n backendDriver: config?.driver ?? CANVAS_2D_BACKEND,\n };\n pibblInstance.interactionRoot = parent ?\n GLOBAL_STATE.pibblInstances.get(parent)?.interactionRoot :\n pibblInstance;\n if (!pibblInstance.interactionRoot) throw new Error('Parent Pibbl interaction root not found');\n if (!parent) {\n eventRoot.rootInstance = pibblInstance;\n eventRoot.onNodeRelease = node => releaseEventNodeState(pibblInstance, node);\n eventRoot.onTargetUpdate = target =>\n refreshInteractionCursor(pibblInstance, target);\n }\n ownedInstance = pibblInstance;\n GLOBAL_STATE.pibblInstances.set(canvas, pibblInstance);\n\n try {\n if (config?.htmlOverlay) reserveHtmlOverlay(pibblInstance, config.htmlOverlay);\n if (!parent && rootCanvas) {\n mountRootSurface(pibblInstance, rootCanvas);\n }\n if (signal) {\n const abortHandler = () => controller.dispose();\n signal.addEventListener('abort', abortHandler, { once: true });\n mainTeardowns.add(() => {\n signal.removeEventListener('abort', abortHandler);\n });\n }\n\n if (signal?.aborted) {\n controller.dispose();\n }\n } catch (error) {\n controller.dispose();\n throw error;\n }\n\n if (!parent && GLOBAL_STATE.pibblInstances.get(canvas) === pibblInstance) {\n registerRootInstance(pibblInstance);\n }\n\n return controller;\n}\n\n/**\n * Mounts a private official-backend Pibbl child under an existing Pibbl root.\n *\n * @param canvas - Host canvas for this backend mount. See {@link Canvas}.\n * @param root - Initial Pibbl node tree. See {@link PibblNode}.\n * @param options - Backend driver and mount configuration. See {@link PibblBackendMountOptions}.\n * @returns Mount controls for rendering, resizing, scheduling, and disposal. See\n * {@link PibblBackendMount} .\n *\n * @see {@link Canvas}\n * @see {@link PibblNode}\n * @see {@link PibblBackendMountOptions}\n * @see {@link PibblBackendMount}\n */\nexport function mountBackendPibbl<E>(\n canvas: Canvas,\n root: PibblNode,\n options: PibblBackendMountOptions<E>,\n): PibblBackendMount {\n const { logicalWidth, logicalHeight } = options;\n const surface = createLayerSurface(\n logicalWidth,\n logicalHeight,\n canvas.width / logicalWidth,\n canvas.height / logicalHeight,\n );\n const controller = mountPibbl(canvas, root, {\n parent: options.parent,\n surface,\n driver: options.driver as PibblBackendDriver<unknown>,\n });\n const instance = GLOBAL_STATE.pibblInstances.get(canvas);\n if (!instance) {\n throw new Error('Pibbl backend mount did not retain its instance.');\n }\n const requireActiveInstance = () => {\n if (\n instance.mainTeardowns.closed ||\n GLOBAL_STATE.pibblInstances.get(canvas) !== instance\n ) {\n throw new Error('Pibbl backend mount is no longer active.');\n }\n };\n let pendingFrame: PibblBeginCommandHandle | undefined;\n let pendingUpdateParents = false;\n const cancelFrame = () => {\n pendingFrame?.cancel();\n pendingFrame = undefined;\n pendingUpdateParents = false;\n };\n return Object.freeze({\n canvas,\n resize(nextLogicalWidth: number, nextLogicalHeight: number): void {\n requireActiveInstance();\n const nextSurface = createLayerSurface(\n nextLogicalWidth,\n nextLogicalHeight,\n canvas.width / nextLogicalWidth,\n canvas.height / nextLogicalHeight,\n );\n if (instance.surface.kind !== 'layer') {\n throw new Error('Pibbl backend mount does not own a managed layer surface.');\n }\n instance.surface.snapshot = nextSurface;\n instance.surface.managed = true;\n instance.rootLayoutBox = Object.freeze({\n x: 0,\n y: 0,\n width: nextSurface.logicalWidth,\n height: nextSurface.logicalHeight,\n });\n },\n render(nextRoot: PibblNode, timestamp: number): void {\n requireActiveInstance();\n executeRender(canvas, timestamp, nextRoot, false);\n },\n requestFrame(updateParents: boolean): void {\n requireActiveInstance();\n pendingUpdateParents ||= updateParents;\n if (pendingFrame) return;\n pendingFrame = queueBeginCommand(() => {\n pendingFrame = undefined;\n const updateParentsForFrame = pendingUpdateParents;\n pendingUpdateParents = false;\n requireActiveInstance();\n if (updateParentsForFrame) {\n update(canvas, undefined, true);\n } else {\n update(canvas);\n }\n });\n },\n dispose(): void {\n cancelFrame();\n controller.dispose();\n },\n });\n}\n\nfunction createEventRoot(\n canvas: HTMLCanvasElement | undefined,\n teardowns: Teardowns,\n dispatch: (type: DOMPibblEventType, event: Event) => void,\n): PibblEventRoot {\n const nativeListeners = canvas ? createNativeListenerHub(\n canvas,\n (definition, event) => dispatch(definition.type, event),\n teardowns,\n ) : undefined;\n const observers = new Map<DOMPibblEventType, Set<PibblNativeObserver>>(\n PIBBL_EVENT_TYPES.map(type => [\n type,\n createNativeObserverSet(type, nativeListeners),\n ]),\n );\n return {\n rootInstance: undefined,\n canvas,\n nativeListeners,\n targets: new Set(),\n listenersByComponent: new Map(),\n observers,\n pointerCaptures: new Map(),\n onNodeRelease: undefined,\n onTargetUpdate: undefined,\n };\n}\n\nfunction createNativeObserverSet(\n type: DOMPibblEventType,\n nativeListeners: PibblEventRoot['nativeListeners'],\n): Set<PibblNativeObserver> {\n const observers = new Set<PibblNativeObserver>();\n const originalAdd = observers.add;\n const originalDelete = observers.delete;\n const originalClear = observers.clear;\n let release: (() => void) | undefined;\n\n observers.add = ((observer) => {\n const wasEmpty = observers.size === 0;\n originalAdd.call(observers, observer);\n if (wasEmpty) {\n release = nativeListeners?.acquire(type);\n }\n return observers;\n }) as typeof observers.add;\n observers.delete = ((observer) => {\n const deleted = originalDelete.call(observers, observer);\n if (deleted && observers.size === 0) {\n release?.();\n release = undefined;\n }\n return deleted;\n }) as typeof observers.delete;\n observers.clear = (() => {\n if (observers.size > 0) {\n originalClear.call(observers);\n release?.();\n release = undefined;\n }\n }) as typeof observers.clear;\n return observers;\n}\n\nfunction isHTMLCanvas(canvas: Canvas): canvas is HTMLCanvasElement {\n return typeof HTMLCanvasElement !== 'undefined' && canvas instanceof HTMLCanvasElement;\n}\n"],
5
- "mappings": "AAAA,SAAS,0BAA0B;AACnC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,yBAAyB;AAClC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,+BAA+B;AAExC,SAAS,iBAAiB;AAU1B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,yBAAyB;AAMlC,SAAS,0BAA0B;AACnC,SAAS,qBAAqB;AAC9B,SAAS,cAAc;AACvB;AAAA,EACE;AAAA,EACA;AAAA,OACK;AASA,SAAS,WACd,QACA,SACA,QACiB;AACjB,MAAI,aAAa,eAAe,IAAI,MAAM,GAAG;AAC3C,UAAM,IAAI,MAAM,2CAA2C;AAAA,EAC7D;AACA,QAAM,gBAAgB,IAAI,UAAU;AACpC,QAAM,SAAS,QAAQ;AACvB,MAAI;AACJ,QAAM,aAA8B;AAAA,IAClC,UAAgB;AACd,YAAM,WAAW;AACjB,UAAI,CAAC,UAAU;AACb;AAAA,MACF;AACA,2BAAqB,QAAQ;AAC7B,sBAAgB;AAAA,IAClB;AAAA,EACF;AACA,QAAM,SAAS,QAAQ;AACvB,QAAM,aAAa,aAAa,MAAM,IAAI,SAAS;AACnD,QAAM,UAAU,UAAU,CAAC,aACzB,QAAQ,UACN,EAAE,MAAM,SAAkB,SAAS,MAAM,UAAU,OAAO,QAAQ,IAClE,8BAA8B,OAAO,OAAO,OAAO,MAAM,IAC3D,uBAAuB,YAAY,MAAM;AAE3C,QAAM,iBAAiB,SAAS,aAAa,eAAe,IAAI,MAAM,IAAI;AAC1E,MAAI,UAAU,CAAC,gBAAgB;AAC7B,UAAM,IAAI,MAAM,yCAAyC;AAAA,EAC3D;AAEA,MAAI;AACJ,QAAM,YAA4B,gBAAgB,aAAa;AAAA,IAC7D;AAAA,IACA;AAAA,IACA,CAAC,MAAM,UAAU;AACf,0BAAoB,eAAe,MAAM,KAAK;AAAA,IAChD;AAAA,EACF;AAEA,kBAAgB;AAAA,IACd;AAAA,IACA;AAAA,IACA,MAAM;AAAA,IACN,aAAa;AAAA,IACb,sBAAsB;AAAA,IACtB,MAAM,oBAAI,IAAI;AAAA,IACd,kBAAkB;AAAA,IAClB,eAAe,oBAAI,IAAI;AAAA,IACvB,gBAAgB,oBAAI,IAAI;AAAA,IACxB,yBAAyB;AAAA,IACzB,yBAAyB;AAAA,IACzB,iBAAiB;AAAA,IACjB;AAAA,IACA;AAAA,IACA,SAAS,oBAAI,IAAI;AAAA,IACjB,cAAc,oBAAI,IAAI;AAAA,IACtB,gBAAgB,oBAAI,IAAI;AAAA,IACxB,aAAa;AAAA,MACX,eAAe;AAAA,MACf,aAAa;AAAA,MACb,WAAW;AAAA,MACX,eAAe,oBAAI,IAAI;AAAA,MACvB,aAAa,oBAAI,IAAI;AAAA,MACrB,mBAAmB;AAAA,MACnB,aAAa;AAAA,MACb,cAAc;AAAA,MACd,eAAe;AAAA,MACf,eAAe;AAAA,MACf,cAAc;AAAA,MACd,aAAa;AAAA,IACf;AAAA,IACA,iBAAiB;AAAA,IACjB;AAAA,IACA,aAAa;AAAA,IACb,mBAAmB;AAAA,IACnB,eAAe,OAAO,OAAO;AAAA,MAC3B,GAAG;AAAA,MACH,GAAG;AAAA,MACH,OAAO,QAAQ,UAAU,iBACtB,QAAQ,SAAS,UAAU,QAAQ,OAAO,SAAS,UAClD,QAAQ,OAAO,QACf,QAAQ,SAAS,SAAS,QAAQ,QAAQ,QAAQ,OAAO;AAAA,MAC7D,QAAQ,QAAQ,UAAU,kBACvB,QAAQ,SAAS,UAAU,QAAQ,OAAO,SAAS,UAClD,QAAQ,OAAO,SACf,QAAQ,SAAS,SAAS,QAAQ,QAAQ,SAAS,OAAO;AAAA,IAChE,CAAC;AAAA,IACD;AAAA,IACA,kBAAkB,oBAAI,IAAI;AAAA,IAC1B,eAAe,QAAQ,UAAU;AAAA,EACnC;AACA,gBAAc,kBAAkB,SAC5B,aAAa,eAAe,IAAI,MAAM,GAAG,kBAC3C;AACF,MAAI,CAAC,cAAc,gBAAiB,OAAM,IAAI,MAAM,yCAAyC;AAC7F,MAAI,CAAC,QAAQ;AACX,cAAU,eAAe;AACzB,cAAU,gBAAgB,UAAQ,sBAAsB,eAAe,IAAI;AAC3E,cAAU,iBAAiB,YACzB,yBAAyB,eAAe,MAAM;AAAA,EAClD;AACA,kBAAgB;AAChB,eAAa,eAAe,IAAI,QAAQ,aAAa;AAErD,MAAI;AACF,QAAI,QAAQ,YAAa,oBAAmB,eAAe,OAAO,WAAW;AAC7E,QAAI,CAAC,UAAU,YAAY;AACzB,uBAAiB,eAAe,UAAU;AAAA,IAC5C;AACA,QAAI,QAAQ;AACV,YAAM,eAAe,MAAM,WAAW,QAAQ;AAC9C,aAAO,iBAAiB,SAAS,cAAc,EAAE,MAAM,KAAK,CAAC;AAC7D,oBAAc,IAAI,MAAM;AACtB,eAAO,oBAAoB,SAAS,YAAY;AAAA,MAClD,CAAC;AAAA,IACH;AAEA,QAAI,QAAQ,SAAS;AACnB,iBAAW,QAAQ;AAAA,IACrB;AAAA,EACF,SAAS,OAAO;AACd,eAAW,QAAQ;AACnB,UAAM;AAAA,EACR;AAEA,MAAI,CAAC,UAAU,aAAa,eAAe,IAAI,MAAM,MAAM,eAAe;AACxE,yBAAqB,aAAa;AAAA,EACpC;AAEA,SAAO;AACT;AAgBO,SAAS,kBACd,QACA,MACA,SACmB;AACnB,QAAM,EAAE,cAAc,cAAc,IAAI;AACxC,QAAM,UAAU;AAAA,IACd;AAAA,IACA;AAAA,IACA,OAAO,QAAQ;AAAA,IACf,OAAO,SAAS;AAAA,EAClB;AACA,QAAM,aAAa,WAAW,QAAQ,MAAM;AAAA,IAC1C,QAAQ,QAAQ;AAAA,IAChB;AAAA,IACA,QAAQ,QAAQ;AAAA,EAClB,CAAC;AACD,QAAM,WAAW,aAAa,eAAe,IAAI,MAAM;AACvD,MAAI,CAAC,UAAU;AACb,UAAM,IAAI,MAAM,kDAAkD;AAAA,EACpE;AACA,QAAM,wBAAwB,MAAM;AAClC,QACE,SAAS,cAAc,UACvB,aAAa,eAAe,IAAI,MAAM,MAAM,UAC5C;AACA,YAAM,IAAI,MAAM,0CAA0C;AAAA,IAC5D;AAAA,EACF;AACA,MAAI;AACJ,MAAI,uBAAuB;AAC3B,QAAM,cAAc,MAAM;AACxB,kBAAc,OAAO;AACrB,mBAAe;AACf,2BAAuB;AAAA,EACzB;AACA,SAAO,OAAO,OAAO;AAAA,IACnB;AAAA,IACA,OAAO,kBAA0B,mBAAiC;AAChE,4BAAsB;AACtB,YAAM,cAAc;AAAA,QAClB;AAAA,QACA;AAAA,QACA,OAAO,QAAQ;AAAA,QACf,OAAO,SAAS;AAAA,MAClB;AACA,UAAI,SAAS,QAAQ,SAAS,SAAS;AACrC,cAAM,IAAI,MAAM,2DAA2D;AAAA,MAC7E;AACA,eAAS,QAAQ,WAAW;AAC5B,eAAS,QAAQ,UAAU;AAC3B,eAAS,gBAAgB,OAAO,OAAO;AAAA,QACrC,GAAG;AAAA,QACH,GAAG;AAAA,QACH,OAAO,YAAY;AAAA,QACnB,QAAQ,YAAY;AAAA,MACtB,CAAC;AAAA,IACH;AAAA,IACA,OAAO,UAAqB,WAAyB;AACnD,4BAAsB;AACtB,oBAAc,QAAQ,WAAW,UAAU,KAAK;AAAA,IAClD;AAAA,IACA,aAAa,eAA8B;AACzC,4BAAsB;AACtB,+BAAyB;AACzB,UAAI,aAAc;AAClB,qBAAe,kBAAkB,MAAM;AACrC,uBAAe;AACf,cAAM,wBAAwB;AAC9B,+BAAuB;AACvB,8BAAsB;AACtB,YAAI,uBAAuB;AACzB,iBAAO,QAAQ,QAAW,IAAI;AAAA,QAChC,OAAO;AACL,iBAAO,MAAM;AAAA,QACf;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IACA,UAAgB;AACd,kBAAY;AACZ,iBAAW,QAAQ;AAAA,IACrB;AAAA,EACF,CAAC;AACH;AAEA,SAAS,gBACP,QACA,WACA,UACgB;AAChB,QAAM,kBAAkB,SAAS;AAAA,IAC/B;AAAA,IACA,CAAC,YAAY,UAAU,SAAS,WAAW,MAAM,KAAK;AAAA,IACtD;AAAA,EACF,IAAI;AACJ,QAAM,YAAY,IAAI;AAAA,IACpB,kBAAkB,IAAI,UAAQ;AAAA,MAC5B;AAAA,MACA,wBAAwB,MAAM,eAAe;AAAA,IAC/C,CAAC;AAAA,EACH;AACA,SAAO;AAAA,IACL,cAAc;AAAA,IACd;AAAA,IACA;AAAA,IACA,SAAS,oBAAI,IAAI;AAAA,IACjB,sBAAsB,oBAAI,IAAI;AAAA,IAC9B;AAAA,IACA,iBAAiB,oBAAI,IAAI;AAAA,IACzB,eAAe;AAAA,IACf,gBAAgB;AAAA,EAClB;AACF;AAEA,SAAS,wBACP,MACA,iBAC0B;AAC1B,QAAM,YAAY,oBAAI,IAAyB;AAC/C,QAAM,cAAc,UAAU;AAC9B,QAAM,iBAAiB,UAAU;AACjC,QAAM,gBAAgB,UAAU;AAChC,MAAI;AAEJ,YAAU,OAAO,CAAC,aAAa;AAC7B,UAAM,WAAW,UAAU,SAAS;AACpC,gBAAY,KAAK,WAAW,QAAQ;AACpC,QAAI,UAAU;AACZ,gBAAU,iBAAiB,QAAQ,IAAI;AAAA,IACzC;AACA,WAAO;AAAA,EACT;AACA,YAAU,UAAU,CAAC,aAAa;AAChC,UAAM,UAAU,eAAe,KAAK,WAAW,QAAQ;AACvD,QAAI,WAAW,UAAU,SAAS,GAAG;AACnC,gBAAU;AACV,gBAAU;AAAA,IACZ;AACA,WAAO;AAAA,EACT;AACA,YAAU,SAAS,MAAM;AACvB,QAAI,UAAU,OAAO,GAAG;AACtB,oBAAc,KAAK,SAAS;AAC5B,gBAAU;AACV,gBAAU;AAAA,IACZ;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAAS,aAAa,QAA6C;AACjE,SAAO,OAAO,sBAAsB,eAAe,kBAAkB;AACvE;",
4
+ "sourcesContent": ["import { reserveHtmlOverlay } from './html/overlay-config.js';\nimport {\n cleanupPibblInstance,\n GLOBAL_STATE,\n NO_PENDING_ROOT,\n} from './global-state.js';\nimport { PIBBL_EVENT_TYPES } from './events/event-definitions.js';\nimport {\n dispatchNativeEvent,\n refreshInteractionCursor,\n releaseEventNodeState,\n} from './events/dispatch.js';\nimport { createNativeListenerHub } from './events/native-listener-hub.js';\nimport type { PibblEventType as DOMPibblEventType } from './events/types.js';\nimport { Teardowns } from './teardowns.js';\nimport {\n Canvas,\n PibblController,\n PibblEventRoot,\n PibblInstance,\n PibblNativeObserver,\n type PibblNode,\n} from './types.js';\nimport type { PibblConfig, PibblSurfaceSnapshot } from './surface/types.js';\nimport {\n createLegacyLayerSurfaceState,\n createRootSurfaceState,\n mountRootSurface,\n} from './surface/root-surface.js';\nimport { CANVAS_2D_BACKEND } from './backend/canvas-2d-backend.js';\nimport type {\n PibblBackendDriver,\n PibblBackendMount,\n PibblBackendMountOptions,\n} from './backend/types.js';\nimport { createLayerSurface } from './surface/resolve-surface.js';\nimport { executeRender } from './execute-render.js';\nimport { update } from './update.js';\nimport {\n queueBeginCommand,\n registerRootInstance,\n} from './scheduler/realm-scheduler.js';\nimport type { PibblBeginCommandHandle } from './scheduler/types.js';\n\ntype MountPibblConfig = PibblConfig & {\n parent?: Canvas;\n surface?: PibblSurfaceSnapshot;\n driver?: PibblBackendDriver<unknown>;\n};\n\nexport function mountPibbl(\n canvas: Canvas,\n element: PibblNode,\n config?: MountPibblConfig,\n): PibblController {\n if (GLOBAL_STATE.pibblInstances.has(canvas)) {\n throw new Error('Pibbl is already mounted on this element.');\n }\n const mainTeardowns = new Teardowns();\n const signal = config?.signal;\n let ownedInstance: PibblInstance | undefined;\n const controller: PibblController = {\n dispose(): void {\n const instance = ownedInstance;\n if (!instance) {\n return;\n }\n cleanupPibblInstance(instance);\n ownedInstance = undefined;\n },\n };\n const parent = config?.parent;\n const rootCanvas = isHTMLCanvas(canvas) ? canvas : undefined;\n const surface = parent || !rootCanvas ?\n config?.surface ?\n { kind: 'layer' as const, managed: true, snapshot: config.surface } :\n createLegacyLayerSurfaceState(canvas.width, canvas.height) :\n createRootSurfaceState(rootCanvas, config);\n\n const parentInstance = parent ? GLOBAL_STATE.pibblInstances.get(parent) : undefined;\n if (parent && !parentInstance) {\n throw new Error('Parent Pibbl interaction root not found');\n }\n\n let pibblInstance: PibblInstance;\n const eventRoot: PibblEventRoot = parentInstance?.eventRoot ?? createEventRoot(\n rootCanvas,\n mainTeardowns,\n (type, event) => {\n dispatchNativeEvent(pibblInstance, type, event);\n },\n );\n\n pibblInstance = {\n canvas,\n controller,\n root: element,\n pendingRoot: NO_PENDING_ROOT,\n pendingUpdateParents: false,\n refs: new Map(),\n renderGeneration: 0,\n renderSeenIds: new Set(),\n renderSeenKeys: new Set(),\n requestedRenderRevision: 0,\n completedRenderRevision: 0,\n renderTimestamp: 0,\n mainTeardowns,\n eventRoot,\n regions: new Set(),\n paintEntries: new Set(),\n cursorDefaults: new Set(),\n interaction: {\n hoveredRegion: undefined,\n primaryDown: undefined,\n primaryUp: undefined,\n auxiliaryDown: new Map(),\n auxiliaryUp: new Map(),\n clickStreakTarget: undefined,\n clickStreak: 0,\n cursorRegion: undefined,\n cursorDefault: undefined,\n pointerCanvas: undefined,\n cursorCanvas: undefined,\n cursorStyle: undefined,\n },\n interactionRoot: undefined,\n parent,\n eventParent: undefined,\n focusParentBridge: undefined,\n rootLayoutBox: Object.freeze({\n x: 0,\n y: 0,\n width: surface.snapshot?.logicalWidth ??\n (surface.kind === 'root' && surface.config.mode === 'fixed' ?\n surface.config.width :\n surface.kind === 'root' ? surface.display.width : canvas.width),\n height: surface.snapshot?.logicalHeight ??\n (surface.kind === 'root' && surface.config.mode === 'fixed' ?\n surface.config.height :\n surface.kind === 'root' ? surface.display.height : canvas.height),\n }),\n rootLayoutDirection: 'ltr',\n surface,\n optionalServices: new Map(),\n backendDriver: config?.driver ?? CANVAS_2D_BACKEND,\n };\n pibblInstance.interactionRoot = parent ?\n GLOBAL_STATE.pibblInstances.get(parent)?.interactionRoot :\n pibblInstance;\n if (!pibblInstance.interactionRoot) throw new Error('Parent Pibbl interaction root not found');\n if (!parent) {\n eventRoot.rootInstance = pibblInstance;\n eventRoot.onNodeRelease = node => releaseEventNodeState(pibblInstance, node);\n eventRoot.onTargetUpdate = target =>\n refreshInteractionCursor(pibblInstance, target);\n }\n ownedInstance = pibblInstance;\n GLOBAL_STATE.pibblInstances.set(canvas, pibblInstance);\n\n try {\n if (config?.htmlOverlay) reserveHtmlOverlay(pibblInstance, config.htmlOverlay);\n if (!parent && rootCanvas) {\n mountRootSurface(pibblInstance, rootCanvas);\n }\n if (signal) {\n const abortHandler = () => controller.dispose();\n signal.addEventListener('abort', abortHandler, { once: true });\n mainTeardowns.add(() => {\n signal.removeEventListener('abort', abortHandler);\n });\n }\n\n if (signal?.aborted) {\n controller.dispose();\n }\n } catch (error) {\n controller.dispose();\n throw error;\n }\n\n if (!parent && GLOBAL_STATE.pibblInstances.get(canvas) === pibblInstance) {\n registerRootInstance(pibblInstance);\n }\n\n return controller;\n}\n\n/**\n * Mounts a private official-backend Pibbl child under an existing Pibbl root.\n *\n * @param canvas - Host canvas for this backend mount. See {@link Canvas}.\n * @param root - Initial Pibbl node tree. See {@link PibblNode}.\n * @param options - Backend driver and mount configuration. See {@link PibblBackendMountOptions}.\n * @returns Mount controls for rendering, resizing, scheduling, and disposal. See\n * {@link PibblBackendMount} .\n *\n * @see {@link Canvas}\n * @see {@link PibblNode}\n * @see {@link PibblBackendMountOptions}\n * @see {@link PibblBackendMount}\n */\nexport function mountBackendPibbl<E>(\n canvas: Canvas,\n root: PibblNode,\n options: PibblBackendMountOptions<E>,\n): PibblBackendMount {\n const { logicalWidth, logicalHeight } = options;\n const surface = createLayerSurface(\n logicalWidth,\n logicalHeight,\n canvas.width / logicalWidth,\n canvas.height / logicalHeight,\n );\n const controller = mountPibbl(canvas, root, {\n parent: options.parent,\n surface,\n driver: options.driver as PibblBackendDriver<unknown>,\n });\n const instance = GLOBAL_STATE.pibblInstances.get(canvas);\n if (!instance) {\n throw new Error('Pibbl backend mount did not retain its instance.');\n }\n const requireActiveInstance = () => {\n if (\n instance.mainTeardowns.closed ||\n GLOBAL_STATE.pibblInstances.get(canvas) !== instance\n ) {\n throw new Error('Pibbl backend mount is no longer active.');\n }\n };\n let pendingFrame: PibblBeginCommandHandle | undefined;\n let pendingUpdateParents = false;\n const cancelFrame = () => {\n pendingFrame?.cancel();\n pendingFrame = undefined;\n pendingUpdateParents = false;\n };\n return Object.freeze({\n canvas,\n resize(nextLogicalWidth: number, nextLogicalHeight: number): void {\n requireActiveInstance();\n const nextSurface = createLayerSurface(\n nextLogicalWidth,\n nextLogicalHeight,\n canvas.width / nextLogicalWidth,\n canvas.height / nextLogicalHeight,\n );\n if (instance.surface.kind !== 'layer') {\n throw new Error('Pibbl backend mount does not own a managed layer surface.');\n }\n instance.surface.snapshot = nextSurface;\n instance.surface.managed = true;\n instance.rootLayoutBox = Object.freeze({\n x: 0,\n y: 0,\n width: nextSurface.logicalWidth,\n height: nextSurface.logicalHeight,\n });\n },\n render(nextRoot: PibblNode, timestamp: number): void {\n requireActiveInstance();\n executeRender(canvas, timestamp, nextRoot, false);\n },\n requestFrame(updateParents: boolean): void {\n requireActiveInstance();\n pendingUpdateParents ||= updateParents;\n if (pendingFrame) return;\n pendingFrame = queueBeginCommand(() => {\n pendingFrame = undefined;\n const updateParentsForFrame = pendingUpdateParents;\n pendingUpdateParents = false;\n requireActiveInstance();\n if (updateParentsForFrame) {\n update(canvas, undefined, true);\n } else {\n update(canvas);\n }\n });\n },\n dispose(): void {\n cancelFrame();\n controller.dispose();\n },\n });\n}\n\nfunction createEventRoot(\n canvas: HTMLCanvasElement | undefined,\n teardowns: Teardowns,\n dispatch: (type: DOMPibblEventType, event: Event) => void,\n): PibblEventRoot {\n const nativeListeners = canvas ? createNativeListenerHub(\n canvas,\n (definition, event) => dispatch(definition.type, event),\n teardowns,\n ) : undefined;\n const observers = new Map<DOMPibblEventType, Set<PibblNativeObserver>>(\n PIBBL_EVENT_TYPES.map(type => [\n type,\n createNativeObserverSet(type, nativeListeners),\n ]),\n );\n return {\n rootInstance: undefined,\n canvas,\n nativeListeners,\n targets: new Set(),\n listenersByComponent: new Map(),\n observers,\n pointerCaptures: new Map(),\n onNodeRelease: undefined,\n onTargetUpdate: undefined,\n };\n}\n\nfunction createNativeObserverSet(\n type: DOMPibblEventType,\n nativeListeners: PibblEventRoot['nativeListeners'],\n): Set<PibblNativeObserver> {\n const observers = new Set<PibblNativeObserver>();\n const originalAdd = observers.add;\n const originalDelete = observers.delete;\n const originalClear = observers.clear;\n let release: (() => void) | undefined;\n\n observers.add = ((observer) => {\n const wasEmpty = observers.size === 0;\n originalAdd.call(observers, observer);\n if (wasEmpty) {\n release = nativeListeners?.acquire(type);\n }\n return observers;\n }) as typeof observers.add;\n observers.delete = ((observer) => {\n const deleted = originalDelete.call(observers, observer);\n if (deleted && observers.size === 0) {\n release?.();\n release = undefined;\n }\n return deleted;\n }) as typeof observers.delete;\n observers.clear = (() => {\n if (observers.size > 0) {\n originalClear.call(observers);\n release?.();\n release = undefined;\n }\n }) as typeof observers.clear;\n return observers;\n}\n\nfunction isHTMLCanvas(canvas: Canvas): canvas is HTMLCanvasElement {\n return typeof HTMLCanvasElement !== 'undefined' && canvas instanceof HTMLCanvasElement;\n}\n"],
5
+ "mappings": "AAAA,SAAS,0BAA0B;AACnC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,yBAAyB;AAClC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,+BAA+B;AAExC,SAAS,iBAAiB;AAU1B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,yBAAyB;AAMlC,SAAS,0BAA0B;AACnC,SAAS,qBAAqB;AAC9B,SAAS,cAAc;AACvB;AAAA,EACE;AAAA,EACA;AAAA,OACK;AASA,SAAS,WACd,QACA,SACA,QACiB;AACjB,MAAI,aAAa,eAAe,IAAI,MAAM,GAAG;AAC3C,UAAM,IAAI,MAAM,2CAA2C;AAAA,EAC7D;AACA,QAAM,gBAAgB,IAAI,UAAU;AACpC,QAAM,SAAS,QAAQ;AACvB,MAAI;AACJ,QAAM,aAA8B;AAAA,IAClC,UAAgB;AACd,YAAM,WAAW;AACjB,UAAI,CAAC,UAAU;AACb;AAAA,MACF;AACA,2BAAqB,QAAQ;AAC7B,sBAAgB;AAAA,IAClB;AAAA,EACF;AACA,QAAM,SAAS,QAAQ;AACvB,QAAM,aAAa,aAAa,MAAM,IAAI,SAAS;AACnD,QAAM,UAAU,UAAU,CAAC,aACzB,QAAQ,UACN,EAAE,MAAM,SAAkB,SAAS,MAAM,UAAU,OAAO,QAAQ,IAClE,8BAA8B,OAAO,OAAO,OAAO,MAAM,IAC3D,uBAAuB,YAAY,MAAM;AAE3C,QAAM,iBAAiB,SAAS,aAAa,eAAe,IAAI,MAAM,IAAI;AAC1E,MAAI,UAAU,CAAC,gBAAgB;AAC7B,UAAM,IAAI,MAAM,yCAAyC;AAAA,EAC3D;AAEA,MAAI;AACJ,QAAM,YAA4B,gBAAgB,aAAa;AAAA,IAC7D;AAAA,IACA;AAAA,IACA,CAAC,MAAM,UAAU;AACf,0BAAoB,eAAe,MAAM,KAAK;AAAA,IAChD;AAAA,EACF;AAEA,kBAAgB;AAAA,IACd;AAAA,IACA;AAAA,IACA,MAAM;AAAA,IACN,aAAa;AAAA,IACb,sBAAsB;AAAA,IACtB,MAAM,oBAAI,IAAI;AAAA,IACd,kBAAkB;AAAA,IAClB,eAAe,oBAAI,IAAI;AAAA,IACvB,gBAAgB,oBAAI,IAAI;AAAA,IACxB,yBAAyB;AAAA,IACzB,yBAAyB;AAAA,IACzB,iBAAiB;AAAA,IACjB;AAAA,IACA;AAAA,IACA,SAAS,oBAAI,IAAI;AAAA,IACjB,cAAc,oBAAI,IAAI;AAAA,IACtB,gBAAgB,oBAAI,IAAI;AAAA,IACxB,aAAa;AAAA,MACX,eAAe;AAAA,MACf,aAAa;AAAA,MACb,WAAW;AAAA,MACX,eAAe,oBAAI,IAAI;AAAA,MACvB,aAAa,oBAAI,IAAI;AAAA,MACrB,mBAAmB;AAAA,MACnB,aAAa;AAAA,MACb,cAAc;AAAA,MACd,eAAe;AAAA,MACf,eAAe;AAAA,MACf,cAAc;AAAA,MACd,aAAa;AAAA,IACf;AAAA,IACA,iBAAiB;AAAA,IACjB;AAAA,IACA,aAAa;AAAA,IACb,mBAAmB;AAAA,IACnB,eAAe,OAAO,OAAO;AAAA,MAC3B,GAAG;AAAA,MACH,GAAG;AAAA,MACH,OAAO,QAAQ,UAAU,iBACtB,QAAQ,SAAS,UAAU,QAAQ,OAAO,SAAS,UAClD,QAAQ,OAAO,QACf,QAAQ,SAAS,SAAS,QAAQ,QAAQ,QAAQ,OAAO;AAAA,MAC7D,QAAQ,QAAQ,UAAU,kBACvB,QAAQ,SAAS,UAAU,QAAQ,OAAO,SAAS,UAClD,QAAQ,OAAO,SACf,QAAQ,SAAS,SAAS,QAAQ,QAAQ,SAAS,OAAO;AAAA,IAChE,CAAC;AAAA,IACD,qBAAqB;AAAA,IACrB;AAAA,IACA,kBAAkB,oBAAI,IAAI;AAAA,IAC1B,eAAe,QAAQ,UAAU;AAAA,EACnC;AACA,gBAAc,kBAAkB,SAC5B,aAAa,eAAe,IAAI,MAAM,GAAG,kBAC3C;AACF,MAAI,CAAC,cAAc,gBAAiB,OAAM,IAAI,MAAM,yCAAyC;AAC7F,MAAI,CAAC,QAAQ;AACX,cAAU,eAAe;AACzB,cAAU,gBAAgB,UAAQ,sBAAsB,eAAe,IAAI;AAC3E,cAAU,iBAAiB,YACzB,yBAAyB,eAAe,MAAM;AAAA,EAClD;AACA,kBAAgB;AAChB,eAAa,eAAe,IAAI,QAAQ,aAAa;AAErD,MAAI;AACF,QAAI,QAAQ,YAAa,oBAAmB,eAAe,OAAO,WAAW;AAC7E,QAAI,CAAC,UAAU,YAAY;AACzB,uBAAiB,eAAe,UAAU;AAAA,IAC5C;AACA,QAAI,QAAQ;AACV,YAAM,eAAe,MAAM,WAAW,QAAQ;AAC9C,aAAO,iBAAiB,SAAS,cAAc,EAAE,MAAM,KAAK,CAAC;AAC7D,oBAAc,IAAI,MAAM;AACtB,eAAO,oBAAoB,SAAS,YAAY;AAAA,MAClD,CAAC;AAAA,IACH;AAEA,QAAI,QAAQ,SAAS;AACnB,iBAAW,QAAQ;AAAA,IACrB;AAAA,EACF,SAAS,OAAO;AACd,eAAW,QAAQ;AACnB,UAAM;AAAA,EACR;AAEA,MAAI,CAAC,UAAU,aAAa,eAAe,IAAI,MAAM,MAAM,eAAe;AACxE,yBAAqB,aAAa;AAAA,EACpC;AAEA,SAAO;AACT;AAgBO,SAAS,kBACd,QACA,MACA,SACmB;AACnB,QAAM,EAAE,cAAc,cAAc,IAAI;AACxC,QAAM,UAAU;AAAA,IACd;AAAA,IACA;AAAA,IACA,OAAO,QAAQ;AAAA,IACf,OAAO,SAAS;AAAA,EAClB;AACA,QAAM,aAAa,WAAW,QAAQ,MAAM;AAAA,IAC1C,QAAQ,QAAQ;AAAA,IAChB;AAAA,IACA,QAAQ,QAAQ;AAAA,EAClB,CAAC;AACD,QAAM,WAAW,aAAa,eAAe,IAAI,MAAM;AACvD,MAAI,CAAC,UAAU;AACb,UAAM,IAAI,MAAM,kDAAkD;AAAA,EACpE;AACA,QAAM,wBAAwB,MAAM;AAClC,QACE,SAAS,cAAc,UACvB,aAAa,eAAe,IAAI,MAAM,MAAM,UAC5C;AACA,YAAM,IAAI,MAAM,0CAA0C;AAAA,IAC5D;AAAA,EACF;AACA,MAAI;AACJ,MAAI,uBAAuB;AAC3B,QAAM,cAAc,MAAM;AACxB,kBAAc,OAAO;AACrB,mBAAe;AACf,2BAAuB;AAAA,EACzB;AACA,SAAO,OAAO,OAAO;AAAA,IACnB;AAAA,IACA,OAAO,kBAA0B,mBAAiC;AAChE,4BAAsB;AACtB,YAAM,cAAc;AAAA,QAClB;AAAA,QACA;AAAA,QACA,OAAO,QAAQ;AAAA,QACf,OAAO,SAAS;AAAA,MAClB;AACA,UAAI,SAAS,QAAQ,SAAS,SAAS;AACrC,cAAM,IAAI,MAAM,2DAA2D;AAAA,MAC7E;AACA,eAAS,QAAQ,WAAW;AAC5B,eAAS,QAAQ,UAAU;AAC3B,eAAS,gBAAgB,OAAO,OAAO;AAAA,QACrC,GAAG;AAAA,QACH,GAAG;AAAA,QACH,OAAO,YAAY;AAAA,QACnB,QAAQ,YAAY;AAAA,MACtB,CAAC;AAAA,IACH;AAAA,IACA,OAAO,UAAqB,WAAyB;AACnD,4BAAsB;AACtB,oBAAc,QAAQ,WAAW,UAAU,KAAK;AAAA,IAClD;AAAA,IACA,aAAa,eAA8B;AACzC,4BAAsB;AACtB,+BAAyB;AACzB,UAAI,aAAc;AAClB,qBAAe,kBAAkB,MAAM;AACrC,uBAAe;AACf,cAAM,wBAAwB;AAC9B,+BAAuB;AACvB,8BAAsB;AACtB,YAAI,uBAAuB;AACzB,iBAAO,QAAQ,QAAW,IAAI;AAAA,QAChC,OAAO;AACL,iBAAO,MAAM;AAAA,QACf;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IACA,UAAgB;AACd,kBAAY;AACZ,iBAAW,QAAQ;AAAA,IACrB;AAAA,EACF,CAAC;AACH;AAEA,SAAS,gBACP,QACA,WACA,UACgB;AAChB,QAAM,kBAAkB,SAAS;AAAA,IAC/B;AAAA,IACA,CAAC,YAAY,UAAU,SAAS,WAAW,MAAM,KAAK;AAAA,IACtD;AAAA,EACF,IAAI;AACJ,QAAM,YAAY,IAAI;AAAA,IACpB,kBAAkB,IAAI,UAAQ;AAAA,MAC5B;AAAA,MACA,wBAAwB,MAAM,eAAe;AAAA,IAC/C,CAAC;AAAA,EACH;AACA,SAAO;AAAA,IACL,cAAc;AAAA,IACd;AAAA,IACA;AAAA,IACA,SAAS,oBAAI,IAAI;AAAA,IACjB,sBAAsB,oBAAI,IAAI;AAAA,IAC9B;AAAA,IACA,iBAAiB,oBAAI,IAAI;AAAA,IACzB,eAAe;AAAA,IACf,gBAAgB;AAAA,EAClB;AACF;AAEA,SAAS,wBACP,MACA,iBAC0B;AAC1B,QAAM,YAAY,oBAAI,IAAyB;AAC/C,QAAM,cAAc,UAAU;AAC9B,QAAM,iBAAiB,UAAU;AACjC,QAAM,gBAAgB,UAAU;AAChC,MAAI;AAEJ,YAAU,OAAO,CAAC,aAAa;AAC7B,UAAM,WAAW,UAAU,SAAS;AACpC,gBAAY,KAAK,WAAW,QAAQ;AACpC,QAAI,UAAU;AACZ,gBAAU,iBAAiB,QAAQ,IAAI;AAAA,IACzC;AACA,WAAO;AAAA,EACT;AACA,YAAU,UAAU,CAAC,aAAa;AAChC,UAAM,UAAU,eAAe,KAAK,WAAW,QAAQ;AACvD,QAAI,WAAW,UAAU,SAAS,GAAG;AACnC,gBAAU;AACV,gBAAU;AAAA,IACZ;AACA,WAAO;AAAA,EACT;AACA,YAAU,SAAS,MAAM;AACvB,QAAI,UAAU,OAAO,GAAG;AACtB,oBAAc,KAAK,SAAS;AAC5B,gBAAU;AACV,gBAAU;AAAA,IACZ;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAAS,aAAa,QAA6C;AACjE,SAAO,OAAO,sBAAsB,eAAe,kBAAkB;AACvE;",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,5 @@
1
+ import { PibblController, type PibblNode } from './types.js';
2
+ import type { PibblConfig } from './surface/types.js';
3
+ /** Validates a new request before it can supersede another pending request. */
4
+ export declare function assertMountRequest(canvas: HTMLCanvasElement, element: PibblNode, config?: PibblConfig): void;
5
+ export declare function mountPreparedPibbl(canvas: HTMLCanvasElement, element: PibblNode, config?: PibblConfig): PibblController;
@@ -0,0 +1,29 @@
1
+ import { validateSurfaceConfig } from "./surface/resolve-surface.js";
2
+ import { mountAbortError } from "./mount-request.js";
3
+ import { GLOBAL_STATE } from "./global-state.js";
4
+ import { mountPibbl } from "./mount-pibbl.js";
5
+ import { assertCompatibleRootNode } from "./element/children.js";
6
+ import { update } from "./update.js";
7
+ function assertMountRequest(canvas, element, config) {
8
+ assertCompatibleRootNode(element);
9
+ if (!canvas || typeof canvas.getContext !== "function") throw new TypeError("Pibbl requires a canvas element.");
10
+ if (config?.signal?.aborted) throw mountAbortError();
11
+ if (!GLOBAL_STATE.pibblInstances.has(canvas)) validateSurfaceConfig(canvas, config);
12
+ }
13
+ function mountPreparedPibbl(canvas, element, config) {
14
+ const mountedInstance = GLOBAL_STATE.pibblInstances.get(canvas);
15
+ if (mountedInstance) {
16
+ update(canvas, element);
17
+ return mountedInstance.controller;
18
+ }
19
+ const controller = mountPibbl(canvas, element, config);
20
+ if (GLOBAL_STATE.pibblInstances.has(canvas)) {
21
+ update(canvas, element);
22
+ }
23
+ return controller;
24
+ }
25
+ export {
26
+ assertMountRequest,
27
+ mountPreparedPibbl
28
+ };
29
+ //# sourceMappingURL=mount-prepared-pibbl.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/lib/mount-prepared-pibbl.ts"],
4
+ "sourcesContent": ["import { validateSurfaceConfig } from './surface/resolve-surface.js';\nimport { mountAbortError } from './mount-request.js';\nimport { GLOBAL_STATE } from './global-state.js';\nimport { mountPibbl } from './mount-pibbl.js';\nimport { assertCompatibleRootNode } from './element/children.js';\nimport { PibblController, type PibblNode } from './types.js';\nimport { update } from './update.js';\nimport type { PibblConfig } from './surface/types.js';\n\n/** Validates a new request before it can supersede another pending request. */\nexport function assertMountRequest(canvas: HTMLCanvasElement, element: PibblNode, config?: PibblConfig): void {\n assertCompatibleRootNode(element);\n if (!canvas || typeof canvas.getContext !== \"function\") throw new TypeError(\"Pibbl requires a canvas element.\");\n if (config?.signal?.aborted) throw mountAbortError();\n // Live mounts retain their initial surface configuration; update options do\n // not recapture or revalidate ignored surface fields.\n if (!GLOBAL_STATE.pibblInstances.has(canvas)) validateSurfaceConfig(canvas, config);\n}\n\nexport function mountPreparedPibbl(\n canvas: HTMLCanvasElement,\n element: PibblNode,\n config?: PibblConfig,\n): PibblController {\n const mountedInstance = GLOBAL_STATE.pibblInstances.get(canvas);\n if (mountedInstance) {\n update(canvas, element);\n return mountedInstance.controller;\n }\n\n const controller = mountPibbl(canvas, element, config);\n if (GLOBAL_STATE.pibblInstances.has(canvas)) {\n update(canvas, element);\n }\n return controller;\n}\n"],
5
+ "mappings": "AAAA,SAAS,6BAA6B;AACtC,SAAS,uBAAuB;AAChC,SAAS,oBAAoB;AAC7B,SAAS,kBAAkB;AAC3B,SAAS,gCAAgC;AAEzC,SAAS,cAAc;AAIhB,SAAS,mBAAmB,QAA2B,SAAoB,QAA4B;AAC5G,2BAAyB,OAAO;AAChC,MAAI,CAAC,UAAU,OAAO,OAAO,eAAe,WAAY,OAAM,IAAI,UAAU,kCAAkC;AAC9G,MAAI,QAAQ,QAAQ,QAAS,OAAM,gBAAgB;AAGnD,MAAI,CAAC,aAAa,eAAe,IAAI,MAAM,EAAG,uBAAsB,QAAQ,MAAM;AACpF;AAEO,SAAS,mBACd,QACA,SACA,QACiB;AACjB,QAAM,kBAAkB,aAAa,eAAe,IAAI,MAAM;AAC9D,MAAI,iBAAiB;AACnB,WAAO,QAAQ,OAAO;AACtB,WAAO,gBAAgB;AAAA,EACzB;AAEA,QAAM,aAAa,WAAW,QAAQ,SAAS,MAAM;AACrD,MAAI,aAAa,eAAe,IAAI,MAAM,GAAG;AAC3C,WAAO,QAAQ,OAAO;AAAA,EACxB;AACA,SAAO;AACT;",
6
+ "names": []
7
+ }
@@ -0,0 +1,8 @@
1
+ export declare function mountAbortError(): DOMException;
2
+ export declare function cancelPendingMount(canvas: object): void;
3
+ /** One reservation per Canvas; no mutable mount state exists while loading. */
4
+ export declare function reserveMount(canvas: HTMLCanvasElement, signal?: AbortSignal): {
5
+ cancelled: Promise<never>;
6
+ assertCurrent(): void;
7
+ finish: () => void;
8
+ };
@@ -0,0 +1,41 @@
1
+ const pendingMounts = /* @__PURE__ */ new WeakMap();
2
+ function mountAbortError() {
3
+ return new DOMException("Pibbl mount was cancelled or superseded.", "AbortError");
4
+ }
5
+ function cancelPendingMount(canvas) {
6
+ pendingMounts.get(canvas)?.cancel();
7
+ }
8
+ function reserveMount(canvas, signal) {
9
+ if (signal?.aborted) throw mountAbortError();
10
+ cancelPendingMount(canvas);
11
+ let active = true;
12
+ let reject;
13
+ const cancelled = new Promise((_resolve, fail) => {
14
+ reject = fail;
15
+ });
16
+ const request = { cancel() {
17
+ if (!active) return;
18
+ finish();
19
+ reject(mountAbortError());
20
+ } };
21
+ function finish() {
22
+ active = false;
23
+ signal?.removeEventListener("abort", request.cancel);
24
+ if (pendingMounts.get(canvas) === request) pendingMounts.delete(canvas);
25
+ }
26
+ pendingMounts.set(canvas, request);
27
+ signal?.addEventListener("abort", request.cancel, { once: true });
28
+ return {
29
+ cancelled,
30
+ assertCurrent() {
31
+ if (!active || signal?.aborted || pendingMounts.get(canvas) !== request) throw mountAbortError();
32
+ },
33
+ finish
34
+ };
35
+ }
36
+ export {
37
+ cancelPendingMount,
38
+ mountAbortError,
39
+ reserveMount
40
+ };
41
+ //# sourceMappingURL=mount-request.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/lib/mount-request.ts"],
4
+ "sourcesContent": ["interface MountRequest { cancel(): void }\nconst pendingMounts = new WeakMap<object, MountRequest>();\n\nexport function mountAbortError(): DOMException {\n return new DOMException('Pibbl mount was cancelled or superseded.', 'AbortError');\n}\n\nexport function cancelPendingMount(canvas: object): void {\n pendingMounts.get(canvas)?.cancel();\n}\n\n/** One reservation per Canvas; no mutable mount state exists while loading. */\nexport function reserveMount(canvas: HTMLCanvasElement, signal?: AbortSignal) {\n if (signal?.aborted) throw mountAbortError();\n cancelPendingMount(canvas);\n let active = true;\n let reject!: (error: unknown) => void;\n const cancelled = new Promise<never>((_resolve, fail) => { reject = fail; });\n const request: MountRequest = { cancel() {\n if (!active) return;\n finish();\n reject(mountAbortError());\n } };\n function finish(): void {\n active = false;\n signal?.removeEventListener('abort', request.cancel);\n if (pendingMounts.get(canvas) === request) pendingMounts.delete(canvas);\n }\n pendingMounts.set(canvas, request);\n signal?.addEventListener('abort', request.cancel, { once: true });\n return {\n cancelled,\n assertCurrent() { if (!active || signal?.aborted || pendingMounts.get(canvas) !== request) throw mountAbortError(); },\n finish,\n };\n}\n"],
5
+ "mappings": "AACA,MAAM,gBAAgB,oBAAI,QAA8B;AAEjD,SAAS,kBAAgC;AAC9C,SAAO,IAAI,aAAa,4CAA4C,YAAY;AAClF;AAEO,SAAS,mBAAmB,QAAsB;AACvD,gBAAc,IAAI,MAAM,GAAG,OAAO;AACpC;AAGO,SAAS,aAAa,QAA2B,QAAsB;AAC5E,MAAI,QAAQ,QAAS,OAAM,gBAAgB;AAC3C,qBAAmB,MAAM;AACzB,MAAI,SAAS;AACb,MAAI;AACJ,QAAM,YAAY,IAAI,QAAe,CAAC,UAAU,SAAS;AAAE,aAAS;AAAA,EAAM,CAAC;AAC3E,QAAM,UAAwB,EAAE,SAAS;AACvC,QAAI,CAAC,OAAQ;AACb,WAAO;AACP,WAAO,gBAAgB,CAAC;AAAA,EAC1B,EAAE;AACF,WAAS,SAAe;AACtB,aAAS;AACT,YAAQ,oBAAoB,SAAS,QAAQ,MAAM;AACnD,QAAI,cAAc,IAAI,MAAM,MAAM,QAAS,eAAc,OAAO,MAAM;AAAA,EACxE;AACA,gBAAc,IAAI,QAAQ,OAAO;AACjC,UAAQ,iBAAiB,SAAS,QAAQ,QAAQ,EAAE,MAAM,KAAK,CAAC;AAChE,SAAO;AAAA,IACL;AAAA,IACA,gBAAgB;AAAE,UAAI,CAAC,UAAU,QAAQ,WAAW,cAAc,IAAI,MAAM,MAAM,QAAS,OAAM,gBAAgB;AAAA,IAAG;AAAA,IACpH;AAAA,EACF;AACF;",
6
+ "names": []
7
+ }
@@ -1,17 +1,25 @@
1
- import { PibblController, type PibblNode } from './types.js';
1
+ import type { PibblController, PibblNode } from './types.js';
2
2
  import type { PibblConfig } from './surface/types.js';
3
3
  /**
4
- * Mounts or updates a canvas render component on a given HTMLCanvasElement.
5
- * The first mount captures the surface configuration; later calls update only
6
- * the root element until that controller is disposed.
7
- * @param canvas The canvas to render on
8
- * @param element The Pibbl element to render
9
- * @param config The mount lifetime, logical viewport, fit, and pixel density. See
10
- * {@link PibblConfig} .
11
- * @returns The stable {@link PibblController} for this canvas; dispose it to release the mount.
12
- *
13
- * @see {@link PibblNode}
14
- * @see {@link PibblConfig}
4
+ * Fetches and compiles the external layout WASM ahead of mounting. Concurrent
5
+ * calls share one attempt; a later call retries after failure. Creates no mount.
6
+ * HTML preload can independently warm the network cache.
7
+ * @returns A Promise fulfilled when the compatible compiled module is ready.
8
+ * @throws Rejects on fetch, integrity or compilation failure, with the original cause.
9
+ * @see {@link pibbl}
10
+ */
11
+ export declare function prepareLayoutEngine(): Promise<void>;
12
+ /**
13
+ * Prepares the external layout engine, then mounts or updates one Canvas.
14
+ * The first live mount owns surface configuration and its lifetime signal.
15
+ * Layout, component evaluation and scheduled frames remain synchronous.
16
+ * @param canvas The HTML Canvas owned by the mount.
17
+ * @param element The branded recursive root descriptor. See {@link PibblNode}.
18
+ * @param config Surface and lifetime options. See {@link PibblConfig}.
19
+ * @returns A Promise for the stable {@link PibblController}; dispose releases the mount.
20
+ * @throws Rejects on loading/mount failure, or with AbortError on cancellation,
21
+ * supersession or disposal while pending. A later call retries failed loading.
22
+ * @see {@link prepareLayoutEngine}
15
23
  * @see {@link PibblController}
16
24
  */
17
- export declare function pibbl(canvas: HTMLCanvasElement, element: PibblNode, config?: PibblConfig): PibblController;
25
+ export declare function pibbl(canvas: HTMLCanvasElement, element: PibblNode, config?: PibblConfig): Promise<PibblController>;
package/dist/lib/pibbl.js CHANGED
@@ -1,21 +1,23 @@
1
- import { GLOBAL_STATE } from "./global-state.js";
2
- import { mountPibbl } from "./mount-pibbl.js";
3
- import { assertCompatibleRootNode } from "./element/children.js";
4
- import { update } from "./update.js";
5
- function pibbl(canvas, element, config) {
6
- assertCompatibleRootNode(element);
7
- const mountedInstance = GLOBAL_STATE.pibblInstances.get(canvas);
8
- if (mountedInstance) {
9
- update(canvas, element);
10
- return mountedInstance.controller;
11
- }
12
- const controller = mountPibbl(canvas, element, config);
13
- if (GLOBAL_STATE.pibblInstances.has(canvas)) {
14
- update(canvas, element);
1
+ import { prepareLayoutModule } from "./layout/wasm/module.js";
2
+ import { reserveMount } from "./mount-request.js";
3
+ import { assertMountRequest, mountPreparedPibbl } from "./mount-prepared-pibbl.js";
4
+ function prepareLayoutEngine() {
5
+ return prepareLayoutModule();
6
+ }
7
+ async function pibbl(canvas, element, config) {
8
+ assertMountRequest(canvas, element, config);
9
+ const request = reserveMount(canvas, config?.signal);
10
+ try {
11
+ await Promise.race([prepareLayoutModule(), request.cancelled]);
12
+ request.assertCurrent();
13
+ request.finish();
14
+ return mountPreparedPibbl(canvas, element, config);
15
+ } finally {
16
+ request.finish();
15
17
  }
16
- return controller;
17
18
  }
18
19
  export {
19
- pibbl
20
+ pibbl,
21
+ prepareLayoutEngine
20
22
  };
21
23
  //# sourceMappingURL=pibbl.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/lib/pibbl.ts"],
4
- "sourcesContent": ["import { GLOBAL_STATE } from './global-state.js';\nimport { mountPibbl } from './mount-pibbl.js';\nimport { assertCompatibleRootNode } from './element/children.js';\nimport { PibblController, type PibblNode } from './types.js';\nimport { update } from './update.js';\nimport type { PibblConfig } from './surface/types.js';\n\n/**\n * Mounts or updates a canvas render component on a given HTMLCanvasElement.\n * The first mount captures the surface configuration; later calls update only\n * the root element until that controller is disposed.\n * @param canvas The canvas to render on\n * @param element The Pibbl element to render\n * @param config The mount lifetime, logical viewport, fit, and pixel density. See\n * {@link PibblConfig} .\n * @returns The stable {@link PibblController} for this canvas; dispose it to release the mount.\n *\n * @see {@link PibblNode}\n * @see {@link PibblConfig}\n * @see {@link PibblController}\n */\nexport function pibbl(\n canvas: HTMLCanvasElement,\n element: PibblNode,\n config?: PibblConfig,\n): PibblController {\n assertCompatibleRootNode(element);\n const mountedInstance = GLOBAL_STATE.pibblInstances.get(canvas);\n if (mountedInstance) {\n update(canvas, element);\n return mountedInstance.controller;\n }\n\n const controller = mountPibbl(canvas, element, config);\n if (GLOBAL_STATE.pibblInstances.has(canvas)) {\n update(canvas, element);\n }\n return controller;\n}\n"],
5
- "mappings": "AAAA,SAAS,oBAAoB;AAC7B,SAAS,kBAAkB;AAC3B,SAAS,gCAAgC;AAEzC,SAAS,cAAc;AAiBhB,SAAS,MACd,QACA,SACA,QACiB;AACjB,2BAAyB,OAAO;AAChC,QAAM,kBAAkB,aAAa,eAAe,IAAI,MAAM;AAC9D,MAAI,iBAAiB;AACnB,WAAO,QAAQ,OAAO;AACtB,WAAO,gBAAgB;AAAA,EACzB;AAEA,QAAM,aAAa,WAAW,QAAQ,SAAS,MAAM;AACrD,MAAI,aAAa,eAAe,IAAI,MAAM,GAAG;AAC3C,WAAO,QAAQ,OAAO;AAAA,EACxB;AACA,SAAO;AACT;",
4
+ "sourcesContent": ["import { prepareLayoutModule } from './layout/wasm/module.js';\nimport { reserveMount } from './mount-request.js';\nimport { assertMountRequest, mountPreparedPibbl } from './mount-prepared-pibbl.js';\nimport type { PibblController, PibblNode } from './types.js';\nimport type { PibblConfig } from './surface/types.js';\n\n/**\n * Fetches and compiles the external layout WASM ahead of mounting. Concurrent\n * calls share one attempt; a later call retries after failure. Creates no mount.\n * HTML preload can independently warm the network cache.\n * @returns A Promise fulfilled when the compatible compiled module is ready.\n * @throws Rejects on fetch, integrity or compilation failure, with the original cause.\n * @see {@link pibbl}\n */\nexport function prepareLayoutEngine(): Promise<void> { return prepareLayoutModule(); }\n\n/**\n * Prepares the external layout engine, then mounts or updates one Canvas.\n * The first live mount owns surface configuration and its lifetime signal.\n * Layout, component evaluation and scheduled frames remain synchronous.\n * @param canvas The HTML Canvas owned by the mount.\n * @param element The branded recursive root descriptor. See {@link PibblNode}.\n * @param config Surface and lifetime options. See {@link PibblConfig}.\n * @returns A Promise for the stable {@link PibblController}; dispose releases the mount.\n * @throws Rejects on loading/mount failure, or with AbortError on cancellation,\n * supersession or disposal while pending. A later call retries failed loading.\n * @see {@link prepareLayoutEngine}\n * @see {@link PibblController}\n */\nexport async function pibbl(\n canvas: HTMLCanvasElement,\n element: PibblNode,\n config?: PibblConfig,\n): Promise<PibblController> {\n assertMountRequest(canvas, element, config);\n const request = reserveMount(canvas, config?.signal);\n try {\n await Promise.race([prepareLayoutModule(), request.cancelled]);\n request.assertCurrent();\n // Clear only the pending reservation; mounted lifetime ownership takes over.\n request.finish();\n return mountPreparedPibbl(canvas, element, config);\n } finally {\n request.finish();\n }\n}\n"],
5
+ "mappings": "AAAA,SAAS,2BAA2B;AACpC,SAAS,oBAAoB;AAC7B,SAAS,oBAAoB,0BAA0B;AAYhD,SAAS,sBAAqC;AAAE,SAAO,oBAAoB;AAAG;AAerF,eAAsB,MACpB,QACA,SACA,QAC0B;AAC1B,qBAAmB,QAAQ,SAAS,MAAM;AAC1C,QAAM,UAAU,aAAa,QAAQ,QAAQ,MAAM;AACnD,MAAI;AACF,UAAM,QAAQ,KAAK,CAAC,oBAAoB,GAAG,QAAQ,SAAS,CAAC;AAC7D,YAAQ,cAAc;AAEtB,YAAQ,OAAO;AACf,WAAO,mBAAmB,QAAQ,SAAS,MAAM;AAAA,EACnD,UAAE;AACA,YAAQ,OAAO;AAAA,EACjB;AACF;",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,43 @@
1
+ import type { Canvas } from "../types.js";
2
+ import type { PibblFrameRecording, PibblFrameRecordingOptions, PibblFrameRecordingSession, PibblGifExportOptions } from "./types.js";
3
+ /** Private deterministic ownership evidence; not a public diagnostics API. */
4
+ export declare const recordingResources: {
5
+ workers: number;
6
+ urls: number;
7
+ observers: number;
8
+ timers: number;
9
+ abortListeners: number;
10
+ requests: number;
11
+ exports: number;
12
+ };
13
+ /**
14
+ * Record committed bitmap frames from any live Pibbl root canvas.
15
+ *
16
+ * Capture uses the existing render lifecycle; it never starts a render loop.
17
+ * Stop retains frames; cancel discards them. Dispose the completed recording
18
+ * after reading or exporting it. Resizing, failed renders, unreadable pixels,
19
+ * allocation failure, and capture queue overflow reject and release the session.
20
+ *
21
+ * @param canvas The canvas belonging to a live Pibbl root mount.
22
+ * @param options Capture duration, maximum frame rate, allocation headroom, and cancellation.
23
+ * @returns Stable controls and promises for one recording session.
24
+ * @see {@link PibblFrameRecordingOptions}
25
+ * @see {@link PibblFrameRecordingSession}
26
+ */
27
+ export declare function recordFrames(canvas: Canvas, options: PibblFrameRecordingOptions): PibblFrameRecordingSession;
28
+ /**
29
+ * Encode a retained recording to an image/gif Blob in its worker's WASM encoder.
30
+ *
31
+ * Pixels remain worker-owned. Cancellation stops encoding and preserves the
32
+ * recording; disposing the recording cancels all pending reads and exports.
33
+ * GIF timing is rounded cumulatively to 10ms units. Without an opaque background,
34
+ * alpha below 128 is transparent and other pixels are opaque. Only one export
35
+ * per recording may run at a time. Requires workers, WebAssembly, and blob-worker CSP permission.
36
+ *
37
+ * @param recording Retained frames returned by recordFrames.
38
+ * @param options Output dimensions, palette, dithering, sampling, looping, background, progress, and cancellation.
39
+ * @returns Encoded GIF bytes as a caller-owned Blob.
40
+ * @see {@link PibblGifExportOptions}
41
+ * @see {@link PibblFrameRecording}
42
+ */
43
+ export declare function exportGif(recording: PibblFrameRecording, options?: PibblGifExportOptions): Promise<Blob>;