@pibbl/core 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1069) hide show
  1. package/LICENSE.txt +19 -0
  2. package/README.md +76 -0
  3. package/THIRD_PARTY_NOTICES.txt +205 -0
  4. package/dist/features/particles/index.d.ts +7 -0
  5. package/dist/features/particles/index.js +26 -0
  6. package/dist/features/particles/index.js.map +7 -0
  7. package/dist/features/particles/index.mjs +1 -0
  8. package/dist/features/particles/lib/canvas/birth-ledger.d.ts +69 -0
  9. package/dist/features/particles/lib/canvas/birth-ledger.js +752 -0
  10. package/dist/features/particles/lib/canvas/birth-ledger.js.map +7 -0
  11. package/dist/features/particles/lib/canvas/component.d.ts +14 -0
  12. package/dist/features/particles/lib/canvas/component.js +249 -0
  13. package/dist/features/particles/lib/canvas/component.js.map +7 -0
  14. package/dist/features/particles/lib/canvas/executor.d.ts +31 -0
  15. package/dist/features/particles/lib/canvas/executor.js +537 -0
  16. package/dist/features/particles/lib/canvas/executor.js.map +7 -0
  17. package/dist/features/particles/lib/canvas/primitive.d.ts +14 -0
  18. package/dist/features/particles/lib/canvas/primitive.js +50 -0
  19. package/dist/features/particles/lib/canvas/primitive.js.map +7 -0
  20. package/dist/features/particles/lib/canvas/raster-cache.d.ts +13 -0
  21. package/dist/features/particles/lib/canvas/raster-cache.js +106 -0
  22. package/dist/features/particles/lib/canvas/raster-cache.js.map +7 -0
  23. package/dist/features/particles/lib/color.d.ts +7 -0
  24. package/dist/features/particles/lib/color.js +159 -0
  25. package/dist/features/particles/lib/color.js.map +7 -0
  26. package/dist/features/particles/lib/compiler.d.ts +134 -0
  27. package/dist/features/particles/lib/compiler.js +443 -0
  28. package/dist/features/particles/lib/compiler.js.map +7 -0
  29. package/dist/features/particles/lib/curve.d.ts +19 -0
  30. package/dist/features/particles/lib/curve.js +129 -0
  31. package/dist/features/particles/lib/curve.js.map +7 -0
  32. package/dist/features/particles/lib/definition-records.d.ts +58 -0
  33. package/dist/features/particles/lib/definition-records.js +500 -0
  34. package/dist/features/particles/lib/definition-records.js.map +7 -0
  35. package/dist/features/particles/lib/definition.d.ts +18 -0
  36. package/dist/features/particles/lib/definition.js +602 -0
  37. package/dist/features/particles/lib/definition.js.map +7 -0
  38. package/dist/features/particles/lib/emission.d.ts +54 -0
  39. package/dist/features/particles/lib/emission.js +184 -0
  40. package/dist/features/particles/lib/emission.js.map +7 -0
  41. package/dist/features/particles/lib/flow/field.d.ts +81 -0
  42. package/dist/features/particles/lib/flow/field.js +585 -0
  43. package/dist/features/particles/lib/flow/field.js.map +7 -0
  44. package/dist/features/particles/lib/flow/hook.d.ts +158 -0
  45. package/dist/features/particles/lib/flow/hook.js +215 -0
  46. package/dist/features/particles/lib/flow/hook.js.map +7 -0
  47. package/dist/features/particles/lib/flow/population.d.ts +25 -0
  48. package/dist/features/particles/lib/flow/population.js +104 -0
  49. package/dist/features/particles/lib/flow/population.js.map +7 -0
  50. package/dist/features/particles/lib/particle.d.ts +113 -0
  51. package/dist/features/particles/lib/particle.js +192 -0
  52. package/dist/features/particles/lib/particle.js.map +7 -0
  53. package/dist/features/particles/lib/random.d.ts +16 -0
  54. package/dist/features/particles/lib/random.js +61 -0
  55. package/dist/features/particles/lib/random.js.map +7 -0
  56. package/dist/features/particles/lib/sample.d.ts +32 -0
  57. package/dist/features/particles/lib/sample.js +397 -0
  58. package/dist/features/particles/lib/sample.js.map +7 -0
  59. package/dist/features/particles/lib/signal-inputs.d.ts +6 -0
  60. package/dist/features/particles/lib/signal-inputs.js +41 -0
  61. package/dist/features/particles/lib/signal-inputs.js.map +7 -0
  62. package/dist/features/particles/lib/system/binding.d.ts +59 -0
  63. package/dist/features/particles/lib/system/binding.js +122 -0
  64. package/dist/features/particles/lib/system/binding.js.map +7 -0
  65. package/dist/features/particles/lib/system/controller.d.ts +58 -0
  66. package/dist/features/particles/lib/system/controller.js +1446 -0
  67. package/dist/features/particles/lib/system/controller.js.map +7 -0
  68. package/dist/features/particles/lib/system/hook.d.ts +13 -0
  69. package/dist/features/particles/lib/system/hook.js +52 -0
  70. package/dist/features/particles/lib/system/hook.js.map +7 -0
  71. package/dist/features/particles/lib/system/ownership.d.ts +26 -0
  72. package/dist/features/particles/lib/system/ownership.js +128 -0
  73. package/dist/features/particles/lib/system/ownership.js.map +7 -0
  74. package/dist/features/particles/lib/types.d.ts +983 -0
  75. package/dist/features/physics/2d-geometry.d.ts +216 -0
  76. package/dist/features/physics/2d-geometry.js +59 -0
  77. package/dist/features/physics/2d-geometry.js.map +7 -0
  78. package/dist/features/physics/2d-geometry.mjs +1 -0
  79. package/dist/features/physics/2d-testing.d.ts +80 -0
  80. package/dist/features/physics/2d-testing.js +141 -0
  81. package/dist/features/physics/2d-testing.js.map +7 -0
  82. package/dist/features/physics/2d-testing.mjs +1 -0
  83. package/dist/features/physics/2d.d.ts +165 -0
  84. package/dist/features/physics/2d.js +119 -0
  85. package/dist/features/physics/2d.js.map +7 -0
  86. package/dist/features/physics/2d.mjs +1 -0
  87. package/dist/features/physics/lib/2d/canvas/components.d.ts +46 -0
  88. package/dist/features/physics/lib/2d/canvas/components.js +212 -0
  89. package/dist/features/physics/lib/2d/canvas/components.js.map +7 -0
  90. package/dist/features/physics/lib/2d/canvas/custom.d.ts +24 -0
  91. package/dist/features/physics/lib/2d/canvas/custom.js +45 -0
  92. package/dist/features/physics/lib/2d/canvas/custom.js.map +7 -0
  93. package/dist/features/physics/lib/2d/canvas/debug.d.ts +23 -0
  94. package/dist/features/physics/lib/2d/canvas/debug.js +53 -0
  95. package/dist/features/physics/lib/2d/canvas/debug.js.map +7 -0
  96. package/dist/features/physics/lib/2d/canvas/inference.d.ts +9 -0
  97. package/dist/features/physics/lib/2d/canvas/inference.js +704 -0
  98. package/dist/features/physics/lib/2d/canvas/inference.js.map +7 -0
  99. package/dist/features/physics/lib/2d/canvas/presentation.d.ts +11 -0
  100. package/dist/features/physics/lib/2d/canvas/presentation.js +169 -0
  101. package/dist/features/physics/lib/2d/canvas/presentation.js.map +7 -0
  102. package/dist/features/physics/lib/2d/collision/analytic.d.ts +15 -0
  103. package/dist/features/physics/lib/2d/collision/analytic.js +151 -0
  104. package/dist/features/physics/lib/2d/collision/analytic.js.map +7 -0
  105. package/dist/features/physics/lib/2d/collision/casts.d.ts +37 -0
  106. package/dist/features/physics/lib/2d/collision/casts.js +631 -0
  107. package/dist/features/physics/lib/2d/collision/casts.js.map +7 -0
  108. package/dist/features/physics/lib/2d/collision/epa.d.ts +21 -0
  109. package/dist/features/physics/lib/2d/collision/epa.js +102 -0
  110. package/dist/features/physics/lib/2d/collision/epa.js.map +7 -0
  111. package/dist/features/physics/lib/2d/collision/gjk.d.ts +28 -0
  112. package/dist/features/physics/lib/2d/collision/gjk.js +233 -0
  113. package/dist/features/physics/lib/2d/collision/gjk.js.map +7 -0
  114. package/dist/features/physics/lib/2d/collision/manifold.d.ts +35 -0
  115. package/dist/features/physics/lib/2d/collision/manifold.js +238 -0
  116. package/dist/features/physics/lib/2d/collision/manifold.js.map +7 -0
  117. package/dist/features/physics/lib/2d/collision/pairs.d.ts +10 -0
  118. package/dist/features/physics/lib/2d/collision/pairs.js +285 -0
  119. package/dist/features/physics/lib/2d/collision/pairs.js.map +7 -0
  120. package/dist/features/physics/lib/2d/collision/support.d.ts +20 -0
  121. package/dist/features/physics/lib/2d/collision/support.js +155 -0
  122. package/dist/features/physics/lib/2d/collision/support.js.map +7 -0
  123. package/dist/features/physics/lib/2d/inspection-types.d.ts +159 -0
  124. package/dist/features/physics/lib/2d/math.d.ts +27 -0
  125. package/dist/features/physics/lib/2d/math.js +314 -0
  126. package/dist/features/physics/lib/2d/math.js.map +7 -0
  127. package/dist/features/physics/lib/2d/numeric-policy.d.ts +24 -0
  128. package/dist/features/physics/lib/2d/numeric-policy.js +51 -0
  129. package/dist/features/physics/lib/2d/numeric-policy.js.map +7 -0
  130. package/dist/features/physics/lib/2d/runtime/body-handle.d.ts +148 -0
  131. package/dist/features/physics/lib/2d/runtime/body-handle.js +305 -0
  132. package/dist/features/physics/lib/2d/runtime/body-handle.js.map +7 -0
  133. package/dist/features/physics/lib/2d/runtime/context.d.ts +9 -0
  134. package/dist/features/physics/lib/2d/runtime/context.js +57 -0
  135. package/dist/features/physics/lib/2d/runtime/context.js.map +7 -0
  136. package/dist/features/physics/lib/2d/runtime/controller.d.ts +106 -0
  137. package/dist/features/physics/lib/2d/runtime/controller.js +1317 -0
  138. package/dist/features/physics/lib/2d/runtime/controller.js.map +7 -0
  139. package/dist/features/physics/lib/2d/runtime/descriptors.d.ts +153 -0
  140. package/dist/features/physics/lib/2d/runtime/descriptors.js +526 -0
  141. package/dist/features/physics/lib/2d/runtime/descriptors.js.map +7 -0
  142. package/dist/features/physics/lib/2d/runtime/events.d.ts +56 -0
  143. package/dist/features/physics/lib/2d/runtime/events.js +153 -0
  144. package/dist/features/physics/lib/2d/runtime/events.js.map +7 -0
  145. package/dist/features/physics/lib/2d/runtime/obstacles.d.ts +22 -0
  146. package/dist/features/physics/lib/2d/runtime/obstacles.js +192 -0
  147. package/dist/features/physics/lib/2d/runtime/obstacles.js.map +7 -0
  148. package/dist/features/physics/lib/2d/runtime/ownership.d.ts +41 -0
  149. package/dist/features/physics/lib/2d/runtime/ownership.js +46 -0
  150. package/dist/features/physics/lib/2d/runtime/ownership.js.map +7 -0
  151. package/dist/features/physics/lib/2d/runtime/trace.d.ts +32 -0
  152. package/dist/features/physics/lib/2d/runtime/trace.js +22 -0
  153. package/dist/features/physics/lib/2d/runtime/trace.js.map +7 -0
  154. package/dist/features/physics/lib/2d/runtime/world-component.d.ts +18 -0
  155. package/dist/features/physics/lib/2d/runtime/world-component.js +41 -0
  156. package/dist/features/physics/lib/2d/runtime/world-component.js.map +7 -0
  157. package/dist/features/physics/lib/2d/runtime/world-props.d.ts +16 -0
  158. package/dist/features/physics/lib/2d/shape-records.d.ts +60 -0
  159. package/dist/features/physics/lib/2d/shape-records.js +26 -0
  160. package/dist/features/physics/lib/2d/shape-records.js.map +7 -0
  161. package/dist/features/physics/lib/2d/shapes.d.ts +191 -0
  162. package/dist/features/physics/lib/2d/shapes.js +543 -0
  163. package/dist/features/physics/lib/2d/shapes.js.map +7 -0
  164. package/dist/features/physics/lib/2d/types.d.ts +713 -0
  165. package/dist/features/physics/lib/2d/types.js +1 -0
  166. package/dist/features/physics/lib/2d/types.js.map +7 -0
  167. package/dist/features/physics/lib/2d/world/broad-phase.d.ts +77 -0
  168. package/dist/features/physics/lib/2d/world/broad-phase.js +762 -0
  169. package/dist/features/physics/lib/2d/world/broad-phase.js.map +7 -0
  170. package/dist/features/physics/lib/2d/world/ccd.d.ts +19 -0
  171. package/dist/features/physics/lib/2d/world/ccd.js +265 -0
  172. package/dist/features/physics/lib/2d/world/ccd.js.map +7 -0
  173. package/dist/features/physics/lib/2d/world/contact-cache.d.ts +81 -0
  174. package/dist/features/physics/lib/2d/world/contact-cache.js +497 -0
  175. package/dist/features/physics/lib/2d/world/contact-cache.js.map +7 -0
  176. package/dist/features/physics/lib/2d/world/integrator.d.ts +11 -0
  177. package/dist/features/physics/lib/2d/world/integrator.js +99 -0
  178. package/dist/features/physics/lib/2d/world/integrator.js.map +7 -0
  179. package/dist/features/physics/lib/2d/world/queries.d.ts +62 -0
  180. package/dist/features/physics/lib/2d/world/queries.js +424 -0
  181. package/dist/features/physics/lib/2d/world/queries.js.map +7 -0
  182. package/dist/features/physics/lib/2d/world/rapier-engine.js +7054 -0
  183. package/dist/features/physics/lib/2d/world/rapier-engine.js.map +7 -0
  184. package/dist/features/physics/lib/2d/world/rapier.d.ts +50 -0
  185. package/dist/features/physics/lib/2d/world/rapier.js +655 -0
  186. package/dist/features/physics/lib/2d/world/rapier.js.map +7 -0
  187. package/dist/features/physics/lib/2d/world/solver.d.ts +58 -0
  188. package/dist/features/physics/lib/2d/world/solver.js +660 -0
  189. package/dist/features/physics/lib/2d/world/solver.js.map +7 -0
  190. package/dist/features/physics/lib/2d/world/storage.d.ts +96 -0
  191. package/dist/features/physics/lib/2d/world/storage.js +371 -0
  192. package/dist/features/physics/lib/2d/world/storage.js.map +7 -0
  193. package/dist/features/physics/lib/2d/world/world.d.ts +265 -0
  194. package/dist/features/physics/lib/2d/world/world.js +1713 -0
  195. package/dist/features/physics/lib/2d/world/world.js.map +7 -0
  196. package/dist/features/physics/lib/shared/signal-inputs.d.ts +5 -0
  197. package/dist/features/physics/lib/shared/signal-inputs.js +20 -0
  198. package/dist/features/physics/lib/shared/signal-inputs.js.map +7 -0
  199. package/dist/features/physics/lib/shared/validation.d.ts +5 -0
  200. package/dist/features/physics/lib/shared/validation.js +48 -0
  201. package/dist/features/physics/lib/shared/validation.js.map +7 -0
  202. package/dist/features/sprites/formats/aseprite.js +23 -0
  203. package/dist/features/sprites/formats/aseprite.js.map +7 -0
  204. package/dist/features/sprites/formats/aseprite.mjs +1 -0
  205. package/dist/features/sprites/formats/texture-packer.js +14 -0
  206. package/dist/features/sprites/formats/texture-packer.js.map +7 -0
  207. package/dist/features/sprites/formats/texture-packer.mjs +1 -0
  208. package/dist/features/sprites/index.js +9 -0
  209. package/dist/features/sprites/index.js.map +7 -0
  210. package/dist/features/sprites/index.mjs +1 -0
  211. package/dist/features/sprites/loader.js +63 -0
  212. package/dist/features/sprites/loader.js.map +7 -0
  213. package/dist/features/sprites/model.js +64 -0
  214. package/dist/features/sprites/model.js.map +7 -0
  215. package/dist/features/sprites/sprite.js +31 -0
  216. package/dist/features/sprites/sprite.js.map +7 -0
  217. package/dist/features/textures/index.d.ts +22 -0
  218. package/dist/features/textures/index.js +31 -0
  219. package/dist/features/textures/index.js.map +7 -0
  220. package/dist/features/textures/index.mjs +1 -0
  221. package/dist/features/textures/lib/definitions.d.ts +117 -0
  222. package/dist/features/textures/lib/definitions.js +179 -0
  223. package/dist/features/textures/lib/definitions.js.map +7 -0
  224. package/dist/features/textures/lib/electric-boundary.d.ts +3 -0
  225. package/dist/features/textures/lib/electric-boundary.js +11 -0
  226. package/dist/features/textures/lib/electric-boundary.js.map +7 -0
  227. package/dist/features/textures/lib/electric-shared.d.ts +69 -0
  228. package/dist/features/textures/lib/electric-shared.js +43 -0
  229. package/dist/features/textures/lib/electric-shared.js.map +7 -0
  230. package/dist/features/textures/lib/electric-sources.d.ts +50 -0
  231. package/dist/features/textures/lib/electric-sources.js +43 -0
  232. package/dist/features/textures/lib/electric-sources.js.map +7 -0
  233. package/dist/features/textures/lib/lightning.d.ts +72 -0
  234. package/dist/features/textures/lib/lightning.js +139 -0
  235. package/dist/features/textures/lib/lightning.js.map +7 -0
  236. package/dist/features/textures/lib/material-field.d.ts +12 -0
  237. package/dist/features/textures/lib/material-field.js +31 -0
  238. package/dist/features/textures/lib/material-field.js.map +7 -0
  239. package/dist/features/textures/lib/palette.d.ts +45 -0
  240. package/dist/features/textures/lib/palette.js +52 -0
  241. package/dist/features/textures/lib/palette.js.map +7 -0
  242. package/dist/features/textures/lib/presentation.d.ts +54 -0
  243. package/dist/features/textures/lib/presentation.js +83 -0
  244. package/dist/features/textures/lib/presentation.js.map +7 -0
  245. package/dist/features/textures/lib/procedural-texture.d.ts +44 -0
  246. package/dist/features/textures/lib/procedural-texture.js +110 -0
  247. package/dist/features/textures/lib/procedural-texture.js.map +7 -0
  248. package/dist/features/textures/lib/rain-drops.d.ts +96 -0
  249. package/dist/features/textures/lib/rain-drops.js +322 -0
  250. package/dist/features/textures/lib/rain-drops.js.map +7 -0
  251. package/dist/features/textures/lib/reaction-diffusion.d.ts +67 -0
  252. package/dist/features/textures/lib/reaction-diffusion.js +210 -0
  253. package/dist/features/textures/lib/reaction-diffusion.js.map +7 -0
  254. package/dist/features/textures/lib/simulation.d.ts +16 -0
  255. package/dist/features/textures/lib/simulation.js +85 -0
  256. package/dist/features/textures/lib/simulation.js.map +7 -0
  257. package/dist/features/textures/lib/tendrils.d.ts +57 -0
  258. package/dist/features/textures/lib/tendrils.js +216 -0
  259. package/dist/features/textures/lib/tendrils.js.map +7 -0
  260. package/dist/features/textures/lib/wasm/cellular-bytes.d.ts +1 -0
  261. package/dist/features/textures/lib/wasm/cellular-bytes.js +5 -0
  262. package/dist/features/textures/lib/wasm/cellular-bytes.js.map +7 -0
  263. package/dist/features/textures/lib/wasm/electric.d.ts +88 -0
  264. package/dist/features/textures/lib/wasm/electric.js +299 -0
  265. package/dist/features/textures/lib/wasm/electric.js.map +7 -0
  266. package/dist/features/textures/lib/wasm/ink-bytes.d.ts +1 -0
  267. package/dist/features/textures/lib/wasm/ink-bytes.js +5 -0
  268. package/dist/features/textures/lib/wasm/ink-bytes.js.map +7 -0
  269. package/dist/features/textures/lib/wasm/lightning-bytes.d.ts +1 -0
  270. package/dist/features/textures/lib/wasm/lightning-bytes.js +5 -0
  271. package/dist/features/textures/lib/wasm/lightning-bytes.js.map +7 -0
  272. package/dist/features/textures/lib/wasm/marble-bytes.d.ts +1 -0
  273. package/dist/features/textures/lib/wasm/marble-bytes.js +5 -0
  274. package/dist/features/textures/lib/wasm/marble-bytes.js.map +7 -0
  275. package/dist/features/textures/lib/wasm/memory.d.ts +31 -0
  276. package/dist/features/textures/lib/wasm/memory.js +103 -0
  277. package/dist/features/textures/lib/wasm/memory.js.map +7 -0
  278. package/dist/features/textures/lib/wasm/paper-bytes.d.ts +1 -0
  279. package/dist/features/textures/lib/wasm/paper-bytes.js +5 -0
  280. package/dist/features/textures/lib/wasm/paper-bytes.js.map +7 -0
  281. package/dist/features/textures/lib/wasm/tendrils-bytes.d.ts +1 -0
  282. package/dist/features/textures/lib/wasm/tendrils-bytes.js +5 -0
  283. package/dist/features/textures/lib/wasm/tendrils-bytes.js.map +7 -0
  284. package/dist/features/textures/lib/wasm/water-surface-bytes.d.ts +1 -0
  285. package/dist/features/textures/lib/wasm/water-surface-bytes.js +5 -0
  286. package/dist/features/textures/lib/wasm/water-surface-bytes.js.map +7 -0
  287. package/dist/features/textures/lib/wasm/water-waves-bytes.d.ts +1 -0
  288. package/dist/features/textures/lib/wasm/water-waves-bytes.js +5 -0
  289. package/dist/features/textures/lib/wasm/water-waves-bytes.js.map +7 -0
  290. package/dist/features/textures/lib/water-surface.d.ts +92 -0
  291. package/dist/features/textures/lib/water-surface.js +378 -0
  292. package/dist/features/textures/lib/water-surface.js.map +7 -0
  293. package/dist/features/textures/lib/water-waves.d.ts +60 -0
  294. package/dist/features/textures/lib/water-waves.js +154 -0
  295. package/dist/features/textures/lib/water-waves.js.map +7 -0
  296. package/dist/features/viz/index.d.ts +28 -0
  297. package/dist/features/viz/index.js +45 -0
  298. package/dist/features/viz/index.js.map +7 -0
  299. package/dist/features/viz/index.mjs +1 -0
  300. package/dist/features/viz/lib/anchored-layout.d.ts +104 -0
  301. package/dist/features/viz/lib/anchored-layout.js +166 -0
  302. package/dist/features/viz/lib/anchored-layout.js.map +7 -0
  303. package/dist/features/viz/lib/axis.d.ts +10 -0
  304. package/dist/features/viz/lib/axis.js +116 -0
  305. package/dist/features/viz/lib/axis.js.map +7 -0
  306. package/dist/features/viz/lib/band-scale.d.ts +3 -0
  307. package/dist/features/viz/lib/band-scale.js +57 -0
  308. package/dist/features/viz/lib/band-scale.js.map +7 -0
  309. package/dist/features/viz/lib/bar-fill.d.ts +16 -0
  310. package/dist/features/viz/lib/bar-fill.js +53 -0
  311. package/dist/features/viz/lib/bar-fill.js.map +7 -0
  312. package/dist/features/viz/lib/bar-series.d.ts +150 -0
  313. package/dist/features/viz/lib/bar-series.js +152 -0
  314. package/dist/features/viz/lib/bar-series.js.map +7 -0
  315. package/dist/features/viz/lib/hover-card.d.ts +92 -0
  316. package/dist/features/viz/lib/hover-card.js +146 -0
  317. package/dist/features/viz/lib/hover-card.js.map +7 -0
  318. package/dist/features/viz/lib/hover-data.d.ts +12 -0
  319. package/dist/features/viz/lib/hover-data.js +50 -0
  320. package/dist/features/viz/lib/hover-data.js.map +7 -0
  321. package/dist/features/viz/lib/hover-placement.d.ts +46 -0
  322. package/dist/features/viz/lib/hover-placement.js +51 -0
  323. package/dist/features/viz/lib/hover-placement.js.map +7 -0
  324. package/dist/features/viz/lib/hover-queries.d.ts +60 -0
  325. package/dist/features/viz/lib/hover-queries.js +185 -0
  326. package/dist/features/viz/lib/hover-queries.js.map +7 -0
  327. package/dist/features/viz/lib/hover-types.d.ts +277 -0
  328. package/dist/features/viz/lib/layout-pie.d.ts +13 -0
  329. package/dist/features/viz/lib/layout-pie.js +159 -0
  330. package/dist/features/viz/lib/layout-pie.js.map +7 -0
  331. package/dist/features/viz/lib/line-series.d.ts +11 -0
  332. package/dist/features/viz/lib/line-series.js +89 -0
  333. package/dist/features/viz/lib/line-series.js.map +7 -0
  334. package/dist/features/viz/lib/linear-scale.d.ts +3 -0
  335. package/dist/features/viz/lib/linear-scale.js +70 -0
  336. package/dist/features/viz/lib/linear-scale.js.map +7 -0
  337. package/dist/features/viz/lib/nearest.d.ts +82 -0
  338. package/dist/features/viz/lib/nearest.js +51 -0
  339. package/dist/features/viz/lib/nearest.js.map +7 -0
  340. package/dist/features/viz/lib/paint.d.ts +2 -0
  341. package/dist/features/viz/lib/paint.js +17 -0
  342. package/dist/features/viz/lib/paint.js.map +7 -0
  343. package/dist/features/viz/lib/pie-layout.d.ts +31 -0
  344. package/dist/features/viz/lib/pie-layout.js +324 -0
  345. package/dist/features/viz/lib/pie-layout.js.map +7 -0
  346. package/dist/features/viz/lib/pie-slices.d.ts +51 -0
  347. package/dist/features/viz/lib/pie-slices.js +50 -0
  348. package/dist/features/viz/lib/pie-slices.js.map +7 -0
  349. package/dist/features/viz/lib/pie-types.d.ts +215 -0
  350. package/dist/features/viz/lib/plot-series.d.ts +13 -0
  351. package/dist/features/viz/lib/plot-series.js +53 -0
  352. package/dist/features/viz/lib/plot-series.js.map +7 -0
  353. package/dist/features/viz/lib/plot-types.d.ts +63 -0
  354. package/dist/features/viz/lib/point-data.d.ts +5 -0
  355. package/dist/features/viz/lib/point-data.js +17 -0
  356. package/dist/features/viz/lib/point-data.js.map +7 -0
  357. package/dist/features/viz/lib/point-geometry.d.ts +2 -0
  358. package/dist/features/viz/lib/point-geometry.js +24 -0
  359. package/dist/features/viz/lib/point-geometry.js.map +7 -0
  360. package/dist/features/viz/lib/point-series.d.ts +11 -0
  361. package/dist/features/viz/lib/point-series.js +118 -0
  362. package/dist/features/viz/lib/point-series.js.map +7 -0
  363. package/dist/features/viz/lib/point-types.d.ts +94 -0
  364. package/dist/features/viz/lib/scale-adjust.d.ts +11 -0
  365. package/dist/features/viz/lib/scale-adjust.js +25 -0
  366. package/dist/features/viz/lib/scale-adjust.js.map +7 -0
  367. package/dist/features/viz/lib/scale-context.d.ts +8 -0
  368. package/dist/features/viz/lib/scale-context.js +61 -0
  369. package/dist/features/viz/lib/scale-context.js.map +7 -0
  370. package/dist/features/viz/lib/scale.d.ts +11 -0
  371. package/dist/features/viz/lib/scale.js +80 -0
  372. package/dist/features/viz/lib/scale.js.map +7 -0
  373. package/dist/features/viz/lib/types.d.ts +414 -0
  374. package/dist/features/viz/lib/use-scale.d.ts +20 -0
  375. package/dist/features/viz/lib/use-scale.js +10 -0
  376. package/dist/features/viz/lib/use-scale.js.map +7 -0
  377. package/dist/filters/displacement-gpu.d.ts +38 -0
  378. package/dist/filters/displacement-gpu.js +243 -0
  379. package/dist/filters/displacement-gpu.js.map +7 -0
  380. package/dist/filters/displacement-math.d.ts +5 -0
  381. package/dist/filters/displacement-math.js +22 -0
  382. package/dist/filters/displacement-math.js.map +7 -0
  383. package/dist/filters/displacement.d.ts +13 -0
  384. package/dist/filters/displacement.js +65 -0
  385. package/dist/filters/displacement.js.map +7 -0
  386. package/dist/filters/filter-executor.d.ts +21 -0
  387. package/dist/filters/filter-executor.js +120 -0
  388. package/dist/filters/filter-executor.js.map +7 -0
  389. package/dist/filters/native-canvas-filter.d.ts +4 -0
  390. package/dist/filters/native-canvas-filter.js +105 -0
  391. package/dist/filters/native-canvas-filter.js.map +7 -0
  392. package/dist/filters/native-color.d.ts +2 -0
  393. package/dist/filters/native-color.js +200 -0
  394. package/dist/filters/native-color.js.map +7 -0
  395. package/dist/filters/native-operations.d.ts +8 -0
  396. package/dist/filters/native-operations.js +7 -0
  397. package/dist/filters/native-operations.js.map +7 -0
  398. package/dist/filters/native.d.ts +113 -0
  399. package/dist/filters/native.js +115 -0
  400. package/dist/filters/native.js.map +7 -0
  401. package/dist/filters/reflected-light.d.ts +12 -0
  402. package/dist/filters/reflected-light.js +93 -0
  403. package/dist/filters/reflected-light.js.map +7 -0
  404. package/dist/filters/reflection-gpu.d.ts +58 -0
  405. package/dist/filters/reflection-gpu.js +266 -0
  406. package/dist/filters/reflection-gpu.js.map +7 -0
  407. package/dist/filters/render-displacement-boundary.d.ts +12 -0
  408. package/dist/filters/render-displacement-boundary.js +116 -0
  409. package/dist/filters/render-displacement-boundary.js.map +7 -0
  410. package/dist/filters/render-reflection-boundary.d.ts +15 -0
  411. package/dist/filters/render-reflection-boundary.js +127 -0
  412. package/dist/filters/render-reflection-boundary.js.map +7 -0
  413. package/dist/filters.d.ts +5 -0
  414. package/dist/filters.js +29 -0
  415. package/dist/filters.js.map +7 -0
  416. package/dist/filters.mjs +1 -0
  417. package/dist/index.d.ts +111 -0
  418. package/dist/index.js +300 -0
  419. package/dist/index.js.map +7 -0
  420. package/dist/index.mjs +1 -0
  421. package/dist/internal.d.ts +160 -0
  422. package/dist/internal.js +320 -0
  423. package/dist/internal.js.map +7 -0
  424. package/dist/internal.mjs +1 -0
  425. package/dist/jsx-dev-runtime.d.ts +35 -0
  426. package/dist/jsx-dev-runtime.js +6 -0
  427. package/dist/jsx-dev-runtime.js.map +7 -0
  428. package/dist/jsx-dev-runtime.mjs +1 -0
  429. package/dist/jsx-runtime.d.ts +35 -0
  430. package/dist/jsx-runtime.js +7 -0
  431. package/dist/jsx-runtime.js.map +7 -0
  432. package/dist/jsx-runtime.mjs +1 -0
  433. package/dist/lib/animation/definition.d.ts +140 -0
  434. package/dist/lib/animation/definition.js +605 -0
  435. package/dist/lib/animation/definition.js.map +7 -0
  436. package/dist/lib/animation/easing.d.ts +55 -0
  437. package/dist/lib/animation/easing.js +112 -0
  438. package/dist/lib/animation/easing.js.map +7 -0
  439. package/dist/lib/animation/evaluate.d.ts +118 -0
  440. package/dist/lib/animation/evaluate.js +2398 -0
  441. package/dist/lib/animation/evaluate.js.map +7 -0
  442. package/dist/lib/animation/playback.d.ts +30 -0
  443. package/dist/lib/animation/playback.js +932 -0
  444. package/dist/lib/animation/playback.js.map +7 -0
  445. package/dist/lib/animation/program.d.ts +145 -0
  446. package/dist/lib/animation/program.js +741 -0
  447. package/dist/lib/animation/program.js.map +7 -0
  448. package/dist/lib/animation/spring.d.ts +30 -0
  449. package/dist/lib/animation/spring.js +324 -0
  450. package/dist/lib/animation/spring.js.map +7 -0
  451. package/dist/lib/animation/types.d.ts +418 -0
  452. package/dist/lib/animation/writer-leases.d.ts +47 -0
  453. package/dist/lib/animation/writer-leases.js +314 -0
  454. package/dist/lib/animation/writer-leases.js.map +7 -0
  455. package/dist/lib/backend/canvas-2d-backend.d.ts +4 -0
  456. package/dist/lib/backend/canvas-2d-backend.js +97 -0
  457. package/dist/lib/backend/canvas-2d-backend.js.map +7 -0
  458. package/dist/lib/backend/types.d.ts +309 -0
  459. package/dist/lib/backend/types.js +26 -0
  460. package/dist/lib/backend/types.js.map +7 -0
  461. package/dist/lib/components/arc-geometry.d.ts +4 -0
  462. package/dist/lib/components/arc-geometry.js +46 -0
  463. package/dist/lib/components/arc-geometry.js.map +7 -0
  464. package/dist/lib/components/arc.d.ts +55 -0
  465. package/dist/lib/components/arc.js +91 -0
  466. package/dist/lib/components/arc.js.map +7 -0
  467. package/dist/lib/components/circle.d.ts +49 -0
  468. package/dist/lib/components/circle.js +46 -0
  469. package/dist/lib/components/circle.js.map +7 -0
  470. package/dist/lib/components/clip.d.ts +43 -0
  471. package/dist/lib/components/clip.js +24 -0
  472. package/dist/lib/components/clip.js.map +7 -0
  473. package/dist/lib/components/ellipse.d.ts +53 -0
  474. package/dist/lib/components/ellipse.js +59 -0
  475. package/dist/lib/components/ellipse.js.map +7 -0
  476. package/dist/lib/components/g.d.ts +56 -0
  477. package/dist/lib/components/g.js +24 -0
  478. package/dist/lib/components/g.js.map +7 -0
  479. package/dist/lib/components/horizontal-line.d.ts +56 -0
  480. package/dist/lib/components/horizontal-line.js +71 -0
  481. package/dist/lib/components/horizontal-line.js.map +7 -0
  482. package/dist/lib/components/html-box.d.ts +16 -0
  483. package/dist/lib/components/html-box.js +57 -0
  484. package/dist/lib/components/html-box.js.map +7 -0
  485. package/dist/lib/components/img.d.ts +24 -0
  486. package/dist/lib/components/img.js +150 -0
  487. package/dist/lib/components/img.js.map +7 -0
  488. package/dist/lib/components/layer-node-equality.d.ts +65 -0
  489. package/dist/lib/components/layer-node-equality.js +91 -0
  490. package/dist/lib/components/layer-node-equality.js.map +7 -0
  491. package/dist/lib/components/layer.d.ts +34 -0
  492. package/dist/lib/components/layer.js +172 -0
  493. package/dist/lib/components/layer.js.map +7 -0
  494. package/dist/lib/components/line.d.ts +51 -0
  495. package/dist/lib/components/line.js +76 -0
  496. package/dist/lib/components/line.js.map +7 -0
  497. package/dist/lib/components/path.d.ts +28 -0
  498. package/dist/lib/components/path.js +47 -0
  499. package/dist/lib/components/path.js.map +7 -0
  500. package/dist/lib/components/polygon.d.ts +45 -0
  501. package/dist/lib/components/polygon.js +93 -0
  502. package/dist/lib/components/polygon.js.map +7 -0
  503. package/dist/lib/components/rect.d.ts +24 -0
  504. package/dist/lib/components/rect.js +83 -0
  505. package/dist/lib/components/rect.js.map +7 -0
  506. package/dist/lib/components/regular-polygon.d.ts +102 -0
  507. package/dist/lib/components/regular-polygon.js +112 -0
  508. package/dist/lib/components/regular-polygon.js.map +7 -0
  509. package/dist/lib/components/rounded-corner-style.d.ts +7 -0
  510. package/dist/lib/components/rounded-corner-style.js +40 -0
  511. package/dist/lib/components/rounded-corner-style.js.map +7 -0
  512. package/dist/lib/components/shape-style.d.ts +7 -0
  513. package/dist/lib/components/shape-style.js +52 -0
  514. package/dist/lib/components/shape-style.js.map +7 -0
  515. package/dist/lib/components/star.d.ts +56 -0
  516. package/dist/lib/components/star.js +98 -0
  517. package/dist/lib/components/star.js.map +7 -0
  518. package/dist/lib/components/structural-events.d.ts +10 -0
  519. package/dist/lib/components/structural-events.js +8 -0
  520. package/dist/lib/components/structural-events.js.map +7 -0
  521. package/dist/lib/components/svg-path.d.ts +23 -0
  522. package/dist/lib/components/svg-path.js +25 -0
  523. package/dist/lib/components/svg-path.js.map +7 -0
  524. package/dist/lib/components/text-layout.d.ts +31 -0
  525. package/dist/lib/components/text-layout.js +139 -0
  526. package/dist/lib/components/text-layout.js.map +7 -0
  527. package/dist/lib/components/text.d.ts +29 -0
  528. package/dist/lib/components/text.js +174 -0
  529. package/dist/lib/components/text.js.map +7 -0
  530. package/dist/lib/components/vertical-line.d.ts +57 -0
  531. package/dist/lib/components/vertical-line.js +71 -0
  532. package/dist/lib/components/vertical-line.js.map +7 -0
  533. package/dist/lib/components/wedge.d.ts +55 -0
  534. package/dist/lib/components/wedge.js +93 -0
  535. package/dist/lib/components/wedge.js.map +7 -0
  536. package/dist/lib/define-primitive.d.ts +82 -0
  537. package/dist/lib/define-primitive.js +85 -0
  538. package/dist/lib/define-primitive.js.map +7 -0
  539. package/dist/lib/development.d.ts +2 -0
  540. package/dist/lib/development.js +5 -0
  541. package/dist/lib/development.js.map +7 -0
  542. package/dist/lib/element/children.d.ts +16 -0
  543. package/dist/lib/element/children.js +333 -0
  544. package/dist/lib/element/children.js.map +7 -0
  545. package/dist/lib/element/create-element.d.ts +34 -0
  546. package/dist/lib/element/create-element.js +75 -0
  547. package/dist/lib/element/create-element.js.map +7 -0
  548. package/dist/lib/element/fragment.d.ts +15 -0
  549. package/dist/lib/element/fragment.js +11 -0
  550. package/dist/lib/element/fragment.js.map +7 -0
  551. package/dist/lib/element/jsx-runtime.d.ts +48 -0
  552. package/dist/lib/element/jsx-runtime.js +16 -0
  553. package/dist/lib/element/jsx-runtime.js.map +7 -0
  554. package/dist/lib/element/metadata.d.ts +96 -0
  555. package/dist/lib/element/metadata.js +160 -0
  556. package/dist/lib/element/metadata.js.map +7 -0
  557. package/dist/lib/element/resolve-primitive-inputs.d.ts +12 -0
  558. package/dist/lib/element/resolve-primitive-inputs.js +83 -0
  559. package/dist/lib/element/resolve-primitive-inputs.js.map +7 -0
  560. package/dist/lib/element/types.d.ts +123 -0
  561. package/dist/lib/element-enhancers.d.ts +134 -0
  562. package/dist/lib/element-enhancers.js +193 -0
  563. package/dist/lib/element-enhancers.js.map +7 -0
  564. package/dist/lib/events/adapters/clipboard.d.ts +9 -0
  565. package/dist/lib/events/adapters/clipboard.js +23 -0
  566. package/dist/lib/events/adapters/clipboard.js.map +7 -0
  567. package/dist/lib/events/adapters/drag.d.ts +12 -0
  568. package/dist/lib/events/adapters/drag.js +29 -0
  569. package/dist/lib/events/adapters/drag.js.map +7 -0
  570. package/dist/lib/events/adapters/editing.d.ts +15 -0
  571. package/dist/lib/events/adapters/editing.js +41 -0
  572. package/dist/lib/events/adapters/editing.js.map +7 -0
  573. package/dist/lib/events/adapters/keyboard-focus.d.ts +12 -0
  574. package/dist/lib/events/adapters/keyboard-focus.js +36 -0
  575. package/dist/lib/events/adapters/keyboard-focus.js.map +7 -0
  576. package/dist/lib/events/adapters/mouse.d.ts +17 -0
  577. package/dist/lib/events/adapters/mouse.js +32 -0
  578. package/dist/lib/events/adapters/mouse.js.map +7 -0
  579. package/dist/lib/events/adapters/pointer.d.ts +19 -0
  580. package/dist/lib/events/adapters/pointer.js +40 -0
  581. package/dist/lib/events/adapters/pointer.js.map +7 -0
  582. package/dist/lib/events/adapters/touch.d.ts +16 -0
  583. package/dist/lib/events/adapters/touch.js +36 -0
  584. package/dist/lib/events/adapters/touch.js.map +7 -0
  585. package/dist/lib/events/adapters/wheel.d.ts +10 -0
  586. package/dist/lib/events/adapters/wheel.js +16 -0
  587. package/dist/lib/events/adapters/wheel.js.map +7 -0
  588. package/dist/lib/events/boundary-transitions.d.ts +9 -0
  589. package/dist/lib/events/boundary-transitions.js +16 -0
  590. package/dist/lib/events/boundary-transitions.js.map +7 -0
  591. package/dist/lib/events/dispatch.d.ts +21 -0
  592. package/dist/lib/events/dispatch.js +1078 -0
  593. package/dist/lib/events/dispatch.js.map +7 -0
  594. package/dist/lib/events/event-definitions.d.ts +23 -0
  595. package/dist/lib/events/event-definitions.js +74 -0
  596. package/dist/lib/events/event-definitions.js.map +7 -0
  597. package/dist/lib/events/event-facade.d.ts +19 -0
  598. package/dist/lib/events/event-facade.js +188 -0
  599. package/dist/lib/events/event-facade.js.map +7 -0
  600. package/dist/lib/events/event-path.d.ts +3 -0
  601. package/dist/lib/events/event-path.js +43 -0
  602. package/dist/lib/events/event-path.js.map +7 -0
  603. package/dist/lib/events/hit-test.d.ts +13 -0
  604. package/dist/lib/events/hit-test.js +135 -0
  605. package/dist/lib/events/hit-test.js.map +7 -0
  606. package/dist/lib/events/native-listener-hub.d.ts +10 -0
  607. package/dist/lib/events/native-listener-hub.js +72 -0
  608. package/dist/lib/events/native-listener-hub.js.map +7 -0
  609. package/dist/lib/events/paint-entry.d.ts +66 -0
  610. package/dist/lib/events/paint-entry.js +30 -0
  611. package/dist/lib/events/paint-entry.js.map +7 -0
  612. package/dist/lib/events/pointer-capture.d.ts +23 -0
  613. package/dist/lib/events/pointer-capture.js +339 -0
  614. package/dist/lib/events/pointer-capture.js.map +7 -0
  615. package/dist/lib/events/propagation.d.ts +7 -0
  616. package/dist/lib/events/propagation.js +56 -0
  617. package/dist/lib/events/propagation.js.map +7 -0
  618. package/dist/lib/events/registrations.d.ts +120 -0
  619. package/dist/lib/events/registrations.js +397 -0
  620. package/dist/lib/events/registrations.js.map +7 -0
  621. package/dist/lib/events/resolver-input.d.ts +25 -0
  622. package/dist/lib/events/resolver-input.js +62 -0
  623. package/dist/lib/events/resolver-input.js.map +7 -0
  624. package/dist/lib/events/types.d.ts +596 -0
  625. package/dist/lib/execute-render.d.ts +9 -0
  626. package/dist/lib/execute-render.js +195 -0
  627. package/dist/lib/execute-render.js.map +7 -0
  628. package/dist/lib/filter/canvas-state.d.ts +2 -0
  629. package/dist/lib/filter/canvas-state.js +31 -0
  630. package/dist/lib/filter/canvas-state.js.map +7 -0
  631. package/dist/lib/filter/filter-region.d.ts +33 -0
  632. package/dist/lib/filter/filter-region.js +291 -0
  633. package/dist/lib/filter/filter-region.js.map +7 -0
  634. package/dist/lib/filter/filter-surface-pool.d.ts +38 -0
  635. package/dist/lib/filter/filter-surface-pool.js +252 -0
  636. package/dist/lib/filter/filter-surface-pool.js.map +7 -0
  637. package/dist/lib/filter/render-filter-boundary.d.ts +14 -0
  638. package/dist/lib/filter/render-filter-boundary.js +211 -0
  639. package/dist/lib/filter/render-filter-boundary.js.map +7 -0
  640. package/dist/lib/focus/directional-navigation.d.ts +12 -0
  641. package/dist/lib/focus/directional-navigation.js +86 -0
  642. package/dist/lib/focus/directional-navigation.js.map +7 -0
  643. package/dist/lib/focus/dom-focus-host.d.ts +13 -0
  644. package/dist/lib/focus/dom-focus-host.js +352 -0
  645. package/dist/lib/focus/dom-focus-host.js.map +7 -0
  646. package/dist/lib/focus/dom-tab-stops.d.ts +3 -0
  647. package/dist/lib/focus/dom-tab-stops.js +71 -0
  648. package/dist/lib/focus/dom-tab-stops.js.map +7 -0
  649. package/dist/lib/focus/focus-events.d.ts +4 -0
  650. package/dist/lib/focus/focus-events.js +78 -0
  651. package/dist/lib/focus/focus-events.js.map +7 -0
  652. package/dist/lib/focus/focus-manager.d.ts +121 -0
  653. package/dist/lib/focus/focus-manager.js +1131 -0
  654. package/dist/lib/focus/focus-manager.js.map +7 -0
  655. package/dist/lib/focus/geometry.d.ts +4 -0
  656. package/dist/lib/focus/geometry.js +64 -0
  657. package/dist/lib/focus/geometry.js.map +7 -0
  658. package/dist/lib/focus/html-focus-region.d.ts +27 -0
  659. package/dist/lib/focus/keyboard-defaults.d.ts +7 -0
  660. package/dist/lib/focus/keyboard-defaults.js +110 -0
  661. package/dist/lib/focus/keyboard-defaults.js.map +7 -0
  662. package/dist/lib/focus/policy-components.d.ts +45 -0
  663. package/dist/lib/focus/policy-components.js +94 -0
  664. package/dist/lib/focus/policy-components.js.map +7 -0
  665. package/dist/lib/focus/types.d.ts +37 -0
  666. package/dist/lib/focus/types.js +7 -0
  667. package/dist/lib/focus/types.js.map +7 -0
  668. package/dist/lib/geometry/circle.d.ts +22 -0
  669. package/dist/lib/geometry/circle.js +13 -0
  670. package/dist/lib/geometry/circle.js.map +7 -0
  671. package/dist/lib/geometry/circular-sweep.d.ts +54 -0
  672. package/dist/lib/geometry/circular-sweep.js +95 -0
  673. package/dist/lib/geometry/circular-sweep.js.map +7 -0
  674. package/dist/lib/geometry/ellipse.d.ts +26 -0
  675. package/dist/lib/geometry/ellipse.js +17 -0
  676. package/dist/lib/geometry/ellipse.js.map +7 -0
  677. package/dist/lib/geometry/line.d.ts +20 -0
  678. package/dist/lib/geometry/line.js +15 -0
  679. package/dist/lib/geometry/line.js.map +7 -0
  680. package/dist/lib/geometry/path-arc.d.ts +25 -0
  681. package/dist/lib/geometry/path-arc.js +57 -0
  682. package/dist/lib/geometry/path-arc.js.map +7 -0
  683. package/dist/lib/geometry/path-bend-guide.d.ts +31 -0
  684. package/dist/lib/geometry/path-bend-guide.js +282 -0
  685. package/dist/lib/geometry/path-bend-guide.js.map +7 -0
  686. package/dist/lib/geometry/path-bend-spans.d.ts +31 -0
  687. package/dist/lib/geometry/path-bend-spans.js +109 -0
  688. package/dist/lib/geometry/path-bend-spans.js.map +7 -0
  689. package/dist/lib/geometry/path-bending.d.ts +90 -0
  690. package/dist/lib/geometry/path-bending.js +202 -0
  691. package/dist/lib/geometry/path-bending.js.map +7 -0
  692. package/dist/lib/geometry/path-conversion.d.ts +19 -0
  693. package/dist/lib/geometry/path-conversion.js +114 -0
  694. package/dist/lib/geometry/path-conversion.js.map +7 -0
  695. package/dist/lib/geometry/path-geometry.d.ts +218 -0
  696. package/dist/lib/geometry/path-geometry.js +557 -0
  697. package/dist/lib/geometry/path-geometry.js.map +7 -0
  698. package/dist/lib/geometry/path-radial.d.ts +15 -0
  699. package/dist/lib/geometry/path-radial.js +107 -0
  700. package/dist/lib/geometry/path-radial.js.map +7 -0
  701. package/dist/lib/geometry/path-transforms.d.ts +233 -0
  702. package/dist/lib/geometry/path-transforms.js +478 -0
  703. package/dist/lib/geometry/path-transforms.js.map +7 -0
  704. package/dist/lib/geometry/path-utilities.d.ts +78 -0
  705. package/dist/lib/geometry/path-utilities.js +341 -0
  706. package/dist/lib/geometry/path-utilities.js.map +7 -0
  707. package/dist/lib/geometry/path-wang.d.ts +18 -0
  708. package/dist/lib/geometry/path-wang.js +136 -0
  709. package/dist/lib/geometry/path-wang.js.map +7 -0
  710. package/dist/lib/geometry/path-warp-bezier.d.ts +17 -0
  711. package/dist/lib/geometry/path-warp-bezier.js +109 -0
  712. package/dist/lib/geometry/path-warp-bezier.js.map +7 -0
  713. package/dist/lib/geometry/path-warp.d.ts +27 -0
  714. package/dist/lib/geometry/path-warp.js +165 -0
  715. package/dist/lib/geometry/path-warp.js.map +7 -0
  716. package/dist/lib/geometry/polygon.d.ts +21 -0
  717. package/dist/lib/geometry/polygon.js +12 -0
  718. package/dist/lib/geometry/polygon.js.map +7 -0
  719. package/dist/lib/geometry/rectangle.d.ts +38 -0
  720. package/dist/lib/geometry/rectangle.js +22 -0
  721. package/dist/lib/geometry/rectangle.js.map +7 -0
  722. package/dist/lib/geometry/regular-polygon.d.ts +88 -0
  723. package/dist/lib/geometry/regular-polygon.js +67 -0
  724. package/dist/lib/geometry/regular-polygon.js.map +7 -0
  725. package/dist/lib/geometry/resolve-path.d.ts +4 -0
  726. package/dist/lib/geometry/resolve-path.js +16 -0
  727. package/dist/lib/geometry/resolve-path.js.map +7 -0
  728. package/dist/lib/geometry/rounded-corners.d.ts +28 -0
  729. package/dist/lib/geometry/rounded-corners.js +118 -0
  730. package/dist/lib/geometry/rounded-corners.js.map +7 -0
  731. package/dist/lib/geometry/star.d.ts +39 -0
  732. package/dist/lib/geometry/star.js +90 -0
  733. package/dist/lib/geometry/star.js.map +7 -0
  734. package/dist/lib/geometry/svg-path.d.ts +21 -0
  735. package/dist/lib/geometry/svg-path.js +7 -0
  736. package/dist/lib/geometry/svg-path.js.map +7 -0
  737. package/dist/lib/geometry/transform-bend.d.ts +46 -0
  738. package/dist/lib/geometry/transform-bend.js +219 -0
  739. package/dist/lib/geometry/transform-bend.js.map +7 -0
  740. package/dist/lib/geometry/transform-guide.d.ts +57 -0
  741. package/dist/lib/geometry/transform-guide.js +157 -0
  742. package/dist/lib/geometry/transform-guide.js.map +7 -0
  743. package/dist/lib/geometry/transform-math.d.ts +21 -0
  744. package/dist/lib/geometry/transform-math.js +91 -0
  745. package/dist/lib/geometry/transform-math.js.map +7 -0
  746. package/dist/lib/geometry/transform-mesh.d.ts +39 -0
  747. package/dist/lib/geometry/transform-mesh.js +129 -0
  748. package/dist/lib/geometry/transform-mesh.js.map +7 -0
  749. package/dist/lib/geometry/validation.d.ts +6 -0
  750. package/dist/lib/geometry/validation.js +42 -0
  751. package/dist/lib/geometry/validation.js.map +7 -0
  752. package/dist/lib/global-state.d.ts +63 -0
  753. package/dist/lib/global-state.js +176 -0
  754. package/dist/lib/global-state.js.map +7 -0
  755. package/dist/lib/hooks/hook-slot.d.ts +30 -0
  756. package/dist/lib/hooks/hook-slot.js +66 -0
  757. package/dist/lib/hooks/hook-slot.js.map +7 -0
  758. package/dist/lib/hooks/use-animated-value.d.ts +24 -0
  759. package/dist/lib/hooks/use-animated-value.js +169 -0
  760. package/dist/lib/hooks/use-animated-value.js.map +7 -0
  761. package/dist/lib/hooks/use-canvas-context.d.ts +10 -0
  762. package/dist/lib/hooks/use-canvas-context.js +13 -0
  763. package/dist/lib/hooks/use-canvas-context.js.map +7 -0
  764. package/dist/lib/hooks/use-computed.d.ts +13 -0
  765. package/dist/lib/hooks/use-computed.js +91 -0
  766. package/dist/lib/hooks/use-computed.js.map +7 -0
  767. package/dist/lib/hooks/use-const.d.ts +10 -0
  768. package/dist/lib/hooks/use-const.js +15 -0
  769. package/dist/lib/hooks/use-const.js.map +7 -0
  770. package/dist/lib/hooks/use-cursor.d.ts +16 -0
  771. package/dist/lib/hooks/use-cursor.js +51 -0
  772. package/dist/lib/hooks/use-cursor.js.map +7 -0
  773. package/dist/lib/hooks/use-event-listener.d.ts +10 -0
  774. package/dist/lib/hooks/use-event-listener.js +24 -0
  775. package/dist/lib/hooks/use-event-listener.js.map +7 -0
  776. package/dist/lib/hooks/use-event-target.d.ts +14 -0
  777. package/dist/lib/hooks/use-event-target.js +30 -0
  778. package/dist/lib/hooks/use-event-target.js.map +7 -0
  779. package/dist/lib/hooks/use-layout-box.d.ts +9 -0
  780. package/dist/lib/hooks/use-layout-box.js +8 -0
  781. package/dist/lib/hooks/use-layout-box.js.map +7 -0
  782. package/dist/lib/hooks/use-line-path.d.ts +14 -0
  783. package/dist/lib/hooks/use-line-path.js +13 -0
  784. package/dist/lib/hooks/use-line-path.js.map +7 -0
  785. package/dist/lib/hooks/use-paint-target.d.ts +3 -0
  786. package/dist/lib/hooks/use-paint-target.js +34 -0
  787. package/dist/lib/hooks/use-paint-target.js.map +7 -0
  788. package/dist/lib/hooks/use-playback.d.ts +21 -0
  789. package/dist/lib/hooks/use-playback.js +87 -0
  790. package/dist/lib/hooks/use-playback.js.map +7 -0
  791. package/dist/lib/hooks/use-reaction.d.ts +19 -0
  792. package/dist/lib/hooks/use-reaction.js +245 -0
  793. package/dist/lib/hooks/use-reaction.js.map +7 -0
  794. package/dist/lib/hooks/use-rect-path.d.ts +20 -0
  795. package/dist/lib/hooks/use-rect-path.js +25 -0
  796. package/dist/lib/hooks/use-rect-path.js.map +7 -0
  797. package/dist/lib/hooks/use-ref.d.ts +17 -0
  798. package/dist/lib/hooks/use-ref.js +8 -0
  799. package/dist/lib/hooks/use-ref.js.map +7 -0
  800. package/dist/lib/hooks/use-region.d.ts +11 -0
  801. package/dist/lib/hooks/use-region.js +34 -0
  802. package/dist/lib/hooks/use-region.js.map +7 -0
  803. package/dist/lib/hooks/use-signal.d.ts +12 -0
  804. package/dist/lib/hooks/use-signal.js +12 -0
  805. package/dist/lib/hooks/use-signal.js.map +7 -0
  806. package/dist/lib/hooks/use-svg-path.d.ts +11 -0
  807. package/dist/lib/hooks/use-svg-path.js +13 -0
  808. package/dist/lib/hooks/use-svg-path.js.map +7 -0
  809. package/dist/lib/hooks/use-value-memo-slot.d.ts +12 -0
  810. package/dist/lib/hooks/use-value-memo-slot.js +45 -0
  811. package/dist/lib/hooks/use-value-memo-slot.js.map +7 -0
  812. package/dist/lib/hooks/use-visibility-transition.d.ts +103 -0
  813. package/dist/lib/hooks/use-visibility-transition.js +195 -0
  814. package/dist/lib/hooks/use-visibility-transition.js.map +7 -0
  815. package/dist/lib/html/html-service.d.ts +30 -0
  816. package/dist/lib/html/html-service.js +281 -0
  817. package/dist/lib/html/html-service.js.map +7 -0
  818. package/dist/lib/html/overlay-config.d.ts +3 -0
  819. package/dist/lib/html/overlay-config.js +37 -0
  820. package/dist/lib/html/overlay-config.js.map +7 -0
  821. package/dist/lib/html/portable-clips.d.ts +4 -0
  822. package/dist/lib/html/portable-clips.js +20 -0
  823. package/dist/lib/html/portable-clips.js.map +7 -0
  824. package/dist/lib/html/types.d.ts +110 -0
  825. package/dist/lib/layout/absolute.d.ts +57 -0
  826. package/dist/lib/layout/absolute.js +348 -0
  827. package/dist/lib/layout/absolute.js.map +7 -0
  828. package/dist/lib/layout/box.d.ts +19 -0
  829. package/dist/lib/layout/box.js +209 -0
  830. package/dist/lib/layout/box.js.map +7 -0
  831. package/dist/lib/layout/context.d.ts +13 -0
  832. package/dist/lib/layout/context.js +42 -0
  833. package/dist/lib/layout/context.js.map +7 -0
  834. package/dist/lib/layout/diagnostics.d.ts +15 -0
  835. package/dist/lib/layout/diagnostics.js +30 -0
  836. package/dist/lib/layout/diagnostics.js.map +7 -0
  837. package/dist/lib/layout/flex.d.ts +64 -0
  838. package/dist/lib/layout/flex.js +803 -0
  839. package/dist/lib/layout/flex.js.map +7 -0
  840. package/dist/lib/layout/flow.d.ts +53 -0
  841. package/dist/lib/layout/flow.js +400 -0
  842. package/dist/lib/layout/flow.js.map +7 -0
  843. package/dist/lib/layout/grid.d.ts +64 -0
  844. package/dist/lib/layout/grid.js +597 -0
  845. package/dist/lib/layout/grid.js.map +7 -0
  846. package/dist/lib/layout/measure.d.ts +19 -0
  847. package/dist/lib/layout/measure.js +144 -0
  848. package/dist/lib/layout/measure.js.map +7 -0
  849. package/dist/lib/layout/overlay.d.ts +42 -0
  850. package/dist/lib/layout/overlay.js +151 -0
  851. package/dist/lib/layout/overlay.js.map +7 -0
  852. package/dist/lib/layout/place-child.d.ts +12 -0
  853. package/dist/lib/layout/place-child.js +72 -0
  854. package/dist/lib/layout/place-child.js.map +7 -0
  855. package/dist/lib/layout/positioning-diagnostics.d.ts +3 -0
  856. package/dist/lib/layout/positioning-diagnostics.js +15 -0
  857. package/dist/lib/layout/positioning-diagnostics.js.map +7 -0
  858. package/dist/lib/layout/types.d.ts +78 -0
  859. package/dist/lib/manipulation/controller-types.d.ts +299 -0
  860. package/dist/lib/manipulation/controller.d.ts +57 -0
  861. package/dist/lib/manipulation/controller.js +464 -0
  862. package/dist/lib/manipulation/controller.js.map +7 -0
  863. package/dist/lib/manipulation/coordinates.d.ts +9 -0
  864. package/dist/lib/manipulation/coordinates.js +55 -0
  865. package/dist/lib/manipulation/coordinates.js.map +7 -0
  866. package/dist/lib/manipulation/degrees.d.ts +10 -0
  867. package/dist/lib/manipulation/degrees.js +9 -0
  868. package/dist/lib/manipulation/degrees.js.map +7 -0
  869. package/dist/lib/manipulation/frame.d.ts +24 -0
  870. package/dist/lib/manipulation/frame.js +101 -0
  871. package/dist/lib/manipulation/frame.js.map +7 -0
  872. package/dist/lib/manipulation/geometry.d.ts +4 -0
  873. package/dist/lib/manipulation/geometry.js +26 -0
  874. package/dist/lib/manipulation/geometry.js.map +7 -0
  875. package/dist/lib/manipulation/handles.d.ts +298 -0
  876. package/dist/lib/manipulation/handles.js +598 -0
  877. package/dist/lib/manipulation/handles.js.map +7 -0
  878. package/dist/lib/manipulation/manipulable.d.ts +65 -0
  879. package/dist/lib/manipulation/manipulable.js +47 -0
  880. package/dist/lib/manipulation/manipulable.js.map +7 -0
  881. package/dist/lib/manipulation/ownership.d.ts +15 -0
  882. package/dist/lib/manipulation/ownership.js +80 -0
  883. package/dist/lib/manipulation/ownership.js.map +7 -0
  884. package/dist/lib/manipulation/snap.d.ts +6 -0
  885. package/dist/lib/manipulation/snap.js +40 -0
  886. package/dist/lib/manipulation/snap.js.map +7 -0
  887. package/dist/lib/manipulation/solve.d.ts +2 -0
  888. package/dist/lib/manipulation/solve.js +563 -0
  889. package/dist/lib/manipulation/solve.js.map +7 -0
  890. package/dist/lib/manipulation/types.d.ts +178 -0
  891. package/dist/lib/mount-pibbl.d.ts +25 -0
  892. package/dist/lib/mount-pibbl.js +278 -0
  893. package/dist/lib/mount-pibbl.js.map +7 -0
  894. package/dist/lib/optional-services.d.ts +8 -0
  895. package/dist/lib/optional-services.js +11 -0
  896. package/dist/lib/optional-services.js.map +7 -0
  897. package/dist/lib/pibbl.d.ts +17 -0
  898. package/dist/lib/pibbl.js +21 -0
  899. package/dist/lib/pibbl.js.map +7 -0
  900. package/dist/lib/primitive-presentation.d.ts +24 -0
  901. package/dist/lib/primitive-presentation.js +102 -0
  902. package/dist/lib/primitive-presentation.js.map +7 -0
  903. package/dist/lib/render-layer/controller.d.ts +67 -0
  904. package/dist/lib/render-layer/controller.js +603 -0
  905. package/dist/lib/render-layer/controller.js.map +7 -0
  906. package/dist/lib/render-layer/define-render-layer.d.ts +17 -0
  907. package/dist/lib/render-layer/define-render-layer.js +90 -0
  908. package/dist/lib/render-layer/define-render-layer.js.map +7 -0
  909. package/dist/lib/render-layer/types.d.ts +315 -0
  910. package/dist/lib/render-target.d.ts +27 -0
  911. package/dist/lib/render-target.js +118 -0
  912. package/dist/lib/render-target.js.map +7 -0
  913. package/dist/lib/render-transaction.d.ts +10 -0
  914. package/dist/lib/render-transaction.js +46 -0
  915. package/dist/lib/render-transaction.js.map +7 -0
  916. package/dist/lib/render.d.ts +3 -0
  917. package/dist/lib/render.js +385 -0
  918. package/dist/lib/render.js.map +7 -0
  919. package/dist/lib/scheduler/realm-scheduler.d.ts +52 -0
  920. package/dist/lib/scheduler/realm-scheduler.js +964 -0
  921. package/dist/lib/scheduler/realm-scheduler.js.map +7 -0
  922. package/dist/lib/scheduler/renderer-participant.d.ts +257 -0
  923. package/dist/lib/scheduler/renderer-participant.js +216 -0
  924. package/dist/lib/scheduler/renderer-participant.js.map +7 -0
  925. package/dist/lib/scheduler/simulation-participant.d.ts +103 -0
  926. package/dist/lib/scheduler/simulation-participant.js +229 -0
  927. package/dist/lib/scheduler/simulation-participant.js.map +7 -0
  928. package/dist/lib/scheduler/testing.d.ts +56 -0
  929. package/dist/lib/scheduler/testing.js +71 -0
  930. package/dist/lib/scheduler/testing.js.map +7 -0
  931. package/dist/lib/scheduler/types.d.ts +103 -0
  932. package/dist/lib/signals/edge.d.ts +44 -0
  933. package/dist/lib/signals/edge.js +245 -0
  934. package/dist/lib/signals/edge.js.map +7 -0
  935. package/dist/lib/signals/graph.d.ts +220 -0
  936. package/dist/lib/signals/graph.js +1035 -0
  937. package/dist/lib/signals/graph.js.map +7 -0
  938. package/dist/lib/signals/input-provision.d.ts +3 -0
  939. package/dist/lib/signals/input-provision.js +67 -0
  940. package/dist/lib/signals/input-provision.js.map +7 -0
  941. package/dist/lib/signals/render-consumer.d.ts +21 -0
  942. package/dist/lib/signals/render-consumer.js +218 -0
  943. package/dist/lib/signals/render-consumer.js.map +7 -0
  944. package/dist/lib/signals/resolve-signal-value.d.ts +10 -0
  945. package/dist/lib/signals/resolve-signal-value.js +17 -0
  946. package/dist/lib/signals/resolve-signal-value.js.map +7 -0
  947. package/dist/lib/signals/types.d.ts +80 -0
  948. package/dist/lib/style/diagnostics.d.ts +83 -0
  949. package/dist/lib/style/diagnostics.js +63 -0
  950. package/dist/lib/style/diagnostics.js.map +7 -0
  951. package/dist/lib/style/empty-style.d.ts +3 -0
  952. package/dist/lib/style/empty-style.js +5 -0
  953. package/dist/lib/style/empty-style.js.map +7 -0
  954. package/dist/lib/style/filter-types.d.ts +243 -0
  955. package/dist/lib/style/filter-types.js +5 -0
  956. package/dist/lib/style/filter-types.js.map +7 -0
  957. package/dist/lib/style/filter.d.ts +7 -0
  958. package/dist/lib/style/filter.js +50 -0
  959. package/dist/lib/style/filter.js.map +7 -0
  960. package/dist/lib/style/normalize.d.ts +18 -0
  961. package/dist/lib/style/normalize.js +50 -0
  962. package/dist/lib/style/normalize.js.map +7 -0
  963. package/dist/lib/style/positioning.d.ts +32 -0
  964. package/dist/lib/style/positioning.js +81 -0
  965. package/dist/lib/style/positioning.js.map +7 -0
  966. package/dist/lib/style/resolve-built-in.d.ts +6 -0
  967. package/dist/lib/style/resolve-built-in.js +58 -0
  968. package/dist/lib/style/resolve-built-in.js.map +7 -0
  969. package/dist/lib/style/resolve-dispatch.d.ts +20 -0
  970. package/dist/lib/style/resolve-dispatch.js +167 -0
  971. package/dist/lib/style/resolve-dispatch.js.map +7 -0
  972. package/dist/lib/style/resolve-length.d.ts +16 -0
  973. package/dist/lib/style/resolve-length.js +54 -0
  974. package/dist/lib/style/resolve-length.js.map +7 -0
  975. package/dist/lib/style/responsive.d.ts +31 -0
  976. package/dist/lib/style/responsive.js +172 -0
  977. package/dist/lib/style/responsive.js.map +7 -0
  978. package/dist/lib/style/types.d.ts +338 -0
  979. package/dist/lib/surface/resolve-surface.d.ts +4 -0
  980. package/dist/lib/surface/resolve-surface.js +184 -0
  981. package/dist/lib/surface/resolve-surface.js.map +7 -0
  982. package/dist/lib/surface/root-surface.d.ts +7 -0
  983. package/dist/lib/surface/root-surface.js +171 -0
  984. package/dist/lib/surface/root-surface.js.map +7 -0
  985. package/dist/lib/surface/transform.d.ts +4 -0
  986. package/dist/lib/surface/transform.js +16 -0
  987. package/dist/lib/surface/transform.js.map +7 -0
  988. package/dist/lib/surface/types.d.ts +132 -0
  989. package/dist/lib/teardowns.d.ts +14 -0
  990. package/dist/lib/teardowns.js +50 -0
  991. package/dist/lib/teardowns.js.map +7 -0
  992. package/dist/lib/textures/texture-protocol.d.ts +124 -0
  993. package/dist/lib/textures/texture-protocol.js +40 -0
  994. package/dist/lib/textures/texture-protocol.js.map +7 -0
  995. package/dist/lib/textures/texture.d.ts +170 -0
  996. package/dist/lib/textures/texture.js +385 -0
  997. package/dist/lib/textures/texture.js.map +7 -0
  998. package/dist/lib/transitions/bifrost.d.ts +47 -0
  999. package/dist/lib/transitions/bifrost.js +91 -0
  1000. package/dist/lib/transitions/bifrost.js.map +7 -0
  1001. package/dist/lib/transitions/binding.d.ts +14 -0
  1002. package/dist/lib/transitions/binding.js +35 -0
  1003. package/dist/lib/transitions/binding.js.map +7 -0
  1004. package/dist/lib/transitions/capture.d.ts +21 -0
  1005. package/dist/lib/transitions/capture.js +91 -0
  1006. package/dist/lib/transitions/capture.js.map +7 -0
  1007. package/dist/lib/transitions/common.d.ts +130 -0
  1008. package/dist/lib/transitions/common.js +57 -0
  1009. package/dist/lib/transitions/common.js.map +7 -0
  1010. package/dist/lib/transitions/define-transition.d.ts +64 -0
  1011. package/dist/lib/transitions/define-transition.js +31 -0
  1012. package/dist/lib/transitions/define-transition.js.map +7 -0
  1013. package/dist/lib/transitions/embers-physics.d.ts +114 -0
  1014. package/dist/lib/transitions/embers-physics.js +161 -0
  1015. package/dist/lib/transitions/embers-physics.js.map +7 -0
  1016. package/dist/lib/transitions/embers.d.ts +67 -0
  1017. package/dist/lib/transitions/embers.js +196 -0
  1018. package/dist/lib/transitions/embers.js.map +7 -0
  1019. package/dist/lib/transitions/fade.d.ts +41 -0
  1020. package/dist/lib/transitions/fade.js +31 -0
  1021. package/dist/lib/transitions/fade.js.map +7 -0
  1022. package/dist/lib/transitions/hologram.d.ts +47 -0
  1023. package/dist/lib/transitions/hologram.js +94 -0
  1024. package/dist/lib/transitions/hologram.js.map +7 -0
  1025. package/dist/lib/transitions/wasm/bifrost-bytes.d.ts +1 -0
  1026. package/dist/lib/transitions/wasm/bifrost-bytes.js +5 -0
  1027. package/dist/lib/transitions/wasm/bifrost-bytes.js.map +7 -0
  1028. package/dist/lib/transitions/wasm/bifrost-kernel.d.ts +1 -0
  1029. package/dist/lib/transitions/wasm/bifrost-kernel.js +27 -0
  1030. package/dist/lib/transitions/wasm/bifrost-kernel.js.map +7 -0
  1031. package/dist/lib/transitions/wasm/embers-bytes.d.ts +1 -0
  1032. package/dist/lib/transitions/wasm/embers-bytes.js +5 -0
  1033. package/dist/lib/transitions/wasm/embers-bytes.js.map +7 -0
  1034. package/dist/lib/transitions/wasm/hologram-bytes.d.ts +1 -0
  1035. package/dist/lib/transitions/wasm/hologram-bytes.js +5 -0
  1036. package/dist/lib/transitions/wasm/hologram-bytes.js.map +7 -0
  1037. package/dist/lib/transitions/wasm/kernel.d.ts +7 -0
  1038. package/dist/lib/transitions/wasm/kernel.js +26 -0
  1039. package/dist/lib/transitions/wasm/kernel.js.map +7 -0
  1040. package/dist/lib/types.d.ts +570 -0
  1041. package/dist/lib/update.d.ts +8 -0
  1042. package/dist/lib/update.js +20 -0
  1043. package/dist/lib/update.js.map +7 -0
  1044. package/dist/lib/util/get-2d-context.d.ts +2 -0
  1045. package/dist/lib/util/get-2d-context.js +11 -0
  1046. package/dist/lib/util/get-2d-context.js.map +7 -0
  1047. package/dist/lib/util/get-mouse-coordinates.d.ts +2 -0
  1048. package/dist/lib/util/get-mouse-coordinates.js +32 -0
  1049. package/dist/lib/util/get-mouse-coordinates.js.map +7 -0
  1050. package/dist/lib/util/is-hit.d.ts +11 -0
  1051. package/dist/lib/util/is-hit.js +52 -0
  1052. package/dist/lib/util/is-hit.js.map +7 -0
  1053. package/dist/lib/util/is-transparent.d.ts +1 -0
  1054. package/dist/lib/util/is-transparent.js +8 -0
  1055. package/dist/lib/util/is-transparent.js.map +7 -0
  1056. package/dist/lib/util/pixel-grid-adjustments.d.ts +8 -0
  1057. package/dist/lib/util/pixel-grid-adjustments.js +28 -0
  1058. package/dist/lib/util/pixel-grid-adjustments.js.map +7 -0
  1059. package/dist/lib/util/push-clipping-path.d.ts +6 -0
  1060. package/dist/lib/util/push-clipping-path.js +28 -0
  1061. package/dist/lib/util/push-clipping-path.js.map +7 -0
  1062. package/dist/lib/util/wire-common-events.d.ts +2 -0
  1063. package/dist/lib/util/wire-common-events.js +15 -0
  1064. package/dist/lib/util/wire-common-events.js.map +7 -0
  1065. package/dist/types.d.ts +1 -0
  1066. package/dist/types.js +1 -0
  1067. package/dist/types.js.map +7 -0
  1068. package/dist/types.mjs +1 -0
  1069. package/package.json +149 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/features/particles/lib/system/controller.ts"],
