@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/lib/animation/evaluate.ts"],
4
+ "sourcesContent": ["import {\n createSignalCommitBatch,\n getSignalNode,\n withSignalWriteForbidden,\n type SignalCommitBatch,\n} from '../signals/graph.js';\nimport type { WritableSignal } from '../signals/types.js';\nimport {\n activateSeekableDefinition,\n getDefinitionRecord,\n getSeekableDefinitionBoundaryValue,\n getStaticSeekableDefinitionBoundaryValue,\n sampleActivatedSeekableDefinition,\n snapshotAnimationActivationValue,\n type SeekableDefinitionActivation,\n} from './definition.js';\nimport {\n getExactSeekableProgramDuration,\n getProgramRecord,\n repeatResolvedWriterSchedules,\n resolvedWriterSchedulesOverlap,\n requiresProgramActivationWriterSafety,\n type ResolvedWriterSchedule,\n} from './program.js';\nimport type { PibblAnimationProgram } from './types.js';\n\ndeclare const programActivationBrand: unique symbol;\n\n/** @internal Opaque state retained for one activated program run. */\nexport interface ProgramActivation {\n readonly [programActivationBrand]: true;\n}\n\nexport type ProgramTraversalDirection = 'forward' | 'reverse';\n\nexport interface ProgramEvaluationInput {\n readonly previousTime: number | undefined;\n readonly time: number;\n readonly direction: ProgramTraversalDirection;\n readonly frameId: number;\n readonly writer: object;\n readonly batch: SignalCommitBatch;\n}\n\ninterface ProgramMilestoneBase {\n readonly programTime: number;\n readonly frameId: number;\n readonly registration: object;\n readonly programPath: readonly number[];\n readonly iteration: number;\n}\n\nexport interface ProgramMarkerMilestone extends ProgramMilestoneBase {\n readonly kind: 'marker';\n readonly marker: string;\n}\n\nexport interface ProgramIterationMilestone extends ProgramMilestoneBase {\n readonly kind: 'iteration';\n}\n\nexport type ProgramMilestone = ProgramMarkerMilestone | ProgramIterationMilestone;\n\nexport interface ProgramTerminalState {\n readonly duration: number | undefined;\n readonly atStart: boolean;\n readonly atEnd: boolean;\n readonly reached: boolean;\n}\n\nexport interface ProgramEvaluationResult {\n readonly batch: SignalCommitBatch;\n readonly milestones: readonly ProgramMilestone[];\n readonly steppers: readonly ProgramStepperTrace[];\n readonly terminal: ProgramTerminalState;\n}\n\n/** @internal Immutable fixed-step facts emitted without application callbacks. */\nexport interface ProgramStepperTrace {\n readonly programPath: readonly number[];\n readonly repeatIterations: readonly number[];\n readonly appliedSteps: number;\n readonly retainedRemainderMilliseconds: number;\n readonly clampedElapsedMilliseconds: number;\n readonly discardedElapsedMilliseconds: number;\n readonly terminal: {\n readonly step: number;\n readonly time: number;\n } | undefined;\n}\n\nexport interface TrackStartSnapshot {\n readonly programPath: readonly number[];\n readonly repeatIterations: readonly number[];\n readonly initialValue: unknown;\n readonly duration: number;\n}\n\nexport interface ActiveStepperSnapshot {\n readonly programPath: readonly number[];\n readonly repeatIterations: readonly number[];\n readonly wholeSteps: number;\n readonly retainedRemainderMilliseconds: number;\n readonly appliedElapsedMilliseconds: number;\n readonly discardedElapsedMilliseconds: number;\n}\n\nexport interface TerminalStepperSnapshot {\n readonly programPath: readonly number[];\n readonly repeatIterations: readonly number[];\n readonly terminalStep: number;\n readonly terminalTime: number;\n}\n\nexport interface ProgramActivationRecord {\n readonly program: PibblAnimationProgram;\n readonly registration: object;\n readonly originalValues: ReadonlyMap<WritableSignal<unknown>, unknown>;\n readonly trackStarts: readonly TrackStartSnapshot[];\n readonly activeSteppers: readonly ActiveStepperSnapshot[];\n readonly terminalSteppers: readonly TerminalStepperSnapshot[];\n readonly terminalDuration: number | undefined;\n}\n\ninterface InternalTrackStart {\n readonly programPath: readonly number[];\n readonly repeatIterations: readonly number[];\n readonly initialValue: unknown;\n readonly definition: SeekableDefinitionActivation<unknown>;\n}\n\ninterface InternalProgramActivation {\n readonly program: PibblAnimationProgram;\n readonly registration: object;\n readonly originalValues: ReadonlyMap<WritableSignal<unknown>, unknown>;\n starts: Map<string, InternalTrackStart>;\n steppers: Map<string, InternalStepperRecord>;\n terminalSteppers: Map<string, InternalStepperTerminal>;\n repeatFrontiers: Map<string, InternalRepeatFrontier>;\n repeatTerminals: Map<string, InternalRepeatTerminal>;\n reverseEndpoints: Map<string, InternalReverseEndpoint>;\n terminalDuration: number | undefined;\n}\n\ninterface InternalRepeatFrontier {\n readonly programPath: readonly number[];\n readonly repeatIterations: readonly number[];\n completedIterations: number;\n elapsedMilliseconds: number;\n iterationInputValues: Map<WritableSignal<unknown>, unknown>;\n values: Map<WritableSignal<unknown>, unknown>;\n}\n\ninterface InternalRepeatTerminal {\n readonly programPath: readonly number[];\n readonly repeatIterations: readonly number[];\n readonly duration: number;\n readonly values: ReadonlyMap<WritableSignal<unknown>, unknown>;\n}\n\ninterface InternalReverseEndpoint {\n readonly programPath: readonly number[];\n readonly repeatIterations: readonly number[];\n readonly duration: number;\n readonly inputValues: ReadonlyMap<WritableSignal<unknown>, unknown>;\n}\n\ninterface InternalStepperFrameBudget {\n remainingMilliseconds: number;\n readonly discardedMilliseconds: number;\n discardedReported: boolean;\n}\n\ninterface InternalZeroDurationOccurrenceBudget {\n value: number;\n}\n\ninterface InternalStepperRecord {\n readonly programPath: readonly number[];\n readonly repeatIterations: readonly number[];\n readonly activationInput: unknown;\n state: unknown;\n wholeSteps: number;\n remainderMilliseconds: number;\n appliedElapsedMilliseconds: number;\n discardedElapsedMilliseconds: number;\n sampledLocalTime: number;\n}\n\ninterface InternalStepperTerminal {\n readonly programPath: readonly number[];\n readonly repeatIterations: readonly number[];\n readonly activationInput: unknown;\n readonly finalValue: unknown;\n readonly terminalStep: number;\n readonly terminalTime: number;\n}\n\ninterface SampleState {\n readonly activation: InternalProgramActivation;\n readonly batch: SignalCommitBatch;\n readonly starts: Map<string, InternalTrackStart>;\n readonly durations: Map<string, number>;\n readonly writtenOutputs: Set<WritableSignal<unknown>>;\n readonly snapshots: WeakMap<object, unknown>;\n readonly owners: Map<WritableSignal<unknown>, SampledWriterOwner>;\n readonly steppers: Map<string, InternalStepperRecord>;\n readonly terminalSteppers: Map<string, InternalStepperTerminal>;\n readonly repeatFrontiers: Map<string, InternalRepeatFrontier>;\n readonly repeatTerminals: Map<string, InternalRepeatTerminal>;\n readonly reverseEndpoints: Map<string, InternalReverseEndpoint>;\n readonly stepperFrameBudgets: Map<string, InternalStepperFrameBudget>;\n readonly zeroDurationOccurrences: InternalZeroDurationOccurrenceBudget;\n readonly sampledTimelineEvents: TimelineEvent[];\n readonly nextTimelineSourceOrder: { value: number };\n readonly activeStepperKeys: Set<string>;\n readonly activeRepeatFrontierKeys: Set<string>;\n readonly activeReverseEndpointKeys: Set<string>;\n readonly stepperTraces: ProgramStepperTrace[];\n readonly frameId: number;\n readonly replaySteppers: boolean;\n}\n\ninterface SampleResult {\n readonly duration: number | undefined;\n readonly atEnd: boolean;\n}\n\ninterface SampledWriterOwner {\n readonly start: number;\n readonly end: number;\n}\n\nconst unknownDiscoveredValue = Symbol('unknown animation discovery value');\ntype DiscoveredValue = unknown | typeof unknownDiscoveredValue;\n\ninterface ResolvedWriter {\n readonly output: WritableSignal<unknown>;\n readonly start: number;\n readonly end: number;\n readonly programPath: readonly number[];\n readonly repeatIterations: readonly number[];\n readonly repeats: readonly {\n readonly period: number;\n readonly iterations: number;\n }[];\n}\n\ninterface DiscoveryResult {\n readonly duration: number | undefined;\n readonly writers: readonly ResolvedWriter[];\n readonly startWrites: ReadonlyMap<WritableSignal<unknown>, DiscoveredValue>;\n readonly endWrites: ReadonlyMap<WritableSignal<unknown>, DiscoveredValue>;\n}\n\ninterface DiscoveryState {\n readonly values: Map<WritableSignal<unknown>, DiscoveredValue>;\n readonly starts: Map<string, InternalTrackStart>;\n readonly durations: Map<string, number>;\n readonly snapshots: WeakMap<object, unknown>;\n readonly validateWriters: boolean;\n readonly validateInputs: boolean;\n readonly terminalSteppers: ReadonlyMap<string, InternalStepperTerminal>;\n}\n\ninterface TimelineEvent {\n readonly kind: 'marker' | 'iteration';\n readonly marker?: string;\n readonly programTime: number;\n readonly programPath: readonly number[];\n readonly repeatIterations: readonly number[];\n readonly iteration: number;\n readonly sourceOrder: number;\n}\n\ninterface TimeTransform {\n readonly origin: number;\n readonly scale: 1 | -1;\n}\n\nconst activationRecords = new WeakMap<ProgramActivation, InternalProgramActivation>();\nconst activationStepperKeys = new WeakMap<ProgramActivation, Set<string>>();\nlet activeStepperStates = 0;\nlet acquiredStepperStates = 0;\nlet releasedStepperStates = 0;\n\nexport interface AnimationEvaluationOwnershipSnapshot {\n readonly activeStepperStates: number;\n readonly acquiredStepperStates: number;\n readonly releasedStepperStates: number;\n}\n\n/** @internal Exact ownership counters for retained and current-frame stepper state. */\nexport function animationEvaluationOwnershipSnapshot():\nAnimationEvaluationOwnershipSnapshot {\n return Object.freeze({\n activeStepperStates,\n acquiredStepperStates,\n releasedStepperStates,\n });\n}\n\nfunction registerActivationStepperKeys(\n activation: ProgramActivation,\n keys: Iterable<string>,\n): void {\n const snapshot = new Set(keys);\n activationStepperKeys.set(activation, snapshot);\n activeStepperStates += snapshot.size;\n acquiredStepperStates += snapshot.size;\n}\n\nfunction reconcileActivationStepperKeys(activation: ProgramActivation): void {\n const tracked = activationStepperKeys.get(activation);\n const record = activationRecords.get(activation);\n if (tracked === undefined || record === undefined) return;\n const next = new Set(record.steppers.keys());\n for (const key of tracked) {\n if (next.has(key)) continue;\n tracked.delete(key);\n activeStepperStates--;\n releasedStepperStates++;\n }\n for (const key of next) {\n if (tracked.has(key)) continue;\n tracked.add(key);\n activeStepperStates++;\n acquiredStepperStates++;\n }\n}\n\nfunction releaseActivationStepperKeys(activation: ProgramActivation): void {\n const tracked = activationStepperKeys.get(activation);\n if (tracked === undefined) return;\n activeStepperStates -= tracked.size;\n releasedStepperStates += tracked.size;\n activationStepperKeys.delete(activation);\n}\nconst baselineWriter = Object.freeze({ name: 'Pibbl animation activation baseline' });\nconst directRepeatSelection = new WeakMap<PibblAnimationProgram, boolean>();\nconst containsStepperDefinition = new WeakMap<PibblAnimationProgram, boolean>();\n// Repeated zero-time work cannot be collapsed without dropping callbacks or\n// milestones. This fixed shared bound keeps one evaluation deterministic while\n// permitting useful finite bursts.\nconst maximumZeroDurationOccurrencesPerEvaluation = 512;\n\nclass StepperCallbackError extends Error {\n constructor(message: string, readonly cause: unknown) {\n super(message);\n this.name = 'StepperCallbackError';\n }\n}\n\nfunction stepperLabel(debugName: string | undefined): string {\n return debugName === undefined ? 'Pibbl animation stepper' :\n `Pibbl animation stepper \"${debugName}\"`;\n}\n\nfunction reserveZeroDurationOccurrence(\n state: SampleState,\n label: string,\n path: readonly number[],\n repeatIterations: readonly number[],\n): void {\n if (state.zeroDurationOccurrences.value >=\n maximumZeroDurationOccurrencesPerEvaluation) {\n const repeats = repeatIterations.length === 0 ? '' :\n `, repeat iterations [${repeatIterations.join(', ')}]`;\n throw new RangeError(\n `Pibbl animation zero-duration occurrence budget of ` +\n `${maximumZeroDurationOccurrencesPerEvaluation} was exhausted before ` +\n `${label} at program path [${path.join(', ')}]${repeats}, ` +\n `frame ${state.frameId}.`,\n );\n }\n state.zeroDurationOccurrences.value++;\n}\n\nfunction reservePotentialZeroDurationStepperOccurrence(\n state: SampleState,\n debugName: string | undefined,\n path: readonly number[],\n repeatIterations: readonly number[],\n): void {\n reserveZeroDurationOccurrence(\n state,\n stepperLabel(debugName),\n path,\n repeatIterations,\n );\n}\n\nfunction invokeStepperCallback<T>(\n debugName: string | undefined,\n callbackName: 'initial' | 'step' | 'read' | 'done',\n path: readonly number[],\n repeatIterations: readonly number[],\n frameId: number,\n localTime: number,\n callback: () => T,\n): T {\n try {\n return withSignalWriteForbidden(\n `${stepperLabel(debugName)} callbacks cannot write to signals.`,\n callback,\n );\n } catch (error) {\n const repeats = repeatIterations.length === 0 ? '' :\n `, repeat iterations [${repeatIterations.join(', ')}]`;\n const detail = error instanceof Error ? `: ${error.message}` : '';\n throw new StepperCallbackError(\n `${stepperLabel(debugName)} ${callbackName} callback failed at program path ` +\n `[${path.join(', ')}]${repeats}, frame ${frameId}, local time ${localTime}${detail}`,\n error,\n );\n }\n}\n\nfunction validateStepperOutput(value: unknown, debugName: string | undefined): unknown {\n if (typeof value === 'number' && !Number.isFinite(value)) {\n throw new RangeError(\n `${stepperLabel(debugName)} read callback produced a nonfinite value.`,\n );\n }\n return value;\n}\n\nfunction programContainsStepper(program: PibblAnimationProgram): boolean {\n const cached = containsStepperDefinition.get(program);\n if (cached !== undefined) return cached;\n const record = getProgramRecord(program);\n const contains = record.kind === 'track' ?\n getDefinitionRecord(record.definition).kind === 'stepper' :\n record.children.some(programContainsStepper);\n containsStepperDefinition.set(program, contains);\n return contains;\n}\n\nfunction knownProgramTerminalDuration(record: InternalProgramActivation): number | undefined {\n const exact = getExactSeekableProgramDuration(record.program);\n if (exact !== undefined && Number.isFinite(exact)) return exact;\n return record.terminalDuration;\n}\n\nfunction validateActivationWriterSafety(\n program: PibblAnimationProgram,\n originalValues: ReadonlyMap<WritableSignal<unknown>, unknown>,\n): void {\n if (!requiresProgramActivationWriterSafety(program)) return;\n if (!programContainsStepper(program)) {\n const discoveryState = createDiscoveryState(originalValues, new Map(), true);\n discoverNode(program, Number.POSITIVE_INFINITY, discoveryState, [], []);\n return;\n }\n for (const child of getProgramRecord(program).children) {\n validateActivationWriterSafety(child, originalValues);\n }\n}\n\nfunction freezePath(path: readonly number[]): readonly number[] {\n return Object.freeze([...path]);\n}\n\nfunction immutableMap<K, V>(source: ReadonlyMap<K, V>): ReadonlyMap<K, V> {\n const target = new Map(source);\n const proxy = new Proxy(target, {\n get(map, key) {\n if (key === 'set' || key === 'delete' || key === 'clear') {\n return (): never => {\n throw new TypeError('Cannot mutate an animation activation snapshot.');\n };\n }\n const member = Reflect.get(map, key, map);\n return typeof member === 'function' ? member.bind(map) : member;\n },\n set(): false {\n return false;\n },\n defineProperty(): false {\n return false;\n },\n deleteProperty(): false {\n return false;\n },\n });\n return Object.freeze(proxy);\n}\n\nfunction activationRecord(activation: ProgramActivation): InternalProgramActivation {\n const record = activationRecords.get(activation);\n if (record === undefined) throw new TypeError('Expected a Pibbl animation program activation.');\n return record;\n}\n\nfunction instanceKey(\n path: readonly number[],\n repeatIterations: readonly number[],\n): string {\n return JSON.stringify([path, repeatIterations]);\n}\n\nfunction stepperFrameBudgetKey(path: readonly number[]): string {\n return JSON.stringify(path);\n}\n\nfunction assertProgramTime(value: number, label: string): void {\n if (!Number.isFinite(value)) {\n throw new RangeError(`Pibbl animation ${label} must be finite.`);\n }\n}\n\nfunction assertEvaluationInput(input: ProgramEvaluationInput): void {\n assertProgramTime(input.time, 'program time');\n if (input.previousTime !== undefined) {\n assertProgramTime(input.previousTime, 'previous program time');\n }\n if (input.direction !== 'forward' && input.direction !== 'reverse') {\n throw new TypeError('Pibbl animation traversal direction must be forward or reverse.');\n }\n if (!Number.isFinite(input.frameId)) {\n throw new RangeError('Pibbl animation frame identity must be finite.');\n }\n if (typeof input.writer !== 'object' || input.writer === null) {\n throw new TypeError('Pibbl animation writer token must be an object.');\n }\n}\n\nfunction seedOriginalValues(record: InternalProgramActivation): SignalCommitBatch {\n const batch = createSignalCommitBatch();\n for (const [output, value] of record.originalValues) {\n batch.stage(output, value, baselineWriter);\n }\n return batch;\n}\n\nfunction setDuration(\n state: SampleState,\n path: readonly number[],\n repeatIterations: readonly number[],\n duration: number | undefined,\n): void {\n if (duration !== undefined) {\n state.durations.set(instanceKey(path, repeatIterations), duration);\n }\n}\n\nfunction knownDuration(\n program: PibblAnimationProgram,\n state: SampleState,\n path: readonly number[],\n repeatIterations: readonly number[],\n): number | undefined {\n const key = instanceKey(path, repeatIterations);\n const resolved = state.durations.get(key);\n if (resolved !== undefined) return resolved;\n const record = getProgramRecord(program);\n if (record.kind === 'track') {\n const start = state.starts.get(key);\n if (start !== undefined) return start.definition.duration;\n const terminal = state.terminalSteppers.get(key);\n if (terminal !== undefined) return terminal.terminalTime;\n }\n return getExactSeekableProgramDuration(program);\n}\n\nfunction canDirectlySelectRepeat(program: PibblAnimationProgram): boolean {\n const cached = directRepeatSelection.get(program);\n if (cached !== undefined) return cached;\n const record = getProgramRecord(program);\n let direct: boolean;\n if (record.kind === 'track') {\n const definition = getDefinitionRecord(record.definition);\n direct = definition.kind === 'keyframes' ||\n definition.kind === 'tween' && definition.hasFrom ||\n definition.kind === 'spring' && definition.hasFrom;\n } else {\n direct = record.kind === 'wait' || record.kind === 'marker' ||\n record.children.every(canDirectlySelectRepeat);\n }\n directRepeatSelection.set(program, direct);\n return direct;\n}\n\nfunction needsCallbackFreeDurationSeed(program: PibblAnimationProgram): boolean {\n const record = getProgramRecord(program);\n if (record.kind === 'repeat' && record.direction !== 'normal' &&\n getExactSeekableProgramDuration(record.children[0]!) === undefined) {\n return true;\n }\n return record.children.some(needsCallbackFreeDurationSeed);\n}\n\nfunction discoveredWrites(\n ...sources: readonly ReadonlyMap<WritableSignal<unknown>, DiscoveredValue>[]\n): Map<WritableSignal<unknown>, DiscoveredValue> {\n const writes = new Map<WritableSignal<unknown>, DiscoveredValue>();\n for (const source of sources) {\n for (const [output, value] of source) writes.set(output, value);\n }\n return writes;\n}\n\nfunction chronologicalEndWrites(\n children: readonly DiscoveryResult[],\n failClosedOnUnknownTiming = false,\n): Map<WritableSignal<unknown>, DiscoveredValue> {\n const selected = new Map<WritableSignal<unknown>, {\n readonly end: number;\n readonly value: DiscoveredValue;\n readonly timingUnknown: boolean;\n }>();\n for (const child of children) {\n for (const [output, value] of child.endWrites) {\n let end = Number.NEGATIVE_INFINITY;\n for (const writerSpan of child.writers) {\n if (writerSpan.output === output) {\n const resolvedEnd = writerSpan.repeats.reduce((writerEnd, repeat) =>\n writerEnd + (repeat.iterations - 1) * repeat.period,\n writerSpan.end);\n end = Math.max(end, resolvedEnd);\n }\n }\n const current = selected.get(output);\n if (current === undefined) {\n selected.set(output, {\n end,\n value,\n timingUnknown: child.duration === undefined,\n });\n } else if (failClosedOnUnknownTiming &&\n (child.duration === undefined || current.timingUnknown)) {\n selected.set(output, {\n end: Number.POSITIVE_INFINITY,\n value: unknownDiscoveredValue,\n timingUnknown: true,\n });\n } else if (end >= current.end) {\n selected.set(output, { end, value, timingUnknown: false });\n }\n }\n }\n return new Map([...selected].map(([output, selectedValue]) =>\n [output, selectedValue.value],\n ));\n}\n\nfunction applyDiscoveredWrites(\n values: Map<WritableSignal<unknown>, DiscoveredValue>,\n writes: ReadonlyMap<WritableSignal<unknown>, DiscoveredValue>,\n): void {\n for (const [output, value] of writes) values.set(output, value);\n}\n\nfunction unknownRepeatDiscovery(\n program: PibblAnimationProgram,\n outputs: readonly WritableSignal<unknown>[],\n state: DiscoveryState,\n path: readonly number[],\n repeatIterations: readonly number[],\n): DiscoveryResult {\n const duration = getExactSeekableProgramDuration(program);\n const writes = new Map(outputs.map(output =>\n [output, unknownDiscoveredValue] as const,\n ));\n applyDiscoveredWrites(state.values, writes);\n if (duration !== undefined) {\n state.durations.set(instanceKey(path, repeatIterations), duration);\n }\n const writerEnd = duration ?? Number.POSITIVE_INFINITY;\n return {\n duration,\n writers: Object.freeze(outputs.map(output => Object.freeze({\n output,\n start: 0,\n end: writerEnd,\n programPath: freezePath(path),\n repeatIterations: freezePath(repeatIterations),\n repeats: Object.freeze([]),\n }))),\n startWrites: writes,\n endWrites: writes,\n };\n}\n\nfunction shiftedResolvedWriters(\n writers: readonly ResolvedWriter[],\n offset: number,\n): readonly ResolvedWriter[] {\n return writers.map(writerSpan => Object.freeze({\n ...writerSpan,\n start: writerSpan.start + offset,\n end: writerSpan.end + offset,\n }));\n}\n\nfunction resolvedWriterLabel(writerSpan: ResolvedWriter): string {\n const iterations = writerSpan.repeatIterations.length === 0 ? '' :\n ` in repeat iterations [${writerSpan.repeatIterations.join(', ')}]`;\n return `[${writerSpan.programPath.join(', ')}]${iterations}`;\n}\n\nfunction assertResolvedWritersDisjoint(\n first: readonly ResolvedWriter[],\n second: readonly ResolvedWriter[],\n state: DiscoveryState,\n): void {\n if (!state.validateWriters) return;\n for (const firstWriter of first) {\n for (const secondWriter of second) {\n if (firstWriter.output !== secondWriter.output) continue;\n const firstSchedule: ResolvedWriterSchedule = {\n output: firstWriter.output,\n start: firstWriter.start,\n end: firstWriter.end,\n path: firstWriter.programPath,\n repeats: firstWriter.repeats,\n };\n const secondSchedule: ResolvedWriterSchedule = {\n output: secondWriter.output,\n start: secondWriter.start,\n end: secondWriter.end,\n path: secondWriter.programPath,\n repeats: secondWriter.repeats,\n };\n if (resolvedWriterSchedulesOverlap(firstSchedule, secondSchedule)) {\n const name = getSignalNode(firstWriter.output).debugName ?? '<unnamed signal>';\n throw new RangeError(\n `Pibbl animation activation-dependent writer schedules at paths ` +\n `${resolvedWriterLabel(firstWriter)} and ` +\n `${resolvedWriterLabel(secondWriter)} overlap for signal \"${name}\".`,\n );\n }\n }\n }\n}\n\nfunction discoverTrack(\n program: PibblAnimationProgram,\n state: DiscoveryState,\n path: readonly number[],\n repeatIterations: readonly number[],\n): DiscoveryResult {\n const record = getProgramRecord(program);\n if (record.kind !== 'track') throw new Error('Expected an animation track record.');\n const key = instanceKey(path, repeatIterations);\n const definitionRecord = getDefinitionRecord(record.definition);\n if (definitionRecord.kind === 'stepper') {\n const terminal = state.terminalSteppers.get(key);\n if (terminal === undefined) {\n if (state.validateWriters) {\n throw new RangeError(\n `Pibbl animation activation-dependent writer schedule at path ` +\n `[${path.join(', ')}] contains a stepper whose terminal time is not discovered.`,\n );\n }\n return {\n duration: undefined,\n writers: Object.freeze([]),\n startWrites: new Map([[record.output, unknownDiscoveredValue]]),\n endWrites: new Map([[record.output, unknownDiscoveredValue]]),\n };\n }\n state.durations.set(key, terminal.terminalTime);\n state.values.set(record.output, terminal.finalValue);\n return {\n duration: terminal.terminalTime,\n writers: Object.freeze([Object.freeze({\n output: record.output,\n start: 0,\n end: terminal.terminalTime,\n programPath: freezePath(path),\n repeatIterations: freezePath(repeatIterations),\n repeats: Object.freeze([]),\n })]),\n startWrites: new Map([[record.output, terminal.activationInput]]),\n endWrites: new Map([[record.output, terminal.finalValue]]),\n };\n }\n let start = state.starts.get(key);\n if (start === undefined) {\n const initialValue = state.values.has(record.output) ?\n state.values.get(record.output)! : unknownDiscoveredValue;\n const needsCapturedInput = definitionRecord.kind === 'spring' &&\n !definitionRecord.hasFrom || definitionRecord.kind === 'tween' &&\n !definitionRecord.hasFrom;\n if (state.validateInputs && needsCapturedInput &&\n initialValue === unknownDiscoveredValue) {\n const label = definitionRecord.debugName === undefined ?\n 'Pibbl animation definition' :\n `Pibbl animation definition \"${definitionRecord.debugName}\"`;\n throw new TypeError(\n `${label} activation input could not be determined callback-free at ` +\n `program path [${path.join(', ')}].`,\n );\n }\n if (initialValue !== unknownDiscoveredValue) {\n if (state.validateInputs && definitionRecord.kind === 'tween' &&\n !definitionRecord.hasFrom && definitionRecord.interpolate === undefined &&\n (typeof initialValue !== 'number' || typeof definitionRecord.to !== 'number')) {\n const label = definitionRecord.debugName === undefined ?\n 'Pibbl animation definition' :\n `Pibbl animation definition \"${definitionRecord.debugName}\"`;\n throw new TypeError(\n `${label} requires an explicit interpolator for nonnumeric values.`,\n );\n }\n const definition = activateSeekableDefinition(\n record.definition,\n initialValue,\n state.snapshots,\n );\n start = Object.freeze({\n programPath: freezePath(path),\n repeatIterations: freezePath(repeatIterations),\n initialValue: definition.initialValue,\n definition,\n });\n state.starts.set(key, start);\n }\n }\n const duration = start?.definition.duration ?? getExactSeekableProgramDuration(program);\n if (duration === undefined || duration === Number.POSITIVE_INFINITY) {\n throw new TypeError(\n 'Stateful or value-dependent animation timing could not be discovered callback-free.',\n );\n }\n state.durations.set(key, duration);\n let startValue: DiscoveredValue = unknownDiscoveredValue;\n let endValue: DiscoveredValue = unknownDiscoveredValue;\n if (start !== undefined) {\n const first = getSeekableDefinitionBoundaryValue(start.definition, 'start');\n const last = getSeekableDefinitionBoundaryValue(start.definition, 'end');\n if (first.kind === 'known') startValue = first.value;\n if (last.kind === 'known') endValue = last.value;\n } else {\n const first = getStaticSeekableDefinitionBoundaryValue(record.definition, 'start');\n const last = getStaticSeekableDefinitionBoundaryValue(record.definition, 'end');\n if (first.kind === 'known') startValue = first.value;\n if (last.kind === 'known') endValue = last.value;\n }\n const startWrites = new Map([[record.output, startValue]]);\n const endWrites = new Map([[record.output, endValue]]);\n state.values.set(record.output, endValue);\n return {\n duration,\n writers: Object.freeze([Object.freeze({\n output: record.output,\n start: 0,\n end: duration,\n programPath: freezePath(path),\n repeatIterations: freezePath(repeatIterations),\n repeats: Object.freeze([]),\n })]),\n startWrites,\n endWrites,\n };\n}\n\nfunction discoveredValuesEqual(\n first: ReadonlyMap<WritableSignal<unknown>, DiscoveredValue>,\n second: ReadonlyMap<WritableSignal<unknown>, DiscoveredValue>,\n): boolean {\n if (first.size !== second.size) return false;\n for (const [output, value] of first) {\n if (!second.has(output) || !Object.is(value, second.get(output))) return false;\n }\n return true;\n}\n\nfunction symbolicRepeatWriters(\n writers: readonly ResolvedWriter[],\n period: number,\n iterations: number,\n offset = 0,\n): readonly ResolvedWriter[] {\n const schedules = repeatResolvedWriterSchedules(writers.map(writerSpan => ({\n output: writerSpan.output,\n start: writerSpan.start + offset,\n end: writerSpan.end + offset,\n path: writerSpan.programPath,\n repeats: writerSpan.repeats,\n })), period, iterations);\n return Object.freeze(schedules.map((schedule, index) => Object.freeze({\n output: schedule.output,\n start: schedule.start,\n end: schedule.end,\n programPath: freezePath(schedule.path),\n repeatIterations: writers[index]!.repeatIterations,\n repeats: schedule.repeats,\n })));\n}\n\nfunction applyIterationEnd(\n state: DiscoveryState,\n baseline: ReadonlyMap<WritableSignal<unknown>, DiscoveredValue>,\n discovered: DiscoveryResult,\n reversed: boolean,\n): ReadonlyMap<WritableSignal<unknown>, DiscoveredValue> {\n const writes = reversed ? discovered.startWrites : discovered.endWrites;\n state.values.clear();\n for (const [output, value] of baseline) state.values.set(output, value);\n applyDiscoveredWrites(state.values, writes);\n return writes;\n}\n\nfunction discoverNode(\n program: PibblAnimationProgram,\n requestedTime: number,\n state: DiscoveryState,\n path: readonly number[],\n repeatIterations: readonly number[],\n): DiscoveryResult {\n const record = getProgramRecord(program);\n const localTime = Math.max(0, requestedTime);\n if (record.kind === 'track') {\n return discoverTrack(program, state, path, repeatIterations);\n }\n if (record.kind === 'wait' || record.kind === 'marker') {\n const duration = record.kind === 'wait' && record.duration.kind === 'finite' ?\n record.duration.milliseconds : 0;\n state.durations.set(instanceKey(path, repeatIterations), duration);\n return {\n duration,\n writers: Object.freeze([]),\n startWrites: new Map(),\n endWrites: new Map(),\n };\n }\n if (record.kind === 'sequence') {\n if (state.validateInputs) {\n let elapsed: number | undefined = 0;\n const writers: ResolvedWriter[] = [];\n const startWrites = new Map<WritableSignal<unknown>, DiscoveredValue>();\n const endWrites = new Map<WritableSignal<unknown>, DiscoveredValue>();\n let startBoundaryOpen = true;\n for (let index = 0; index < record.children.length; index++) {\n const discovered = discoverNode(\n record.children[index]!,\n Number.POSITIVE_INFINITY,\n state,\n [...path, index],\n repeatIterations,\n );\n writers.push(...shiftedResolvedWriters(\n discovered.writers,\n elapsed ?? Number.POSITIVE_INFINITY,\n ));\n if (startBoundaryOpen) {\n applyDiscoveredWrites(startWrites, discovered.startWrites);\n if (discovered.duration === 0) {\n applyDiscoveredWrites(startWrites, discovered.endWrites);\n } else {\n startBoundaryOpen = false;\n }\n }\n applyDiscoveredWrites(endWrites, discovered.endWrites);\n applyDiscoveredWrites(state.values, discovered.endWrites);\n elapsed = elapsed === undefined || discovered.duration === undefined ?\n undefined : elapsed + discovered.duration;\n }\n if (elapsed !== undefined) {\n state.durations.set(instanceKey(path, repeatIterations), elapsed);\n }\n return { duration: elapsed, writers: Object.freeze(writers), startWrites, endWrites };\n }\n let remaining = localTime;\n let elapsed = 0;\n const writers: ResolvedWriter[] = [];\n const startWrites = new Map<WritableSignal<unknown>, DiscoveredValue>();\n const endWrites = new Map<WritableSignal<unknown>, DiscoveredValue>();\n let startBoundaryOpen = true;\n let stoppedAt: number | undefined;\n for (let index = 0; index < record.children.length; index++) {\n const child = record.children[index]!;\n const discovered = discoverNode(\n child,\n remaining,\n state,\n [...path, index],\n repeatIterations,\n );\n writers.push(...shiftedResolvedWriters(discovered.writers, elapsed));\n if (startBoundaryOpen) {\n applyDiscoveredWrites(startWrites, discovered.startWrites);\n if (discovered.duration === 0) {\n applyDiscoveredWrites(startWrites, discovered.endWrites);\n } else {\n startBoundaryOpen = false;\n }\n }\n applyDiscoveredWrites(endWrites, discovered.endWrites);\n if (discovered.duration === undefined || remaining < discovered.duration) {\n stoppedAt = index;\n break;\n }\n elapsed += discovered.duration;\n remaining = Math.max(0, remaining - discovered.duration);\n }\n let duration: number | undefined = stoppedAt === undefined ? elapsed : undefined;\n if (stoppedAt !== undefined) {\n const activeDuration = state.durations.get(instanceKey(\n [...path, stoppedAt],\n repeatIterations,\n ));\n duration = activeDuration === undefined ? undefined : elapsed + activeDuration;\n for (let index = stoppedAt + 1;\n duration !== undefined && index < record.children.length;\n index++) {\n const childDuration = getExactSeekableProgramDuration(record.children[index]!);\n duration = childDuration === undefined ? undefined : duration + childDuration;\n }\n }\n if (duration !== undefined) state.durations.set(instanceKey(path, repeatIterations), duration);\n return { duration, writers: Object.freeze(writers), startWrites, endWrites };\n }\n if (record.kind === 'parallel') {\n const baseline = new Map(state.values);\n const children: DiscoveryResult[] = [];\n let duration: number | undefined = 0;\n for (let index = 0; index < record.children.length; index++) {\n const branchState: DiscoveryState = { ...state, values: new Map(baseline) };\n const child = discoverNode(\n record.children[index]!,\n localTime,\n branchState,\n [...path, index],\n repeatIterations,\n );\n for (const previous of children) {\n assertResolvedWritersDisjoint(previous.writers, child.writers, state);\n }\n children.push(child);\n duration = duration === undefined || child.duration === undefined ? undefined :\n Math.max(duration, child.duration);\n }\n const startWrites = discoveredWrites(...children.map(child => child.startWrites));\n const endWrites = chronologicalEndWrites(children, state.validateInputs);\n state.values.clear();\n for (const [output, value] of baseline) state.values.set(output, value);\n applyDiscoveredWrites(state.values, endWrites);\n if (duration !== undefined) state.durations.set(instanceKey(path, repeatIterations), duration);\n return {\n duration,\n writers: Object.freeze(children.flatMap(child => child.writers)),\n startWrites,\n endWrites,\n };\n }\n\n if ((state.validateWriters || state.validateInputs) && record.iterations > 1) {\n const child = record.children[0]!;\n const initialValues = new Map(state.values);\n const firstReversed = record.direction === 'reverse' ||\n record.direction === 'alternate-reverse';\n const first = discoverNode(\n child,\n Number.POSITIVE_INFINITY,\n state,\n [...path, 0],\n [...repeatIterations, 0],\n );\n if (first.duration === undefined || !Number.isFinite(first.duration)) {\n if (state.validateInputs && !state.validateWriters) {\n return unknownRepeatDiscovery(\n program,\n record.outputs,\n state,\n path,\n repeatIterations,\n );\n }\n throw new RangeError(\n 'Pibbl animation activation-dependent repeat writer period could not be proven finite.',\n );\n }\n const firstEndWrites = applyIterationEnd(state, initialValues, first, firstReversed);\n const stableAfterFirst = discoveredValuesEqual(initialValues, state.values);\n const alternating = record.direction === 'alternate' ||\n record.direction === 'alternate-reverse';\n if (stableAfterFirst && !alternating) {\n const next = shiftedResolvedWriters(first.writers, first.duration);\n assertResolvedWritersDisjoint(first.writers, next, state);\n const writers = symbolicRepeatWriters(\n first.writers,\n first.duration,\n record.iterations,\n );\n const duration = record.iterations === Number.POSITIVE_INFINITY ?\n Number.POSITIVE_INFINITY : first.duration * record.iterations;\n state.durations.set(instanceKey(path, repeatIterations), duration);\n return {\n duration,\n writers,\n startWrites: new Map(firstReversed ? first.endWrites : first.startWrites),\n endWrites: new Map(firstEndWrites),\n };\n }\n\n const steadyBaseline = new Map(state.values);\n const secondReversed = record.direction === 'reverse' ||\n record.direction === 'alternate';\n const second = discoverNode(\n child,\n Number.POSITIVE_INFINITY,\n state,\n [...path, 0],\n [...repeatIterations, 1],\n );\n if (second.duration === undefined || !Number.isFinite(second.duration)) {\n if (state.validateInputs && !state.validateWriters) {\n return unknownRepeatDiscovery(\n program,\n record.outputs,\n state,\n path,\n repeatIterations,\n );\n }\n throw new RangeError(\n 'Pibbl animation activation-dependent repeat writer period could not be proven finite.',\n );\n }\n const secondEndWrites = applyIterationEnd(\n state,\n steadyBaseline,\n second,\n secondReversed,\n );\n const shiftedSecond = shiftedResolvedWriters(second.writers, first.duration);\n assertResolvedWritersDisjoint(first.writers, shiftedSecond, state);\n if (record.iterations === 2) {\n const duration = first.duration + second.duration;\n state.durations.set(instanceKey(path, repeatIterations), duration);\n return {\n duration,\n writers: Object.freeze([...first.writers, ...shiftedSecond]),\n startWrites: new Map(firstReversed ? first.endWrites : first.startWrites),\n endWrites: new Map(secondEndWrites),\n };\n }\n if (alternating) {\n if (!discoveredValuesEqual(initialValues, state.values)) {\n if (state.validateInputs && !state.validateWriters) {\n const pairEndValues = new Map(state.values);\n const third = discoverNode(\n child,\n Number.POSITIVE_INFINITY,\n state,\n [...path, 0],\n [...repeatIterations, 2],\n );\n if (third.duration === undefined || !Number.isFinite(third.duration)) {\n return unknownRepeatDiscovery(\n program,\n record.outputs,\n state,\n path,\n repeatIterations,\n );\n }\n const thirdEndWrites = applyIterationEnd(\n state,\n pairEndValues,\n third,\n firstReversed,\n );\n const fourthBaseline = new Map(state.values);\n const fourth = discoverNode(\n child,\n Number.POSITIVE_INFINITY,\n state,\n [...path, 0],\n [...repeatIterations, 3],\n );\n if (fourth.duration === undefined || !Number.isFinite(fourth.duration)) {\n return unknownRepeatDiscovery(\n program,\n record.outputs,\n state,\n path,\n repeatIterations,\n );\n }\n const fourthEndWrites = applyIterationEnd(\n state,\n fourthBaseline,\n fourth,\n secondReversed,\n );\n if (!discoveredValuesEqual(pairEndValues, state.values)) {\n return unknownRepeatDiscovery(\n program,\n record.outputs,\n state,\n path,\n repeatIterations,\n );\n }\n const firstPairDuration = first.duration + second.duration;\n const steadyPairDuration = third.duration + fourth.duration;\n const pairCount = record.iterations === Number.POSITIVE_INFINITY ?\n Number.POSITIVE_INFINITY : Math.floor(record.iterations / 2);\n const hasOddIteration = record.iterations !== Number.POSITIVE_INFINITY &&\n record.iterations % 2 === 1;\n const duration = record.iterations === Number.POSITIVE_INFINITY ?\n Number.POSITIVE_INFINITY : firstPairDuration +\n (pairCount - 1) * steadyPairDuration +\n (hasOddIteration ? third.duration : 0);\n const finalIteration = hasOddIteration ? third : fourth;\n const finalIterationDuration = hasOddIteration ?\n third.duration : fourth.duration;\n const finalEndWrites = hasOddIteration ? thirdEndWrites : fourthEndWrites;\n if (hasOddIteration) {\n state.values.clear();\n for (const [output, value] of pairEndValues) {\n state.values.set(output, value);\n }\n applyDiscoveredWrites(state.values, thirdEndWrites);\n }\n state.durations.set(instanceKey(path, repeatIterations), duration);\n const finalOffset = Number.isFinite(duration) ?\n duration - finalIterationDuration : Number.POSITIVE_INFINITY;\n return {\n duration,\n writers: Object.freeze(shiftedResolvedWriters(\n finalIteration.writers,\n finalOffset,\n )),\n startWrites: new Map(firstReversed ? first.endWrites : first.startWrites),\n endWrites: new Map(finalEndWrites),\n };\n }\n throw new RangeError(\n 'Pibbl animation activation-dependent alternating repeat writer schedule did not reach a bounded symbolic period.',\n );\n }\n const pairDuration = first.duration + second.duration;\n assertResolvedWritersDisjoint(\n second.writers,\n shiftedResolvedWriters(first.writers, pairDuration - first.duration),\n state,\n );\n const pairCount = record.iterations === Number.POSITIVE_INFINITY ?\n Number.POSITIVE_INFINITY : Math.floor(record.iterations / 2);\n const writers: ResolvedWriter[] = [\n ...symbolicRepeatWriters(first.writers, pairDuration, pairCount),\n ...symbolicRepeatWriters(second.writers, pairDuration, pairCount, first.duration),\n ];\n const hasOddIteration = record.iterations !== Number.POSITIVE_INFINITY &&\n record.iterations % 2 === 1;\n if (hasOddIteration) {\n writers.push(...shiftedResolvedWriters(first.writers, pairCount * pairDuration));\n }\n const duration = record.iterations === Number.POSITIVE_INFINITY ?\n Number.POSITIVE_INFINITY : pairCount * pairDuration +\n (hasOddIteration ? first.duration : 0);\n state.durations.set(instanceKey(path, repeatIterations), duration);\n return {\n duration,\n writers: Object.freeze(writers),\n startWrites: new Map(firstReversed ? first.endWrites : first.startWrites),\n endWrites: new Map(hasOddIteration ? firstEndWrites : secondEndWrites),\n };\n }\n if (!discoveredValuesEqual(steadyBaseline, state.values)) {\n if (state.validateInputs && !state.validateWriters) {\n return unknownRepeatDiscovery(\n program,\n record.outputs,\n state,\n path,\n repeatIterations,\n );\n }\n throw new RangeError(\n 'Pibbl animation activation-dependent repeat writer schedule did not reach a bounded symbolic period.',\n );\n }\n assertResolvedWritersDisjoint(\n second.writers,\n shiftedResolvedWriters(second.writers, second.duration),\n state,\n );\n const remainingIterations = record.iterations === Number.POSITIVE_INFINITY ?\n Number.POSITIVE_INFINITY : record.iterations - 1;\n const writers = Object.freeze([\n ...first.writers,\n ...symbolicRepeatWriters(\n second.writers,\n second.duration,\n remainingIterations,\n first.duration,\n ),\n ]);\n const duration = record.iterations === Number.POSITIVE_INFINITY ?\n Number.POSITIVE_INFINITY :\n first.duration + second.duration * remainingIterations;\n state.durations.set(instanceKey(path, repeatIterations), duration);\n return {\n duration,\n writers,\n startWrites: new Map(firstReversed ? first.endWrites : first.startWrites),\n endWrites: new Map(secondEndWrites),\n };\n }\n\n let remaining = localTime;\n let elapsed = 0;\n let firstWrites = new Map<WritableSignal<unknown>, DiscoveredValue>();\n let lastWrites = new Map<WritableSignal<unknown>, DiscoveredValue>();\n let previousWriters: readonly ResolvedWriter[] = Object.freeze([]);\n const writers: ResolvedWriter[] = [];\n for (let iteration = 0; iteration < record.iterations; iteration++) {\n const child = record.children[0]!;\n const iterationPath = [...repeatIterations, iteration];\n const reversed = record.direction === 'reverse' ||\n record.direction === 'alternate-reverse' && iteration % 2 === 0 ||\n record.direction === 'alternate' && iteration % 2 === 1;\n const baseline = new Map(state.values);\n const discovered = discoverNode(\n child,\n reversed ? Number.POSITIVE_INFINITY : remaining,\n state,\n [...path, 0],\n iterationPath,\n );\n const duration = discovered.duration;\n if (duration === undefined || duration === Number.POSITIVE_INFINITY) {\n return {\n duration: undefined,\n writers: Object.freeze(writers),\n startWrites: firstWrites,\n endWrites: lastWrites,\n };\n }\n if (duration === 0 && record.iterations === Number.POSITIVE_INFINITY) {\n throw new TypeError('An infinite repeat with zero duration cannot be discovered seekably.');\n }\n const iterationWriters = shiftedResolvedWriters(discovered.writers, elapsed);\n if (state.validateWriters) {\n assertResolvedWritersDisjoint(previousWriters, iterationWriters, state);\n writers.push(...iterationWriters);\n previousWriters = iterationWriters;\n }\n const iterationStartWrites = reversed ? discovered.endWrites : discovered.startWrites;\n const iterationEndWrites = reversed ? discovered.startWrites : discovered.endWrites;\n if (iteration === 0) firstWrites = new Map(iterationStartWrites);\n lastWrites = new Map(iterationEndWrites);\n state.values.clear();\n for (const [output, value] of baseline) state.values.set(output, value);\n applyDiscoveredWrites(state.values, iterationEndWrites);\n elapsed += duration;\n if (remaining < duration) {\n const exact = getExactSeekableProgramDuration(program);\n if (exact !== undefined) state.durations.set(instanceKey(path, repeatIterations), exact);\n return {\n duration: exact,\n writers: Object.freeze(writers),\n startWrites: firstWrites,\n endWrites: lastWrites,\n };\n }\n if (iteration + 1 === record.iterations) {\n state.durations.set(instanceKey(path, repeatIterations), elapsed);\n return {\n duration: elapsed,\n writers: Object.freeze(writers),\n startWrites: firstWrites,\n endWrites: lastWrites,\n };\n }\n remaining = Math.max(0, remaining - duration);\n }\n return {\n duration: elapsed,\n writers: Object.freeze(writers),\n startWrites: firstWrites,\n endWrites: lastWrites,\n };\n}\n\nfunction frozenStepperTerminal(\n path: readonly number[],\n repeatIterations: readonly number[],\n activationInput: unknown,\n finalValue: unknown,\n terminalStep: number,\n terminalTime: number,\n): InternalStepperTerminal {\n return Object.freeze({\n programPath: freezePath(path),\n repeatIterations: freezePath(repeatIterations),\n activationInput,\n finalValue,\n terminalStep,\n terminalTime,\n });\n}\n\nfunction frozenStepperTrace(\n path: readonly number[],\n repeatIterations: readonly number[],\n appliedSteps: number,\n retainedRemainderMilliseconds: number,\n clampedElapsedMilliseconds: number,\n discardedElapsedMilliseconds: number,\n terminal: InternalStepperTerminal | undefined,\n): ProgramStepperTrace {\n return Object.freeze({\n programPath: freezePath(path),\n repeatIterations: freezePath(repeatIterations),\n appliedSteps,\n retainedRemainderMilliseconds,\n clampedElapsedMilliseconds,\n discardedElapsedMilliseconds,\n terminal: terminal === undefined ? undefined : Object.freeze({\n step: terminal.terminalStep,\n time: terminal.terminalTime,\n }),\n });\n}\n\nfunction sampleStepperTrack(\n program: PibblAnimationProgram,\n localTime: number,\n state: SampleState,\n path: readonly number[],\n repeatIterations: readonly number[],\n offset: number,\n): SampleResult {\n const trackRecord = getProgramRecord(program);\n if (trackRecord.kind !== 'track') throw new Error('Expected an animation track record.');\n const definitionRecord = getDefinitionRecord(trackRecord.definition);\n if (definitionRecord.kind !== 'stepper') {\n throw new Error('Expected a stateful animation definition.');\n }\n const key = instanceKey(path, repeatIterations);\n const knownTerminal = state.terminalSteppers.get(key);\n if (!state.replaySteppers && knownTerminal !== undefined &&\n localTime >= knownTerminal.terminalTime) {\n state.batch.stage(trackRecord.output, knownTerminal.finalValue, baselineWriter);\n state.writtenOutputs.add(trackRecord.output);\n state.owners.set(trackRecord.output, Object.freeze({\n start: offset,\n end: offset + knownTerminal.terminalTime,\n }));\n state.stepperTraces.push(frozenStepperTrace(\n path,\n repeatIterations,\n 0,\n 0,\n 0,\n 0,\n undefined,\n ));\n setDuration(state, path, repeatIterations, knownTerminal.terminalTime);\n return Object.freeze({ duration: knownTerminal.terminalTime, atEnd: true });\n }\n if (!Number.isFinite(localTime)) {\n throw new TypeError(\n `${stepperLabel(definitionRecord.debugName)} terminal time is not discovered.`,\n );\n }\n\n let stepperRecord = state.steppers.get(key);\n let newlyInitialized = false;\n let zeroDurationReservation = false;\n if (stepperRecord === undefined) {\n if (definitionRecord.done !== undefined) {\n reservePotentialZeroDurationStepperOccurrence(\n state,\n definitionRecord.debugName,\n path,\n repeatIterations,\n );\n zeroDurationReservation = true;\n }\n const activationInput = snapshotAnimationActivationValue(\n state.batch.read(trackRecord.output),\n state.snapshots,\n );\n const initialState = invokeStepperCallback(\n definitionRecord.debugName,\n 'initial',\n path,\n repeatIterations,\n state.frameId,\n 0,\n () => definitionRecord.initial(activationInput),\n );\n stepperRecord = {\n programPath: freezePath(path),\n repeatIterations: freezePath(repeatIterations),\n activationInput,\n state: initialState,\n wholeSteps: 0,\n remainderMilliseconds: 0,\n appliedElapsedMilliseconds: 0,\n discardedElapsedMilliseconds: 0,\n sampledLocalTime: 0,\n };\n newlyInitialized = true;\n }\n\n let terminal: InternalStepperTerminal | undefined;\n if (newlyInitialized && definitionRecord.done !== undefined && invokeStepperCallback(\n definitionRecord.debugName,\n 'done',\n path,\n repeatIterations,\n state.frameId,\n stepperRecord.appliedElapsedMilliseconds,\n () => definitionRecord.done!(stepperRecord.state),\n )) {\n terminal = frozenStepperTerminal(\n path,\n repeatIterations,\n stepperRecord.activationInput,\n undefined,\n stepperRecord.wholeSteps,\n stepperRecord.appliedElapsedMilliseconds,\n );\n }\n if (zeroDurationReservation && terminal === undefined) {\n state.zeroDurationOccurrences.value--;\n }\n\n const rawContribution = Math.max(0, localTime - stepperRecord.sampledLocalTime);\n let frameBudget: InternalStepperFrameBudget | undefined;\n if (!state.replaySteppers) {\n const budgetKey = stepperFrameBudgetKey(path);\n frameBudget = state.stepperFrameBudgets.get(budgetKey);\n if (frameBudget === undefined) {\n const available = Math.min(\n rawContribution,\n definitionRecord.maxElapsedMilliseconds,\n );\n frameBudget = {\n remainingMilliseconds: available,\n discardedMilliseconds: rawContribution - available,\n discardedReported: false,\n };\n state.stepperFrameBudgets.set(budgetKey, frameBudget);\n }\n }\n const clampedCandidate = frameBudget === undefined ? rawContribution :\n Math.min(rawContribution, frameBudget.remainingMilliseconds);\n const previousRemainder = stepperRecord.remainderMilliseconds;\n const accumulator = previousRemainder + clampedCandidate;\n const availableSteps = terminal === undefined ?\n Math.floor(accumulator / definitionRecord.stepMilliseconds) : 0;\n if (!Number.isSafeInteger(availableSteps)) {\n throw new RangeError(\n `${stepperLabel(definitionRecord.debugName)} whole-step count must be a safe integer ` +\n `at program path [${path.join(', ')}], frame ${state.frameId}, local time ` +\n `${localTime}; received ${availableSteps}.`,\n );\n }\n let appliedSteps = 0;\n for (; appliedSteps < availableSteps; appliedSteps++) {\n stepperRecord.state = invokeStepperCallback(\n definitionRecord.debugName,\n 'step',\n path,\n repeatIterations,\n state.frameId,\n stepperRecord.appliedElapsedMilliseconds + definitionRecord.stepMilliseconds,\n () => definitionRecord.step(\n stepperRecord.state,\n definitionRecord.stepMilliseconds,\n ),\n );\n stepperRecord.wholeSteps++;\n stepperRecord.appliedElapsedMilliseconds =\n stepperRecord.wholeSteps * definitionRecord.stepMilliseconds;\n if (definitionRecord.done !== undefined && invokeStepperCallback(\n definitionRecord.debugName,\n 'done',\n path,\n repeatIterations,\n state.frameId,\n stepperRecord.appliedElapsedMilliseconds,\n () => definitionRecord.done!(stepperRecord.state),\n )) {\n appliedSteps++;\n terminal = frozenStepperTerminal(\n path,\n repeatIterations,\n stepperRecord.activationInput,\n undefined,\n stepperRecord.wholeSteps,\n stepperRecord.appliedElapsedMilliseconds,\n );\n break;\n }\n }\n stepperRecord.remainderMilliseconds = terminal === undefined ?\n accumulator - appliedSteps * definitionRecord.stepMilliseconds : 0;\n if (Math.abs(stepperRecord.remainderMilliseconds) < Number.EPSILON) {\n stepperRecord.remainderMilliseconds = 0;\n }\n const clampedContribution = terminal === undefined ? clampedCandidate :\n Math.max(0, Math.min(\n clampedCandidate,\n appliedSteps * definitionRecord.stepMilliseconds - previousRemainder,\n ));\n if (frameBudget !== undefined) {\n frameBudget.remainingMilliseconds = Math.max(\n 0,\n frameBudget.remainingMilliseconds - clampedContribution,\n );\n }\n const discardedGap = frameBudget !== undefined &&\n !frameBudget.discardedReported ? frameBudget.discardedMilliseconds : 0;\n if (frameBudget !== undefined && !frameBudget.discardedReported) {\n frameBudget.discardedReported = true;\n }\n stepperRecord.discardedElapsedMilliseconds += discardedGap;\n stepperRecord.sampledLocalTime = localTime;\n\n const projected = invokeStepperCallback(\n definitionRecord.debugName,\n 'read',\n path,\n repeatIterations,\n state.frameId,\n stepperRecord.appliedElapsedMilliseconds,\n () => validateStepperOutput(\n definitionRecord.read(stepperRecord.state),\n definitionRecord.debugName,\n ),\n );\n if (terminal !== undefined) {\n terminal = frozenStepperTerminal(\n path,\n repeatIterations,\n stepperRecord.activationInput,\n projected,\n terminal.terminalStep,\n terminal.terminalTime,\n );\n state.terminalSteppers.set(key, terminal);\n state.steppers.delete(key);\n } else {\n state.steppers.set(key, stepperRecord);\n state.activeStepperKeys.add(key);\n }\n state.stepperTraces.push(frozenStepperTrace(\n path,\n repeatIterations,\n appliedSteps,\n stepperRecord.remainderMilliseconds,\n clampedContribution,\n discardedGap,\n terminal,\n ));\n state.batch.stage(trackRecord.output, projected, baselineWriter);\n state.writtenOutputs.add(trackRecord.output);\n const duration = terminal?.terminalTime ??\n (definitionRecord.done === undefined ? Number.POSITIVE_INFINITY : undefined);\n state.owners.set(trackRecord.output, Object.freeze({\n start: offset,\n end: offset + (duration ?? Number.POSITIVE_INFINITY),\n }));\n setDuration(state, path, repeatIterations, duration);\n return Object.freeze({\n duration,\n atEnd: terminal !== undefined && localTime >= terminal.terminalTime,\n });\n}\n\nfunction sampleTrack(\n program: PibblAnimationProgram,\n localTime: number,\n state: SampleState,\n path: readonly number[],\n repeatIterations: readonly number[],\n offset: number,\n): SampleResult {\n const record = getProgramRecord(program);\n if (record.kind !== 'track') throw new Error('Expected an animation track record.');\n if (getDefinitionRecord(record.definition).kind === 'stepper') {\n return sampleStepperTrack(\n program,\n localTime,\n state,\n path,\n repeatIterations,\n offset,\n );\n }\n const key = instanceKey(path, repeatIterations);\n let start = state.starts.get(key);\n if (start === undefined) {\n const initialValue = state.batch.read(record.output);\n const definition = activateSeekableDefinition(\n record.definition,\n initialValue,\n state.snapshots,\n );\n start = Object.freeze({\n programPath: freezePath(path),\n repeatIterations: freezePath(repeatIterations),\n initialValue: definition.initialValue,\n definition,\n });\n state.starts.set(key, start);\n }\n const duration = start.definition.duration;\n state.batch.stage(\n record.output,\n sampleActivatedSeekableDefinition(start.definition, Math.min(localTime, duration)),\n baselineWriter,\n );\n state.writtenOutputs.add(record.output);\n state.owners.set(record.output, Object.freeze({\n start: offset,\n end: offset + duration,\n }));\n setDuration(state, path, repeatIterations, duration);\n return Object.freeze({ duration, atEnd: localTime >= duration });\n}\n\nfunction forkSampleState(\n state: SampleState,\n outputs: readonly WritableSignal<unknown>[],\n): SampleState {\n const batch = createSignalCommitBatch();\n for (const output of outputs) {\n batch.stage(output, state.batch.read(output), baselineWriter);\n }\n return {\n activation: state.activation,\n batch,\n starts: state.starts,\n durations: state.durations,\n writtenOutputs: new Set(),\n snapshots: state.snapshots,\n owners: new Map(),\n steppers: state.steppers,\n terminalSteppers: state.terminalSteppers,\n repeatFrontiers: state.repeatFrontiers,\n repeatTerminals: state.repeatTerminals,\n reverseEndpoints: state.reverseEndpoints,\n stepperFrameBudgets: state.stepperFrameBudgets,\n zeroDurationOccurrences: state.zeroDurationOccurrences,\n sampledTimelineEvents: state.sampledTimelineEvents,\n nextTimelineSourceOrder: state.nextTimelineSourceOrder,\n activeStepperKeys: state.activeStepperKeys,\n activeRepeatFrontierKeys: state.activeRepeatFrontierKeys,\n activeReverseEndpointKeys: state.activeReverseEndpointKeys,\n stepperTraces: state.stepperTraces,\n frameId: state.frameId,\n replaySteppers: state.replaySteppers,\n };\n}\n\nfunction ownerWins(\n candidate: SampledWriterOwner,\n current: SampledWriterOwner | undefined,\n time: number,\n): boolean {\n if (current === undefined) return true;\n const candidateActive = candidate.start <= time && time <= candidate.end;\n const currentActive = current.start <= time && time <= current.end;\n if (candidateActive !== currentActive) return candidateActive;\n return candidate.end >= current.end;\n}\n\nfunction queueSampledTimelineEvent(\n state: SampleState,\n event: Omit<TimelineEvent, 'sourceOrder'>,\n): void {\n const duplicate = state.sampledTimelineEvents.some(existing =>\n existing.kind === event.kind &&\n existing.marker === event.marker &&\n existing.programTime === event.programTime &&\n existing.iteration === event.iteration &&\n existing.repeatIterations.length === event.repeatIterations.length &&\n existing.repeatIterations.every(\n (part, index) => part === event.repeatIterations[index],\n ) &&\n existing.programPath.length === event.programPath.length &&\n existing.programPath.every((part, index) => part === event.programPath[index]),\n );\n if (duplicate) return;\n state.sampledTimelineEvents.push(Object.freeze({\n ...event,\n programPath: freezePath(event.programPath),\n repeatIterations: freezePath(event.repeatIterations),\n sourceOrder: state.nextTimelineSourceOrder.value++,\n }));\n}\n\nfunction pathHasPrefix(\n path: readonly number[],\n prefix: readonly number[],\n): boolean {\n return prefix.length <= path.length &&\n prefix.every((part, index) => path[index] === part);\n}\n\nfunction belongsToOccurrence(\n programPath: readonly number[],\n repeatIterations: readonly number[],\n childPath: readonly number[],\n iterationPath: readonly number[],\n): boolean {\n return pathHasPrefix(programPath, childPath) &&\n pathHasPrefix(repeatIterations, iterationPath);\n}\n\nfunction clearOccurrenceState(\n state: SampleState,\n childPath: readonly number[],\n iterationPath: readonly number[],\n): void {\n for (const [key, start] of state.starts) {\n if (belongsToOccurrence(\n start.programPath,\n start.repeatIterations,\n childPath,\n iterationPath,\n )) state.starts.delete(key);\n }\n for (const [key, stepperRecord] of state.steppers) {\n if (belongsToOccurrence(\n stepperRecord.programPath,\n stepperRecord.repeatIterations,\n childPath,\n iterationPath,\n )) state.steppers.delete(key);\n }\n for (const [key, terminal] of state.terminalSteppers) {\n if (belongsToOccurrence(\n terminal.programPath,\n terminal.repeatIterations,\n childPath,\n iterationPath,\n )) state.terminalSteppers.delete(key);\n }\n for (const [key, frontier] of state.repeatFrontiers) {\n if (belongsToOccurrence(\n frontier.programPath,\n frontier.repeatIterations,\n childPath,\n iterationPath,\n )) state.repeatFrontiers.delete(key);\n }\n for (const [key, terminal] of state.repeatTerminals) {\n if (belongsToOccurrence(\n terminal.programPath,\n terminal.repeatIterations,\n childPath,\n iterationPath,\n )) state.repeatTerminals.delete(key);\n }\n for (const [key, endpoint] of state.reverseEndpoints) {\n if (belongsToOccurrence(\n endpoint.programPath,\n endpoint.repeatIterations,\n childPath,\n iterationPath,\n )) state.reverseEndpoints.delete(key);\n }\n}\n\nfunction programValues(\n program: PibblAnimationProgram,\n batch: SignalCommitBatch,\n): Map<WritableSignal<unknown>, unknown> {\n return new Map(getProgramRecord(program).outputs.map(output => [output, batch.read(output)]));\n}\n\nfunction stageProgramValues(\n program: PibblAnimationProgram,\n values: ReadonlyMap<WritableSignal<unknown>, unknown>,\n state: SampleState,\n offset: number,\n duration: number | undefined,\n): void {\n for (const output of getProgramRecord(program).outputs) {\n if (!values.has(output)) continue;\n state.batch.stage(output, values.get(output), baselineWriter);\n state.writtenOutputs.add(output);\n state.owners.set(output, Object.freeze({\n start: offset,\n end: offset + (duration ?? Number.POSITIVE_INFINITY),\n }));\n }\n}\n\nfunction firstStepperDebugName(program: PibblAnimationProgram): string | undefined {\n const record = getProgramRecord(program);\n if (record.kind === 'track') {\n const definition = getDefinitionRecord(record.definition);\n return definition.kind === 'stepper' ? definition.debugName : undefined;\n }\n for (const child of record.children) {\n if (programContainsStepper(child)) return firstStepperDebugName(child);\n }\n return undefined;\n}\n\nfunction isolatedReplayState(\n state: SampleState,\n values: ReadonlyMap<WritableSignal<unknown>, unknown>,\n): SampleState {\n const isolated = createSampleState(\n state.activation,\n new Map(),\n new Map(),\n new Map(),\n new Map(),\n new Map(),\n new Map(),\n new Map(),\n state.frameId,\n true,\n state.zeroDurationOccurrences,\n );\n for (const [output, value] of values) {\n isolated.batch.stage(output, value, baselineWriter);\n }\n return isolated;\n}\n\nfunction mergeReplaySample(\n program: PibblAnimationProgram,\n replay: SampleState,\n state: SampleState,\n offset: number,\n duration: number,\n): void {\n for (const [key, value] of replay.durations) state.durations.set(key, value);\n state.stepperTraces.push(...replay.stepperTraces);\n stageProgramValues(program, programValues(program, replay.batch), state, offset, duration);\n}\n\nfunction programValuesEqual(\n program: PibblAnimationProgram,\n first: ReadonlyMap<WritableSignal<unknown>, unknown>,\n second: ReadonlyMap<WritableSignal<unknown>, unknown>,\n): boolean {\n return getProgramRecord(program).outputs.every(output =>\n first.has(output) && second.has(output) && Object.is(first.get(output), second.get(output)),\n );\n}\n\nfunction rememberForwardEndpoint(\n state: SampleState,\n endpointPath: readonly number[],\n endpointRepeatIterations: readonly number[],\n values: ReadonlyMap<WritableSignal<unknown>, unknown>,\n duration: number,\n): void {\n const endpointKey = instanceKey(endpointPath, endpointRepeatIterations);\n state.reverseEndpoints.set(endpointKey, Object.freeze({\n programPath: freezePath(endpointPath),\n repeatIterations: freezePath(endpointRepeatIterations),\n duration,\n inputValues: new Map(values),\n }));\n state.activeReverseEndpointKeys.add(endpointKey);\n}\n\nfunction requireReverseEndpoint(\n program: PibblAnimationProgram,\n state: SampleState,\n endpointPath: readonly number[],\n endpointRepeatIterations: readonly number[],\n path: readonly number[],\n repeatIterations: readonly number[],\n values: ReadonlyMap<WritableSignal<unknown>, unknown>,\n): number {\n const debugName = firstStepperDebugName(program);\n const repeats = repeatIterations.length === 0 ? '' :\n `, repeat iterations [${repeatIterations.join(', ')}]`;\n if (getProgramRecord(program).duration.kind === 'infinite') {\n throw new TypeError(\n `${stepperLabel(debugName)} has no finite endpoint for reversed execution at ` +\n `program path [${path.join(', ')}]${repeats}.`,\n );\n }\n const endpointKey = instanceKey(endpointPath, endpointRepeatIterations);\n const knownEndpoint = state.reverseEndpoints.get(endpointKey);\n if (knownEndpoint === undefined ||\n !programValuesEqual(program, knownEndpoint.inputValues, values)) {\n throw new TypeError(\n `${stepperLabel(debugName)} reversed occurrence requires a previously discovered ` +\n `finite endpoint for the exact activation input at program path ` +\n `[${path.join(', ')}]${repeats}.`,\n );\n }\n state.activeReverseEndpointKeys.add(endpointKey);\n return knownEndpoint.duration;\n}\n\nfunction sampleReversedOccurrence(\n program: PibblAnimationProgram,\n occurrenceTime: number,\n state: SampleState,\n path: readonly number[],\n repeatIterations: readonly number[],\n endpointPath: readonly number[],\n endpointRepeatIterations: readonly number[],\n values: ReadonlyMap<WritableSignal<unknown>, unknown>,\n offset: number,\n): SampleResult {\n const duration = requireReverseEndpoint(\n program,\n state,\n endpointPath,\n endpointRepeatIterations,\n path,\n repeatIterations,\n values,\n );\n const replay = isolatedReplayState(state, values);\n sampleNode(\n program,\n duration - Math.min(occurrenceTime, duration),\n replay,\n path,\n repeatIterations,\n offset,\n );\n mergeReplaySample(program, replay, state, offset, duration);\n return Object.freeze({ duration, atEnd: occurrenceTime >= duration });\n}\n\nfunction reversedRepeatOccurrence(\n direction: 'normal' | 'reverse' | 'alternate' | 'alternate-reverse',\n iteration: number,\n): boolean {\n return direction === 'reverse' ||\n direction === 'alternate-reverse' && iteration % 2 === 0 ||\n direction === 'alternate' && iteration % 2 === 1;\n}\n\nfunction sampleStatefulRepeatFrontier(\n program: PibblAnimationProgram,\n localTime: number,\n state: SampleState,\n path: readonly number[],\n repeatIterations: readonly number[],\n offset: number,\n): SampleResult {\n const record = getProgramRecord(program);\n if (record.kind !== 'repeat') throw new Error('Expected an animation repeat record.');\n const child = record.children[0]!;\n const childPath = [...path, 0];\n const key = instanceKey(path, repeatIterations);\n if (state.reverseEndpoints.has(key)) {\n state.activeReverseEndpointKeys.add(key);\n }\n const terminal = state.repeatTerminals.get(key);\n if (terminal !== undefined && localTime >= terminal.duration) {\n stageProgramValues(program, terminal.values, state, offset, terminal.duration);\n setDuration(state, path, repeatIterations, terminal.duration);\n return Object.freeze({ duration: terminal.duration, atEnd: true });\n }\n\n let frontier = state.repeatFrontiers.get(key);\n if (frontier === undefined || localTime < frontier.elapsedMilliseconds) {\n const initialValues = programValues(program, state.batch);\n frontier = {\n programPath: freezePath(path),\n repeatIterations: freezePath(repeatIterations),\n completedIterations: 0,\n elapsedMilliseconds: 0,\n iterationInputValues: new Map(initialValues),\n values: new Map(initialValues),\n };\n state.repeatFrontiers.set(key, frontier);\n }\n stageProgramValues(program, frontier.values, state, offset, undefined);\n\n let remaining = Math.max(0, localTime - frontier.elapsedMilliseconds);\n for (let iteration = frontier.completedIterations;\n iteration < record.iterations;\n iteration++) {\n const iterationPath = [...repeatIterations, iteration];\n const reversed = reversedRepeatOccurrence(record.direction, iteration);\n const sampled = reversed ? sampleReversedOccurrence(\n child,\n remaining,\n state,\n childPath,\n iterationPath,\n path,\n repeatIterations,\n frontier.iterationInputValues,\n offset + frontier.elapsedMilliseconds,\n ) : sampleNode(\n child,\n remaining,\n state,\n childPath,\n iterationPath,\n offset + frontier.elapsedMilliseconds,\n );\n\n if (sampled.duration === undefined) {\n frontier.values = programValues(program, state.batch);\n state.activeRepeatFrontierKeys.add(key);\n return Object.freeze({ duration: undefined, atEnd: false });\n }\n if (sampled.duration === 0 && record.iterations === Number.POSITIVE_INFINITY) {\n throw new TypeError('An infinite repeat with zero duration cannot be evaluated seekably.');\n }\n if (!sampled.atEnd) {\n frontier.values = programValues(program, state.batch);\n state.activeRepeatFrontierKeys.add(key);\n return Object.freeze({\n duration: getExactSeekableProgramDuration(program),\n atEnd: false,\n });\n }\n\n frontier.values = programValues(program, state.batch);\n if (!reversed) {\n rememberForwardEndpoint(\n state,\n path,\n repeatIterations,\n frontier.iterationInputValues,\n sampled.duration,\n );\n }\n if (programContainsStepper(child)) {\n clearOccurrenceState(state, childPath, iterationPath);\n }\n frontier.completedIterations = iteration + 1;\n frontier.elapsedMilliseconds += sampled.duration;\n if (frontier.completedIterations < record.iterations) {\n queueSampledTimelineEvent(state, {\n kind: 'iteration',\n programTime: offset + frontier.elapsedMilliseconds,\n programPath: path,\n repeatIterations,\n iteration: frontier.completedIterations,\n });\n }\n if (frontier.completedIterations === record.iterations) {\n const repeatTerminal: InternalRepeatTerminal = Object.freeze({\n programPath: freezePath(path),\n repeatIterations: freezePath(repeatIterations),\n duration: frontier.elapsedMilliseconds,\n values: new Map(frontier.values),\n });\n state.repeatFrontiers.delete(key);\n state.repeatTerminals.set(key, repeatTerminal);\n setDuration(state, path, repeatIterations, repeatTerminal.duration);\n return Object.freeze({ duration: repeatTerminal.duration, atEnd: true });\n }\n\n remaining = Math.max(0, remaining - sampled.duration);\n frontier.iterationInputValues = new Map(frontier.values);\n stageProgramValues(\n program,\n frontier.values,\n state,\n offset + frontier.elapsedMilliseconds,\n undefined,\n );\n }\n throw new Error('Pibbl animation repeat frontier exceeded its declared iterations.');\n}\n\nfunction sampleNode(\n program: PibblAnimationProgram,\n requestedTime: number,\n state: SampleState,\n path: readonly number[],\n repeatIterations: readonly number[],\n offset = 0,\n): SampleResult {\n const record = getProgramRecord(program);\n const localTime = Math.max(0, requestedTime);\n if (record.kind === 'track') {\n return sampleTrack(program, localTime, state, path, repeatIterations, offset);\n }\n if (record.kind === 'wait') {\n const duration = record.duration.kind === 'finite' ? record.duration.milliseconds : 0;\n setDuration(state, path, repeatIterations, duration);\n return Object.freeze({ duration, atEnd: localTime >= duration });\n }\n if (record.kind === 'marker') {\n queueSampledTimelineEvent(state, {\n kind: 'marker',\n marker: record.name,\n programTime: offset,\n programPath: path,\n repeatIterations,\n iteration: repeatIterations.at(-1) ?? 0,\n });\n setDuration(state, path, repeatIterations, 0);\n return Object.freeze({ duration: 0, atEnd: true });\n }\n if (record.kind === 'sequence') {\n let remaining = localTime;\n let elapsed = 0;\n for (let index = 0; index < record.children.length; index++) {\n const child = record.children[index]!;\n const childPath = [...path, index];\n const sampled = sampleNode(\n child,\n remaining,\n state,\n childPath,\n repeatIterations,\n offset + elapsed,\n );\n if (!sampled.atEnd || sampled.duration === undefined) {\n let resolvedDuration = sampled.duration === undefined ? undefined :\n elapsed + sampled.duration;\n for (let later = index + 1;\n resolvedDuration !== undefined && later < record.children.length;\n later++) {\n const laterDuration = getExactSeekableProgramDuration(record.children[later]!);\n resolvedDuration = laterDuration === undefined ? undefined :\n resolvedDuration + laterDuration;\n }\n setDuration(state, path, repeatIterations, resolvedDuration);\n return Object.freeze({ duration: resolvedDuration, atEnd: false });\n }\n elapsed += sampled.duration;\n remaining = Math.max(0, remaining - sampled.duration);\n }\n setDuration(state, path, repeatIterations, elapsed);\n return Object.freeze({ duration: elapsed, atEnd: true });\n }\n if (record.kind === 'parallel') {\n let duration = 0;\n let durationKnown = true;\n let atEnd = true;\n const selected = new Map<WritableSignal<unknown>, {\n readonly owner: SampledWriterOwner;\n readonly value: unknown;\n }>();\n for (let index = 0; index < record.children.length; index++) {\n const child = record.children[index]!;\n const branchState = forkSampleState(state, getProgramRecord(child).outputs);\n const sampled = sampleNode(\n child,\n localTime,\n branchState,\n [...path, index],\n repeatIterations,\n offset,\n );\n if (sampled.duration === undefined) durationKnown = false;\n else duration = Math.max(duration, sampled.duration);\n if (!sampled.atEnd) atEnd = false;\n for (const output of branchState.writtenOutputs) {\n const owner = branchState.owners.get(output)!;\n if (ownerWins(owner, selected.get(output)?.owner, offset + localTime)) {\n selected.set(output, { owner, value: branchState.batch.read(output) });\n }\n }\n }\n for (const [output, candidate] of selected) {\n state.batch.stage(output, candidate.value, baselineWriter);\n state.writtenOutputs.add(output);\n state.owners.set(output, candidate.owner);\n }\n const resolvedDuration = durationKnown ? duration : undefined;\n setDuration(state, path, repeatIterations, resolvedDuration);\n return Object.freeze({ duration: resolvedDuration, atEnd });\n }\n\n const directChild = record.children[0]!;\n if (programContainsStepper(directChild) && !state.replaySteppers) {\n return sampleStatefulRepeatFrontier(\n program,\n localTime,\n state,\n path,\n repeatIterations,\n offset,\n );\n }\n const directChildDuration = getExactSeekableProgramDuration(directChild);\n if (directChildDuration !== undefined && Number.isFinite(directChildDuration) &&\n (directChildDuration > 0 || record.iterations !== Number.POSITIVE_INFINITY) &&\n canDirectlySelectRepeat(directChild)) {\n const totalDuration = directChildDuration === 0 ? 0 :\n record.iterations === Number.POSITIVE_INFINITY ? Number.POSITIVE_INFINITY :\n directChildDuration * record.iterations;\n const atEnd = localTime >= totalDuration;\n if (directChildDuration === 0 && getProgramRecord(directChild).outputs.length === 0) {\n setDuration(state, path, repeatIterations, totalDuration);\n return Object.freeze({ duration: totalDuration, atEnd });\n }\n const iteration = atEnd ? Math.max(0, record.iterations - 1) :\n Math.floor(localTime / directChildDuration);\n const iterationStart = iteration * directChildDuration;\n const iterationTime = atEnd ? directChildDuration : localTime - iterationStart;\n const reversed = record.direction === 'reverse' ||\n record.direction === 'alternate-reverse' && iteration % 2 === 0 ||\n record.direction === 'alternate' && iteration % 2 === 1;\n sampleNode(\n directChild,\n reversed ? directChildDuration - iterationTime : iterationTime,\n state,\n [...path, 0],\n [...repeatIterations, iteration],\n offset + iterationStart,\n );\n setDuration(state, path, repeatIterations, totalDuration);\n return Object.freeze({ duration: totalDuration, atEnd });\n }\n\n if (localTime === Number.POSITIVE_INFINITY &&\n record.iterations === Number.POSITIVE_INFINITY) {\n throw new TypeError('An infinite repeat cannot be resolved to a seekable terminal state.');\n }\n let remaining = localTime;\n let elapsed = 0;\n for (let iteration = 0; iteration < record.iterations; iteration++) {\n const child = record.children[0]!;\n const childPath = [...path, 0];\n const iterationPath = [...repeatIterations, iteration];\n const reversed = reversedRepeatOccurrence(record.direction, iteration);\n const inputValues = programValues(child, state.batch);\n let duration: number;\n if (reversed && programContainsStepper(child)) {\n const sampled = sampleReversedOccurrence(\n child,\n remaining,\n state,\n childPath,\n iterationPath,\n path,\n repeatIterations,\n inputValues,\n offset + elapsed,\n );\n duration = sampled.duration!;\n } else if (reversed) {\n const exactDuration = knownDuration(child, state, childPath, iterationPath);\n if (exactDuration === undefined) {\n const terminal = sampleNode(\n child,\n Number.POSITIVE_INFINITY,\n state,\n childPath,\n iterationPath,\n offset + elapsed,\n );\n if (!terminal.atEnd || terminal.duration === undefined ||\n terminal.duration === Number.POSITIVE_INFINITY) {\n throw new TypeError('A reversed repeat child must have a finite seekable duration.');\n }\n duration = terminal.duration;\n } else {\n if (exactDuration === Number.POSITIVE_INFINITY) {\n throw new TypeError('A reversed repeat child must have a finite seekable duration.');\n }\n duration = exactDuration;\n }\n sampleNode(\n child,\n duration - Math.min(remaining, duration),\n state,\n childPath,\n iterationPath,\n offset + elapsed,\n );\n } else {\n const sampled = sampleNode(\n child,\n remaining,\n state,\n childPath,\n iterationPath,\n offset + elapsed,\n );\n if (sampled.duration === undefined) {\n return Object.freeze({ duration: undefined, atEnd: false });\n }\n duration = sampled.duration;\n }\n if (duration === 0 && record.iterations === Number.POSITIVE_INFINITY) {\n throw new TypeError('An infinite repeat with zero duration cannot be evaluated seekably.');\n }\n const iterationComplete = remaining >= duration;\n elapsed += duration;\n if (!iterationComplete) {\n const exact = getExactSeekableProgramDuration(program);\n setDuration(state, path, repeatIterations, exact);\n return Object.freeze({ duration: exact, atEnd: false });\n }\n if (programContainsStepper(child)) {\n if (!reversed) {\n rememberForwardEndpoint(\n state,\n path,\n repeatIterations,\n inputValues,\n duration,\n );\n }\n clearOccurrenceState(state, childPath, iterationPath);\n }\n if (iteration + 1 < record.iterations) {\n queueSampledTimelineEvent(state, {\n kind: 'iteration',\n programTime: offset + elapsed,\n programPath: path,\n repeatIterations,\n iteration: iteration + 1,\n });\n }\n if (iteration + 1 === record.iterations) {\n setDuration(state, path, repeatIterations, elapsed);\n return Object.freeze({ duration: elapsed, atEnd: true });\n }\n remaining = Math.max(0, remaining - duration);\n }\n setDuration(state, path, repeatIterations, elapsed);\n return Object.freeze({ duration: elapsed, atEnd: true });\n}\n\nfunction durationForTimeline(\n program: PibblAnimationProgram,\n state: SampleState,\n path: readonly number[],\n repeatIterations: readonly number[],\n): number | undefined {\n return knownDuration(program, state, path, repeatIterations);\n}\n\nfunction transformedTime(transform: TimeTransform, localTime: number): number {\n const result = transform.origin + transform.scale * localTime;\n return Object.is(result, -0) ? 0 : result;\n}\n\nfunction collectTimeline(\n program: PibblAnimationProgram,\n requestedTime: number,\n state: SampleState,\n path: readonly number[],\n repeatIterations: readonly number[],\n transform: TimeTransform,\n events: TimelineEvent[],\n nextSourceOrder: { value: number },\n windowStart: number,\n windowEnd: number,\n): void {\n const record = getProgramRecord(program);\n const localTime = Math.max(0, requestedTime);\n if (record.kind === 'track' || record.kind === 'wait') return;\n if (record.kind === 'marker') {\n events.push(Object.freeze({\n kind: 'marker',\n marker: record.name,\n programTime: transformedTime(transform, 0),\n programPath: freezePath(path),\n repeatIterations: freezePath(repeatIterations),\n iteration: repeatIterations.at(-1) ?? 0,\n sourceOrder: nextSourceOrder.value++,\n }));\n return;\n }\n if (record.kind === 'sequence') {\n let remaining = localTime;\n let offset = 0;\n for (let index = 0; index < record.children.length; index++) {\n const child = record.children[index]!;\n const childPath = [...path, index];\n const duration = durationForTimeline(child, state, childPath, repeatIterations);\n if (duration === undefined) return;\n collectTimeline(\n child,\n Math.min(remaining, duration),\n state,\n childPath,\n repeatIterations,\n Object.freeze({\n origin: transformedTime(transform, offset),\n scale: transform.scale,\n }),\n events,\n nextSourceOrder,\n windowStart,\n windowEnd,\n );\n if (remaining < duration) return;\n remaining = Math.max(0, remaining - duration);\n offset += duration;\n }\n return;\n }\n if (record.kind === 'parallel') {\n for (let index = 0; index < record.children.length; index++) {\n const child = record.children[index]!;\n const childPath = [...path, index];\n const duration = durationForTimeline(child, state, childPath, repeatIterations);\n if (duration === undefined) continue;\n collectTimeline(\n child,\n Math.min(localTime, duration),\n state,\n childPath,\n repeatIterations,\n transform,\n events,\n nextSourceOrder,\n windowStart,\n windowEnd,\n );\n }\n return;\n }\n\n // Fixed-duration repeats can jump to the crossed window. Include the prior\n // occurrence at an exact boundary because it can end with a zero-time marker.\n // Dynamic/terminal-stepper durations retain their sequential discovery path.\n const fixedDuration = getExactSeekableProgramDuration(record.children[0]!);\n let firstIteration = 0;\n let lastIteration = record.iterations - 1;\n let offset = 0;\n if (fixedDuration !== undefined && Number.isFinite(fixedDuration) && fixedDuration > 0) {\n const firstLocal = (windowStart - transform.origin) * transform.scale;\n const lastLocal = (windowEnd - transform.origin) * transform.scale;\n const lower = Math.max(0, Math.min(firstLocal, lastLocal));\n const upper = Math.min(localTime, Math.max(firstLocal, lastLocal));\n if (upper < lower) return;\n firstIteration = Math.max(0, Math.ceil(lower / fixedDuration) - 1);\n lastIteration = Math.min(lastIteration, Math.floor(upper / fixedDuration));\n offset = firstIteration * fixedDuration;\n }\n let remaining = Math.max(0, localTime - offset);\n for (let iteration = firstIteration; iteration <= lastIteration; iteration++) {\n const child = record.children[0]!;\n const childPath = [...path, 0];\n const iterationPath = [...repeatIterations, iteration];\n const duration = durationForTimeline(child, state, childPath, iterationPath);\n if (duration === undefined || duration === Number.POSITIVE_INFINITY) return;\n if (duration === 0 && !programContainsStepper(child)) {\n const childRecord = getProgramRecord(child);\n const label = childRecord.kind === 'marker' ?\n `marker \"${childRecord.name}\"` : `${childRecord.kind} program`;\n reserveZeroDurationOccurrence(state, label, childPath, iterationPath);\n }\n const reversed = record.direction === 'reverse' ||\n record.direction === 'alternate-reverse' && iteration % 2 === 0 ||\n record.direction === 'alternate' && iteration % 2 === 1;\n const childTransform: TimeTransform = reversed ? Object.freeze({\n origin: transformedTime(transform, offset + duration),\n scale: transform.scale === 1 ? -1 : 1,\n }) : Object.freeze({\n origin: transformedTime(transform, offset),\n scale: transform.scale,\n });\n collectTimeline(\n child,\n reversed ? duration : Math.min(remaining, duration),\n state,\n childPath,\n iterationPath,\n childTransform,\n events,\n nextSourceOrder,\n windowStart,\n windowEnd,\n );\n if (remaining < duration) return;\n remaining = Math.max(0, remaining - duration);\n offset += duration;\n if (iteration + 1 < record.iterations) {\n events.push(Object.freeze({\n kind: 'iteration',\n programTime: transformedTime(transform, offset),\n programPath: freezePath(path),\n repeatIterations: freezePath(repeatIterations),\n iteration: iteration + 1,\n sourceOrder: nextSourceOrder.value++,\n }));\n }\n }\n}\n\nfunction createSampleState(\n record: InternalProgramActivation,\n starts: Map<string, InternalTrackStart>,\n durations: Map<string, number> = new Map(),\n steppers: Map<string, InternalStepperRecord> = new Map(record.steppers),\n terminalSteppers: Map<string, InternalStepperTerminal> =\n new Map(record.terminalSteppers),\n repeatFrontiers: Map<string, InternalRepeatFrontier> =\n new Map(record.repeatFrontiers),\n repeatTerminals: Map<string, InternalRepeatTerminal> =\n new Map(record.repeatTerminals),\n reverseEndpoints: Map<string, InternalReverseEndpoint> =\n new Map(record.reverseEndpoints),\n frameId = 0,\n replaySteppers = false,\n zeroDurationOccurrences: InternalZeroDurationOccurrenceBudget = { value: 0 },\n): SampleState {\n return {\n activation: record,\n batch: seedOriginalValues(record),\n starts,\n durations,\n writtenOutputs: new Set(),\n snapshots: new WeakMap(),\n owners: new Map(),\n steppers,\n terminalSteppers,\n repeatFrontiers,\n repeatTerminals,\n reverseEndpoints,\n stepperFrameBudgets: new Map(),\n zeroDurationOccurrences,\n sampledTimelineEvents: [],\n nextTimelineSourceOrder: { value: 0 },\n activeStepperKeys: new Set(),\n activeRepeatFrontierKeys: new Set(),\n activeReverseEndpointKeys: new Set(),\n stepperTraces: [],\n frameId,\n replaySteppers,\n };\n}\n\nfunction cloneRepeatFrontiers(\n source: ReadonlyMap<string, InternalRepeatFrontier>,\n): Map<string, InternalRepeatFrontier> {\n return new Map([...source].map(([key, frontier]) => [key, {\n programPath: frontier.programPath,\n repeatIterations: frontier.repeatIterations,\n completedIterations: frontier.completedIterations,\n elapsedMilliseconds: frontier.elapsedMilliseconds,\n iterationInputValues: new Map(frontier.iterationInputValues),\n values: new Map(frontier.values),\n }]));\n}\n\nfunction cloneStepperRecords(\n source: ReadonlyMap<string, InternalStepperRecord>,\n): Map<string, InternalStepperRecord> {\n return new Map([...source].map(([key, stepperRecord]) => [key, {\n ...stepperRecord,\n // A stepper's opaque state belongs to its callbacks. Pibbl can transact its\n // own mutable counters, but cannot clone arbitrary class/closure state\n // without changing user-observable identity or semantics.\n state: stepperRecord.state,\n }]));\n}\n\nfunction cloneRepeatTerminals(\n source: ReadonlyMap<string, InternalRepeatTerminal>,\n): Map<string, InternalRepeatTerminal> {\n return new Map([...source].map(([key, terminal]) => [key, Object.freeze({\n ...terminal,\n values: new Map(terminal.values),\n })]));\n}\n\nfunction cloneReverseEndpoints(\n source: ReadonlyMap<string, InternalReverseEndpoint>,\n): Map<string, InternalReverseEndpoint> {\n return new Map([...source].map(([key, endpoint]) => [key, Object.freeze({\n ...endpoint,\n inputValues: new Map(endpoint.inputValues),\n })]));\n}\n\nfunction cloneProgramActivationRecord(\n source: InternalProgramActivation,\n): InternalProgramActivation {\n return {\n program: source.program,\n registration: source.registration,\n originalValues: source.originalValues,\n starts: new Map(source.starts),\n steppers: cloneStepperRecords(source.steppers),\n terminalSteppers: new Map(source.terminalSteppers),\n repeatFrontiers: cloneRepeatFrontiers(source.repeatFrontiers),\n repeatTerminals: cloneRepeatTerminals(source.repeatTerminals),\n reverseEndpoints: cloneReverseEndpoints(source.reverseEndpoints),\n terminalDuration: source.terminalDuration,\n };\n}\n\nfunction createDiscoveryState(\n originalValues: ReadonlyMap<WritableSignal<unknown>, unknown>,\n starts: Map<string, InternalTrackStart>,\n validateWriters: boolean,\n terminalSteppers: ReadonlyMap<string, InternalStepperTerminal> = new Map(),\n validateInputs = false,\n): DiscoveryState {\n return {\n values: new Map(originalValues),\n starts,\n durations: new Map(),\n snapshots: new WeakMap(),\n validateWriters,\n validateInputs,\n terminalSteppers,\n };\n}\n\nfunction crossedMilestones(\n record: InternalProgramActivation,\n input: ProgramEvaluationInput,\n horizon: number,\n state: SampleState,\n sampledEvents: readonly TimelineEvent[],\n): readonly ProgramMilestone[] {\n if (input.previousTime === input.time) return Object.freeze([]);\n const timeline: TimelineEvent[] = [...sampledEvents];\n collectTimeline(\n record.program,\n horizon,\n state,\n [],\n [],\n Object.freeze({ origin: 0, scale: 1 }),\n timeline,\n { value: state.nextTimelineSourceOrder.value },\n Math.min(input.previousTime ?? 0, input.time),\n Math.max(input.previousTime ?? 0, input.time),\n );\n // Most collected events precede this frame. Filter before deduplication;\n // scanning the entire timeline once per event made repeated clocks quadratic.\n const crossed: TimelineEvent[] = [];\n const seen = new Set<string>();\n for (const event of timeline) {\n const isCrossed = input.previousTime === undefined ?\n event.programTime >= 0 && event.programTime <= input.time :\n input.direction === 'forward' ?\n event.programTime > input.previousTime && event.programTime <= input.time :\n event.programTime >= input.time && event.programTime < input.previousTime;\n if (!isCrossed) continue;\n // Structured encoding preserves arbitrary marker names and nested paths.\n // Keep the first occurrence's sourceOrder, matching the previous contract.\n const key = JSON.stringify([\n event.kind, event.marker, event.programTime, event.iteration,\n event.repeatIterations, event.programPath,\n ]);\n if (seen.has(key)) continue;\n seen.add(key);\n crossed.push(event);\n }\n crossed.sort((first, second) => {\n const timeOrder = input.direction === 'forward' ?\n first.programTime - second.programTime : second.programTime - first.programTime;\n return timeOrder === 0 ? first.sourceOrder - second.sourceOrder : timeOrder;\n });\n return Object.freeze(crossed.map(event => Object.freeze(event.kind === 'marker' ? {\n kind: 'marker' as const,\n marker: event.marker!,\n programTime: event.programTime,\n frameId: input.frameId,\n registration: record.registration,\n programPath: freezePath(event.programPath),\n iteration: event.iteration,\n } : {\n kind: 'iteration' as const,\n programTime: event.programTime,\n frameId: input.frameId,\n registration: record.registration,\n programPath: freezePath(event.programPath),\n iteration: event.iteration,\n })));\n}\n\nfunction evaluate(\n activation: ProgramActivation,\n input: ProgramEvaluationInput,\n rebuildStarts: boolean,\n): ProgramEvaluationResult {\n assertEvaluationInput(input);\n const record = activationRecord(activation);\n const time = Math.max(0, input.time);\n const previousTime = input.previousTime === undefined ? undefined :\n Math.max(0, input.previousTime);\n if (rebuildStarts && input.direction === 'reverse' && previousTime === undefined &&\n knownProgramTerminalDuration(record) === undefined) {\n throw new TypeError(\n 'Pibbl animation stateful terminal time is not discovered; reverse-from-idle is unavailable.',\n );\n }\n const normalizedInput = { ...input, time, previousTime };\n const horizon = Math.max(time, previousTime ?? time);\n const replaySteppers = rebuildStarts || input.direction === 'reverse' ||\n previousTime !== undefined && time < previousTime;\n const destinationStarts = rebuildStarts ? new Map<string, InternalTrackStart>() :\n new Map(record.starts);\n const destinationSteppers = replaySteppers ? new Map<string, InternalStepperRecord>() :\n new Map(record.steppers);\n const destinationTerminals = new Map(record.terminalSteppers);\n const destinationRepeatFrontiers = replaySteppers ?\n new Map<string, InternalRepeatFrontier>() : cloneRepeatFrontiers(record.repeatFrontiers);\n const destinationRepeatTerminals = replaySteppers ?\n new Map<string, InternalRepeatTerminal>() : new Map(record.repeatTerminals);\n const destinationReverseEndpoints = replaySteppers ?\n new Map<string, InternalReverseEndpoint>() : new Map(record.reverseEndpoints);\n const zeroDurationOccurrences = { value: 0 };\n let seededDurations = new Map<string, number>();\n if (needsCallbackFreeDurationSeed(record.program)) {\n const seedState = createDiscoveryState(\n record.originalValues,\n new Map(destinationStarts),\n false,\n destinationTerminals,\n );\n discoverNode(record.program, time, seedState, [], []);\n seededDurations = seedState.durations;\n }\n const destinationState = createSampleState(\n record,\n destinationStarts,\n seededDurations,\n destinationSteppers,\n destinationTerminals,\n destinationRepeatFrontiers,\n destinationRepeatTerminals,\n destinationReverseEndpoints,\n input.frameId,\n replaySteppers,\n zeroDurationOccurrences,\n );\n try {\n const destinationResult = sampleNode(record.program, time, destinationState, [], []);\n const exactDuration = getExactSeekableProgramDuration(record.program);\n let discoveredDuration = exactDuration;\n let milestoneState = destinationState;\n let milestoneEvents: readonly TimelineEvent[] = destinationState.sampledTimelineEvents;\n const needsReverseHorizonReplay = input.direction === 'reverse' &&\n horizon > time && programContainsStepper(record.program);\n if (needsReverseHorizonReplay) {\n const horizonState = createSampleState(\n record,\n new Map(),\n new Map(),\n new Map(),\n new Map(),\n new Map(),\n new Map(),\n new Map(record.reverseEndpoints),\n input.frameId,\n true,\n zeroDurationOccurrences,\n );\n sampleNode(record.program, horizon, horizonState, [], []);\n milestoneState = horizonState;\n milestoneEvents = horizonState.sampledTimelineEvents;\n }\n if (exactDuration === undefined) {\n const discoveryState = createDiscoveryState(\n record.originalValues,\n new Map(destinationState.starts),\n false,\n destinationState.terminalSteppers,\n );\n const discoveryResult = discoverNode(\n record.program,\n horizon,\n discoveryState,\n [],\n [],\n );\n discoveredDuration = discoveryResult.duration;\n if (!needsReverseHorizonReplay) {\n milestoneState = createSampleState(\n record,\n discoveryState.starts,\n discoveryState.durations,\n new Map(),\n destinationState.terminalSteppers,\n new Map(),\n new Map(),\n new Map(),\n 0,\n false,\n zeroDurationOccurrences,\n );\n }\n }\n const milestones = crossedMilestones(\n record,\n normalizedInput,\n horizon,\n milestoneState,\n milestoneEvents,\n );\n for (const key of destinationState.steppers.keys()) {\n if (!destinationState.activeStepperKeys.has(key)) {\n destinationState.steppers.delete(key);\n }\n }\n for (const key of destinationState.repeatFrontiers.keys()) {\n if (!destinationState.activeRepeatFrontierKeys.has(key)) {\n destinationState.repeatFrontiers.delete(key);\n }\n }\n for (const key of destinationState.reverseEndpoints.keys()) {\n if (!destinationState.activeReverseEndpointKeys.has(key)) {\n destinationState.reverseEndpoints.delete(key);\n }\n }\n if (destinationResult.atEnd) {\n destinationState.steppers.clear();\n destinationState.terminalSteppers.clear();\n destinationState.repeatFrontiers.clear();\n destinationState.repeatTerminals.clear();\n destinationState.reverseEndpoints.clear();\n }\n record.starts = destinationState.starts;\n record.steppers = destinationState.steppers;\n record.terminalSteppers = destinationState.terminalSteppers;\n record.repeatFrontiers = destinationState.repeatFrontiers;\n record.repeatTerminals = destinationState.repeatTerminals;\n record.reverseEndpoints = destinationState.reverseEndpoints;\n for (const output of getProgramRecord(record.program).outputs) {\n if (destinationState.writtenOutputs.has(output)) {\n input.batch.stage(output, destinationState.batch.read(output), input.writer);\n }\n }\n\n const atStart = time === 0;\n const atEnd = destinationResult.atEnd;\n const duration = discoveredDuration ?? destinationResult.duration;\n if (duration !== undefined && Number.isFinite(duration)) {\n record.terminalDuration = duration;\n }\n return Object.freeze({\n batch: input.batch,\n milestones,\n steppers: Object.freeze([...destinationState.stepperTraces]),\n terminal: Object.freeze({\n duration,\n atStart,\n atEnd,\n reached: input.direction === 'forward' ? atEnd : atStart,\n }),\n });\n } catch (error) {\n if (programContainsStepper(record.program)) {\n record.steppers.clear();\n record.terminalSteppers.clear();\n record.repeatFrontiers.clear();\n record.repeatTerminals.clear();\n record.reverseEndpoints.clear();\n record.terminalDuration = undefined;\n }\n throw error;\n }\n}\n\n/** Captures one program token, its committed outputs, and registration identity. */\nexport function activateProgram(\n program: PibblAnimationProgram,\n registration: object,\n): ProgramActivation {\n if (typeof registration !== 'object' || registration === null) {\n throw new TypeError('Pibbl animation registration identity must be an object.');\n }\n const originalValues = captureProgramOriginalValues(program, false);\n const activation = Object.freeze({}) as ProgramActivation;\n activationRecords.set(activation, {\n program,\n registration,\n originalValues,\n starts: new Map(),\n steppers: new Map(),\n terminalSteppers: new Map(),\n repeatFrontiers: new Map(),\n repeatTerminals: new Map(),\n reverseEndpoints: new Map(),\n terminalDuration: undefined,\n });\n registerActivationStepperKeys(activation, []);\n return activation;\n}\n\n/** @internal Forks engine-owned activation state for an outer transaction. */\nexport function forkProgramActivation(\n activation: ProgramActivation,\n): ProgramActivation {\n const fork = Object.freeze({}) as ProgramActivation;\n const record = cloneProgramActivationRecord(activationRecord(activation));\n activationRecords.set(fork, record);\n registerActivationStepperKeys(fork, record.steppers.keys());\n return fork;\n}\n\n/** @internal Publishes one successfully committed activation fork and consumes it. */\nexport function adoptProgramActivationFork(\n activation: ProgramActivation,\n fork: ProgramActivation,\n): void {\n const target = activationRecord(activation);\n const source = activationRecord(fork);\n if (source.program !== target.program || source.registration !== target.registration ||\n source.originalValues !== target.originalValues) {\n throw new TypeError('Pibbl animation activation fork does not belong to this activation.');\n }\n reconcileActivationStepperKeys(activation);\n reconcileActivationStepperKeys(fork);\n releaseActivationStepperKeys(activation);\n const forkKeys = activationStepperKeys.get(fork) ?? new Set<string>();\n activationStepperKeys.delete(fork);\n activationStepperKeys.set(activation, forkKeys);\n target.starts = source.starts;\n target.steppers = source.steppers;\n target.terminalSteppers = source.terminalSteppers;\n target.repeatFrontiers = source.repeatFrontiers;\n target.repeatTerminals = source.repeatTerminals;\n target.reverseEndpoints = source.reverseEndpoints;\n target.terminalDuration = source.terminalDuration;\n activationRecords.delete(fork);\n}\n\nfunction captureProgramOriginalValues(\n program: PibblAnimationProgram,\n validateInputs: boolean,\n): ReadonlyMap<WritableSignal<unknown>, unknown> {\n const programRecord = getProgramRecord(program);\n const snapshots = new WeakMap<object, unknown>();\n const originalValues = new Map<WritableSignal<unknown>, unknown>();\n for (const output of programRecord.outputs) {\n originalValues.set(\n output,\n snapshotAnimationActivationValue(getSignalNode(output).value, snapshots),\n );\n }\n if (validateInputs) validateCapturedDefinitionInputs(program, originalValues);\n validateActivationWriterSafety(program, originalValues);\n return immutableMap(originalValues);\n}\n\nfunction validateCapturedDefinitionInputs(\n program: PibblAnimationProgram,\n originalValues: ReadonlyMap<WritableSignal<unknown>, unknown>,\n): void {\n if (!requiresCapturedDefinitionInput(program)) return;\n const state = createDiscoveryState(\n originalValues,\n new Map(),\n false,\n new Map(),\n true,\n );\n discoverNode(program, Number.POSITIVE_INFINITY, state, [], []);\n}\n\nfunction requiresCapturedDefinitionInput(program: PibblAnimationProgram): boolean {\n const record = getProgramRecord(program);\n if (record.kind === 'track') {\n const definition = getDefinitionRecord(record.definition);\n return definition.kind === 'spring' && !definition.hasFrom ||\n definition.kind === 'tween' && !definition.hasFrom;\n }\n return record.children.some(requiresCapturedDefinitionInput);\n}\n\n/** @internal Validates one current committed activation snapshot without retaining it. */\nexport function preflightProgramActivation(program: PibblAnimationProgram): void {\n captureProgramOriginalValues(program, true);\n}\n\n/** Evaluates one ordinary advance without committing staged output values. */\nexport function evaluateProgram(\n activation: ProgramActivation,\n input: ProgramEvaluationInput,\n): ProgramEvaluationResult {\n try {\n return evaluate(activation, input, false);\n } finally {\n reconcileActivationStepperKeys(activation);\n }\n}\n\n/** Rebuilds activation starts from the original run snapshot before sampling. */\nexport function seekProgram(\n activation: ProgramActivation,\n input: ProgramEvaluationInput,\n): ProgramEvaluationResult {\n try {\n return evaluate(activation, input, true);\n } finally {\n reconcileActivationStepperKeys(activation);\n }\n}\n\nexport interface ProgramFinishInput {\n readonly previousTime: number | undefined;\n readonly frameId: number;\n readonly writer: object;\n readonly batch: SignalCommitBatch;\n}\n\n/** Replays a finite program to its exact known terminal state. */\nexport function finishProgram(\n activation: ProgramActivation,\n input: ProgramFinishInput,\n): ProgramEvaluationResult {\n const record = activationRecord(activation);\n const duration = knownProgramTerminalDuration(record);\n if (duration === undefined) {\n throw new TypeError(\n 'Pibbl animation stateful terminal time is not discovered; finish is unavailable.',\n );\n }\n try {\n return evaluate(activation, {\n ...input,\n time: duration,\n direction: 'forward',\n }, true);\n } finally {\n reconcileActivationStepperKeys(activation);\n }\n}\n\n/** Releases every resource retained by one activated program run. */\nexport function releaseProgramActivation(activation: ProgramActivation): void {\n const record = activationRecord(activation);\n reconcileActivationStepperKeys(activation);\n releaseActivationStepperKeys(activation);\n record.starts.clear();\n record.steppers.clear();\n record.terminalSteppers.clear();\n record.repeatFrontiers.clear();\n record.repeatTerminals.clear();\n record.reverseEndpoints.clear();\n activationRecords.delete(activation);\n}\n\n/** @internal Immutable diagnostic view of one private activation snapshot. */\nexport function getProgramActivationRecord(\n activation: ProgramActivation,\n): ProgramActivationRecord {\n const record = activationRecord(activation);\n return Object.freeze({\n program: record.program,\n registration: record.registration,\n originalValues: record.originalValues,\n trackStarts: Object.freeze([...record.starts.values()].map(start => Object.freeze({\n programPath: freezePath(start.programPath),\n repeatIterations: freezePath(start.repeatIterations),\n initialValue: start.initialValue,\n duration: start.definition.duration,\n }))),\n activeSteppers: Object.freeze([...record.steppers.values()].map(stepperRecord =>\n Object.freeze({\n programPath: freezePath(stepperRecord.programPath),\n repeatIterations: freezePath(stepperRecord.repeatIterations),\n wholeSteps: stepperRecord.wholeSteps,\n retainedRemainderMilliseconds: stepperRecord.remainderMilliseconds,\n appliedElapsedMilliseconds: stepperRecord.appliedElapsedMilliseconds,\n discardedElapsedMilliseconds: stepperRecord.discardedElapsedMilliseconds,\n }),\n )),\n terminalSteppers: Object.freeze([...record.terminalSteppers.values()].map(terminal =>\n Object.freeze({\n programPath: freezePath(terminal.programPath),\n repeatIterations: freezePath(terminal.repeatIterations),\n terminalStep: terminal.terminalStep,\n terminalTime: terminal.terminalTime,\n }),\n )),\n terminalDuration: record.terminalDuration,\n });\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["elapsed", "writers", "startWrites", "endWrites", "startBoundaryOpen", "remaining", "duration", "pairCount", "hasOddIteration", "offset"]
7
+ }
@@ -0,0 +1,30 @@
1
+ import { type SpringSample } from './spring.js';
2
+ import type { PibblAnimationProgram, PibblPlayback, PibblPlaybackOptions } from './types.js';
3
+ export interface AnimationPlaybackSnapshot {
4
+ readonly activePlaybacks: number;
5
+ readonly createdPlaybacks: number;
6
+ readonly releasedPlaybacks: number;
7
+ readonly queuedCommands: number;
8
+ readonly queuedMilestones: number;
9
+ readonly outputStageAttempts: number;
10
+ }
11
+ export interface AnimationPlaybackController {
12
+ readonly handle: PibblPlayback;
13
+ adopt(program: PibblAnimationProgram, options?: PibblPlaybackOptions): void;
14
+ committedSpringSnapshot(): SpringSample | undefined;
15
+ retarget(program: PibblAnimationProgram, options?: PibblPlaybackOptions): void;
16
+ dispose(): void;
17
+ }
18
+ export interface AnimationPlaybackCandidate {
19
+ readonly program: PibblAnimationProgram;
20
+ readonly options: PibblPlaybackOptions;
21
+ }
22
+ /** @internal Deterministic resource counters for tests and diagnostics. */
23
+ export declare function animationPlaybackSnapshot(): AnimationPlaybackSnapshot;
24
+ /** @internal Creates one validated immutable render-time playback candidate. */
25
+ export declare function normalizeAnimationPlaybackCandidate(program: PibblAnimationProgram, options?: PibblPlaybackOptions): AnimationPlaybackCandidate;
26
+ /**
27
+ * Creates one scheduler-owned playback slot. Component lifetime is added by
28
+ * usePlayback in the following implementation task.
29
+ */
30
+ export declare function createAnimationPlaybackController(initialProgram: PibblAnimationProgram, initialOptions?: PibblPlaybackOptions): AnimationPlaybackController;