@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,526 @@
1
+ import { Group, isSignal } from "@pibbl/core";
2
+ import {
3
+ pibblInternalCreatePropAttachment
4
+ } from "@pibbl/core/internal";
5
+ import { transformShape2D } from "../../../2d-geometry.js";
6
+ import { requireShapeRecord2D } from "../shape-records.js";
7
+ import {
8
+ copyFiniteVector2,
9
+ requireFiniteNumber,
10
+ requireNonnegativeNumber,
11
+ requirePositiveNumber,
12
+ requireSafeIntegerInRange
13
+ } from "../../shared/validation.js";
14
+ import {
15
+ pushPhysicsBody2D,
16
+ requireCurrentPhysicsBody2D,
17
+ requireCurrentPhysicsWorld2D
18
+ } from "./context.js";
19
+ import {
20
+ bakeCanvasShapeTransform2D,
21
+ inferCanvasColliderShape2D
22
+ } from "../canvas/inference.js";
23
+ import {
24
+ bodyLocalTransformFromPrimitive2D,
25
+ captureBodyPresentation2D,
26
+ matrixFromPose,
27
+ resolveDynamicPresentationTransform2D
28
+ } from "../canvas/presentation.js";
29
+ const bodyFramesByWorld2D = /* @__PURE__ */ new WeakMap();
30
+ const attachmentRecord2DSymbol = /* @__PURE__ */ Symbol("PibblPhysicsAttachment2D");
31
+ const RELATIVE_MATRIX_ROUNDOFF_OPERATIONS = 32;
32
+ function dynamicBody2D(options = {}) {
33
+ const mass = options.mass ?? "auto";
34
+ if (mass !== "auto") requirePositiveNumber(mass, "options.mass");
35
+ const reenableVelocity = options.reenableVelocity ?? "zero";
36
+ if (reenableVelocity !== "zero" && reenableVelocity !== "preserve") {
37
+ throw new TypeError(
38
+ 'options.reenableVelocity must be "zero" or "preserve".'
39
+ );
40
+ }
41
+ return createAttachment({
42
+ kind: "body",
43
+ bodyType: "dynamic",
44
+ options: Object.freeze({
45
+ enabled: options.enabled ?? true,
46
+ handle: options.handle,
47
+ linearVelocity: copyFiniteVector2(
48
+ options.linearVelocity ?? [0, 0],
49
+ "options.linearVelocity"
50
+ ),
51
+ angularVelocityDegreesPerSecond: requireFiniteNumber(
52
+ options.angularVelocityDegreesPerSecond ?? 0,
53
+ "options.angularVelocityDegreesPerSecond"
54
+ ),
55
+ linearDamping: requireNonnegativeNumber(
56
+ options.linearDamping ?? 0,
57
+ "options.linearDamping"
58
+ ),
59
+ angularDamping: requireNonnegativeNumber(
60
+ options.angularDamping ?? 0,
61
+ "options.angularDamping"
62
+ ),
63
+ gravityScale: requireFiniteNumber(
64
+ options.gravityScale ?? 1,
65
+ "options.gravityScale"
66
+ ),
67
+ mass,
68
+ fixedRotation: options.fixedRotation ?? false,
69
+ allowSleep: options.allowSleep ?? true,
70
+ ccd: options.ccd ?? false,
71
+ reenableVelocity,
72
+ collider: normalizeOptionalCollider(options.collider, "options.collider")
73
+ })
74
+ });
75
+ }
76
+ function staticBody2D(options = {}) {
77
+ return createAttachment({
78
+ kind: "body",
79
+ bodyType: "static",
80
+ options: Object.freeze({
81
+ enabled: options.enabled ?? true,
82
+ handle: options.handle,
83
+ collider: normalizeOptionalCollider(options.collider, "options.collider")
84
+ })
85
+ });
86
+ }
87
+ function kinematicBody2D(options = {}) {
88
+ const target = options.target ?? {};
89
+ if (target.position !== void 0 && !isSignal(target.position)) {
90
+ throw new TypeError("options.target.position must be a Pibbl signal.");
91
+ }
92
+ if (target.rotationDegrees !== void 0 && !isSignal(target.rotationDegrees)) {
93
+ throw new TypeError("options.target.rotationDegrees must be a Pibbl signal.");
94
+ }
95
+ return createAttachment({
96
+ kind: "body",
97
+ bodyType: "kinematic",
98
+ options: Object.freeze({
99
+ enabled: options.enabled ?? true,
100
+ handle: options.handle,
101
+ target: Object.freeze({
102
+ position: target.position,
103
+ rotationDegrees: target.rotationDegrees
104
+ }),
105
+ allowSleep: options.allowSleep ?? true,
106
+ collider: normalizeOptionalCollider(options.collider, "options.collider")
107
+ })
108
+ });
109
+ }
110
+ function collider2D(options = {}) {
111
+ return createAttachment({
112
+ kind: "collider",
113
+ options: normalizeCollider(options, "options")
114
+ });
115
+ }
116
+ function requirePhysicsAttachment2DDescriptor(value) {
117
+ const descriptor = typeof value === "object" && value !== null ? value[attachmentRecord2DSymbol] : void 0;
118
+ if (descriptor === void 0) {
119
+ throw new TypeError("Expected a registered Pibbl physics 2D attachment.");
120
+ }
121
+ return descriptor;
122
+ }
123
+ function createAttachment(descriptor) {
124
+ const frozenDescriptor = Object.freeze(descriptor);
125
+ const value = Object.freeze({
126
+ [attachmentRecord2DSymbol]: frozenDescriptor
127
+ });
128
+ return pibblInternalCreatePropAttachment(
129
+ "physics",
130
+ value,
131
+ () => new MountedPhysicsAttachment2D(value)
132
+ );
133
+ }
134
+ class MountedPhysicsAttachment2D {
135
+ descriptor;
136
+ world;
137
+ bodyId;
138
+ releaseBodyScope;
139
+ cachedShapeInput;
140
+ cachedShape;
141
+ cachedSelfShapeKey;
142
+ cachedSelfShape;
143
+ cachedBakedSource;
144
+ cachedBakedTransform;
145
+ cachedBakedShape;
146
+ bodyPresentation;
147
+ // `exit` runs after every traversal, while `dispose` runs only when this
148
+ // mounted attachment is actually removed. Keep the last ownership key so a
149
+ // removed keyed body releases its presentation lineage from the long-lived
150
+ // world's frame map.
151
+ bodyFrameWorld;
152
+ bodyFrameId;
153
+ wasEnabled = false;
154
+ constructor(value) {
155
+ this.descriptor = requirePhysicsAttachment2DDescriptor(value);
156
+ }
157
+ update(value) {
158
+ const next = requirePhysicsAttachment2DDescriptor(
159
+ value
160
+ );
161
+ if (this.descriptor.kind === "body" && next.kind !== "body") {
162
+ this.releaseBodyFrame();
163
+ }
164
+ this.descriptor = next;
165
+ }
166
+ enter() {
167
+ const world = requireCurrentPhysicsWorld2D();
168
+ this.world = world;
169
+ if (this.descriptor.kind === "body") {
170
+ const bodyId = world.bodyIdFor(this);
171
+ if (this.bodyFrameWorld !== void 0 && (this.bodyFrameWorld !== world || this.bodyFrameId !== bodyId)) {
172
+ this.releaseBodyFrame();
173
+ }
174
+ this.bodyId = bodyId;
175
+ this.releaseBodyScope = pushPhysicsBody2D({ world, bodyId });
176
+ } else {
177
+ this.bodyId = requireCurrentPhysicsBody2D().bodyId;
178
+ }
179
+ }
180
+ preparePrimitive(input) {
181
+ const world = this.world;
182
+ const bodyId = this.bodyId;
183
+ if (world === void 0 || bodyId === void 0) {
184
+ throw new Error(
185
+ "Physics 2D attachment preparation requires its entered scope."
186
+ );
187
+ }
188
+ if (this.descriptor.kind === "body") {
189
+ const descriptor = this.descriptor;
190
+ const simulationParent = world.simulationTransform(
191
+ input.parentWorldTransform
192
+ );
193
+ const enabled = descriptor.options.enabled;
194
+ const reenabled = !this.wasEnabled && enabled;
195
+ const local = bodyLocalTransformFromPrimitive2D(
196
+ input.componentType,
197
+ input.style
198
+ );
199
+ if (this.bodyPresentation === void 0 || reenabled || descriptor.bodyType !== "dynamic") {
200
+ this.bodyPresentation = captureBodyPresentation2D(
201
+ simulationParent,
202
+ local,
203
+ input.componentName,
204
+ descriptor.bodyType === "dynamic" && enabled
205
+ );
206
+ }
207
+ const presentation = this.bodyPresentation;
208
+ let bodyFrames = bodyFramesByWorld2D.get(world);
209
+ if (!bodyFrames) {
210
+ bodyFrames = /* @__PURE__ */ new Map();
211
+ bodyFramesByWorld2D.set(world, bodyFrames);
212
+ }
213
+ let presentationTransform2D;
214
+ let effectiveBodyFrame;
215
+ if (!enabled || descriptor.bodyType !== "dynamic") {
216
+ effectiveBodyFrame = world.rootTransform(
217
+ matrixFromPose(presentation.initialPose)
218
+ );
219
+ } else {
220
+ world.handle.revision.get();
221
+ const presentedPose = reenabled ? presentation.initialPose : world.presentationPose(bodyId) ?? presentation.initialPose;
222
+ presentationTransform2D = resolveDynamicPresentationTransform2D(
223
+ presentation,
224
+ presentedPose,
225
+ simulationParent,
226
+ local,
227
+ input.componentName
228
+ );
229
+ effectiveBodyFrame = input.parentWorldTransform.multiply(
230
+ presentationTransform2D.multiply(local)
231
+ );
232
+ }
233
+ bodyFrames.set(
234
+ bodyId,
235
+ Object.freeze({
236
+ poseMatrix: effectiveBodyFrame,
237
+ preBodyLineage: input.presentationTransformLineage,
238
+ untrackedCanvasTransformCount: (input.presentationTransformLineage?.untrackedCanvasTransformCount ?? 0) + (input.hasUntrackedCanvasTransform ? 1 : 0)
239
+ })
240
+ );
241
+ this.bodyFrameWorld = world;
242
+ this.bodyFrameId = bodyId;
243
+ const collider = descriptor.options.collider;
244
+ const effectiveCollider = collider === false ? false : collider.shape === "self" && input.componentType === Group ? false : withColliderShape(
245
+ collider,
246
+ this.bakeShape(
247
+ collider.shape === "self" ? this.resolveSelfShape(input) : collider.shape,
248
+ descriptor.bodyType === "dynamic" ? matrixFromPose(presentation.initialPose).inverse().multiply(simulationParent).multiply(local) : relativeColliderTransform2D(
249
+ effectiveBodyFrame,
250
+ input.parentWorldTransform
251
+ ).multiply(local)
252
+ )
253
+ );
254
+ const effectiveDescriptor = effectiveCollider === collider ? descriptor : Object.freeze({
255
+ ...descriptor,
256
+ options: Object.freeze({
257
+ ...descriptor.options,
258
+ collider: effectiveCollider
259
+ })
260
+ });
261
+ world.collectBody(
262
+ this,
263
+ bodyId,
264
+ effectiveDescriptor,
265
+ presentation.initialPose
266
+ );
267
+ this.wasEnabled = enabled;
268
+ return presentationTransform2D === void 0 ? void 0 : { presentationTransform2D };
269
+ } else {
270
+ const bodyFrame = requireBodyFrame(world, bodyId);
271
+ const lineageTransform = relativeColliderTransformFromLineage2D(
272
+ bodyFrame,
273
+ input
274
+ );
275
+ const options = withColliderShape(
276
+ this.descriptor.options,
277
+ this.bakeShape(
278
+ this.descriptor.options.shape === "self" ? this.resolveSelfShape(input) : this.descriptor.options.shape,
279
+ (lineageTransform ?? relativeColliderTransform2D(
280
+ bodyFrame.poseMatrix,
281
+ input.parentWorldTransform
282
+ )).multiply(
283
+ bodyLocalTransformFromPrimitive2D(input.componentType, input.style)
284
+ ),
285
+ lineageTransform === void 0
286
+ )
287
+ );
288
+ world.collectCollider(this, bodyId, options);
289
+ }
290
+ }
291
+ exit(_success) {
292
+ try {
293
+ this.releaseBodyScope?.();
294
+ } finally {
295
+ this.releaseBodyScope = void 0;
296
+ this.bodyId = void 0;
297
+ this.world = void 0;
298
+ }
299
+ }
300
+ dispose() {
301
+ try {
302
+ this.exit(false);
303
+ } finally {
304
+ this.releaseBodyFrame();
305
+ }
306
+ }
307
+ releaseBodyFrame() {
308
+ const world = this.bodyFrameWorld;
309
+ const bodyId = this.bodyFrameId;
310
+ if (world !== void 0 && bodyId !== void 0) {
311
+ const frames = bodyFramesByWorld2D.get(world);
312
+ frames?.delete(bodyId);
313
+ if (frames?.size === 0) bodyFramesByWorld2D.delete(world);
314
+ }
315
+ this.bodyFrameWorld = void 0;
316
+ this.bodyFrameId = void 0;
317
+ }
318
+ resolveShape(options) {
319
+ if (this.cachedShapeInput && sameColliderShapeInput(this.cachedShapeInput, options)) {
320
+ return this.cachedShape;
321
+ }
322
+ if (options.shape === "self") {
323
+ throw new Error(
324
+ "Self collider inference is not available in this runtime task."
325
+ );
326
+ }
327
+ const transformed = options.offset[0] === 0 && options.offset[1] === 0 && options.rotationDegrees === 0 ? options.shape : transformShape2D(options.shape, {
328
+ position: options.offset,
329
+ rotationDegrees: options.rotationDegrees
330
+ });
331
+ this.cachedShapeInput = options;
332
+ this.cachedShape = requireShapeRecord2D(transformed);
333
+ return this.cachedShape;
334
+ }
335
+ resolveSelfShape(input) {
336
+ const key = `${input.componentName}:${stableGeometryKey(input.style)}`;
337
+ if (key === this.cachedSelfShapeKey) return this.cachedSelfShape;
338
+ const shape = inferCanvasColliderShape2D(input);
339
+ this.cachedSelfShapeKey = key;
340
+ this.cachedSelfShape = shape;
341
+ return shape;
342
+ }
343
+ bakeShape(shape, transform, stabilizeFallback = true) {
344
+ const candidate = [
345
+ transform.a,
346
+ transform.b,
347
+ transform.c,
348
+ transform.d,
349
+ transform.e,
350
+ transform.f
351
+ ];
352
+ const values = stabilizeFallback && this.cachedBakedSource === shape && this.cachedBakedTransform !== void 0 && sameRelativeTransformWithinCanvasRoundoff(
353
+ this.cachedBakedTransform,
354
+ candidate
355
+ ) ? this.cachedBakedTransform : candidate;
356
+ if (this.cachedBakedSource === shape && this.cachedBakedTransform?.every(
357
+ (value, index) => value === values[index]
358
+ )) {
359
+ return this.cachedBakedShape;
360
+ }
361
+ const baked = bakeCanvasShapeTransform2D(shape, new DOMMatrix([...values]));
362
+ this.cachedBakedSource = shape;
363
+ this.cachedBakedTransform = Object.freeze(values);
364
+ this.cachedBakedShape = baked;
365
+ return baked;
366
+ }
367
+ }
368
+ function snapshotPhysicsBodyFrameCountForTest(world) {
369
+ return bodyFramesByWorld2D.get(world)?.size ?? 0;
370
+ }
371
+ function sameRelativeTransformWithinCanvasRoundoff(previous, candidate) {
372
+ return previous.every((value, index) => {
373
+ const next = candidate[index];
374
+ const tolerance = index < 4 ? linearTransformRoundoffTolerance(value, next) : translationRoundoffTolerance(value, next);
375
+ return Math.abs(value - next) <= tolerance;
376
+ });
377
+ }
378
+ function linearTransformRoundoffTolerance(previous, candidate) {
379
+ const magnitude = Math.max(1, Math.abs(previous), Math.abs(candidate));
380
+ return RELATIVE_MATRIX_ROUNDOFF_OPERATIONS * Number.EPSILON * magnitude * magnitude;
381
+ }
382
+ function translationRoundoffTolerance(previous, candidate) {
383
+ return RELATIVE_MATRIX_ROUNDOFF_OPERATIONS * Number.EPSILON * (1 + Math.max(Math.abs(previous), Math.abs(candidate)));
384
+ }
385
+ function relativeColliderTransform2D(bodyFrame, colliderParentFrame) {
386
+ return sameMatrixExactly2D(bodyFrame, colliderParentFrame) ? new DOMMatrix() : bodyFrame.inverse().multiply(colliderParentFrame);
387
+ }
388
+ function relativeColliderTransformFromLineage2D(bodyFrame, input) {
389
+ const inputUntrackedCanvasTransformCount = (input.presentationTransformLineage?.untrackedCanvasTransformCount ?? 0) + (input.hasUntrackedCanvasTransform ? 1 : 0);
390
+ if (inputUntrackedCanvasTransformCount !== bodyFrame.untrackedCanvasTransformCount) {
391
+ return void 0;
392
+ }
393
+ const nodes = [];
394
+ let cursor = input.presentationTransformLineage;
395
+ while (cursor !== bodyFrame.preBodyLineage) {
396
+ if (cursor === void 0) return void 0;
397
+ nodes.push(cursor.localTransform);
398
+ cursor = cursor.parent;
399
+ }
400
+ nodes.reverse();
401
+ if (nodes.length === 0) return new DOMMatrix();
402
+ let relative = new DOMMatrix();
403
+ for (const transform of nodes.slice(1)) {
404
+ relative = relative.multiply(transform);
405
+ }
406
+ return relative;
407
+ }
408
+ function sameMatrixExactly2D(left, right) {
409
+ return left.a === right.a && left.b === right.b && left.c === right.c && left.d === right.d && left.e === right.e && left.f === right.f;
410
+ }
411
+ function requireBodyFrame(world, bodyId) {
412
+ const frame = bodyFramesByWorld2D.get(world)?.get(bodyId);
413
+ if (!frame)
414
+ throw new Error("A collider requires its body geometry to prepare first.");
415
+ return frame;
416
+ }
417
+ function withColliderShape(options, shape) {
418
+ return Object.freeze({ ...options, shape });
419
+ }
420
+ function stableGeometryKey(style) {
421
+ return JSON.stringify(style, (key, value) => {
422
+ if (["fill", "stroke", "opacity", "cursor", "filter", "src"].includes(key)) {
423
+ return void 0;
424
+ }
425
+ if (typeof value === "function") return void 0;
426
+ if (typeof Path2D !== "undefined" && value instanceof Path2D) {
427
+ return "[opaque Path2D]";
428
+ }
429
+ return value;
430
+ });
431
+ }
432
+ function normalizeOptionalCollider(value, path) {
433
+ if (value === false) return false;
434
+ if (value === void 0) return normalizeCollider({}, path);
435
+ if (isPhysicsShape2D(value)) return normalizeCollider({ shape: value }, path);
436
+ return normalizeCollider(value, path);
437
+ }
438
+ function normalizeCollider(options, path) {
439
+ const shape = options.shape ?? "self";
440
+ if (shape !== "self") requireShapeRecord2D(shape);
441
+ const restitution = requireNonnegativeNumber(
442
+ options.restitution ?? 0,
443
+ `${path}.restitution`
444
+ );
445
+ if (restitution > 1) {
446
+ throw new RangeError(`${path}.restitution must be from zero through one.`);
447
+ }
448
+ const sensor = options.sensor ?? false;
449
+ return Object.freeze({
450
+ shape,
451
+ offset: copyFiniteVector2(options.offset ?? [0, 0], `${path}.offset`),
452
+ rotationDegrees: requireFiniteNumber(
453
+ options.rotationDegrees ?? 0,
454
+ `${path}.rotationDegrees`
455
+ ),
456
+ density: requirePositiveNumber(options.density ?? 1, `${path}.density`),
457
+ friction: requireNonnegativeNumber(
458
+ options.friction ?? 0.5,
459
+ `${path}.friction`
460
+ ),
461
+ restitution,
462
+ sensor,
463
+ contributesToMass: options.contributesToMass ?? !sensor,
464
+ collisionFilter: normalizeCollisionFilter(options.collisionFilter, path),
465
+ tag: options.tag,
466
+ handlers: normalizeHandlers(options, path)
467
+ });
468
+ }
469
+ function normalizeCollisionFilter(filter, path) {
470
+ return Object.freeze({
471
+ category: requireSafeIntegerInRange(
472
+ filter?.category ?? 1,
473
+ 0,
474
+ 4294967295,
475
+ `${path}.collisionFilter.category`
476
+ ),
477
+ mask: requireSafeIntegerInRange(
478
+ filter?.mask ?? 4294967295,
479
+ 0,
480
+ 4294967295,
481
+ `${path}.collisionFilter.mask`
482
+ ),
483
+ group: requireSafeIntegerInRange(
484
+ filter?.group ?? 0,
485
+ -2147483648,
486
+ 2147483647,
487
+ `${path}.collisionFilter.group`
488
+ )
489
+ });
490
+ }
491
+ function normalizeHandlers(options, path) {
492
+ const handlers = {
493
+ onCollisionStart: options.onCollisionStart,
494
+ onCollisionEnd: options.onCollisionEnd,
495
+ onHit: options.onHit,
496
+ onOverlapStart: options.onOverlapStart,
497
+ onOverlapEnd: options.onOverlapEnd
498
+ };
499
+ for (const [name, handler] of Object.entries(handlers)) {
500
+ if (handler !== void 0 && typeof handler !== "function") {
501
+ throw new TypeError(`${path}.${name} must be a function.`);
502
+ }
503
+ }
504
+ return Object.freeze(handlers);
505
+ }
506
+ function isPhysicsShape2D(value) {
507
+ try {
508
+ requireShapeRecord2D(value);
509
+ return true;
510
+ } catch {
511
+ return false;
512
+ }
513
+ }
514
+ function sameColliderShapeInput(left, right) {
515
+ return left.shape === right.shape && left.offset[0] === right.offset[0] && left.offset[1] === right.offset[1] && left.rotationDegrees === right.rotationDegrees;
516
+ }
517
+ export {
518
+ MountedPhysicsAttachment2D,
519
+ collider2D,
520
+ dynamicBody2D,
521
+ kinematicBody2D,
522
+ requirePhysicsAttachment2DDescriptor,
523
+ snapshotPhysicsBodyFrameCountForTest,
524
+ staticBody2D
525
+ };
526
+ //# sourceMappingURL=descriptors.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../src/features/physics/lib/2d/runtime/descriptors.ts"],
4
+ "sourcesContent": ["import { Group, isSignal } from \"@pibbl/core\";\nimport {\n pibblInternalCreatePropAttachment,\n type PibblInternalPrimitiveAttachmentInput,\n type PibblInternalMountedPropAttachment,\n} from \"@pibbl/core/internal\";\nimport type {\n PibblPhysicsShape2D,\n PibblPhysicsVector2,\n} from \"../../../2d-geometry.js\";\nimport { transformShape2D } from \"../../../2d-geometry.js\";\nimport { requireShapeRecord2D, type ShapeRecord2D } from \"../shape-records.js\";\nimport type {\n PibblPhysicsAttachment2D,\n PibblPhysicsBodyAttachment2D,\n PibblPhysicsBodyHandle2D,\n PibblPhysicsColliderAttachment2D,\n PibblPhysicsColliderConfiguration2D,\n PibblPhysicsCollisionFilter,\n PibblPhysicsDynamicBody2DOptions,\n PibblPhysicsKinematicBody2DOptions,\n PibblPhysicsKinematicTarget2D,\n PibblPhysicsStaticBody2DOptions,\n} from \"../types.js\";\nimport {\n copyFiniteVector2,\n requireFiniteNumber,\n requireNonnegativeNumber,\n requirePositiveNumber,\n requireSafeIntegerInRange,\n} from \"../../shared/validation.js\";\nimport {\n pushPhysicsBody2D,\n requireCurrentPhysicsBody2D,\n requireCurrentPhysicsWorld2D,\n} from \"./context.js\";\nimport {\n bakeCanvasShapeTransform2D,\n inferCanvasColliderShape2D,\n} from \"../canvas/inference.js\";\nimport {\n bodyLocalTransformFromPrimitive2D,\n captureBodyPresentation2D,\n matrixFromPose,\n resolveDynamicPresentationTransform2D,\n type CanvasBodyPresentationCapture2D,\n} from \"../canvas/presentation.js\";\n\nconst bodyFramesByWorld2D = new WeakMap<object, Map<number, BodyFrame2D>>();\n\ninterface BodyFrame2D {\n readonly poseMatrix: DOMMatrix;\n readonly preBodyLineage: PibblInternalPrimitiveAttachmentInput[\"presentationTransformLineage\"];\n readonly untrackedCanvasTransformCount: number;\n}\n\nconst attachmentRecord2DSymbol = Symbol(\"PibblPhysicsAttachment2D\");\n\n// Exact Pibbl presentation anchors preserve authored transforms as doubles. A\n// relative collider frame still performs one inversion and one multiplication,\n// so accept only their bounded IEEE-754 double-operation noise. This is never\n// an authored-geometry epsilon: a post-mount 1e-7 translation or scale change\n// remains observable.\nconst RELATIVE_MATRIX_ROUNDOFF_OPERATIONS = 32;\n\nexport interface NormalizedPhysicsCollisionFilter2D {\n readonly category: number;\n readonly mask: number;\n readonly group: number;\n}\n\nexport interface NormalizedPhysicsColliderConfiguration2D {\n readonly shape: \"self\" | PibblPhysicsShape2D;\n readonly offset: PibblPhysicsVector2;\n readonly rotationDegrees: number;\n readonly density: number;\n readonly friction: number;\n readonly restitution: number;\n readonly sensor: boolean;\n readonly contributesToMass: boolean;\n readonly collisionFilter: NormalizedPhysicsCollisionFilter2D;\n readonly tag: unknown;\n readonly handlers: Readonly<{\n readonly onCollisionStart?: PibblPhysicsColliderConfiguration2D[\"onCollisionStart\"];\n readonly onCollisionEnd?: PibblPhysicsColliderConfiguration2D[\"onCollisionEnd\"];\n readonly onHit?: PibblPhysicsColliderConfiguration2D[\"onHit\"];\n readonly onOverlapStart?: PibblPhysicsColliderConfiguration2D[\"onOverlapStart\"];\n readonly onOverlapEnd?: PibblPhysicsColliderConfiguration2D[\"onOverlapEnd\"];\n }>;\n}\n\nexport interface NormalizedPhysicsDynamicBody2DOptions {\n readonly enabled: boolean;\n readonly handle: PibblPhysicsBodyHandle2D | undefined;\n readonly linearVelocity: PibblPhysicsVector2;\n readonly angularVelocityDegreesPerSecond: number;\n readonly linearDamping: number;\n readonly angularDamping: number;\n readonly gravityScale: number;\n readonly mass: \"auto\" | number;\n readonly fixedRotation: boolean;\n readonly allowSleep: boolean;\n readonly ccd: boolean;\n readonly reenableVelocity: \"zero\" | \"preserve\";\n readonly collider: false | NormalizedPhysicsColliderConfiguration2D;\n}\n\nexport interface NormalizedPhysicsStaticBody2DOptions {\n readonly enabled: boolean;\n readonly handle: PibblPhysicsBodyHandle2D | undefined;\n readonly collider: false | NormalizedPhysicsColliderConfiguration2D;\n}\n\nexport interface NormalizedPhysicsKinematicBody2DOptions {\n readonly enabled: boolean;\n readonly handle: PibblPhysicsBodyHandle2D | undefined;\n readonly target: Readonly<PibblPhysicsKinematicTarget2D>;\n readonly allowSleep: boolean;\n readonly collider: false | NormalizedPhysicsColliderConfiguration2D;\n}\n\nexport type PhysicsBodyAttachment2DDescriptor =\n | Readonly<{\n readonly kind: \"body\";\n readonly bodyType: \"dynamic\";\n readonly options: NormalizedPhysicsDynamicBody2DOptions;\n }>\n | Readonly<{\n readonly kind: \"body\";\n readonly bodyType: \"static\";\n readonly options: NormalizedPhysicsStaticBody2DOptions;\n }>\n | Readonly<{\n readonly kind: \"body\";\n readonly bodyType: \"kinematic\";\n readonly options: NormalizedPhysicsKinematicBody2DOptions;\n }>;\n\nexport interface PhysicsColliderAttachment2DDescriptor {\n readonly kind: \"collider\";\n readonly options: NormalizedPhysicsColliderConfiguration2D;\n}\n\nexport type PhysicsAttachment2DDescriptor =\n PhysicsBodyAttachment2DDescriptor | PhysicsColliderAttachment2DDescriptor;\n\ntype RegisteredAttachment2D = Readonly<{\n readonly [attachmentRecord2DSymbol]: PhysicsAttachment2DDescriptor;\n}>;\n\n/**\n * Creates a declarative body attachment whose motion is advanced by the physics solver.\n *\n * @param options - Dynamic body, collider, and initial motion configuration. See\n * {@link PibblPhysicsDynamicBody2DOptions} .\n * @returns A dynamic-body attachment for a supported primitive's physics prop. See\n * {@link PibblPhysicsBodyAttachment2D} .\n *\n * @see {@link PibblPhysicsDynamicBody2DOptions}\n * @see {@link PibblPhysicsBodyAttachment2D}\n */\nexport function dynamicBody2D(\n options: PibblPhysicsDynamicBody2DOptions = {},\n): PibblPhysicsBodyAttachment2D {\n const mass = options.mass ?? \"auto\";\n if (mass !== \"auto\") requirePositiveNumber(mass, \"options.mass\");\n const reenableVelocity = options.reenableVelocity ?? \"zero\";\n if (reenableVelocity !== \"zero\" && reenableVelocity !== \"preserve\") {\n throw new TypeError(\n 'options.reenableVelocity must be \"zero\" or \"preserve\".',\n );\n }\n return createAttachment({\n kind: \"body\",\n bodyType: \"dynamic\",\n options: Object.freeze({\n enabled: options.enabled ?? true,\n handle: options.handle,\n linearVelocity: copyFiniteVector2(\n options.linearVelocity ?? [0, 0],\n \"options.linearVelocity\",\n ),\n angularVelocityDegreesPerSecond: requireFiniteNumber(\n options.angularVelocityDegreesPerSecond ?? 0,\n \"options.angularVelocityDegreesPerSecond\",\n ),\n linearDamping: requireNonnegativeNumber(\n options.linearDamping ?? 0,\n \"options.linearDamping\",\n ),\n angularDamping: requireNonnegativeNumber(\n options.angularDamping ?? 0,\n \"options.angularDamping\",\n ),\n gravityScale: requireFiniteNumber(\n options.gravityScale ?? 1,\n \"options.gravityScale\",\n ),\n mass,\n fixedRotation: options.fixedRotation ?? false,\n allowSleep: options.allowSleep ?? true,\n ccd: options.ccd ?? false,\n reenableVelocity,\n collider: normalizeOptionalCollider(options.collider, \"options.collider\"),\n }),\n });\n}\n\n/**\n * Creates a declarative body attachment that remains fixed in the simulation.\n *\n * @param options - Static body and collider configuration. See\n * {@link PibblPhysicsStaticBody2DOptions} .\n * @returns A static-body attachment for a supported primitive's physics prop. See\n * {@link PibblPhysicsBodyAttachment2D} .\n *\n * @see {@link PibblPhysicsStaticBody2DOptions}\n * @see {@link PibblPhysicsBodyAttachment2D}\n */\nexport function staticBody2D(\n options: PibblPhysicsStaticBody2DOptions = {},\n): PibblPhysicsBodyAttachment2D {\n return createAttachment({\n kind: \"body\",\n bodyType: \"static\",\n options: Object.freeze({\n enabled: options.enabled ?? true,\n handle: options.handle,\n collider: normalizeOptionalCollider(options.collider, \"options.collider\"),\n }),\n });\n}\n\n/**\n * Creates a declarative body attachment driven by application-supplied target signals.\n *\n * @param options - Kinematic body, collider, and motion configuration. See\n * {@link PibblPhysicsKinematicBody2DOptions} .\n * @returns A kinematic-body attachment for a supported primitive's physics prop. See\n * {@link PibblPhysicsBodyAttachment2D} .\n *\n * @see {@link PibblPhysicsKinematicBody2DOptions}\n * @see {@link PibblPhysicsBodyAttachment2D}\n */\nexport function kinematicBody2D(\n options: PibblPhysicsKinematicBody2DOptions = {},\n): PibblPhysicsBodyAttachment2D {\n const target = options.target ?? {};\n if (target.position !== undefined && !isSignal(target.position)) {\n throw new TypeError(\"options.target.position must be a Pibbl signal.\");\n }\n if (\n target.rotationDegrees !== undefined &&\n !isSignal(target.rotationDegrees)\n ) {\n throw new TypeError(\"options.target.rotationDegrees must be a Pibbl signal.\");\n }\n return createAttachment({\n kind: \"body\",\n bodyType: \"kinematic\",\n options: Object.freeze({\n enabled: options.enabled ?? true,\n handle: options.handle,\n target: Object.freeze({\n position: target.position,\n rotationDegrees: target.rotationDegrees,\n }),\n allowSleep: options.allowSleep ?? true,\n collider: normalizeOptionalCollider(options.collider, \"options.collider\"),\n }),\n });\n}\n\n/**\n * Creates a declarative collider attachment for a primitive within a physics body.\n *\n * @param options - Collider shape, material, filtering, and sensor configuration. See\n * {@link PibblPhysicsColliderConfiguration2D} .\n * @returns A collider attachment for a supported primitive's physics prop. See\n * {@link PibblPhysicsColliderAttachment2D} .\n *\n * @see {@link PibblPhysicsColliderConfiguration2D}\n * @see {@link PibblPhysicsColliderAttachment2D}\n */\nexport function collider2D(\n options: PibblPhysicsColliderConfiguration2D = {},\n): PibblPhysicsColliderAttachment2D {\n return createAttachment({\n kind: \"collider\",\n options: normalizeCollider(options, \"options\"),\n });\n}\n\nexport function requirePhysicsAttachment2DDescriptor(\n value: PibblPhysicsAttachment2D,\n): PhysicsAttachment2DDescriptor {\n const descriptor =\n typeof value === \"object\" && value !== null\n ? (value as Partial<RegisteredAttachment2D>)[attachmentRecord2DSymbol]\n : undefined;\n if (descriptor === undefined) {\n throw new TypeError(\"Expected a registered Pibbl physics 2D attachment.\");\n }\n return descriptor;\n}\n\nfunction createAttachment<T extends PhysicsAttachment2DDescriptor>(\n descriptor: T,\n): T[\"kind\"] extends \"body\"\n ? PibblPhysicsBodyAttachment2D\n : PibblPhysicsColliderAttachment2D {\n const frozenDescriptor = Object.freeze(descriptor);\n const value = Object.freeze({\n [attachmentRecord2DSymbol]: frozenDescriptor,\n }) as unknown as RegisteredAttachment2D & PibblPhysicsAttachment2D;\n return pibblInternalCreatePropAttachment(\n \"physics\",\n value,\n () => new MountedPhysicsAttachment2D(value),\n ) as never;\n}\n\nexport class MountedPhysicsAttachment2D implements PibblInternalMountedPropAttachment {\n private descriptor: PhysicsAttachment2DDescriptor;\n private world: ReturnType<typeof requireCurrentPhysicsWorld2D> | undefined;\n private bodyId: number | undefined;\n private releaseBodyScope: (() => void) | undefined;\n private cachedShapeInput:\n NormalizedPhysicsColliderConfiguration2D | undefined;\n private cachedShape: ShapeRecord2D | undefined;\n private cachedSelfShapeKey: string | undefined;\n private cachedSelfShape: PibblPhysicsShape2D | undefined;\n private cachedBakedSource: PibblPhysicsShape2D | undefined;\n private cachedBakedTransform: readonly number[] | undefined;\n private cachedBakedShape: PibblPhysicsShape2D | undefined;\n private bodyPresentation: CanvasBodyPresentationCapture2D | undefined;\n // `exit` runs after every traversal, while `dispose` runs only when this\n // mounted attachment is actually removed. Keep the last ownership key so a\n // removed keyed body releases its presentation lineage from the long-lived\n // world's frame map.\n private bodyFrameWorld: object | undefined;\n private bodyFrameId: number | undefined;\n private wasEnabled = false;\n\n constructor(value: PibblPhysicsAttachment2D) {\n this.descriptor = requirePhysicsAttachment2DDescriptor(value);\n }\n\n update(value: unknown): void {\n const next = requirePhysicsAttachment2DDescriptor(\n value as PibblPhysicsAttachment2D,\n );\n if (this.descriptor.kind === \"body\" && next.kind !== \"body\") {\n this.releaseBodyFrame();\n }\n this.descriptor = next;\n }\n\n enter(): void {\n const world = requireCurrentPhysicsWorld2D();\n this.world = world;\n if (this.descriptor.kind === \"body\") {\n const bodyId = world.bodyIdFor(this);\n if (\n this.bodyFrameWorld !== undefined &&\n (this.bodyFrameWorld !== world || this.bodyFrameId !== bodyId)\n ) {\n this.releaseBodyFrame();\n }\n this.bodyId = bodyId;\n this.releaseBodyScope = pushPhysicsBody2D({ world, bodyId });\n } else {\n this.bodyId = requireCurrentPhysicsBody2D().bodyId;\n }\n }\n\n preparePrimitive(\n input: PibblInternalPrimitiveAttachmentInput,\n ): Readonly<{ readonly presentationTransform2D?: DOMMatrix }> | void {\n const world = this.world;\n const bodyId = this.bodyId;\n if (world === undefined || bodyId === undefined) {\n throw new Error(\n \"Physics 2D attachment preparation requires its entered scope.\",\n );\n }\n if (this.descriptor.kind === \"body\") {\n const descriptor = this.descriptor;\n const simulationParent = world.simulationTransform(\n input.parentWorldTransform,\n );\n const enabled = descriptor.options.enabled;\n const reenabled = !this.wasEnabled && enabled;\n const local = bodyLocalTransformFromPrimitive2D(\n input.componentType,\n input.style,\n );\n if (\n this.bodyPresentation === undefined ||\n reenabled ||\n descriptor.bodyType !== \"dynamic\"\n ) {\n this.bodyPresentation = captureBodyPresentation2D(\n simulationParent,\n local,\n input.componentName,\n descriptor.bodyType === \"dynamic\" && enabled,\n );\n }\n const presentation = this.bodyPresentation;\n let bodyFrames = bodyFramesByWorld2D.get(world);\n if (!bodyFrames) {\n bodyFrames = new Map();\n bodyFramesByWorld2D.set(world, bodyFrames);\n }\n let presentationTransform2D: DOMMatrix | undefined;\n let effectiveBodyFrame: DOMMatrix;\n if (!enabled || descriptor.bodyType !== \"dynamic\") {\n effectiveBodyFrame = world.rootTransform(\n matrixFromPose(presentation.initialPose),\n );\n } else {\n world.handle.revision.get();\n const presentedPose = reenabled\n ? presentation.initialPose\n : (world.presentationPose(bodyId) ?? presentation.initialPose);\n presentationTransform2D = resolveDynamicPresentationTransform2D(\n presentation,\n presentedPose,\n simulationParent,\n local,\n input.componentName,\n );\n effectiveBodyFrame = input.parentWorldTransform.multiply(\n presentationTransform2D.multiply(local),\n );\n }\n bodyFrames.set(\n bodyId,\n Object.freeze({\n poseMatrix: effectiveBodyFrame,\n preBodyLineage: input.presentationTransformLineage,\n untrackedCanvasTransformCount:\n (input.presentationTransformLineage\n ?.untrackedCanvasTransformCount ?? 0) +\n (input.hasUntrackedCanvasTransform ? 1 : 0),\n }),\n );\n this.bodyFrameWorld = world;\n this.bodyFrameId = bodyId;\n const collider = descriptor.options.collider;\n const effectiveCollider =\n collider === false\n ? false\n : collider.shape === \"self\" && input.componentType === Group\n ? false\n : withColliderShape(\n collider,\n this.bakeShape(\n collider.shape === \"self\"\n ? this.resolveSelfShape(input)\n : collider.shape,\n descriptor.bodyType === \"dynamic\"\n ? matrixFromPose(presentation.initialPose)\n .inverse()\n .multiply(simulationParent)\n .multiply(local)\n : relativeColliderTransform2D(\n effectiveBodyFrame,\n input.parentWorldTransform,\n ).multiply(local),\n ),\n );\n const effectiveDescriptor =\n effectiveCollider === collider\n ? descriptor\n : (Object.freeze({\n ...descriptor,\n options: Object.freeze({\n ...descriptor.options,\n collider: effectiveCollider,\n }),\n }) as PhysicsBodyAttachment2DDescriptor);\n world.collectBody(\n this,\n bodyId,\n effectiveDescriptor,\n presentation.initialPose,\n );\n this.wasEnabled = enabled;\n return presentationTransform2D === undefined\n ? undefined\n : { presentationTransform2D };\n } else {\n const bodyFrame = requireBodyFrame(world, bodyId);\n const lineageTransform = relativeColliderTransformFromLineage2D(\n bodyFrame,\n input,\n );\n const options = withColliderShape(\n this.descriptor.options,\n this.bakeShape(\n this.descriptor.options.shape === \"self\"\n ? this.resolveSelfShape(input)\n : this.descriptor.options.shape,\n (\n lineageTransform ??\n relativeColliderTransform2D(\n bodyFrame.poseMatrix,\n input.parentWorldTransform,\n )\n ).multiply(\n bodyLocalTransformFromPrimitive2D(input.componentType, input.style),\n ),\n lineageTransform === undefined,\n ),\n );\n world.collectCollider(this, bodyId, options);\n }\n }\n\n exit(_success: boolean): void {\n try {\n this.releaseBodyScope?.();\n } finally {\n this.releaseBodyScope = undefined;\n this.bodyId = undefined;\n this.world = undefined;\n }\n }\n\n dispose(): void {\n try {\n this.exit(false);\n } finally {\n this.releaseBodyFrame();\n }\n }\n\n private releaseBodyFrame(): void {\n const world = this.bodyFrameWorld;\n const bodyId = this.bodyFrameId;\n if (world !== undefined && bodyId !== undefined) {\n const frames = bodyFramesByWorld2D.get(world);\n frames?.delete(bodyId);\n if (frames?.size === 0) bodyFramesByWorld2D.delete(world);\n }\n this.bodyFrameWorld = undefined;\n this.bodyFrameId = undefined;\n }\n\n resolveShape(\n options: NormalizedPhysicsColliderConfiguration2D,\n ): ShapeRecord2D {\n if (\n this.cachedShapeInput &&\n sameColliderShapeInput(this.cachedShapeInput, options)\n ) {\n return this.cachedShape!;\n }\n if (options.shape === \"self\") {\n throw new Error(\n \"Self collider inference is not available in this runtime task.\",\n );\n }\n const transformed =\n options.offset[0] === 0 &&\n options.offset[1] === 0 &&\n options.rotationDegrees === 0\n ? options.shape\n : transformShape2D(options.shape, {\n position: options.offset,\n rotationDegrees: options.rotationDegrees,\n });\n this.cachedShapeInput = options;\n this.cachedShape = requireShapeRecord2D(transformed);\n return this.cachedShape;\n }\n\n private resolveSelfShape(\n input: PibblInternalPrimitiveAttachmentInput,\n ): PibblPhysicsShape2D {\n const key = `${input.componentName}:${stableGeometryKey(input.style)}`;\n if (key === this.cachedSelfShapeKey) return this.cachedSelfShape!;\n const shape = inferCanvasColliderShape2D(input);\n this.cachedSelfShapeKey = key;\n this.cachedSelfShape = shape;\n return shape;\n }\n\n private bakeShape(\n shape: PibblPhysicsShape2D,\n transform: DOMMatrixReadOnly,\n stabilizeFallback = true,\n ): PibblPhysicsShape2D {\n const candidate = [\n transform.a,\n transform.b,\n transform.c,\n transform.d,\n transform.e,\n transform.f,\n ];\n const values =\n stabilizeFallback &&\n this.cachedBakedSource === shape &&\n this.cachedBakedTransform !== undefined &&\n sameRelativeTransformWithinCanvasRoundoff(\n this.cachedBakedTransform,\n candidate,\n )\n ? this.cachedBakedTransform\n : candidate;\n if (\n this.cachedBakedSource === shape &&\n this.cachedBakedTransform?.every(\n (value, index) => value === values[index],\n )\n ) {\n return this.cachedBakedShape!;\n }\n const baked = bakeCanvasShapeTransform2D(shape, new DOMMatrix([...values]));\n this.cachedBakedSource = shape;\n this.cachedBakedTransform = Object.freeze(values);\n this.cachedBakedShape = baked;\n return baked;\n }\n}\n\n/** @internal Test-only ownership observation. */\nexport function snapshotPhysicsBodyFrameCountForTest(world: object): number {\n return bodyFramesByWorld2D.get(world)?.size ?? 0;\n}\n\nfunction sameRelativeTransformWithinCanvasRoundoff(\n previous: readonly number[],\n candidate: readonly number[],\n): boolean {\n return previous.every((value, index) => {\n const next = candidate[index]!;\n const tolerance =\n index < 4\n ? linearTransformRoundoffTolerance(value, next)\n : translationRoundoffTolerance(value, next);\n return Math.abs(value - next) <= tolerance;\n });\n}\n\nfunction linearTransformRoundoffTolerance(\n previous: number,\n candidate: number,\n): number {\n const magnitude = Math.max(1, Math.abs(previous), Math.abs(candidate));\n return (\n RELATIVE_MATRIX_ROUNDOFF_OPERATIONS * Number.EPSILON * magnitude * magnitude\n );\n}\n\nfunction translationRoundoffTolerance(\n previous: number,\n candidate: number,\n): number {\n return (\n RELATIVE_MATRIX_ROUNDOFF_OPERATIONS *\n Number.EPSILON *\n (1 + Math.max(Math.abs(previous), Math.abs(candidate)))\n );\n}\n\nfunction relativeColliderTransform2D(\n bodyFrame: DOMMatrixReadOnly,\n colliderParentFrame: DOMMatrixReadOnly,\n): DOMMatrixReadOnly {\n return sameMatrixExactly2D(bodyFrame, colliderParentFrame)\n ? new DOMMatrix()\n : bodyFrame.inverse().multiply(colliderParentFrame);\n}\n\nfunction relativeColliderTransformFromLineage2D(\n bodyFrame: BodyFrame2D,\n input: PibblInternalPrimitiveAttachmentInput,\n): DOMMatrix | undefined {\n const inputUntrackedCanvasTransformCount =\n (input.presentationTransformLineage?.untrackedCanvasTransformCount ?? 0) +\n (input.hasUntrackedCanvasTransform ? 1 : 0);\n if (\n inputUntrackedCanvasTransformCount !==\n bodyFrame.untrackedCanvasTransformCount\n ) {\n return undefined;\n }\n const nodes: DOMMatrix[] = [];\n let cursor = input.presentationTransformLineage;\n while (cursor !== bodyFrame.preBodyLineage) {\n if (cursor === undefined) return undefined;\n nodes.push(cursor.localTransform);\n cursor = cursor.parent;\n }\n nodes.reverse();\n if (nodes.length === 0) return new DOMMatrix();\n let relative = new DOMMatrix();\n for (const transform of nodes.slice(1)) {\n relative = relative.multiply(transform);\n }\n return relative;\n}\n\nfunction sameMatrixExactly2D(\n left: DOMMatrixReadOnly,\n right: DOMMatrixReadOnly,\n): boolean {\n return (\n left.a === right.a &&\n left.b === right.b &&\n left.c === right.c &&\n left.d === right.d &&\n left.e === right.e &&\n left.f === right.f\n );\n}\n\nfunction requireBodyFrame(world: object, bodyId: number): BodyFrame2D {\n const frame = bodyFramesByWorld2D.get(world)?.get(bodyId);\n if (!frame)\n throw new Error(\"A collider requires its body geometry to prepare first.\");\n return frame;\n}\n\nfunction withColliderShape(\n options: NormalizedPhysicsColliderConfiguration2D,\n shape: PibblPhysicsShape2D,\n): NormalizedPhysicsColliderConfiguration2D {\n return Object.freeze({ ...options, shape });\n}\n\nfunction stableGeometryKey(\n style: Readonly<Record<PropertyKey, unknown>>,\n): string {\n return JSON.stringify(style, (key, value: unknown) => {\n if (\n [\"fill\", \"stroke\", \"opacity\", \"cursor\", \"filter\", \"src\"].includes(key)\n ) {\n return undefined;\n }\n if (typeof value === \"function\") return undefined;\n if (typeof Path2D !== \"undefined\" && value instanceof Path2D) {\n return \"[opaque Path2D]\";\n }\n return value;\n });\n}\n\nfunction normalizeOptionalCollider(\n value:\n false | PibblPhysicsColliderConfiguration2D | PibblPhysicsShape2D | undefined,\n path: string,\n): false | NormalizedPhysicsColliderConfiguration2D {\n if (value === false) return false;\n if (value === undefined) return normalizeCollider({}, path);\n if (isPhysicsShape2D(value)) return normalizeCollider({ shape: value }, path);\n return normalizeCollider(value, path);\n}\n\nfunction normalizeCollider(\n options: PibblPhysicsColliderConfiguration2D,\n path: string,\n): NormalizedPhysicsColliderConfiguration2D {\n const shape = options.shape ?? \"self\";\n if (shape !== \"self\") requireShapeRecord2D(shape);\n const restitution = requireNonnegativeNumber(\n options.restitution ?? 0,\n `${path}.restitution`,\n );\n if (restitution > 1) {\n throw new RangeError(`${path}.restitution must be from zero through one.`);\n }\n const sensor = options.sensor ?? false;\n return Object.freeze({\n shape,\n offset: copyFiniteVector2(options.offset ?? [0, 0], `${path}.offset`),\n rotationDegrees: requireFiniteNumber(\n options.rotationDegrees ?? 0,\n `${path}.rotationDegrees`,\n ),\n density: requirePositiveNumber(options.density ?? 1, `${path}.density`),\n friction: requireNonnegativeNumber(\n options.friction ?? 0.5,\n `${path}.friction`,\n ),\n restitution,\n sensor,\n contributesToMass: options.contributesToMass ?? !sensor,\n collisionFilter: normalizeCollisionFilter(options.collisionFilter, path),\n tag: options.tag,\n handlers: normalizeHandlers(options, path),\n });\n}\n\nfunction normalizeCollisionFilter(\n filter: PibblPhysicsCollisionFilter | undefined,\n path: string,\n): NormalizedPhysicsCollisionFilter2D {\n return Object.freeze({\n category: requireSafeIntegerInRange(\n filter?.category ?? 1,\n 0,\n 0xffff_ffff,\n `${path}.collisionFilter.category`,\n ),\n mask: requireSafeIntegerInRange(\n filter?.mask ?? 0xffff_ffff,\n 0,\n 0xffff_ffff,\n `${path}.collisionFilter.mask`,\n ),\n group: requireSafeIntegerInRange(\n filter?.group ?? 0,\n -0x8000_0000,\n 0x7fff_ffff,\n `${path}.collisionFilter.group`,\n ),\n });\n}\n\nfunction normalizeHandlers(\n options: PibblPhysicsColliderConfiguration2D,\n path: string,\n): NormalizedPhysicsColliderConfiguration2D[\"handlers\"] {\n const handlers = {\n onCollisionStart: options.onCollisionStart,\n onCollisionEnd: options.onCollisionEnd,\n onHit: options.onHit,\n onOverlapStart: options.onOverlapStart,\n onOverlapEnd: options.onOverlapEnd,\n };\n for (const [name, handler] of Object.entries(handlers)) {\n if (handler !== undefined && typeof handler !== \"function\") {\n throw new TypeError(`${path}.${name} must be a function.`);\n }\n }\n return Object.freeze(handlers);\n}\n\nfunction isPhysicsShape2D(value: object): value is PibblPhysicsShape2D {\n try {\n requireShapeRecord2D(value as PibblPhysicsShape2D);\n return true;\n } catch {\n return false;\n }\n}\n\nfunction sameColliderShapeInput(\n left: NormalizedPhysicsColliderConfiguration2D,\n right: NormalizedPhysicsColliderConfiguration2D,\n): boolean {\n return (\n left.shape === right.shape &&\n left.offset[0] === right.offset[0] &&\n left.offset[1] === right.offset[1] &&\n left.rotationDegrees === right.rotationDegrees\n );\n}\n"],
5
+ "mappings": "AAAA,SAAS,OAAO,gBAAgB;AAChC;AAAA,EACE;AAAA,OAGK;AAKP,SAAS,wBAAwB;AACjC,SAAS,4BAAgD;AAazD;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP;AAAA,EACE;AAAA,EACA;AAAA,OACK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAEK;AAEP,MAAM,sBAAsB,oBAAI,QAA0C;AAQ1E,MAAM,2BAA2B,uBAAO,0BAA0B;AAOlE,MAAM,sCAAsC;AAkGrC,SAAS,cACd,UAA4C,CAAC,GACf;AAC9B,QAAM,OAAO,QAAQ,QAAQ;AAC7B,MAAI,SAAS,OAAQ,uBAAsB,MAAM,cAAc;AAC/D,QAAM,mBAAmB,QAAQ,oBAAoB;AACrD,MAAI,qBAAqB,UAAU,qBAAqB,YAAY;AAClE,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACA,SAAO,iBAAiB;AAAA,IACtB,MAAM;AAAA,IACN,UAAU;AAAA,IACV,SAAS,OAAO,OAAO;AAAA,MACrB,SAAS,QAAQ,WAAW;AAAA,MAC5B,QAAQ,QAAQ;AAAA,MAChB,gBAAgB;AAAA,QACd,QAAQ,kBAAkB,CAAC,GAAG,CAAC;AAAA,QAC/B;AAAA,MACF;AAAA,MACA,iCAAiC;AAAA,QAC/B,QAAQ,mCAAmC;AAAA,QAC3C;AAAA,MACF;AAAA,MACA,eAAe;AAAA,QACb,QAAQ,iBAAiB;AAAA,QACzB;AAAA,MACF;AAAA,MACA,gBAAgB;AAAA,QACd,QAAQ,kBAAkB;AAAA,QAC1B;AAAA,MACF;AAAA,MACA,cAAc;AAAA,QACZ,QAAQ,gBAAgB;AAAA,QACxB;AAAA,MACF;AAAA,MACA;AAAA,MACA,eAAe,QAAQ,iBAAiB;AAAA,MACxC,YAAY,QAAQ,cAAc;AAAA,MAClC,KAAK,QAAQ,OAAO;AAAA,MACpB;AAAA,MACA,UAAU,0BAA0B,QAAQ,UAAU,kBAAkB;AAAA,IAC1E,CAAC;AAAA,EACH,CAAC;AACH;AAaO,SAAS,aACd,UAA2C,CAAC,GACd;AAC9B,SAAO,iBAAiB;AAAA,IACtB,MAAM;AAAA,IACN,UAAU;AAAA,IACV,SAAS,OAAO,OAAO;AAAA,MACrB,SAAS,QAAQ,WAAW;AAAA,MAC5B,QAAQ,QAAQ;AAAA,MAChB,UAAU,0BAA0B,QAAQ,UAAU,kBAAkB;AAAA,IAC1E,CAAC;AAAA,EACH,CAAC;AACH;AAaO,SAAS,gBACd,UAA8C,CAAC,GACjB;AAC9B,QAAM,SAAS,QAAQ,UAAU,CAAC;AAClC,MAAI,OAAO,aAAa,UAAa,CAAC,SAAS,OAAO,QAAQ,GAAG;AAC/D,UAAM,IAAI,UAAU,iDAAiD;AAAA,EACvE;AACA,MACE,OAAO,oBAAoB,UAC3B,CAAC,SAAS,OAAO,eAAe,GAChC;AACA,UAAM,IAAI,UAAU,wDAAwD;AAAA,EAC9E;AACA,SAAO,iBAAiB;AAAA,IACtB,MAAM;AAAA,IACN,UAAU;AAAA,IACV,SAAS,OAAO,OAAO;AAAA,MACrB,SAAS,QAAQ,WAAW;AAAA,MAC5B,QAAQ,QAAQ;AAAA,MAChB,QAAQ,OAAO,OAAO;AAAA,QACpB,UAAU,OAAO;AAAA,QACjB,iBAAiB,OAAO;AAAA,MAC1B,CAAC;AAAA,MACD,YAAY,QAAQ,cAAc;AAAA,MAClC,UAAU,0BAA0B,QAAQ,UAAU,kBAAkB;AAAA,IAC1E,CAAC;AAAA,EACH,CAAC;AACH;AAaO,SAAS,WACd,UAA+C,CAAC,GACd;AAClC,SAAO,iBAAiB;AAAA,IACtB,MAAM;AAAA,IACN,SAAS,kBAAkB,SAAS,SAAS;AAAA,EAC/C,CAAC;AACH;AAEO,SAAS,qCACd,OAC+B;AAC/B,QAAM,aACJ,OAAO,UAAU,YAAY,UAAU,OAClC,MAA0C,wBAAwB,IACnE;AACN,MAAI,eAAe,QAAW;AAC5B,UAAM,IAAI,UAAU,oDAAoD;AAAA,EAC1E;AACA,SAAO;AACT;AAEA,SAAS,iBACP,YAGmC;AACnC,QAAM,mBAAmB,OAAO,OAAO,UAAU;AACjD,QAAM,QAAQ,OAAO,OAAO;AAAA,IAC1B,CAAC,wBAAwB,GAAG;AAAA,EAC9B,CAAC;AACD,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,MAAM,IAAI,2BAA2B,KAAK;AAAA,EAC5C;AACF;AAEO,MAAM,2BAAyE;AAAA,EAC5E;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA;AAAA,EACA;AAAA,EACA,aAAa;AAAA,EAErB,YAAY,OAAiC;AAC3C,SAAK,aAAa,qCAAqC,KAAK;AAAA,EAC9D;AAAA,EAEA,OAAO,OAAsB;AAC3B,UAAM,OAAO;AAAA,MACX;AAAA,IACF;AACA,QAAI,KAAK,WAAW,SAAS,UAAU,KAAK,SAAS,QAAQ;AAC3D,WAAK,iBAAiB;AAAA,IACxB;AACA,SAAK,aAAa;AAAA,EACpB;AAAA,EAEA,QAAc;AACZ,UAAM,QAAQ,6BAA6B;AAC3C,SAAK,QAAQ;AACb,QAAI,KAAK,WAAW,SAAS,QAAQ;AACnC,YAAM,SAAS,MAAM,UAAU,IAAI;AACnC,UACE,KAAK,mBAAmB,WACvB,KAAK,mBAAmB,SAAS,KAAK,gBAAgB,SACvD;AACA,aAAK,iBAAiB;AAAA,MACxB;AACA,WAAK,SAAS;AACd,WAAK,mBAAmB,kBAAkB,EAAE,OAAO,OAAO,CAAC;AAAA,IAC7D,OAAO;AACL,WAAK,SAAS,4BAA4B,EAAE;AAAA,IAC9C;AAAA,EACF;AAAA,EAEA,iBACE,OACmE;AACnE,UAAM,QAAQ,KAAK;AACnB,UAAM,SAAS,KAAK;AACpB,QAAI,UAAU,UAAa,WAAW,QAAW;AAC/C,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AACA,QAAI,KAAK,WAAW,SAAS,QAAQ;AACnC,YAAM,aAAa,KAAK;AACxB,YAAM,mBAAmB,MAAM;AAAA,QAC7B,MAAM;AAAA,MACR;AACA,YAAM,UAAU,WAAW,QAAQ;AACnC,YAAM,YAAY,CAAC,KAAK,cAAc;AACtC,YAAM,QAAQ;AAAA,QACZ,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AACA,UACE,KAAK,qBAAqB,UAC1B,aACA,WAAW,aAAa,WACxB;AACA,aAAK,mBAAmB;AAAA,UACtB;AAAA,UACA;AAAA,UACA,MAAM;AAAA,UACN,WAAW,aAAa,aAAa;AAAA,QACvC;AAAA,MACF;AACA,YAAM,eAAe,KAAK;AAC1B,UAAI,aAAa,oBAAoB,IAAI,KAAK;AAC9C,UAAI,CAAC,YAAY;AACf,qBAAa,oBAAI,IAAI;AACrB,4BAAoB,IAAI,OAAO,UAAU;AAAA,MAC3C;AACA,UAAI;AACJ,UAAI;AACJ,UAAI,CAAC,WAAW,WAAW,aAAa,WAAW;AACjD,6BAAqB,MAAM;AAAA,UACzB,eAAe,aAAa,WAAW;AAAA,QACzC;AAAA,MACF,OAAO;AACL,cAAM,OAAO,SAAS,IAAI;AAC1B,cAAM,gBAAgB,YAClB,aAAa,cACZ,MAAM,iBAAiB,MAAM,KAAK,aAAa;AACpD,kCAA0B;AAAA,UACxB;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,MAAM;AAAA,QACR;AACA,6BAAqB,MAAM,qBAAqB;AAAA,UAC9C,wBAAwB,SAAS,KAAK;AAAA,QACxC;AAAA,MACF;AACA,iBAAW;AAAA,QACT;AAAA,QACA,OAAO,OAAO;AAAA,UACZ,YAAY;AAAA,UACZ,gBAAgB,MAAM;AAAA,UACtB,gCACG,MAAM,8BACH,iCAAiC,MACpC,MAAM,8BAA8B,IAAI;AAAA,QAC7C,CAAC;AAAA,MACH;AACA,WAAK,iBAAiB;AACtB,WAAK,cAAc;AACnB,YAAM,WAAW,WAAW,QAAQ;AACpC,YAAM,oBACJ,aAAa,QACT,QACA,SAAS,UAAU,UAAU,MAAM,kBAAkB,QACnD,QACA;AAAA,QACE;AAAA,QACA,KAAK;AAAA,UACH,SAAS,UAAU,SACf,KAAK,iBAAiB,KAAK,IAC3B,SAAS;AAAA,UACb,WAAW,aAAa,YACpB,eAAe,aAAa,WAAW,EACpC,QAAQ,EACR,SAAS,gBAAgB,EACzB,SAAS,KAAK,IACjB;AAAA,YACE;AAAA,YACA,MAAM;AAAA,UACR,EAAE,SAAS,KAAK;AAAA,QACtB;AAAA,MACF;AACR,YAAM,sBACJ,sBAAsB,WAClB,aACC,OAAO,OAAO;AAAA,QACb,GAAG;AAAA,QACH,SAAS,OAAO,OAAO;AAAA,UACrB,GAAG,WAAW;AAAA,UACd,UAAU;AAAA,QACZ,CAAC;AAAA,MACH,CAAC;AACP,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA,aAAa;AAAA,MACf;AACA,WAAK,aAAa;AAClB,aAAO,4BAA4B,SAC/B,SACA,EAAE,wBAAwB;AAAA,IAChC,OAAO;AACL,YAAM,YAAY,iBAAiB,OAAO,MAAM;AAChD,YAAM,mBAAmB;AAAA,QACvB;AAAA,QACA;AAAA,MACF;AACA,YAAM,UAAU;AAAA,QACd,KAAK,WAAW;AAAA,QAChB,KAAK;AAAA,UACH,KAAK,WAAW,QAAQ,UAAU,SAC9B,KAAK,iBAAiB,KAAK,IAC3B,KAAK,WAAW,QAAQ;AAAA,WAE1B,oBACA;AAAA,YACE,UAAU;AAAA,YACV,MAAM;AAAA,UACR,GACA;AAAA,YACA,kCAAkC,MAAM,eAAe,MAAM,KAAK;AAAA,UACpE;AAAA,UACA,qBAAqB;AAAA,QACvB;AAAA,MACF;AACA,YAAM,gBAAgB,MAAM,QAAQ,OAAO;AAAA,IAC7C;AAAA,EACF;AAAA,EAEA,KAAK,UAAyB;AAC5B,QAAI;AACF,WAAK,mBAAmB;AAAA,IAC1B,UAAE;AACA,WAAK,mBAAmB;AACxB,WAAK,SAAS;AACd,WAAK,QAAQ;AAAA,IACf;AAAA,EACF;AAAA,EAEA,UAAgB;AACd,QAAI;AACF,WAAK,KAAK,KAAK;AAAA,IACjB,UAAE;AACA,WAAK,iBAAiB;AAAA,IACxB;AAAA,EACF;AAAA,EAEQ,mBAAyB;AAC/B,UAAM,QAAQ,KAAK;AACnB,UAAM,SAAS,KAAK;AACpB,QAAI,UAAU,UAAa,WAAW,QAAW;AAC/C,YAAM,SAAS,oBAAoB,IAAI,KAAK;AAC5C,cAAQ,OAAO,MAAM;AACrB,UAAI,QAAQ,SAAS,EAAG,qBAAoB,OAAO,KAAK;AAAA,IAC1D;AACA,SAAK,iBAAiB;AACtB,SAAK,cAAc;AAAA,EACrB;AAAA,EAEA,aACE,SACe;AACf,QACE,KAAK,oBACL,uBAAuB,KAAK,kBAAkB,OAAO,GACrD;AACA,aAAO,KAAK;AAAA,IACd;AACA,QAAI,QAAQ,UAAU,QAAQ;AAC5B,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AACA,UAAM,cACJ,QAAQ,OAAO,CAAC,MAAM,KACtB,QAAQ,OAAO,CAAC,MAAM,KACtB,QAAQ,oBAAoB,IACxB,QAAQ,QACR,iBAAiB,QAAQ,OAAO;AAAA,MAC9B,UAAU,QAAQ;AAAA,MAClB,iBAAiB,QAAQ;AAAA,IAC3B,CAAC;AACP,SAAK,mBAAmB;AACxB,SAAK,cAAc,qBAAqB,WAAW;AACnD,WAAO,KAAK;AAAA,EACd;AAAA,EAEQ,iBACN,OACqB;AACrB,UAAM,MAAM,GAAG,MAAM,aAAa,IAAI,kBAAkB,MAAM,KAAK,CAAC;AACpE,QAAI,QAAQ,KAAK,mBAAoB,QAAO,KAAK;AACjD,UAAM,QAAQ,2BAA2B,KAAK;AAC9C,SAAK,qBAAqB;AAC1B,SAAK,kBAAkB;AACvB,WAAO;AAAA,EACT;AAAA,EAEQ,UACN,OACA,WACA,oBAAoB,MACC;AACrB,UAAM,YAAY;AAAA,MAChB,UAAU;AAAA,MACV,UAAU;AAAA,MACV,UAAU;AAAA,MACV,UAAU;AAAA,MACV,UAAU;AAAA,MACV,UAAU;AAAA,IACZ;AACA,UAAM,SACJ,qBACA,KAAK,sBAAsB,SAC3B,KAAK,yBAAyB,UAC9B;AAAA,MACE,KAAK;AAAA,MACL;AAAA,IACF,IACI,KAAK,uBACL;AACN,QACE,KAAK,sBAAsB,SAC3B,KAAK,sBAAsB;AAAA,MACzB,CAAC,OAAO,UAAU,UAAU,OAAO,KAAK;AAAA,IAC1C,GACA;AACA,aAAO,KAAK;AAAA,IACd;AACA,UAAM,QAAQ,2BAA2B,OAAO,IAAI,UAAU,CAAC,GAAG,MAAM,CAAC,CAAC;AAC1E,SAAK,oBAAoB;AACzB,SAAK,uBAAuB,OAAO,OAAO,MAAM;AAChD,SAAK,mBAAmB;AACxB,WAAO;AAAA,EACT;AACF;AAGO,SAAS,qCAAqC,OAAuB;AAC1E,SAAO,oBAAoB,IAAI,KAAK,GAAG,QAAQ;AACjD;AAEA,SAAS,0CACP,UACA,WACS;AACT,SAAO,SAAS,MAAM,CAAC,OAAO,UAAU;AACtC,UAAM,OAAO,UAAU,KAAK;AAC5B,UAAM,YACJ,QAAQ,IACJ,iCAAiC,OAAO,IAAI,IAC5C,6BAA6B,OAAO,IAAI;AAC9C,WAAO,KAAK,IAAI,QAAQ,IAAI,KAAK;AAAA,EACnC,CAAC;AACH;AAEA,SAAS,iCACP,UACA,WACQ;AACR,QAAM,YAAY,KAAK,IAAI,GAAG,KAAK,IAAI,QAAQ,GAAG,KAAK,IAAI,SAAS,CAAC;AACrE,SACE,sCAAsC,OAAO,UAAU,YAAY;AAEvE;AAEA,SAAS,6BACP,UACA,WACQ;AACR,SACE,sCACA,OAAO,WACN,IAAI,KAAK,IAAI,KAAK,IAAI,QAAQ,GAAG,KAAK,IAAI,SAAS,CAAC;AAEzD;AAEA,SAAS,4BACP,WACA,qBACmB;AACnB,SAAO,oBAAoB,WAAW,mBAAmB,IACrD,IAAI,UAAU,IACd,UAAU,QAAQ,EAAE,SAAS,mBAAmB;AACtD;AAEA,SAAS,uCACP,WACA,OACuB;AACvB,QAAM,sCACH,MAAM,8BAA8B,iCAAiC,MACrE,MAAM,8BAA8B,IAAI;AAC3C,MACE,uCACA,UAAU,+BACV;AACA,WAAO;AAAA,EACT;AACA,QAAM,QAAqB,CAAC;AAC5B,MAAI,SAAS,MAAM;AACnB,SAAO,WAAW,UAAU,gBAAgB;AAC1C,QAAI,WAAW,OAAW,QAAO;AACjC,UAAM,KAAK,OAAO,cAAc;AAChC,aAAS,OAAO;AAAA,EAClB;AACA,QAAM,QAAQ;AACd,MAAI,MAAM,WAAW,EAAG,QAAO,IAAI,UAAU;AAC7C,MAAI,WAAW,IAAI,UAAU;AAC7B,aAAW,aAAa,MAAM,MAAM,CAAC,GAAG;AACtC,eAAW,SAAS,SAAS,SAAS;AAAA,EACxC;AACA,SAAO;AACT;AAEA,SAAS,oBACP,MACA,OACS;AACT,SACE,KAAK,MAAM,MAAM,KACjB,KAAK,MAAM,MAAM,KACjB,KAAK,MAAM,MAAM,KACjB,KAAK,MAAM,MAAM,KACjB,KAAK,MAAM,MAAM,KACjB,KAAK,MAAM,MAAM;AAErB;AAEA,SAAS,iBAAiB,OAAe,QAA6B;AACpE,QAAM,QAAQ,oBAAoB,IAAI,KAAK,GAAG,IAAI,MAAM;AACxD,MAAI,CAAC;AACH,UAAM,IAAI,MAAM,yDAAyD;AAC3E,SAAO;AACT;AAEA,SAAS,kBACP,SACA,OAC0C;AAC1C,SAAO,OAAO,OAAO,EAAE,GAAG,SAAS,MAAM,CAAC;AAC5C;AAEA,SAAS,kBACP,OACQ;AACR,SAAO,KAAK,UAAU,OAAO,CAAC,KAAK,UAAmB;AACpD,QACE,CAAC,QAAQ,UAAU,WAAW,UAAU,UAAU,KAAK,EAAE,SAAS,GAAG,GACrE;AACA,aAAO;AAAA,IACT;AACA,QAAI,OAAO,UAAU,WAAY,QAAO;AACxC,QAAI,OAAO,WAAW,eAAe,iBAAiB,QAAQ;AAC5D,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT,CAAC;AACH;AAEA,SAAS,0BACP,OAEA,MACkD;AAClD,MAAI,UAAU,MAAO,QAAO;AAC5B,MAAI,UAAU,OAAW,QAAO,kBAAkB,CAAC,GAAG,IAAI;AAC1D,MAAI,iBAAiB,KAAK,EAAG,QAAO,kBAAkB,EAAE,OAAO,MAAM,GAAG,IAAI;AAC5E,SAAO,kBAAkB,OAAO,IAAI;AACtC;AAEA,SAAS,kBACP,SACA,MAC0C;AAC1C,QAAM,QAAQ,QAAQ,SAAS;AAC/B,MAAI,UAAU,OAAQ,sBAAqB,KAAK;AAChD,QAAM,cAAc;AAAA,IAClB,QAAQ,eAAe;AAAA,IACvB,GAAG,IAAI;AAAA,EACT;AACA,MAAI,cAAc,GAAG;AACnB,UAAM,IAAI,WAAW,GAAG,IAAI,6CAA6C;AAAA,EAC3E;AACA,QAAM,SAAS,QAAQ,UAAU;AACjC,SAAO,OAAO,OAAO;AAAA,IACnB;AAAA,IACA,QAAQ,kBAAkB,QAAQ,UAAU,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,SAAS;AAAA,IACpE,iBAAiB;AAAA,MACf,QAAQ,mBAAmB;AAAA,MAC3B,GAAG,IAAI;AAAA,IACT;AAAA,IACA,SAAS,sBAAsB,QAAQ,WAAW,GAAG,GAAG,IAAI,UAAU;AAAA,IACtE,UAAU;AAAA,MACR,QAAQ,YAAY;AAAA,MACpB,GAAG,IAAI;AAAA,IACT;AAAA,IACA;AAAA,IACA;AAAA,IACA,mBAAmB,QAAQ,qBAAqB,CAAC;AAAA,IACjD,iBAAiB,yBAAyB,QAAQ,iBAAiB,IAAI;AAAA,IACvE,KAAK,QAAQ;AAAA,IACb,UAAU,kBAAkB,SAAS,IAAI;AAAA,EAC3C,CAAC;AACH;AAEA,SAAS,yBACP,QACA,MACoC;AACpC,SAAO,OAAO,OAAO;AAAA,IACnB,UAAU;AAAA,MACR,QAAQ,YAAY;AAAA,MACpB;AAAA,MACA;AAAA,MACA,GAAG,IAAI;AAAA,IACT;AAAA,IACA,MAAM;AAAA,MACJ,QAAQ,QAAQ;AAAA,MAChB;AAAA,MACA;AAAA,MACA,GAAG,IAAI;AAAA,IACT;AAAA,IACA,OAAO;AAAA,MACL,QAAQ,SAAS;AAAA,MACjB;AAAA,MACA;AAAA,MACA,GAAG,IAAI;AAAA,IACT;AAAA,EACF,CAAC;AACH;AAEA,SAAS,kBACP,SACA,MACsD;AACtD,QAAM,WAAW;AAAA,IACf,kBAAkB,QAAQ;AAAA,IAC1B,gBAAgB,QAAQ;AAAA,IACxB,OAAO,QAAQ;AAAA,IACf,gBAAgB,QAAQ;AAAA,IACxB,cAAc,QAAQ;AAAA,EACxB;AACA,aAAW,CAAC,MAAM,OAAO,KAAK,OAAO,QAAQ,QAAQ,GAAG;AACtD,QAAI,YAAY,UAAa,OAAO,YAAY,YAAY;AAC1D,YAAM,IAAI,UAAU,GAAG,IAAI,IAAI,IAAI,sBAAsB;AAAA,IAC3D;AAAA,EACF;AACA,SAAO,OAAO,OAAO,QAAQ;AAC/B;AAEA,SAAS,iBAAiB,OAA6C;AACrE,MAAI;AACF,yBAAqB,KAA4B;AACjD,WAAO;AAAA,EACT,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEA,SAAS,uBACP,MACA,OACS;AACT,SACE,KAAK,UAAU,MAAM,SACrB,KAAK,OAAO,CAAC,MAAM,MAAM,OAAO,CAAC,KACjC,KAAK,OAAO,CAAC,MAAM,MAAM,OAAO,CAAC,KACjC,KAAK,oBAAoB,MAAM;AAEnC;",
6
+ "names": []
7
+ }
@@ -0,0 +1,56 @@
1
+ import type { PibblPhysicsBodyHandle2D, PibblPhysicsBodyStateEvent2D, PibblPhysicsBodyStateHandler2D, PibblPhysicsColliderHandle2D, PibblPhysicsCollisionEvent2D, PibblPhysicsCollisionHandler2D, PibblPhysicsOverlapEvent2D, PibblPhysicsOverlapHandler2D } from "../types.js";
2
+ import type { PhysicsWorld2DController } from "./controller.js";
3
+ export interface PhysicsColliderHandleIdentity2D {
4
+ readonly controller: PhysicsWorld2DController;
5
+ readonly index: number;
6
+ readonly generation: number;
7
+ }
8
+ export interface PhysicsContactEventDelivery2D {
9
+ readonly kind: 1 | 2 | 3 | 4 | 7;
10
+ readonly tick: number;
11
+ readonly firstColliderIndex: number;
12
+ readonly firstColliderGeneration: number;
13
+ readonly secondColliderIndex: number;
14
+ readonly secondColliderGeneration: number;
15
+ readonly firstBodyIndex: number;
16
+ readonly firstBodyGeneration: number;
17
+ readonly secondBodyIndex: number;
18
+ readonly secondBodyGeneration: number;
19
+ readonly receiver: "first" | "second";
20
+ readonly receiverColliderId: number;
21
+ readonly receiverBodyId: number;
22
+ readonly handler: PibblPhysicsCollisionHandler2D | PibblPhysicsOverlapHandler2D;
23
+ readonly selfTag: unknown;
24
+ readonly otherTag: unknown;
25
+ readonly normalX: number;
26
+ readonly normalY: number;
27
+ readonly points: readonly Readonly<{
28
+ readonly firstX: number;
29
+ readonly firstY: number;
30
+ readonly secondX: number;
31
+ readonly secondY: number;
32
+ readonly separation: number;
33
+ }>[];
34
+ readonly totalNormalImpulse: number;
35
+ }
36
+ export interface PhysicsBodyEventDelivery2D {
37
+ readonly kind: 5 | 6;
38
+ readonly tick: number;
39
+ readonly bodyIndex: number;
40
+ readonly bodyGeneration: number;
41
+ readonly bodyId: number;
42
+ readonly handler: PibblPhysicsBodyStateHandler2D;
43
+ }
44
+ export type PhysicsEventDelivery2D = PhysicsContactEventDelivery2D | PhysicsBodyEventDelivery2D;
45
+ export declare function isPhysicsBodyEventDelivery2D(delivery: PhysicsEventDelivery2D): delivery is PhysicsBodyEventDelivery2D;
46
+ export interface PhysicsEventHandles2D {
47
+ readonly body: (index: number, generation: number) => PibblPhysicsBodyHandle2D;
48
+ readonly collider: (index: number, generation: number) => PibblPhysicsColliderHandle2D;
49
+ }
50
+ export declare function createPhysicsColliderHandle2D(controller: PhysicsWorld2DController, index: number, generation: number): PibblPhysicsColliderHandle2D;
51
+ export declare function physicsColliderHandleIdentity2D(handle: PibblPhysicsColliderHandle2D): PhysicsColliderHandleIdentity2D | undefined;
52
+ export declare function sortPhysicsEventDeliveries2D(deliveries: PhysicsEventDelivery2D[]): readonly PhysicsEventDelivery2D[];
53
+ export declare function materializePhysicsContactEvent2D(fact: PhysicsContactEventDelivery2D, handles: PhysicsEventHandles2D): PibblPhysicsCollisionEvent2D | PibblPhysicsOverlapEvent2D;
54
+ export declare function materializePhysicsBodyEvent2D(fact: PhysicsBodyEventDelivery2D, body: PibblPhysicsBodyHandle2D): PibblPhysicsBodyStateEvent2D;
55
+ export declare function snapshotPhysicsEventMaterializationsForTest(): number;
56
+ export declare function resetPhysicsEventMaterializationsForTest(): void;