4
+ "sourcesContent": ["import { getFlowController2D, type PibblFlowField2D } from \"../flow/hook.js\";\nimport { signal } from \"@pibbl/core\";\nimport {\n pibblInternalAssertCommandAllowed,\n pibblInternalQueueBegin,\n pibblInternalQueueCurrentCommit,\n pibblInternalQueueCurrentComplete,\n pibblInternalRegisterAdvance,\n type PibblInternalCommandHandle,\n type PibblInternalFrame,\n type PibblInternalRenderOwner,\n type PibblInternalSignalBatch,\n} from \"@pibbl/core/internal\";\nimport { parseParticleColor } from \"../color.js\";\nimport {\n compileParticleEffect2D,\n type CompiledEffect2D,\n type CompiledParameterEntry,\n} from \"../compiler.js\";\nimport { getParticleEffect2DRecord } from \"../definition-records.js\";\nimport { sampleBurstCount } from \"../emission.js\";\nimport type {\n PibblParticleBurstOverrides,\n PibblParticleEffect2D,\n PibblParticleExecution,\n PibblParticleSystem,\n PibblParticleSystemEvent,\n PibblParticleSystemOptions,\n PibblParticleSystemStatus,\n} from \"../types.js\";\nimport type {\n CompiledParticleEffect,\n ParticleBindingCandidate,\n ParticleBindingBurstResult,\n ParticleBindingFrameState,\n ParticleSystemFrame,\n} from \"./binding.js\";\nimport {\n recordParticleBindingAcquired,\n recordParticleCommandCreated,\n recordParticleParameterEpochCreated,\n recordParticleSchedulerRegistration,\n recordParticleSystemCreated,\n} from \"./ownership.js\";\n\ntype ParticleEffect = PibblParticleEffect2D;\n\nexport interface ParticleBindingObservers {\n readonly onEvent?: (event: PibblParticleSystemEvent) => void;\n readonly onError?: (error: unknown) => void;\n}\n\nexport interface ParticleBindingReservation {\n readonly owner: PibblInternalRenderOwner;\n readonly backend: \"canvas\";\n readonly token: object;\n}\n\nexport interface ParticleEffectCandidate {\n readonly effect: ParticleEffect;\n readonly compiled: CompiledParticleEffect;\n readonly options: PibblParticleSystemOptions;\n readonly debugName: string | undefined;\n}\n\ninterface ParameterEpoch {\n readonly id: number;\n readonly parameters: Float64Array;\n readonly releaseOwnership: () => void;\n references: number;\n}\n\ninterface AcceptedLifetime {\n readonly deathTime: number;\n readonly emitter: string;\n readonly epoch: number;\n count: number;\n}\n\ninterface ActiveBinding {\n readonly candidate: ParticleBindingCandidate;\n readonly owner: PibblInternalRenderOwner;\n readonly releaseOwnership: () => void;\n observers: ParticleBindingObservers;\n}\n\ninterface PendingCommand {\n readonly handle: PibblInternalCommandHandle;\n readonly releaseOwnership: () => void;\n}\n\ninterface Delivery {\n readonly frameId: number;\n readonly events: PibblParticleSystemEvent[];\n readonly errors: unknown[];\n commitApplied: boolean;\n commitCompleted: boolean;\n finalized: boolean;\n presentationOwner: PibblInternalRenderOwner | undefined;\n rendererSucceeded: boolean | undefined;\n stateBefore: ControllerStateSnapshot | undefined;\n resourcesBefore: ControllerResourceSnapshot | undefined;\n metadataAfter: ControllerMetadataSnapshot | undefined;\n metadataDeferred: boolean;\n publicationQueued: boolean;\n}\n\ninterface ControllerMetadataSnapshot {\n readonly status: PibblParticleSystemStatus;\n readonly execution: PibblParticleExecution;\n}\n\ninterface ControllerResourceSnapshot {\n readonly nextEpoch: number;\n readonly currentEpoch: number;\n readonly epochs: readonly Readonly<{\n id: number;\n parameters: Float64Array;\n references: number;\n }>[];\n readonly acceptedLifetimes: readonly AcceptedLifetime[];\n readonly liveByEmitter: ReadonlyMap<string, number>;\n readonly nextOrdinalByEmitter: ReadonlyMap<string, number>;\n readonly simulationParameters: Float64Array;\n readonly renderParameters: Float64Array;\n}\n\ninterface ControllerStateSnapshot {\n readonly status: PibblParticleSystemStatus;\n readonly execution: PibblParticleExecution;\n readonly generation: number;\n readonly seed: number;\n readonly effectTime: number;\n readonly previousEffectTime: number;\n readonly anchorEffectTime: number;\n readonly anchorLogicalTime: number;\n readonly startPending: boolean;\n readonly automaticClosed: boolean;\n readonly drainFinishTime: number;\n readonly pendingFrameAdoption: boolean;\n readonly bindingFrameState: ParticleBindingFrameState | undefined;\n}\n\nexport interface ParticleSystemControllerSnapshot {\n readonly disposed: boolean;\n readonly generation: number;\n readonly seed: number;\n readonly effectTimeMilliseconds: number;\n readonly previousEffectTimeMilliseconds: number;\n readonly binding: \"canvas\" | \"unbound\";\n readonly parameterEpochs: number;\n}\n\nexport interface ParticleSystemController {\n readonly flow: PibblFlowField2D | undefined;\n readonly handle: PibblParticleSystem;\n readonly compiled: CompiledParticleEffect;\n readonly bindingCandidate: ParticleBindingCandidate | undefined;\n readonly currentSpawnEpoch: number;\n readonly simulationParameters: Readonly<Float64Array>;\n readonly renderParameters: Readonly<Float64Array>;\n prepareEffect(\n effect: ParticleEffect,\n options?: PibblParticleSystemOptions,\n ): ParticleEffectCandidate;\n cancelEffect(candidate: ParticleEffectCandidate): void;\n adoptEffect(candidate: ParticleEffectCandidate): void;\n reserveBinding(\n owner: PibblInternalRenderOwner,\n backend: \"canvas\",\n ): ParticleBindingReservation;\n validateBindingCandidate(\n reservation: ParticleBindingReservation,\n candidate: ParticleBindingCandidate,\n ): void;\n cancelBindingReservation(\n reservation: ParticleBindingReservation | undefined,\n ): void;\n discardBindingCandidate(\n candidate: ParticleBindingCandidate,\n operation: string,\n ): void;\n adoptBinding(\n reservation: ParticleBindingReservation,\n candidate: ParticleBindingCandidate,\n observers?: ParticleBindingObservers,\n ): void;\n releaseBinding(\n owner: PibblInternalRenderOwner,\n candidate?: ParticleBindingCandidate,\n ): void;\n recordRendererTransaction(\n owner: PibblInternalRenderOwner,\n success: boolean,\n ): void;\n spawnParameters(epoch: number): Readonly<Float64Array>;\n retainSpawnEpoch(epoch: number, count?: number): void;\n releaseSpawnEpoch(epoch: number, count?: number): void;\n snapshot(): ParticleSystemControllerSnapshot;\n dispose(): void;\n}\n\nconst controllers = new WeakMap<PibblParticleSystem, ParticleSystemController>();\n\nfunction normalizeSeed(value: number | undefined): number {\n if (value === undefined) return 0;\n if (!Number.isFinite(value)) {\n throw new RangeError(\"Pibbl particle system seed must be finite.\");\n }\n return Math.trunc(value) >>> 0;\n}\n\nfunction validateOptions(options: PibblParticleSystemOptions): void {\n if (options.flow !== undefined) getFlowController2D(options.flow);\n if (options.autoplay !== undefined && typeof options.autoplay !== \"boolean\") {\n throw new TypeError(\"Pibbl particle system autoplay must be boolean.\");\n }\n normalizeSeed(options.seed);\n if (\n options.debugName !== undefined &&\n typeof options.debugName !== \"string\"\n ) {\n throw new TypeError(\"Pibbl particle system debugName must be a string.\");\n }\n if (options.onEvent !== undefined && typeof options.onEvent !== \"function\") {\n throw new TypeError(\"Pibbl particle system onEvent must be a function.\");\n }\n if (options.onError !== undefined && typeof options.onError !== \"function\") {\n throw new TypeError(\"Pibbl particle system onError must be a function.\");\n }\n}\n\nfunction compileEffect(effect: ParticleEffect): ParticleEffectCandidate {\n const record = getParticleEffect2DRecord(effect);\n return {\n effect,\n compiled: compileParticleEffect2D(effect),\n options: {},\n debugName: record.debugName,\n };\n}\n\nfunction parameterValuesEqual(\n left: Readonly<Float64Array>,\n right: Readonly<Float64Array>,\n mask?: Readonly<Uint8Array>,\n): boolean {\n if (left.length !== right.length) return false;\n for (let index = 0; index < left.length; index += 1) {\n if (\n (mask === undefined || mask[index] === 1) &&\n left[index] !== right[index]\n ) {\n return false;\n }\n }\n return true;\n}\n\nfunction copyParameters(parameters: Readonly<Float64Array>): Float64Array {\n return new Float64Array(parameters);\n}\n\nfunction validateParameterArray(\n compiled: CompiledParticleEffect,\n parameters: Readonly<Float64Array>,\n): void {\n if (!(parameters instanceof Float64Array)) {\n throw new TypeError(\n \"Pibbl particle binding parameters must be a Float64Array.\",\n );\n }\n if (parameters.length !== compiled.parameterLayout.defaults.length) {\n throw new RangeError(\n `Pibbl particle binding parameter length must be ${compiled.parameterLayout.defaults.length}; received ${parameters.length}.`,\n );\n }\n for (let index = 0; index < parameters.length; index += 1) {\n if (!Number.isFinite(parameters[index])) {\n throw new RangeError(\n `Pibbl particle binding parameter at offset ${index} must be finite.`,\n );\n }\n }\n}\n\nfunction eventRecord(\n type: PibblParticleSystemEvent[\"type\"],\n frame: PibblInternalFrame,\n effect: string | undefined,\n fields: Readonly<Record<string, unknown>> = {},\n): PibblParticleSystemEvent {\n return Object.freeze({\n type,\n frameId: frame.frameId,\n logicalTime: frame.logicalTime,\n ...(effect === undefined ? {} : { effect }),\n ...fields,\n }) as PibblParticleSystemEvent;\n}\n\nfunction diagnosticRecord(\n type: string,\n message: string,\n frame: PibblInternalFrame,\n effect: string | undefined,\n fields: Readonly<Record<string, unknown>> = {},\n): unknown {\n return Object.freeze({\n type,\n message,\n frameId: frame.frameId,\n logicalTime: frame.logicalTime,\n ...(effect === undefined ? {} : { effect }),\n ...fields,\n });\n}\n\nfunction aggregateObserverFailures(failures: readonly unknown[]): never {\n const messages = failures.map((error) =>\n error instanceof Error ? error.message : String(error),\n );\n throw new AggregateError(\n failures,\n `Pibbl particle observer failed: ${messages.join(\"; \")}`,\n );\n}\n\n/** Creates one hook-owned particle controller over the realm scheduler. */\nexport function createParticleSystemController(\n owner: PibblInternalRenderOwner,\n initialEffect: ParticleEffect,\n initialOptions: PibblParticleSystemOptions = {},\n): ParticleSystemController {\n validateOptions(initialOptions);\n const initial = compileEffect(initialEffect);\n let compiled = initial.compiled;\n let effectDebugName = initial.debugName;\n let options = Object.freeze({ ...initialOptions });\n let originalSeed = normalizeSeed(initialOptions.seed);\n let seed = originalSeed;\n let disposed = false;\n let statusState: PibblParticleSystemStatus = \"idle\";\n let executionState: PibblParticleExecution = \"unbound\";\n let generation = 0;\n let effectTime = 0;\n let previousEffectTime = 0;\n let anchorEffectTime = 0;\n let anchorLogicalTime = 0;\n let startPending = false;\n let automaticClosed = false;\n let drainFinishTime = 0;\n let pendingFrameAdoption = false;\n let bindingFrameState: ParticleBindingFrameState | undefined;\n let activeBinding: ActiveBinding | undefined;\n let reservation: ParticleBindingReservation | undefined;\n let unregisterAdvance: (() => void) | undefined;\n const deliveries: Delivery[] = [];\n let metadataPublication: Delivery | undefined;\n let nextEpoch = 0;\n let currentEpoch = 0;\n let simulationParameters = copyParameters(compiled.parameterLayout.defaults);\n let renderParameters = copyParameters(compiled.parameterLayout.defaults);\n const epochs = new Map<number, ParameterEpoch>();\n const acceptedLifetimes: AcceptedLifetime[] = [];\n const liveByEmitter = new Map<string, number>();\n const nextOrdinalByEmitter = new Map<string, number>();\n const pendingCommands = new Set<PendingCommand>();\n const retiredCandidates = new Set<ParticleBindingCandidate>();\n const metadataWriter = Object.freeze({\n name: \"Pibbl particle system metadata\",\n });\n const releaseSystemOwnership = recordParticleSystemCreated();\n const statusSignal = signal<PibblParticleSystemStatus>(\"idle\", {\n debugName:\n initialOptions.debugName === undefined\n ? undefined\n : `${initialOptions.debugName} status`,\n });\n const executionSignal = signal<PibblParticleExecution>(\"unbound\", {\n debugName:\n initialOptions.debugName === undefined\n ? undefined\n : `${initialOptions.debugName} execution`,\n });\n\n function releaseEpoch(epoch: ParameterEpoch): void {\n if (!epochs.delete(epoch.id)) return;\n epoch.releaseOwnership();\n }\n\n function releaseAllEpochs(): void {\n for (const epoch of Array.from(epochs.values())) releaseEpoch(epoch);\n currentEpoch = 0;\n }\n\n function releaseInactiveEpochs(): void {\n for (const epoch of Array.from(epochs.values())) {\n if (epoch.id !== currentEpoch && epoch.references === 0) {\n releaseEpoch(epoch);\n }\n }\n }\n\n function createEpoch(parameters: Readonly<Float64Array>): number {\n const id = ++nextEpoch;\n epochs.set(id, {\n id,\n parameters: copyParameters(parameters),\n references: 0,\n releaseOwnership: recordParticleParameterEpochCreated(),\n });\n return id;\n }\n\n function adoptParameters(parameters: Readonly<Float64Array>): void {\n validateParameterArray(compiled, parameters);\n const previous = epochs.get(currentEpoch);\n if (\n previous === undefined ||\n !parameterValuesEqual(\n previous.parameters,\n parameters,\n compiled.parameterLayout.spawnMask,\n )\n ) {\n currentEpoch = createEpoch(parameters);\n }\n simulationParameters = copyParameters(parameters);\n renderParameters = copyParameters(parameters);\n }\n\n function pruneEpoch(epoch: ParameterEpoch): void {\n if (epoch.id !== currentEpoch && epoch.references === 0)\n releaseEpoch(epoch);\n }\n\n function retainEpoch(epochId: number, count: number): void {\n const epoch = epochs.get(epochId);\n if (epoch === undefined) {\n throw new RangeError(\n `Pibbl particle system received unknown parameter epoch ${epochId}.`,\n );\n }\n if (!Number.isSafeInteger(count) || count <= 0) {\n throw new RangeError(\n \"Pibbl particle epoch retain count must be a positive safe integer.\",\n );\n }\n epoch.references += count;\n }\n\n function releaseEpochReferences(epochId: number, count: number): void {\n const epoch = epochs.get(epochId);\n if (epoch === undefined) {\n throw new RangeError(\n `Pibbl particle system received unknown parameter epoch ${epochId}.`,\n );\n }\n if (\n !Number.isSafeInteger(count) ||\n count <= 0 ||\n count > epoch.references\n ) {\n throw new RangeError(\n \"Pibbl particle epoch release exceeds its retained references.\",\n );\n }\n epoch.references -= count;\n pruneEpoch(epoch);\n }\n\n function ensureDelivery(frame: PibblInternalFrame): Delivery {\n const latest = deliveries.at(-1);\n if (latest?.frameId === frame.frameId && !latest.finalized) return latest;\n const pendingPresentation = deliveries.findLast(\n (candidate) =>\n !candidate.finalized &&\n candidate.presentationOwner !== undefined &&\n candidate.rendererSucceeded === undefined,\n );\n const current: Delivery = {\n frameId: frame.frameId,\n events: [],\n errors: [],\n commitApplied: false,\n commitCompleted: false,\n finalized: false,\n presentationOwner: pendingPresentation?.presentationOwner,\n rendererSucceeded: undefined,\n stateBefore: undefined,\n resourcesBefore: undefined,\n metadataAfter: undefined,\n metadataDeferred: false,\n publicationQueued: false,\n };\n deliveries.push(current);\n pibblInternalQueueCurrentCommit(owner, (_commitFrame, outcome) => {\n current.commitApplied = outcome.applied;\n });\n pibblInternalQueueCurrentComplete(owner, () => {\n current.commitCompleted = true;\n finalizeDeliveryIfReady(current);\n });\n return current;\n }\n\n function removeDelivery(current: Delivery): void {\n current.finalized = true;\n const index = deliveries.indexOf(current);\n if (index >= 0) deliveries.splice(index, 1);\n }\n\n function deliverRecords(\n events: readonly PibblParticleSystemEvent[],\n errors: readonly unknown[],\n ): void {\n const failures: unknown[] = [];\n for (const event of events) {\n try {\n options.onEvent?.(event);\n } catch (error) {\n failures.push(error);\n }\n try {\n activeBinding?.observers.onEvent?.(event);\n } catch (error) {\n failures.push(error);\n }\n }\n for (const error of errors) {\n let observed = false;\n if (options.onError !== undefined) {\n observed = true;\n try {\n options.onError(error);\n } catch (observerError) {\n failures.push(observerError);\n }\n }\n if (activeBinding?.observers.onError !== undefined) {\n observed = true;\n try {\n activeBinding.observers.onError(error);\n } catch (observerError) {\n failures.push(observerError);\n }\n }\n if (!observed) failures.push(error);\n }\n if (failures.length > 0) aggregateObserverFailures(failures);\n }\n\n function deliver(current: Delivery): void {\n deliverRecords(current.events, current.errors);\n }\n\n function rollbackDelivery(current: Delivery): void {\n if (current.resourcesBefore !== undefined) {\n restoreResourceSnapshot(current.resourcesBefore);\n }\n if (current.stateBefore !== undefined) restoreState(current.stateBefore);\n executionState = activeBinding?.candidate.execution ?? \"unbound\";\n }\n\n function failDeliveryCascade(current: Delivery): void {\n const index = deliveries.indexOf(current);\n if (index < 0) return;\n for (const failed of deliveries.slice(index)) removeDelivery(failed);\n rollbackDelivery(current);\n }\n\n function queueMetadataPublication(current: Delivery): void {\n if (\n current.publicationQueued ||\n current.metadataAfter === undefined ||\n metadataPublication !== undefined\n )\n return;\n current.publicationQueued = true;\n metadataPublication = current;\n const metadata = current.metadataAfter;\n enqueue((_frame, batch) => {\n if (current.finalized) {\n if (metadataPublication === current) metadataPublication = undefined;\n queueNextMetadataPublication();\n return;\n }\n stageMetadata(batch, metadata, current);\n let applied = false;\n pibblInternalQueueCurrentCommit(owner, (_commitFrame, outcome) => {\n applied = outcome.applied;\n });\n pibblInternalQueueCurrentComplete(owner, () => {\n if (metadataPublication === current) metadataPublication = undefined;\n if (current.finalized) {\n queueNextMetadataPublication();\n return;\n }\n if (!applied) {\n failDeliveryCascade(current);\n return;\n }\n removeDelivery(current);\n try {\n if (!disposed) deliver(current);\n } finally {\n queueNextMetadataPublication();\n }\n });\n });\n }\n\n function queueNextMetadataPublication(): void {\n if (disposed || metadataPublication !== undefined) return;\n const next = deliveries.find(\n (current) =>\n !current.finalized &&\n current.metadataDeferred &&\n !current.publicationQueued &&\n current.metadataAfter !== undefined &&\n current.commitCompleted &&\n current.commitApplied &&\n (current.presentationOwner === undefined ||\n current.rendererSucceeded === true),\n );\n if (next !== undefined) queueMetadataPublication(next);\n }\n\n function metadataMatchesPrecedingSnapshot(current: Delivery): boolean {\n const metadata = current.metadataAfter;\n if (metadata === undefined) return true;\n const index = deliveries.indexOf(current);\n for (\n let precedingIndex = index - 1;\n precedingIndex >= 0;\n precedingIndex--\n ) {\n const preceding = deliveries[precedingIndex];\n if (preceding?.finalized || preceding?.metadataAfter === undefined)\n continue;\n return (\n preceding.metadataAfter.status === metadata.status &&\n preceding.metadataAfter.execution === metadata.execution\n );\n }\n return (\n statusSignal.get() === metadata.status &&\n executionSignal.get() === metadata.execution\n );\n }\n\n function finalizeDeliveryIfReady(current: Delivery): void {\n if (current.finalized || !current.commitCompleted) return;\n if (!current.commitApplied) {\n failDeliveryCascade(current);\n return;\n }\n if (\n current.presentationOwner !== undefined &&\n current.rendererSucceeded === undefined\n ) {\n return;\n }\n if (current.rendererSucceeded === false) {\n removeDelivery(current);\n rollbackDelivery(current);\n return;\n }\n if (current.metadataDeferred) {\n if (\n current.events.length === 0 &&\n current.errors.length === 0 &&\n metadataMatchesPrecedingSnapshot(current)\n ) {\n removeDelivery(current);\n return;\n }\n queueMetadataPublication(current);\n return;\n }\n removeDelivery(current);\n if (!disposed) deliver(current);\n }\n\n function requirePresentation(\n frame: PibblInternalFrame,\n bindingOwner: PibblInternalRenderOwner,\n ): void {\n const current = ensureDelivery(frame);\n if (\n current.presentationOwner !== undefined &&\n current.presentationOwner !== bindingOwner\n ) {\n throw new Error(\n \"A Pibbl particle frame cannot target multiple renderer owners.\",\n );\n }\n current.presentationOwner = bindingOwner;\n }\n\n function failRendererTransactions(\n bindingOwner: PibblInternalRenderOwner,\n ): void {\n const failed = deliveries.filter(\n (current) =>\n !current.finalized &&\n current.presentationOwner === bindingOwner &&\n current.rendererSucceeded === undefined,\n );\n if (failed.length === 0) return;\n const earliest = failed[0]!;\n for (const current of failed) removeDelivery(current);\n rollbackDelivery(earliest);\n }\n\n function queueEvent(\n frame: PibblInternalFrame,\n type: PibblParticleSystemEvent[\"type\"],\n fields?: Readonly<Record<string, unknown>>,\n ): void {\n ensureDelivery(frame).events.push(\n eventRecord(type, frame, effectDebugName, fields),\n );\n }\n\n function queueError(frame: PibblInternalFrame, error: unknown): void {\n ensureDelivery(frame).errors.push(error);\n }\n\n function queueIsolatedError(error: unknown): void {\n enqueue((_frame, _batch) => {\n let applied = false;\n pibblInternalQueueCurrentCommit(owner, (_commitFrame, outcome) => {\n applied = outcome.applied;\n });\n pibblInternalQueueCurrentComplete(owner, () => {\n if (applied && !disposed) deliverRecords([], [error]);\n });\n });\n }\n\n function failCurrentDelivery(\n frame: PibblInternalFrame,\n error: unknown,\n operation: string,\n ): void {\n const current = ensureDelivery(frame);\n failDeliveryCascade(current);\n const diagnostic = diagnosticRecord(\n \"execution-failed\",\n error instanceof Error ? error.message : String(error),\n frame,\n effectDebugName,\n { operation },\n );\n pibblInternalQueueCurrentComplete(owner, () => {\n if (!disposed) queueIsolatedError(diagnostic);\n });\n }\n\n function disposeRendererCandidate(\n candidate: ParticleBindingCandidate,\n operation: string,\n ): void {\n try {\n candidate.dispose();\n retiredCandidates.delete(candidate);\n } catch (error) {\n retiredCandidates.add(candidate);\n if (disposed) return;\n enqueue((frame, batch) => {\n transaction(frame, batch, () => {\n queueError(\n frame,\n diagnosticRecord(\n \"execution-failed\",\n error instanceof Error ? error.message : String(error),\n frame,\n effectDebugName,\n { operation },\n ),\n );\n });\n });\n }\n }\n\n function snapshotMetadata(): ControllerMetadataSnapshot {\n return { status: statusState, execution: executionState };\n }\n\n function stageMetadata(\n batch: PibblInternalSignalBatch,\n metadata: ControllerMetadataSnapshot = snapshotMetadata(),\n writer: object = metadataWriter,\n ): void {\n batch.stage(statusSignal, metadata.status, writer);\n batch.stage(executionSignal, metadata.execution, writer);\n }\n\n function snapshotState(): ControllerStateSnapshot {\n return {\n status: statusState,\n execution: executionState,\n generation,\n seed,\n effectTime,\n previousEffectTime,\n anchorEffectTime,\n anchorLogicalTime,\n startPending,\n automaticClosed,\n drainFinishTime,\n pendingFrameAdoption,\n bindingFrameState,\n };\n }\n\n function snapshotResources(): ControllerResourceSnapshot {\n return {\n nextEpoch,\n currentEpoch,\n epochs: Array.from(epochs.values(), (epoch) => ({\n id: epoch.id,\n parameters: copyParameters(epoch.parameters),\n references: epoch.references,\n })),\n acceptedLifetimes: acceptedLifetimes.map((accepted) => ({\n ...accepted,\n })),\n liveByEmitter: new Map(liveByEmitter),\n nextOrdinalByEmitter: new Map(nextOrdinalByEmitter),\n simulationParameters: copyParameters(simulationParameters),\n renderParameters: copyParameters(renderParameters),\n };\n }\n\n function restoreResourceSnapshot(snapshot: ControllerResourceSnapshot): void {\n releaseAllEpochs();\n nextEpoch = snapshot.nextEpoch;\n currentEpoch = snapshot.currentEpoch;\n for (const saved of snapshot.epochs) {\n epochs.set(saved.id, {\n id: saved.id,\n parameters: copyParameters(saved.parameters),\n references: saved.references,\n releaseOwnership: recordParticleParameterEpochCreated(),\n });\n }\n acceptedLifetimes.length = 0;\n acceptedLifetimes.push(\n ...snapshot.acceptedLifetimes.map((accepted) => ({ ...accepted })),\n );\n liveByEmitter.clear();\n for (const [name, count] of snapshot.liveByEmitter) {\n liveByEmitter.set(name, count);\n }\n nextOrdinalByEmitter.clear();\n for (const [name, ordinal] of snapshot.nextOrdinalByEmitter) {\n nextOrdinalByEmitter.set(name, ordinal);\n }\n simulationParameters = copyParameters(snapshot.simulationParameters);\n renderParameters = copyParameters(snapshot.renderParameters);\n }\n\n function restoreState(snapshot: ControllerStateSnapshot): void {\n statusState = snapshot.status;\n executionState = snapshot.execution;\n generation = snapshot.generation;\n seed = snapshot.seed;\n effectTime = snapshot.effectTime;\n previousEffectTime = snapshot.previousEffectTime;\n anchorEffectTime = snapshot.anchorEffectTime;\n anchorLogicalTime = snapshot.anchorLogicalTime;\n startPending = snapshot.startPending;\n automaticClosed = snapshot.automaticClosed;\n drainFinishTime = snapshot.drainFinishTime;\n pendingFrameAdoption = snapshot.pendingFrameAdoption;\n bindingFrameState = snapshot.bindingFrameState;\n synchronizeAdvanceRegistration();\n }\n\n function transaction(\n frame: PibblInternalFrame,\n batch: PibblInternalSignalBatch,\n mutate: () => void,\n ): void {\n const current = ensureDelivery(frame);\n current.stateBefore ??= snapshotState();\n current.resourcesBefore ??= snapshotResources();\n mutate();\n if (current.finalized) return;\n if (\n current.presentationOwner === undefined &&\n activeBinding !== undefined &&\n shouldAdvance()\n ) {\n requirePresentation(frame, activeBinding.owner);\n }\n current.metadataAfter = snapshotMetadata();\n if (\n current.presentationOwner === undefined &&\n metadataPublication === undefined\n ) {\n stageMetadata(batch, current.metadataAfter);\n } else {\n current.metadataDeferred = true;\n batch.discardWriter(metadataWriter);\n }\n }\n\n function maximumLifetimeMilliseconds(): number {\n let maximum = 0;\n const epoch = epochs.get(currentEpoch)?.parameters ?? simulationParameters;\n for (const emitter of compiled.emitters) {\n const lifetime = emitter.maximumLifetime;\n maximum = Math.max(\n maximum,\n lifetime.kind === \"fixed\"\n ? lifetime.milliseconds\n : epoch[lifetime.offset]!,\n );\n }\n return maximum;\n }\n\n function finiteCompletionMilliseconds(): number | undefined {\n let completion = 0;\n for (const emitter of compiled.emitters) {\n if (emitter.emission.completion !== \"finite\") return undefined;\n const latest = emitter.emission.latestAutomaticBirthMilliseconds;\n if (latest === null) continue;\n const lifetime = emitter.maximumLifetime;\n const lifetimeMilliseconds =\n lifetime.kind === \"fixed\"\n ? lifetime.milliseconds\n : (epochs.get(currentEpoch)?.parameters[lifetime.offset] ??\n simulationParameters[lifetime.offset]!);\n completion = Math.max(completion, latest + lifetimeMilliseconds);\n }\n return completion;\n }\n\n function hasOpenAutomaticEmission(): boolean {\n if (automaticClosed) return false;\n return compiled.emitters.some(\n (emitter) =>\n emitter.emission.rates.length > 0 || emitter.emission.bursts.length > 0,\n );\n }\n\n function shouldAdvance(): boolean {\n if (activeBinding === undefined || disposed) return false;\n if (pendingFrameAdoption) return true;\n if (statusState === \"running\") {\n if (bindingFrameState !== undefined) {\n return (\n bindingFrameState.nextAutomaticBirthMilliseconds !== null ||\n bindingFrameState.liveCount > 0\n );\n }\n return (\n hasOpenAutomaticEmission() ||\n acceptedLifetimes.length > 0 ||\n finiteCompletionMilliseconds() !== undefined\n );\n }\n return (\n statusState === \"draining\" &&\n (bindingFrameState === undefined || bindingFrameState.liveCount > 0)\n );\n }\n\n function synchronizeAdvanceRegistration(): void {\n if (shouldAdvance()) {\n if (unregisterAdvance === undefined) {\n const releaseFlow = options.flow === undefined ? undefined : getFlowController2D(options.flow).retain();\n const unregister = pibblInternalRegisterAdvance(owner, advance);\n const releaseOwnership = recordParticleSchedulerRegistration();\n unregisterAdvance = () => {\n unregister();\n releaseFlow?.();\n releaseOwnership();\n };\n }\n } else if (unregisterAdvance !== undefined) {\n unregisterAdvance();\n unregisterAdvance = undefined;\n }\n }\n\n function releaseExpired(effectTimeMilliseconds: number): void {\n let writeIndex = 0;\n for (let index = 0; index < acceptedLifetimes.length; index += 1) {\n const accepted = acceptedLifetimes[index]!;\n if (accepted.deathTime <= effectTimeMilliseconds) {\n liveByEmitter.set(\n accepted.emitter,\n Math.max(\n 0,\n (liveByEmitter.get(accepted.emitter) ?? 0) - accepted.count,\n ),\n );\n releaseEpochReferences(accepted.epoch, accepted.count);\n } else {\n acceptedLifetimes[writeIndex++] = accepted;\n }\n }\n acceptedLifetimes.length = writeIndex;\n }\n\n function releaseAcceptedLifetimes(): void {\n for (const accepted of acceptedLifetimes) {\n const epoch = epochs.get(accepted.epoch);\n if (epoch !== undefined) {\n epoch.references = Math.max(0, epoch.references - accepted.count);\n pruneEpoch(epoch);\n }\n }\n acceptedLifetimes.length = 0;\n liveByEmitter.clear();\n }\n\n function startRun(frame: PibblInternalFrame, nextSeed: number): void {\n generation += 1;\n seed = nextSeed;\n effectTime = 0;\n previousEffectTime = 0;\n anchorEffectTime = 0;\n anchorLogicalTime = frame.logicalTime;\n automaticClosed = false;\n drainFinishTime = 0;\n pendingFrameAdoption = true;\n bindingFrameState = undefined;\n startPending = true;\n nextOrdinalByEmitter.clear();\n if (activeBinding === undefined) {\n statusState = \"scheduled\";\n return;\n }\n statusState = \"running\";\n startPending = false;\n queueEvent(frame, \"start\");\n }\n\n function resetRunStorage(frame: PibblInternalFrame): boolean {\n try {\n const cleared = activeBinding?.candidate.clear();\n if (cleared !== undefined) bindingFrameState = cleared;\n } catch (error) {\n queueError(\n frame,\n diagnosticRecord(\n \"execution-failed\",\n error instanceof Error ? error.message : String(error),\n frame,\n effectDebugName,\n { operation: \"clear-binding\" },\n ),\n );\n return false;\n }\n releaseAcceptedLifetimes();\n nextOrdinalByEmitter.clear();\n return true;\n }\n\n function effectTimeAt(logicalTime: number): number {\n if (statusState === \"paused\") return effectTime;\n return anchorEffectTime + Math.max(0, logicalTime - anchorLogicalTime);\n }\n\n function finishRun(frame: PibblInternalFrame): void {\n if (statusState === \"finished\") return;\n statusState = \"finished\";\n automaticClosed = true;\n queueEvent(frame, \"finish\");\n }\n\n function advance(\n frame: PibblInternalFrame,\n batch: PibblInternalSignalBatch,\n ): void {\n if (disposed || activeBinding === undefined) return;\n transaction(frame, batch, () => {\n const binding = activeBinding!;\n previousEffectTime = effectTime;\n effectTime = effectTimeAt(frame.logicalTime);\n if (bindingFrameState === undefined) releaseExpired(effectTime);\n const particleFrame: ParticleSystemFrame = Object.freeze({\n generation,\n frameId: frame.frameId,\n logicalTime: frame.logicalTime,\n effectTimeMilliseconds: effectTime,\n previousEffectTimeMilliseconds: previousEffectTime,\n seed,\n status: statusState,\n });\n try {\n const adopted = binding.candidate.adoptFrame(particleFrame);\n if (adopted !== undefined) bindingFrameState = adopted;\n } catch (error) {\n failCurrentDelivery(frame, error, \"adopt-frame\");\n return;\n }\n if (bindingFrameState !== undefined) {\n if (\n statusState === \"running\" &&\n compiled.emitters.every(\n (emitter) => emitter.emission.completion === \"finite\",\n ) &&\n bindingFrameState.nextAutomaticBirthMilliseconds === null &&\n bindingFrameState.liveCount === 0\n ) {\n finishRun(frame);\n } else if (\n statusState === \"draining\" &&\n bindingFrameState.liveCount === 0\n ) {\n finishRun(frame);\n }\n } else if (statusState === \"running\") {\n const completion = finiteCompletionMilliseconds();\n if (completion !== undefined && effectTime >= completion)\n finishRun(frame);\n } else if (\n statusState === \"draining\" &&\n effectTime >= drainFinishTime &&\n acceptedLifetimes.length === 0\n ) {\n finishRun(frame);\n }\n try {\n binding.candidate.requestRender();\n } catch (error) {\n failCurrentDelivery(frame, error, \"request-render\");\n return;\n }\n requirePresentation(frame, binding.owner);\n pendingFrameAdoption = false;\n synchronizeAdvanceRegistration();\n });\n }\n\n function cancelPendingCommands(): void {\n for (const pending of Array.from(pendingCommands)) {\n pending.handle.cancel();\n pending.releaseOwnership();\n }\n pendingCommands.clear();\n }\n\n function enqueue(\n apply: (frame: PibblInternalFrame, batch: PibblInternalSignalBatch) => void,\n ): void {\n if (disposed) return;\n const releaseOwnership = recordParticleCommandCreated();\n let pending!: PendingCommand;\n try {\n const handle = pibblInternalQueueBegin(owner, (frame, batch) => {\n pendingCommands.delete(pending);\n releaseOwnership();\n if (!disposed) apply(frame, batch);\n });\n pending = { handle, releaseOwnership };\n pendingCommands.add(pending);\n } catch (error) {\n releaseOwnership();\n throw error;\n }\n }\n\n function emitterByName(name: string) {\n return compiled.emitters.find((emitter) => emitter.name === name);\n }\n\n function emitterIndexByName(name: string): number {\n for (let index = 0; index < compiled.emitters.length; index += 1) {\n if (compiled.emitters[index]?.name === name) return index;\n }\n return -1;\n }\n\n function validatePositiveCount(count: number | undefined): void {\n if (count !== undefined && (!Number.isSafeInteger(count) || count <= 0)) {\n throw new RangeError(\n \"Pibbl particle burst count must be a positive safe integer.\",\n );\n }\n }\n\n function validateFiniteVector(\n name: string,\n value: readonly number[] | undefined,\n dimension: number,\n ): void {\n if (value === undefined) return;\n if (\n !Array.isArray(value) ||\n value.length !== dimension ||\n value.some((entry) => !Number.isFinite(entry))\n ) {\n throw new RangeError(\n `Pibbl particle burst ${name} must be a finite ${dimension}-dimensional vector.`,\n );\n }\n }\n\n function writeParameterOverride(\n output: Float64Array,\n entry: CompiledParameterEntry,\n value: number | readonly number[] | string,\n ): void {\n if (entry.timing !== \"spawn\") {\n throw new TypeError(\n `Pibbl particle burst parameter \"${entry.name}\" must use spawn timing.`,\n );\n }\n const numeric =\n entry.type === \"color\"\n ? typeof value === \"string\"\n ? parseParticleColor(value)\n : undefined\n : entry.length === 1\n ? typeof value === \"number\"\n ? [value]\n : undefined\n : Array.isArray(value)\n ? value\n : undefined;\n if (\n numeric === undefined ||\n numeric.length !== entry.length ||\n numeric.some((component) => !Number.isFinite(component))\n ) {\n throw new TypeError(\n `Pibbl particle burst parameter \"${entry.name}\" does not match ${entry.type}.`,\n );\n }\n output.set(numeric, entry.offset);\n }\n\n function validateBurst(\n emitterName: string,\n overrides: PibblParticleBurstOverrides,\n ): Readonly<Float64Array> | undefined {\n const emitter = emitterByName(emitterName);\n if (emitter === undefined) {\n throw new TypeError(\n `Pibbl particle system received unknown emitter \"${emitterName}\".`,\n );\n }\n if (emitter.emission.manual.length === 0) {\n throw new TypeError(\n `Pibbl particle emitter \"${emitterName}\" has no manual emission source.`,\n );\n }\n validatePositiveCount(overrides.count);\n validateFiniteVector(\"position\", overrides.position, compiled.dimension);\n if (\n overrides.seedSalt !== undefined &&\n !Number.isFinite(overrides.seedSalt)\n ) {\n throw new RangeError(\"Pibbl particle burst seedSalt must be finite.\");\n }\n if (overrides.parameters !== undefined) {\n const values = copyParameters(\n epochs.get(currentEpoch)?.parameters ?? simulationParameters,\n );\n for (const [name, value] of Object.entries(overrides.parameters)) {\n const entry = compiled.parameterLayout.byName.get(name);\n if (entry === undefined) {\n throw new TypeError(\n `Pibbl particle burst references unknown parameter \"${name}\".`,\n );\n }\n writeParameterOverride(values, entry, value);\n }\n return values;\n }\n return undefined;\n }\n\n function requestedBurstCount(\n emitter: CompiledEffect2D[\"emitters\"][number],\n override: number | undefined,\n ): number {\n if (override !== undefined) return override;\n let requested = 0;\n let ordinal = nextOrdinalByEmitter.get(emitter.name) ?? 0;\n for (const manual of emitter.emission.manual) {\n requested += sampleBurstCount(\n manual,\n seed,\n emitter.emitterHash,\n ordinal++,\n );\n }\n return requested;\n }\n\n function acceptBurst(\n emitterName: string,\n overrides: PibblParticleBurstOverrides,\n overrideParameters: Readonly<Float64Array> | undefined,\n frame: PibblInternalFrame,\n ): void {\n const emitter = emitterByName(emitterName)!;\n const emitterIndex = emitterIndexByName(emitterName);\n const requested =\n activeBinding?.candidate.requestedBurstCount?.(\n emitterIndex,\n overrides.count,\n seed,\n ) ?? requestedBurstCount(emitter, overrides.count);\n if (\n statusState === \"paused\" ||\n statusState === \"draining\" ||\n statusState === \"finished\" ||\n activeBinding === undefined\n ) {\n const reason = statusState === \"paused\" ? \"paused\" : \"stopped\";\n queueEvent(frame, \"burst-rejected\", {\n emitter: emitterName,\n requested,\n accepted: 0,\n reason,\n });\n return;\n }\n if (statusState === \"idle\") startRun(frame, seed);\n if (activeBinding?.candidate.emitBurst !== undefined) {\n const currentParameters = epochs.get(currentEpoch)!.parameters;\n const epoch =\n overrideParameters !== undefined &&\n !parameterValuesEqual(\n currentParameters,\n overrideParameters,\n compiled.parameterLayout.spawnMask,\n )\n ? createEpoch(overrideParameters)\n : currentEpoch;\n let result: ParticleBindingBurstResult;\n try {\n result = activeBinding.candidate.emitBurst({\n generation,\n emitterIndex,\n count: overrides.count,\n birthTimeMilliseconds: effectTimeAt(frame.logicalTime),\n seed,\n seedSalt: Math.trunc(overrides.seedSalt ?? 0) >>> 0,\n origin: overrides.position ?? ([0, 0] as const),\n spawnEpoch: epoch,\n });\n } catch (error) {\n if (epoch !== currentEpoch) releaseEpoch(epochs.get(epoch)!);\n failCurrentDelivery(frame, error, \"emit-burst\");\n return;\n }\n bindingFrameState = result;\n if (result.accepted === 0 && epoch !== currentEpoch) {\n releaseEpoch(epochs.get(epoch)!);\n }\n const exactRequested = result.requested;\n if (result.accepted > 0) {\n queueEvent(frame, \"burst-accepted\", {\n emitter: emitterName,\n requested: exactRequested,\n accepted: result.accepted,\n });\n } else {\n queueEvent(frame, \"burst-rejected\", {\n emitter: emitterName,\n requested: exactRequested,\n accepted: 0,\n reason: \"capacity\",\n });\n }\n if (result.rejected > 0) {\n queueError(\n frame,\n diagnosticRecord(\n \"capacity-rejected\",\n `Pibbl particle emitter \"${emitterName}\" accepted ${result.accepted} of ${exactRequested} requested particles.`,\n frame,\n effectDebugName,\n {\n emitter: emitterName,\n requested: exactRequested,\n accepted: result.accepted,\n },\n ),\n );\n }\n synchronizeAdvanceRegistration();\n return;\n }\n const live = liveByEmitter.get(emitterName) ?? 0;\n const available = Math.max(0, emitter.capacity - live);\n const accepted = Math.min(requested, available);\n if (accepted > 0) {\n const currentParameters = epochs.get(currentEpoch)!.parameters;\n const epoch =\n overrideParameters !== undefined &&\n !parameterValuesEqual(\n currentParameters,\n overrideParameters,\n compiled.parameterLayout.spawnMask,\n )\n ? createEpoch(overrideParameters)\n : currentEpoch;\n retainEpoch(epoch, accepted);\n acceptedLifetimes.push({\n deathTime:\n effectTimeAt(frame.logicalTime) +\n (emitter.maximumLifetime.kind === \"fixed\"\n ? emitter.maximumLifetime.milliseconds\n : epochs.get(epoch)!.parameters[emitter.maximumLifetime.offset]!),\n emitter: emitterName,\n epoch,\n count: accepted,\n });\n liveByEmitter.set(emitterName, live + accepted);\n nextOrdinalByEmitter.set(\n emitterName,\n (nextOrdinalByEmitter.get(emitterName) ?? 0) + requested,\n );\n queueEvent(frame, \"burst-accepted\", {\n emitter: emitterName,\n requested,\n accepted,\n });\n } else {\n queueEvent(frame, \"burst-rejected\", {\n emitter: emitterName,\n requested,\n accepted: 0,\n reason: \"capacity\",\n });\n }\n if (accepted < requested) {\n queueError(\n frame,\n diagnosticRecord(\n \"capacity-rejected\",\n `Pibbl particle emitter \"${emitterName}\" accepted ${accepted} of ${requested} requested particles.`,\n frame,\n effectDebugName,\n { emitter: emitterName, requested, accepted },\n ),\n );\n }\n synchronizeAdvanceRegistration();\n }\n\n const handle = Object.freeze({\n status: statusSignal.asReadonly(),\n execution: executionSignal.asReadonly(),\n play(): void {\n pibblInternalAssertCommandAllowed();\n if (disposed) return;\n enqueue((frame, batch) => {\n transaction(frame, batch, () => {\n if (\n statusState === \"running\" ||\n statusState === \"paused\" ||\n statusState === \"draining\" ||\n statusState === \"scheduled\"\n ) {\n return;\n }\n if (!resetRunStorage(frame)) return;\n startRun(frame, originalSeed);\n synchronizeAdvanceRegistration();\n });\n });\n },\n pause(): void {\n pibblInternalAssertCommandAllowed();\n if (disposed) return;\n enqueue((frame, batch) => {\n transaction(frame, batch, () => {\n if (statusState !== \"running\") return;\n effectTime = effectTimeAt(frame.logicalTime);\n previousEffectTime = effectTime;\n anchorEffectTime = effectTime;\n anchorLogicalTime = frame.logicalTime;\n statusState = \"paused\";\n synchronizeAdvanceRegistration();\n });\n });\n },\n resume(): void {\n pibblInternalAssertCommandAllowed();\n if (disposed) return;\n enqueue((frame, batch) => {\n transaction(frame, batch, () => {\n if (statusState !== \"paused\") return;\n anchorEffectTime = effectTime;\n anchorLogicalTime = frame.logicalTime;\n statusState = activeBinding === undefined ? \"scheduled\" : \"running\";\n synchronizeAdvanceRegistration();\n });\n });\n },\n restart(restartOptions: Readonly<{ seed?: number }> = {}): void {\n pibblInternalAssertCommandAllowed();\n if (\n restartOptions === null ||\n typeof restartOptions !== \"object\" ||\n Array.isArray(restartOptions)\n ) {\n throw new TypeError(\"Pibbl particle restart options must be a record.\");\n }\n const nextSeed =\n restartOptions.seed === undefined\n ? originalSeed\n : normalizeSeed(restartOptions.seed);\n if (disposed) return;\n enqueue((frame, batch) => {\n transaction(frame, batch, () => {\n if (!resetRunStorage(frame)) return;\n startRun(frame, nextSeed);\n synchronizeAdvanceRegistration();\n });\n });\n },\n emit(emitter: string, overrides: PibblParticleBurstOverrides = {}): void {\n pibblInternalAssertCommandAllowed();\n if (typeof emitter !== \"string\") {\n throw new TypeError(\"Pibbl particle emitter name must be a string.\");\n }\n if (\n overrides === null ||\n typeof overrides !== \"object\" ||\n Array.isArray(overrides)\n ) {\n throw new TypeError(\"Pibbl particle burst overrides must be a record.\");\n }\n const overrideParameters = validateBurst(emitter, overrides);\n if (disposed) return;\n const frozenOverrides = Object.freeze({ ...overrides });\n enqueue((frame, batch) => {\n transaction(frame, batch, () =>\n acceptBurst(emitter, frozenOverrides, overrideParameters, frame),\n );\n });\n },\n stop(stopOptions: Readonly<{ mode?: \"drain\" | \"clear\" }> = {}): void {\n pibblInternalAssertCommandAllowed();\n if (\n stopOptions === null ||\n typeof stopOptions !== \"object\" ||\n Array.isArray(stopOptions)\n ) {\n throw new TypeError(\"Pibbl particle stop options must be a record.\");\n }\n const mode = stopOptions.mode ?? \"drain\";\n if (mode !== \"drain\" && mode !== \"clear\") {\n throw new TypeError(\n 'Pibbl particle stop mode must be \"drain\" or \"clear\".',\n );\n }\n if (disposed) return;\n enqueue((frame, batch) => {\n transaction(frame, batch, () => {\n if (statusState === \"idle\" || statusState === \"finished\") return;\n const clearBinding = mode === \"clear\" ? activeBinding : undefined;\n if (clearBinding !== undefined) {\n try {\n clearBinding.candidate.requestRender();\n } catch (error) {\n failCurrentDelivery(frame, error, \"request-clear-render\");\n return;\n }\n }\n if (mode === \"clear\" && !resetRunStorage(frame)) return;\n effectTime = effectTimeAt(frame.logicalTime);\n previousEffectTime = effectTime;\n anchorEffectTime = effectTime;\n anchorLogicalTime = frame.logicalTime;\n automaticClosed = true;\n if (mode === \"clear\") {\n if (clearBinding !== undefined) {\n requirePresentation(frame, clearBinding.owner);\n }\n finishRun(frame);\n } else {\n statusState = \"draining\";\n pendingFrameAdoption = true;\n const hasAutomaticSources = compiled.emitters.some(\n (emitter) =>\n emitter.emission.rates.length > 0 ||\n emitter.emission.bursts.length > 0,\n );\n drainFinishTime = Math.max(\n effectTime,\n ...acceptedLifetimes.map((accepted) => accepted.deathTime),\n bindingFrameState?.latestDeathMilliseconds ?? effectTime,\n hasAutomaticSources\n ? effectTime + maximumLifetimeMilliseconds()\n : effectTime,\n );\n queueEvent(frame, \"drain-start\");\n }\n synchronizeAdvanceRegistration();\n });\n });\n },\n }) as PibblParticleSystem;\n\n let preparedCompiled = compiled;\n let preparedEffectCandidate: ParticleEffectCandidate | undefined;\n\n const controller: ParticleSystemController = Object.freeze({\n handle,\n get flow() { return initialOptions.flow; },\n get compiled() {\n return compiled;\n },\n get bindingCandidate() {\n return activeBinding?.candidate;\n },\n get currentSpawnEpoch() {\n return currentEpoch;\n },\n get simulationParameters() {\n return simulationParameters;\n },\n get renderParameters() {\n return renderParameters;\n },\n prepareEffect(\n effect: ParticleEffect,\n nextOptions: PibblParticleSystemOptions = {},\n ): ParticleEffectCandidate {\n validateOptions(nextOptions);\n if (nextOptions.flow !== initialOptions.flow) throw new Error(\"Particle flow binding is mount-only; use a keyed remount to change it.\");\n const compiledCandidate = compileEffect(effect);\n const candidate = Object.freeze({\n ...compiledCandidate,\n options: Object.freeze({ ...nextOptions }),\n });\n preparedEffectCandidate = candidate;\n preparedCompiled = candidate.compiled;\n return candidate;\n },\n cancelEffect(candidate: ParticleEffectCandidate): void {\n if (preparedEffectCandidate !== candidate) return;\n preparedEffectCandidate = undefined;\n preparedCompiled = compiled;\n },\n adoptEffect(candidate: ParticleEffectCandidate): void {\n if (disposed) return;\n if (preparedEffectCandidate !== candidate) return;\n preparedEffectCandidate = undefined;\n const changed = compiled !== candidate.compiled;\n if (changed) {\n const restartMode =\n statusState === \"paused\"\n ? \"paused\"\n : statusState === \"running\" ||\n statusState === \"draining\" ||\n statusState === \"scheduled\"\n ? \"running\"\n : \"idle\";\n cancelPendingCommands();\n releaseAcceptedLifetimes();\n nextOrdinalByEmitter.clear();\n currentEpoch = 0;\n releaseInactiveEpochs();\n compiled = candidate.compiled;\n bindingFrameState = undefined;\n originalSeed = normalizeSeed(candidate.options.seed);\n enqueue((frame, batch) => {\n transaction(frame, batch, () => {\n seed = originalSeed;\n effectTime = 0;\n previousEffectTime = 0;\n anchorEffectTime = 0;\n anchorLogicalTime = frame.logicalTime;\n automaticClosed = false;\n drainFinishTime = 0;\n nextOrdinalByEmitter.clear();\n if (restartMode === \"idle\") {\n statusState = \"idle\";\n startPending = false;\n pendingFrameAdoption = false;\n } else {\n generation += 1;\n statusState =\n restartMode === \"paused\"\n ? \"paused\"\n : activeBinding === undefined\n ? \"scheduled\"\n : \"running\";\n startPending = statusState !== \"running\";\n pendingFrameAdoption = statusState === \"running\";\n if (statusState === \"running\") queueEvent(frame, \"start\");\n }\n synchronizeAdvanceRegistration();\n });\n });\n }\n effectDebugName = candidate.debugName;\n options = Object.freeze({ ...candidate.options });\n preparedCompiled = compiled;\n },\n reserveBinding(\n bindingOwner: PibblInternalRenderOwner,\n backend: \"canvas\",\n ): ParticleBindingReservation {\n if (disposed) {\n throw new TypeError(\"Cannot bind a disposed Pibbl particle system.\");\n }\n if (reservation !== undefined) {\n throw new TypeError(\n \"Pibbl particle system already has a pending binding reservation.\",\n );\n }\n if (\n activeBinding?.owner !== undefined &&\n activeBinding.owner !== bindingOwner\n ) {\n throw new TypeError(\n \"Pibbl particle system is already bound to another component.\",\n );\n }\n const next = Object.freeze({ owner: bindingOwner, backend, token: {} });\n reservation = next;\n return next;\n },\n validateBindingCandidate(\n bindingReservation: ParticleBindingReservation,\n candidate: ParticleBindingCandidate,\n ): void {\n if (reservation !== bindingReservation) {\n throw new TypeError(\"Pibbl particle binding reservation is stale.\");\n }\n if (\n candidate.owner !== bindingReservation.owner ||\n candidate.backend !== bindingReservation.backend\n ) {\n throw new TypeError(\n \"Pibbl particle binding candidate owner/backend mismatch.\",\n );\n }\n if (candidate.compiled !== preparedCompiled) {\n throw new TypeError(\n \"Pibbl particle binding definition does not match its system definition.\",\n );\n }\n if (candidate.compiled.dimension !== 2) {\n throw new TypeError(\n \"Pibbl particle binding backend does not match effect dimension.\",\n );\n }\n if (candidate.execution !== \"stateless-canvas\" && candidate.execution !== \"flow-canvas\") {\n throw new TypeError(\n \"Pibbl particle binding execution does not match its backend.\",\n );\n }\n if (!candidate.compiled.execution[candidate.execution].supported) {\n throw new TypeError(\n `Pibbl particle execution \"${candidate.execution}\" is unavailable: ${candidate.compiled.execution[candidate.execution].reasons.join(\"; \")}.`,\n );\n }\n validateParameterArray(candidate.compiled, candidate.parameters);\n },\n cancelBindingReservation(\n bindingReservation: ParticleBindingReservation | undefined,\n ): void {\n if (\n bindingReservation !== undefined &&\n reservation === bindingReservation\n ) {\n reservation = undefined;\n }\n },\n discardBindingCandidate(\n candidate: ParticleBindingCandidate,\n operation: string,\n ): void {\n if (candidate === activeBinding?.candidate) return;\n disposeRendererCandidate(candidate, operation);\n },\n adoptBinding(\n bindingReservation: ParticleBindingReservation,\n candidate: ParticleBindingCandidate,\n observers: ParticleBindingObservers = {},\n ): void {\n if (disposed || reservation !== bindingReservation) {\n controller.cancelBindingReservation(bindingReservation);\n if (candidate !== activeBinding?.candidate) {\n disposeRendererCandidate(candidate, \"dispose-stale-binding\");\n }\n return;\n }\n controller.validateBindingCandidate(bindingReservation, candidate);\n reservation = undefined;\n adoptParameters(candidate.parameters);\n if (activeBinding?.candidate === candidate) {\n activeBinding.observers = observers;\n return;\n }\n const previous = activeBinding;\n activeBinding = {\n candidate,\n owner: bindingReservation.owner,\n observers,\n releaseOwnership: recordParticleBindingAcquired(),\n };\n executionState = candidate.execution;\n bindingFrameState = undefined;\n previous?.releaseOwnership();\n if (previous !== undefined) {\n disposeRendererCandidate(\n previous.candidate,\n \"dispose-replaced-binding\",\n );\n }\n enqueue((frame, batch) => {\n transaction(frame, batch, () => {\n executionState = candidate.execution;\n if (statusState === \"scheduled\") {\n statusState = \"running\";\n anchorEffectTime = effectTime;\n anchorLogicalTime = frame.logicalTime;\n if (startPending) {\n startPending = false;\n queueEvent(frame, \"start\");\n }\n }\n synchronizeAdvanceRegistration();\n });\n });\n },\n releaseBinding(\n bindingOwner: PibblInternalRenderOwner,\n candidate?: ParticleBindingCandidate,\n ): void {\n if (\n activeBinding === undefined ||\n activeBinding.owner !== bindingOwner ||\n (candidate !== undefined && candidate !== activeBinding.candidate)\n ) {\n return;\n }\n const released = activeBinding;\n activeBinding = undefined;\n executionState = \"unbound\";\n bindingFrameState = undefined;\n failRendererTransactions(bindingOwner);\n unregisterAdvance?.();\n unregisterAdvance = undefined;\n released.releaseOwnership();\n try {\n disposeRendererCandidate(\n released.candidate,\n \"dispose-released-binding\",\n );\n } finally {\n if (!disposed) {\n enqueue((frame, batch) => {\n transaction(frame, batch, () => {\n executionState = \"unbound\";\n });\n });\n }\n }\n },\n recordRendererTransaction(\n bindingOwner: PibblInternalRenderOwner,\n success: boolean,\n ): void {\n if (!success) {\n failRendererTransactions(bindingOwner);\n return;\n }\n const completed = deliveries.filter(\n (pending) =>\n !pending.finalized &&\n pending.presentationOwner === bindingOwner &&\n pending.rendererSucceeded === undefined,\n );\n for (const current of completed) {\n current.rendererSucceeded = true;\n finalizeDeliveryIfReady(current);\n }\n releaseInactiveEpochs();\n },\n spawnParameters(epoch: number): Readonly<Float64Array> {\n const found = epochs.get(epoch);\n if (found === undefined) {\n throw new RangeError(\n `Pibbl particle system received unknown parameter epoch ${epoch}.`,\n );\n }\n return found.parameters;\n },\n retainSpawnEpoch(epoch: number, count = 1): void {\n retainEpoch(epoch, count);\n },\n releaseSpawnEpoch(epoch: number, count = 1): void {\n releaseEpochReferences(epoch, count);\n },\n snapshot(): ParticleSystemControllerSnapshot {\n return Object.freeze({\n disposed,\n generation,\n seed,\n effectTimeMilliseconds: effectTime,\n previousEffectTimeMilliseconds: previousEffectTime,\n binding: activeBinding?.candidate.backend ?? \"unbound\",\n parameterEpochs: epochs.size,\n });\n },\n dispose(): void {\n if (disposed) return;\n disposed = true;\n metadataPublication = undefined;\n for (const pending of Array.from(deliveries)) removeDelivery(pending);\n cancelPendingCommands();\n preparedEffectCandidate = undefined;\n preparedCompiled = compiled;\n reservation = undefined;\n unregisterAdvance?.();\n unregisterAdvance = undefined;\n releaseAcceptedLifetimes();\n const binding = activeBinding;\n activeBinding = undefined;\n bindingFrameState = undefined;\n binding?.releaseOwnership();\n try {\n if (binding !== undefined) {\n disposeRendererCandidate(binding.candidate, \"dispose-binding\");\n }\n for (const candidate of Array.from(retiredCandidates)) {\n disposeRendererCandidate(candidate, \"retry-retired-binding\");\n }\n } finally {\n releaseAllEpochs();\n statusState = \"disposed\";\n executionState = \"unbound\";\n statusSignal.set(\"disposed\");\n executionSignal.set(\"unbound\");\n releaseSystemOwnership();\n }\n },\n });\n controllers.set(handle, controller);\n return controller;\n}\n\nexport function getParticleSystemController(\n system: PibblParticleSystem,\n): ParticleSystemController {\n const controller = controllers.get(system);\n if (controller === undefined) {\n throw new TypeError(\n \"Expected a Pibbl particle system created by useParticleSystem().\",\n );\n }\n return controller;\n}\n\nexport function particleSystemControllerSnapshot(\n system: PibblParticleSystem,\n): ParticleSystemControllerSnapshot {\n return getParticleSystemController(system).snapshot();\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["handle"]
7
+ }
@@ -0,0 +1,13 @@
1
+ import type { PibblParticleEffect2D, PibblParticleParameterValues, PibblParticleSystem, PibblParticleSystemOptions } from "../types.js";
2
+ import { type SignalFields } from "../signal-inputs.js";
3
+ import { type SignalValue } from "@pibbl/core";
4
+ /**
5
+ * Creates a mount-owned system retaining the effect's emitter and parameter types. See
6
+ * {@link PibblParticleEffect2D}, {@link PibblParticleSystemOptions}, and {@link PibblParticleSystem}.
7
+ * @param effect - Effect definition, optionally supplied by a signal. See {@link SignalValue} ,
8
+ * {@link PibblParticleEffect2D} .
9
+ * @param options - Playback and simulation options, optionally supplied by a signal. See
10
+ * {@link SignalValue} , {@link SignalFields} , {@link PibblParticleSystemOptions} .
11
+ * @returns Stable mount-owned controls for the particle simulation. See {@link PibblParticleSystem}.
12
+ */
13
+ export declare function useParticleSystem<EmitterName extends string, Parameters extends PibblParticleParameterValues>(effect: SignalValue<PibblParticleEffect2D<EmitterName, Parameters>>, options?: SignalValue<SignalFields<PibblParticleSystemOptions>>): PibblParticleSystem<EmitterName, Parameters>;
@@ -0,0 +1,52 @@
1
+ import {
2
+ pibblInternalCurrentRenderOwner,
3
+ pibblInternalOnRenderFinish,
4
+ useInternalHookSlot
5
+ } from "@pibbl/core/internal";
6
+ import {
7
+ resolveSignalFields
8
+ } from "../signal-inputs.js";
9
+ import { resolveSignalValue } from "@pibbl/core";
10
+ import {
11
+ createParticleSystemController
12
+ } from "./controller.js";
13
+ function useParticleSystem(effectInput, optionsInput = {}) {
14
+ const owner = pibblInternalCurrentRenderOwner();
15
+ const effect = resolveSignalValue(effectInput);
16
+ const options = resolveSignalFields(optionsInput);
17
+ const slot = useInternalHookSlot(
18
+ "particle-system",
19
+ (teardowns) => {
20
+ const controller = createParticleSystemController(owner, effect, options);
21
+ const value = {
22
+ controller,
23
+ owner,
24
+ mountSettled: false,
25
+ revision: 0
26
+ };
27
+ teardowns.add(() => controller.dispose());
28
+ return value;
29
+ }
30
+ ).value;
31
+ if (slot.owner !== owner) {
32
+ throw new Error("A Pibbl particle system hook changed render ownership.");
33
+ }
34
+ const candidate = slot.controller.prepareEffect(effect, options);
35
+ const revision = ++slot.revision;
36
+ pibblInternalOnRenderFinish(owner, (success) => {
37
+ if (!success || revision !== slot.revision) {
38
+ slot.controller.cancelEffect(candidate);
39
+ return;
40
+ }
41
+ slot.controller.adoptEffect(candidate);
42
+ if (!slot.mountSettled) {
43
+ slot.mountSettled = true;
44
+ if (options.autoplay === true) slot.controller.handle.play();
45
+ }
46
+ });
47
+ return slot.controller.handle;
48
+ }
49
+ export {
50
+ useParticleSystem
51
+ };
52
+ //# sourceMappingURL=hook.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/features/particles/lib/system/hook.ts"],
4
+ "sourcesContent": ["import {\n pibblInternalCurrentRenderOwner,\n pibblInternalOnRenderFinish,\n useInternalHookSlot,\n type PibblInternalRenderOwner,\n} from \"@pibbl/core/internal\";\nimport type {\n PibblParticleEffect2D,\n PibblParticleParameterValues,\n PibblParticleSystem,\n PibblParticleSystemOptions,\n} from \"../types.js\";\nimport {\n resolveSignalFields,\n type SignalFields,\n} from \"../signal-inputs.js\";\nimport { resolveSignalValue, type SignalValue } from \"@pibbl/core\";\nimport {\n createParticleSystemController,\n type ParticleSystemController,\n} from \"./controller.js\";\n\ninterface ParticleSystemHookSlot {\n readonly controller: ParticleSystemController;\n readonly owner: PibblInternalRenderOwner;\n mountSettled: boolean;\n revision: number;\n}\n\n/**\n * Creates a mount-owned system retaining the effect's emitter and parameter types. See\n * {@link PibblParticleEffect2D}, {@link PibblParticleSystemOptions}, and {@link PibblParticleSystem}.\n * @param effect - Effect definition, optionally supplied by a signal. See {@link SignalValue} ,\n * {@link PibblParticleEffect2D} .\n * @param options - Playback and simulation options, optionally supplied by a signal. See\n * {@link SignalValue} , {@link SignalFields} , {@link PibblParticleSystemOptions} .\n * @returns Stable mount-owned controls for the particle simulation. See {@link PibblParticleSystem}.\n */\nexport function useParticleSystem<\n EmitterName extends string,\n Parameters extends PibblParticleParameterValues,\n>(\n effect: SignalValue<PibblParticleEffect2D<EmitterName, Parameters>>,\n options?: SignalValue<SignalFields<PibblParticleSystemOptions>>,\n): PibblParticleSystem<EmitterName, Parameters>;\n/**\n * Creates one stable particle-system handle owned by the current hook slot.\n *\n * @param effectInput - Effect definition, optionally supplied by a signal. See {@link SignalValue}\n * , {@link PibblParticleEffect2D} .\n * @param optionsInput - Playback and simulation options, optionally supplied by a signal. See\n * {@link SignalValue} , {@link SignalFields} , {@link PibblParticleSystemOptions} .\n * @returns Stable mount-owned controls for the particle simulation. See {@link PibblParticleSystem}.\n *\n * @see {@link SignalValue}\n * @see {@link PibblParticleEffect2D}\n * @see {@link PibblParticleSystemOptions}\n * @see {@link PibblParticleSystem}\n */\nexport function useParticleSystem(\n effectInput: SignalValue<PibblParticleEffect2D>,\n optionsInput: SignalValue<SignalFields<PibblParticleSystemOptions>> = {},\n): PibblParticleSystem {\n const owner = pibblInternalCurrentRenderOwner();\n const effect = resolveSignalValue(effectInput);\n const options = resolveSignalFields(optionsInput);\n const slot = useInternalHookSlot<ParticleSystemHookSlot>(\n \"particle-system\",\n (teardowns) => {\n const controller = createParticleSystemController(owner, effect, options);\n const value: ParticleSystemHookSlot = {\n controller,\n owner,\n mountSettled: false,\n revision: 0,\n };\n teardowns.add(() => controller.dispose());\n return value;\n },\n ).value;\n if (slot.owner !== owner) {\n throw new Error(\"A Pibbl particle system hook changed render ownership.\");\n }\n const candidate = slot.controller.prepareEffect(effect, options);\n const revision = ++slot.revision;\n pibblInternalOnRenderFinish(owner, (success) => {\n if (!success || revision !== slot.revision) {\n slot.controller.cancelEffect(candidate);\n return;\n }\n slot.controller.adoptEffect(candidate);\n if (!slot.mountSettled) {\n slot.mountSettled = true;\n if (options.autoplay === true) slot.controller.handle.play();\n }\n });\n return slot.controller.handle;\n}\n"],
5
+ "mappings": "AAAA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OAEK;AAOP;AAAA,EACE;AAAA,OAEK;AACP,SAAS,0BAA4C;AACrD;AAAA,EACE;AAAA,OAEK;AAuCA,SAAS,kBACd,aACA,eAAsE,CAAC,GAClD;AACrB,QAAM,QAAQ,gCAAgC;AAC9C,QAAM,SAAS,mBAAmB,WAAW;AAC7C,QAAM,UAAU,oBAAoB,YAAY;AAChD,QAAM,OAAO;AAAA,IACX;AAAA,IACA,CAAC,cAAc;AACb,YAAM,aAAa,+BAA+B,OAAO,QAAQ,OAAO;AACxE,YAAM,QAAgC;AAAA,QACpC;AAAA,QACA;AAAA,QACA,cAAc;AAAA,QACd,UAAU;AAAA,MACZ;AACA,gBAAU,IAAI,MAAM,WAAW,QAAQ,CAAC;AACxC,aAAO;AAAA,IACT;AAAA,EACF,EAAE;AACF,MAAI,KAAK,UAAU,OAAO;AACxB,UAAM,IAAI,MAAM,wDAAwD;AAAA,EAC1E;AACA,QAAM,YAAY,KAAK,WAAW,cAAc,QAAQ,OAAO;AAC/D,QAAM,WAAW,EAAE,KAAK;AACxB,8BAA4B,OAAO,CAAC,YAAY;AAC9C,QAAI,CAAC,WAAW,aAAa,KAAK,UAAU;AAC1C,WAAK,WAAW,aAAa,SAAS;AACtC;AAAA,IACF;AACA,SAAK,WAAW,YAAY,SAAS;AACrC,QAAI,CAAC,KAAK,cAAc;AACtB,WAAK,eAAe;AACpB,UAAI,QAAQ,aAAa,KAAM,MAAK,WAAW,OAAO,KAAK;AAAA,IAC7D;AAAA,EACF,CAAC;AACD,SAAO,KAAK,WAAW;AACzB;",
6
+ "names": []
7
+ }
@@ -0,0 +1,26 @@
1
+ export interface ParticleSystemOwnershipSnapshot {
2
+ readonly activeSystems: number;
3
+ readonly createdSystems: number;
4
+ readonly releasedSystems: number;
5
+ readonly activeBindings: number;
6
+ readonly acquiredBindings: number;
7
+ readonly releasedBindings: number;
8
+ readonly activeParameterEpochs: number;
9
+ readonly createdParameterEpochs: number;
10
+ readonly releasedParameterEpochs: number;
11
+ readonly queuedCommands: number;
12
+ readonly createdCommands: number;
13
+ readonly releasedCommands: number;
14
+ readonly schedulerRegistrations: number;
15
+ readonly canvasLedgers: number;
16
+ readonly canvasRasterEntries: number;
17
+ }
18
+ /** @internal Deterministic controller resource counters for tests and diagnostics. */
19
+ export declare function particleSystemOwnershipSnapshot(): ParticleSystemOwnershipSnapshot;
20
+ export declare function recordParticleSystemCreated(): () => void;
21
+ export declare function recordParticleBindingAcquired(): () => void;
22
+ export declare function recordParticleParameterEpochCreated(): () => void;
23
+ export declare function recordParticleCommandCreated(): () => void;
24
+ export declare function recordParticleSchedulerRegistration(): () => void;
25
+ export declare function recordCanvasParticleLedgerCreated(): () => void;
26
+ export declare function recordCanvasParticleRasterEntryCreated(): () => void;
@@ -0,0 +1,128 @@
1
+ let activeSystems = 0;
2
+ let createdSystems = 0;
3
+ let releasedSystems = 0;
4
+ let activeBindings = 0;
5
+ let acquiredBindings = 0;
6
+ let releasedBindings = 0;
7
+ let activeParameterEpochs = 0;
8
+ let createdParameterEpochs = 0;
9
+ let releasedParameterEpochs = 0;
10
+ let queuedCommands = 0;
11
+ let createdCommands = 0;
12
+ let releasedCommands = 0;
13
+ let schedulerRegistrations = 0;
14
+ let canvasLedgers = 0;
15
+ let canvasRasterEntries = 0;
16
+ function particleSystemOwnershipSnapshot() {
17
+ return Object.freeze({
18
+ activeSystems,
19
+ createdSystems,
20
+ releasedSystems,
21
+ activeBindings,
22
+ acquiredBindings,
23
+ releasedBindings,
24
+ activeParameterEpochs,
25
+ createdParameterEpochs,
26
+ releasedParameterEpochs,
27
+ queuedCommands,
28
+ createdCommands,
29
+ releasedCommands,
30
+ schedulerRegistrations,
31
+ canvasLedgers,
32
+ canvasRasterEntries
33
+ });
34
+ }
35
+ function recordParticleSystemCreated() {
36
+ activeSystems += 1;
37
+ createdSystems += 1;
38
+ let released = false;
39
+ return () => {
40
+ if (released) return;
41
+ released = true;
42
+ activeSystems -= 1;
43
+ releasedSystems += 1;
44
+ };
45
+ }
46
+ function recordParticleBindingAcquired() {
47
+ activeBindings += 1;
48
+ acquiredBindings += 1;
49
+ let released = false;
50
+ return () => {
51
+ if (released) return;
52
+ released = true;
53
+ activeBindings -= 1;
54
+ releasedBindings += 1;
55
+ };
56
+ }
57
+ function recordParticleParameterEpochCreated() {
58
+ activeParameterEpochs += 1;
59
+ createdParameterEpochs += 1;
60
+ let released = false;
61
+ return () => {
62
+ if (released) return;
63
+ released = true;
64
+ activeParameterEpochs -= 1;
65
+ releasedParameterEpochs += 1;
66
+ };
67
+ }
68
+ function recordParticleCommandCreated() {
69
+ queuedCommands += 1;
70
+ createdCommands += 1;
71
+ let released = false;
72
+ return () => {
73
+ if (released) return;
74
+ released = true;
75
+ queuedCommands -= 1;
76
+ releasedCommands += 1;
77
+ };
78
+ }
79
+ function recordActiveResource(acquire, release) {
80
+ acquire();
81
+ let released = false;
82
+ return () => {
83
+ if (released) return;
84
+ released = true;
85
+ release();
86
+ };
87
+ }
88
+ function recordParticleSchedulerRegistration() {
89
+ return recordActiveResource(
90
+ () => {
91
+ schedulerRegistrations += 1;
92
+ },
93
+ () => {
94
+ schedulerRegistrations -= 1;
95
+ }
96
+ );
97
+ }
98
+ function recordCanvasParticleLedgerCreated() {
99
+ return recordActiveResource(
100
+ () => {
101
+ canvasLedgers += 1;
102
+ },
103
+ () => {
104
+ canvasLedgers -= 1;
105
+ }
106
+ );
107
+ }
108
+ function recordCanvasParticleRasterEntryCreated() {
109
+ return recordActiveResource(
110
+ () => {
111
+ canvasRasterEntries += 1;
112
+ },
113
+ () => {
114
+ canvasRasterEntries -= 1;
115
+ }
116
+ );
117
+ }
118
+ export {
119
+ particleSystemOwnershipSnapshot,
120
+ recordCanvasParticleLedgerCreated,
121
+ recordCanvasParticleRasterEntryCreated,
122
+ recordParticleBindingAcquired,
123
+ recordParticleCommandCreated,
124
+ recordParticleParameterEpochCreated,
125
+ recordParticleSchedulerRegistration,
126
+ recordParticleSystemCreated
127
+ };
128
+ //# sourceMappingURL=ownership.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/features/particles/lib/system/ownership.ts"],
4
+ "sourcesContent": ["export interface ParticleSystemOwnershipSnapshot {\n readonly activeSystems: number;\n readonly createdSystems: number;\n readonly releasedSystems: number;\n readonly activeBindings: number;\n readonly acquiredBindings: number;\n readonly releasedBindings: number;\n readonly activeParameterEpochs: number;\n readonly createdParameterEpochs: number;\n readonly releasedParameterEpochs: number;\n readonly queuedCommands: number;\n readonly createdCommands: number;\n readonly releasedCommands: number;\n readonly schedulerRegistrations: number;\n readonly canvasLedgers: number;\n readonly canvasRasterEntries: number;\n}\n\nlet activeSystems = 0;\nlet createdSystems = 0;\nlet releasedSystems = 0;\nlet activeBindings = 0;\nlet acquiredBindings = 0;\nlet releasedBindings = 0;\nlet activeParameterEpochs = 0;\nlet createdParameterEpochs = 0;\nlet releasedParameterEpochs = 0;\nlet queuedCommands = 0;\nlet createdCommands = 0;\nlet releasedCommands = 0;\nlet schedulerRegistrations = 0;\nlet canvasLedgers = 0;\nlet canvasRasterEntries = 0;\n\n/** @internal Deterministic controller resource counters for tests and diagnostics. */\nexport function particleSystemOwnershipSnapshot(): ParticleSystemOwnershipSnapshot {\n return Object.freeze({\n activeSystems,\n createdSystems,\n releasedSystems,\n activeBindings,\n acquiredBindings,\n releasedBindings,\n activeParameterEpochs,\n createdParameterEpochs,\n releasedParameterEpochs,\n queuedCommands,\n createdCommands,\n releasedCommands,\n schedulerRegistrations,\n canvasLedgers,\n canvasRasterEntries,\n });\n}\n\nexport function recordParticleSystemCreated(): () => void {\n activeSystems += 1;\n createdSystems += 1;\n let released = false;\n return () => {\n if (released) return;\n released = true;\n activeSystems -= 1;\n releasedSystems += 1;\n };\n}\n\nexport function recordParticleBindingAcquired(): () => void {\n activeBindings += 1;\n acquiredBindings += 1;\n let released = false;\n return () => {\n if (released) return;\n released = true;\n activeBindings -= 1;\n releasedBindings += 1;\n };\n}\n\nexport function recordParticleParameterEpochCreated(): () => void {\n activeParameterEpochs += 1;\n createdParameterEpochs += 1;\n let released = false;\n return () => {\n if (released) return;\n released = true;\n activeParameterEpochs -= 1;\n releasedParameterEpochs += 1;\n };\n}\n\nexport function recordParticleCommandCreated(): () => void {\n queuedCommands += 1;\n createdCommands += 1;\n let released = false;\n return () => {\n if (released) return;\n released = true;\n queuedCommands -= 1;\n releasedCommands += 1;\n };\n}\n\nfunction recordActiveResource(\n acquire: () => void,\n release: () => void,\n): () => void {\n acquire();\n let released = false;\n return () => {\n if (released) return;\n released = true;\n release();\n };\n}\n\nexport function recordParticleSchedulerRegistration(): () => void {\n return recordActiveResource(\n () => {\n schedulerRegistrations += 1;\n },\n () => {\n schedulerRegistrations -= 1;\n },\n );\n}\n\nexport function recordCanvasParticleLedgerCreated(): () => void {\n return recordActiveResource(\n () => {\n canvasLedgers += 1;\n },\n () => {\n canvasLedgers -= 1;\n },\n );\n}\n\nexport function recordCanvasParticleRasterEntryCreated(): () => void {\n return recordActiveResource(\n () => {\n canvasRasterEntries += 1;\n },\n () => {\n canvasRasterEntries -= 1;\n },\n );\n}\n"],
5
+ "mappings": "AAkBA,IAAI,gBAAgB;AACpB,IAAI,iBAAiB;AACrB,IAAI,kBAAkB;AACtB,IAAI,iBAAiB;AACrB,IAAI,mBAAmB;AACvB,IAAI,mBAAmB;AACvB,IAAI,wBAAwB;AAC5B,IAAI,yBAAyB;AAC7B,IAAI,0BAA0B;AAC9B,IAAI,iBAAiB;AACrB,IAAI,kBAAkB;AACtB,IAAI,mBAAmB;AACvB,IAAI,yBAAyB;AAC7B,IAAI,gBAAgB;AACpB,IAAI,sBAAsB;AAGnB,SAAS,kCAAmE;AACjF,SAAO,OAAO,OAAO;AAAA,IACnB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AACH;AAEO,SAAS,8BAA0C;AACxD,mBAAiB;AACjB,oBAAkB;AAClB,MAAI,WAAW;AACf,SAAO,MAAM;AACX,QAAI,SAAU;AACd,eAAW;AACX,qBAAiB;AACjB,uBAAmB;AAAA,EACrB;AACF;AAEO,SAAS,gCAA4C;AAC1D,oBAAkB;AAClB,sBAAoB;AACpB,MAAI,WAAW;AACf,SAAO,MAAM;AACX,QAAI,SAAU;AACd,eAAW;AACX,sBAAkB;AAClB,wBAAoB;AAAA,EACtB;AACF;AAEO,SAAS,sCAAkD;AAChE,2BAAyB;AACzB,4BAA0B;AAC1B,MAAI,WAAW;AACf,SAAO,MAAM;AACX,QAAI,SAAU;AACd,eAAW;AACX,6BAAyB;AACzB,+BAA2B;AAAA,EAC7B;AACF;AAEO,SAAS,+BAA2C;AACzD,oBAAkB;AAClB,qBAAmB;AACnB,MAAI,WAAW;AACf,SAAO,MAAM;AACX,QAAI,SAAU;AACd,eAAW;AACX,sBAAkB;AAClB,wBAAoB;AAAA,EACtB;AACF;AAEA,SAAS,qBACP,SACA,SACY;AACZ,UAAQ;AACR,MAAI,WAAW;AACf,SAAO,MAAM;AACX,QAAI,SAAU;AACd,eAAW;AACX,YAAQ;AAAA,EACV;AACF;AAEO,SAAS,sCAAkD;AAChE,SAAO;AAAA,IACL,MAAM;AACJ,gCAA0B;AAAA,IAC5B;AAAA,IACA,MAAM;AACJ,gCAA0B;AAAA,IAC5B;AAAA,EACF;AACF;AAEO,SAAS,oCAAgD;AAC9D,SAAO;AAAA,IACL,MAAM;AACJ,uBAAiB;AAAA,IACnB;AAAA,IACA,MAAM;AACJ,uBAAiB;AAAA,IACnB;AAAA,EACF;AACF;AAEO,SAAS,yCAAqD;AACnE,SAAO;AAAA,IACL,MAAM;AACJ,6BAAuB;AAAA,IACzB;AAAA,IACA,MAAM;AACJ,6BAAuB;AAAA,IACzB;AAAA,EACF;AACF;",
6
+ "names": []
7
+ }