@weasel-js/core 1.9.4 → 1.10.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 (1191) hide show
  1. package/CHANGELOG.md +918 -0
  2. package/README.md +38 -3
  3. package/dist/WeaselProvider.js +5 -7
  4. package/dist/WeaselProvider.js.map +1 -1
  5. package/dist/affordances/composeAffordanceLayer.js +92 -84
  6. package/dist/affordances/composeAffordanceLayer.js.map +1 -1
  7. package/dist/affordances/cornerResize.js +3 -2
  8. package/dist/affordances/cornerResize.js.map +1 -1
  9. package/dist/affordances/hitAffordanceRegions.js +71 -101
  10. package/dist/affordances/hitAffordanceRegions.js.map +1 -1
  11. package/dist/affordances/pathAnchors.js +50 -28
  12. package/dist/affordances/pathAnchors.js.map +1 -1
  13. package/dist/affordances/rotateCursor.js +12 -0
  14. package/dist/affordances/rotateCursor.js.map +1 -0
  15. package/dist/affordances/rotationHandle.js +44 -46
  16. package/dist/affordances/rotationHandle.js.map +1 -1
  17. package/dist/animation/behaviors/coast.js +21 -0
  18. package/dist/animation/behaviors/coast.js.map +1 -0
  19. package/dist/animation/behaviors/coastByWrite.js +107 -0
  20. package/dist/animation/behaviors/coastByWrite.js.map +1 -0
  21. package/dist/animation/behaviors/coastOnTargets.js +94 -0
  22. package/dist/animation/behaviors/coastOnTargets.js.map +1 -0
  23. package/dist/animation/behaviors/momentum.js +48 -136
  24. package/dist/animation/behaviors/momentum.js.map +1 -1
  25. package/dist/animation/clipTargets.js +12 -0
  26. package/dist/animation/clipTargets.js.map +1 -0
  27. package/dist/animation/index.js +15 -20
  28. package/dist/animation/poseHelpers.js +112 -33
  29. package/dist/animation/poseHelpers.js.map +1 -1
  30. package/dist/animation/poseTarget.js +115 -0
  31. package/dist/animation/poseTarget.js.map +1 -0
  32. package/dist/animation/reflow.js +113 -83
  33. package/dist/animation/reflow.js.map +1 -1
  34. package/dist/animation/rewind.js +66 -0
  35. package/dist/animation/rewind.js.map +1 -0
  36. package/dist/animation/rig/bindRig.js +85 -53
  37. package/dist/animation/rig/bindRig.js.map +1 -1
  38. package/dist/animation/rig/rigNode.js +99 -0
  39. package/dist/animation/rig/rigNode.js.map +1 -0
  40. package/dist/animation/rig/rigSeat.js +59 -0
  41. package/dist/animation/rig/rigSeat.js.map +1 -0
  42. package/dist/animation/rig/skinBinding.js +64 -0
  43. package/dist/animation/rig/skinBinding.js.map +1 -0
  44. package/dist/animation/rig/useRig.js +31 -16
  45. package/dist/animation/rig/useRig.js.map +1 -1
  46. package/dist/animation/wrappers/animateLifecycle.js +8 -7
  47. package/dist/animation/wrappers/animateLifecycle.js.map +1 -1
  48. package/dist/animation/wrappers/animateOnSetPose.js +31 -31
  49. package/dist/animation/wrappers/animateOnSetPose.js.map +1 -1
  50. package/dist/animation/wrappers/instantPose.js.map +1 -1
  51. package/dist/animation/writtenPoseTarget.js +33 -0
  52. package/dist/animation/writtenPoseTarget.js.map +1 -0
  53. package/dist/autoPoseDescriptor-DHg5KqaJ.d.ts +27 -0
  54. package/dist/barrel/canvas.js +32 -0
  55. package/dist/barrel/chrome.js +10 -10
  56. package/dist/barrel/input.js +16 -17
  57. package/dist/barrel/interactions.js +34 -37
  58. package/dist/barrel/paint.js +11 -18
  59. package/dist/barrel/paths.js +13 -19
  60. package/dist/barrel/renderer.js +14 -20
  61. package/dist/barrel/routing.js +54 -47
  62. package/dist/barrel/scene.js +37 -0
  63. package/dist/barrel/text.js +9 -18
  64. package/dist/barrel/viewport.js +44 -51
  65. package/dist/canvas/Canvas.js +270 -475
  66. package/dist/canvas/Canvas.js.map +1 -1
  67. package/dist/canvas/CanvasView.js +168 -190
  68. package/dist/canvas/CanvasView.js.map +1 -1
  69. package/dist/canvas/CursorCoordsHud.js +24 -25
  70. package/dist/canvas/CursorCoordsHud.js.map +1 -1
  71. package/dist/canvas/DrawCanvas.js +39 -56
  72. package/dist/canvas/DrawCanvas.js.map +1 -1
  73. package/dist/canvas/ModalityHud.js.map +1 -1
  74. package/dist/canvas/NodeShape.js +28 -29
  75. package/dist/canvas/NodeShape.js.map +1 -1
  76. package/dist/canvas/PickHud.js.map +1 -1
  77. package/dist/canvas/SceneCanvas/DevHuds.js +40 -0
  78. package/dist/canvas/SceneCanvas/DevHuds.js.map +1 -0
  79. package/dist/canvas/SceneCanvas/GestureDispatcherMounter.js +66 -107
  80. package/dist/canvas/SceneCanvas/GestureDispatcherMounter.js.map +1 -1
  81. package/dist/canvas/SceneCanvas/PointerProviderIfRoot.js +33 -36
  82. package/dist/canvas/SceneCanvas/PointerProviderIfRoot.js.map +1 -1
  83. package/dist/canvas/SceneCanvas/StandardActionsRegistrar.js +38 -50
  84. package/dist/canvas/SceneCanvas/StandardActionsRegistrar.js.map +1 -1
  85. package/dist/canvas/SceneCanvas/ToolKeybindingsMounter.js +3 -3
  86. package/dist/canvas/SceneCanvas/ToolKeybindingsMounter.js.map +1 -1
  87. package/dist/canvas/SceneCanvas/coordTrace.js +37 -1
  88. package/dist/canvas/SceneCanvas/coordTrace.js.map +1 -1
  89. package/dist/canvas/SceneCanvas/defaultNodeProperties.js +319 -270
  90. package/dist/canvas/SceneCanvas/defaultNodeProperties.js.map +1 -1
  91. package/dist/canvas/SceneCanvas/defaultNodeRouting.js +1 -1
  92. package/dist/canvas/SceneCanvas/defaultNodeRouting.js.map +1 -1
  93. package/dist/canvas/SceneCanvas/dispatcherGestureBounds.js.map +1 -1
  94. package/dist/canvas/SceneCanvas/features.js +71 -62
  95. package/dist/canvas/SceneCanvas/features.js.map +1 -1
  96. package/dist/canvas/SceneCanvas/insertPreviewCommands.js +97 -0
  97. package/dist/canvas/SceneCanvas/insertPreviewCommands.js.map +1 -0
  98. package/dist/canvas/SceneCanvas/isDev.js.map +1 -1
  99. package/dist/canvas/SceneCanvas/poseGeometry.js +33 -37
  100. package/dist/canvas/SceneCanvas/poseGeometry.js.map +1 -1
  101. package/dist/canvas/SceneCanvas/props.js +15 -14
  102. package/dist/canvas/SceneCanvas/props.js.map +1 -1
  103. package/dist/canvas/SceneCanvas/scenePointQuery.js +50 -0
  104. package/dist/canvas/SceneCanvas/scenePointQuery.js.map +1 -0
  105. package/dist/canvas/SceneCanvas/shapeGeneratorProperties.js +52 -0
  106. package/dist/canvas/SceneCanvas/shapeGeneratorProperties.js.map +1 -0
  107. package/dist/canvas/SceneCanvas/toolRegistry.js +23 -0
  108. package/dist/canvas/SceneCanvas/toolRegistry.js.map +1 -0
  109. package/dist/canvas/SceneCanvas/useActionTunings.js +17 -0
  110. package/dist/canvas/SceneCanvas/useActionTunings.js.map +1 -0
  111. package/dist/canvas/SceneCanvas/useActionsPropResolver.js +6 -1
  112. package/dist/canvas/SceneCanvas/useActionsPropResolver.js.map +1 -1
  113. package/dist/canvas/SceneCanvas/useBuiltinShapeTools.js.map +1 -1
  114. package/dist/canvas/SceneCanvas/useBuiltinTools.js +21 -0
  115. package/dist/canvas/SceneCanvas/useBuiltinTools.js.map +1 -0
  116. package/dist/canvas/SceneCanvas/useCanvasCamera.js +46 -0
  117. package/dist/canvas/SceneCanvas/useCanvasCamera.js.map +1 -0
  118. package/dist/canvas/SceneCanvas/useCanvasDispatcher.js +20 -0
  119. package/dist/canvas/SceneCanvas/useCanvasDispatcher.js.map +1 -0
  120. package/dist/canvas/SceneCanvas/useCanvasSelection.js +16 -0
  121. package/dist/canvas/SceneCanvas/useCanvasSelection.js.map +1 -0
  122. package/dist/canvas/SceneCanvas/useCanvasTools.js +67 -0
  123. package/dist/canvas/SceneCanvas/useCanvasTools.js.map +1 -0
  124. package/dist/canvas/SceneCanvas/useDispatcherOverlayLayer.js +49 -113
  125. package/dist/canvas/SceneCanvas/useDispatcherOverlayLayer.js.map +1 -1
  126. package/dist/canvas/SceneCanvas/useHeldModifiers.js +20 -0
  127. package/dist/canvas/SceneCanvas/useHeldModifiers.js.map +1 -0
  128. package/dist/canvas/SceneCanvas/useNodeAtPoint.js +26 -0
  129. package/dist/canvas/SceneCanvas/useNodeAtPoint.js.map +1 -0
  130. package/dist/canvas/SceneCanvas/useNodeKinds.js +26 -0
  131. package/dist/canvas/SceneCanvas/useNodeKinds.js.map +1 -0
  132. package/dist/canvas/SceneCanvas/usePreviewGhostLayer.js +51 -41
  133. package/dist/canvas/SceneCanvas/usePreviewGhostLayer.js.map +1 -1
  134. package/dist/canvas/SceneCanvas/useSceneCanvasHandle.js +47 -0
  135. package/dist/canvas/SceneCanvas/useSceneCanvasHandle.js.map +1 -0
  136. package/dist/canvas/SceneCanvas/useSceneCanvasLayers.js +66 -0
  137. package/dist/canvas/SceneCanvas/useSceneCanvasLayers.js.map +1 -0
  138. package/dist/canvas/SceneCanvas/useSceneChrome.js +59 -0
  139. package/dist/canvas/SceneCanvas/useSceneChrome.js.map +1 -0
  140. package/dist/canvas/SceneCanvas/useSceneRedrawSources.js +23 -0
  141. package/dist/canvas/SceneCanvas/useSceneRedrawSources.js.map +1 -0
  142. package/dist/canvas/SceneCanvas/useSceneSelectTool.js +65 -101
  143. package/dist/canvas/SceneCanvas/useSceneSelectTool.js.map +1 -1
  144. package/dist/canvas/SceneCanvas/useSceneSlotLayers.js +37 -0
  145. package/dist/canvas/SceneCanvas/useSceneSlotLayers.js.map +1 -0
  146. package/dist/canvas/SceneCanvas/useSelectionOverlayLayer.js +38 -0
  147. package/dist/canvas/SceneCanvas/useSelectionOverlayLayer.js.map +1 -0
  148. package/dist/canvas/SceneCanvas/useViewLayerGate.js +20 -0
  149. package/dist/canvas/SceneCanvas/useViewLayerGate.js.map +1 -0
  150. package/dist/canvas/SceneCanvas/useViewportActions.js +9 -1
  151. package/dist/canvas/SceneCanvas/useViewportActions.js.map +1 -1
  152. package/dist/canvas/SceneCanvas/worldPointAt.js +8 -0
  153. package/dist/canvas/SceneCanvas/worldPointAt.js.map +1 -0
  154. package/dist/canvas/SceneCanvas.js +301 -708
  155. package/dist/canvas/SceneCanvas.js.map +1 -1
  156. package/dist/canvas/SceneViewCanvas.js +41 -47
  157. package/dist/canvas/SceneViewCanvas.js.map +1 -1
  158. package/dist/canvas/SurfaceCanvas.js +40 -0
  159. package/dist/canvas/SurfaceCanvas.js.map +1 -0
  160. package/dist/canvas/adapterDerivedPath.js +26 -0
  161. package/dist/canvas/adapterDerivedPath.js.map +1 -0
  162. package/dist/canvas/adapterPickSource.js +34 -0
  163. package/dist/canvas/adapterPickSource.js.map +1 -0
  164. package/dist/canvas/affordanceAt.js +12 -2
  165. package/dist/canvas/affordanceAt.js.map +1 -1
  166. package/dist/canvas/buildSceneLayer.js +81 -61
  167. package/dist/canvas/buildSceneLayer.js.map +1 -1
  168. package/dist/canvas/buildSceneTree.js +56 -34
  169. package/dist/canvas/buildSceneTree.js.map +1 -1
  170. package/dist/canvas/canvasRenderer.js +40 -44
  171. package/dist/canvas/canvasRenderer.js.map +1 -1
  172. package/dist/canvas/colorOverrides.js.map +1 -1
  173. package/dist/canvas/copiesAbove.js +27 -0
  174. package/dist/canvas/copiesAbove.js.map +1 -0
  175. package/dist/canvas/defaultDrawOne.js +25 -24
  176. package/dist/canvas/defaultDrawOne.js.map +1 -1
  177. package/dist/canvas/deps/areaSelect.js +4 -4
  178. package/dist/canvas/deps/areaSelect.js.map +1 -1
  179. package/dist/canvas/deps/debug.js.map +1 -1
  180. package/dist/canvas/deps/editAnchors.js +47 -71
  181. package/dist/canvas/deps/editAnchors.js.map +1 -1
  182. package/dist/canvas/deps/geometryProjection.js.map +1 -1
  183. package/dist/canvas/deps/hitTestArea.js +45 -25
  184. package/dist/canvas/deps/hitTestArea.js.map +1 -1
  185. package/dist/canvas/deps/insert.js +149 -104
  186. package/dist/canvas/deps/insert.js.map +1 -1
  187. package/dist/canvas/deps/lassoSelect.js +5 -5
  188. package/dist/canvas/deps/lassoSelect.js.map +1 -1
  189. package/dist/canvas/deps/layout.js +9 -15
  190. package/dist/canvas/deps/layout.js.map +1 -1
  191. package/dist/canvas/deps/poseDescriptor.js +1 -1
  192. package/dist/canvas/deps/poseDescriptor.js.map +1 -1
  193. package/dist/canvas/deps/resizePolicy.js.map +1 -1
  194. package/dist/canvas/deps/slice.js +44 -45
  195. package/dist/canvas/deps/slice.js.map +1 -1
  196. package/dist/canvas/deps/textEdit.js +8 -8
  197. package/dist/canvas/deps/textEdit.js.map +1 -1
  198. package/dist/canvas/deps/view.js.map +1 -1
  199. package/dist/canvas/derivedPath.js +69 -43
  200. package/dist/canvas/derivedPath.js.map +1 -1
  201. package/dist/canvas/drawEnvelope.js +8 -4
  202. package/dist/canvas/drawEnvelope.js.map +1 -1
  203. package/dist/canvas/getNodeAtPoint.js +2 -6
  204. package/dist/canvas/getNodeAtPoint.js.map +1 -1
  205. package/dist/canvas/hud.module.js.map +1 -1
  206. package/dist/canvas/insertPreviewExtent.js +33 -31
  207. package/dist/canvas/insertPreviewExtent.js.map +1 -1
  208. package/dist/canvas/layerOrder.js.map +1 -1
  209. package/dist/canvas/layerSlots.js +6 -1
  210. package/dist/canvas/layerSlots.js.map +1 -1
  211. package/dist/canvas/nodeShapes/derivedPainter.js +12 -12
  212. package/dist/canvas/nodeShapes/derivedPainter.js.map +1 -1
  213. package/dist/canvas/nodeShapes/imagePainter.js +10 -10
  214. package/dist/canvas/nodeShapes/imagePainter.js.map +1 -1
  215. package/dist/canvas/nodeShapes/memo.js.map +1 -1
  216. package/dist/canvas/nodeShapes/nodePaint.js +34 -23
  217. package/dist/canvas/nodeShapes/nodePaint.js.map +1 -1
  218. package/dist/canvas/nodeShapes/pathPainter.js +23 -22
  219. package/dist/canvas/nodeShapes/pathPainter.js.map +1 -1
  220. package/dist/canvas/nodeShapes/poseBox.js +6 -6
  221. package/dist/canvas/nodeShapes/poseBox.js.map +1 -1
  222. package/dist/canvas/nodeShapes/rectFallbackPainter.js +8 -8
  223. package/dist/canvas/nodeShapes/rectFallbackPainter.js.map +1 -1
  224. package/dist/canvas/nodeShapes/shapePainter.js +16 -16
  225. package/dist/canvas/nodeShapes/shapePainter.js.map +1 -1
  226. package/dist/canvas/nodeShapes/textPainter.js +1 -1
  227. package/dist/canvas/nodeShapes/textPainter.js.map +1 -1
  228. package/dist/canvas/overChildren.js +29 -0
  229. package/dist/canvas/overChildren.js.map +1 -0
  230. package/dist/canvas/overlayRoleStrokes.js.map +1 -1
  231. package/dist/canvas/paintCull.js +6 -8
  232. package/dist/canvas/paintCull.js.map +1 -1
  233. package/dist/{features/cursor → canvas}/paintedCursorLayer.js +2 -2
  234. package/dist/canvas/paintedCursorLayer.js.map +1 -0
  235. package/dist/canvas/pickReach.js +23 -0
  236. package/dist/canvas/pickReach.js.map +1 -0
  237. package/dist/canvas/pickWalk.js +43 -70
  238. package/dist/canvas/pickWalk.js.map +1 -1
  239. package/dist/canvas/planeClips.js +18 -19
  240. package/dist/canvas/planeClips.js.map +1 -1
  241. package/dist/canvas/poseCascade.js +41 -0
  242. package/dist/canvas/poseCascade.js.map +1 -0
  243. package/dist/canvas/poseRotation.js +1 -3
  244. package/dist/canvas/poseRotation.js.map +1 -1
  245. package/dist/canvas/rasterReadback.js +22 -0
  246. package/dist/canvas/rasterReadback.js.map +1 -0
  247. package/dist/canvas/renderDebugSnapshot.js +12 -12
  248. package/dist/canvas/renderDebugSnapshot.js.map +1 -1
  249. package/dist/canvas/renderNeeds.js +3 -3
  250. package/dist/canvas/renderNeeds.js.map +1 -1
  251. package/dist/canvas/renderSceneToPixels.js +64 -83
  252. package/dist/canvas/renderSceneToPixels.js.map +1 -1
  253. package/dist/canvas/sceneAdapter.js +59 -144
  254. package/dist/canvas/sceneAdapter.js.map +1 -1
  255. package/dist/canvas/sceneClipboard.js +1 -1
  256. package/dist/canvas/sceneClipboard.js.map +1 -1
  257. package/dist/canvas/sceneLayerPaint.js +4 -4
  258. package/dist/canvas/sceneLayerPaint.js.map +1 -1
  259. package/dist/canvas/sceneSlotWiring.js +10 -9
  260. package/dist/canvas/sceneSlotWiring.js.map +1 -1
  261. package/dist/canvas/sceneViewRender.js +37 -42
  262. package/dist/canvas/sceneViewRender.js.map +1 -1
  263. package/dist/canvas/slopsDebugLayer.js +4 -4
  264. package/dist/canvas/slopsDebugLayer.js.map +1 -1
  265. package/dist/canvas/useCanvasRenderer.js +23 -11
  266. package/dist/canvas/useCanvasRenderer.js.map +1 -1
  267. package/dist/canvas/useCanvasSurface.js +31 -0
  268. package/dist/canvas/useCanvasSurface.js.map +1 -0
  269. package/dist/canvas/useCanvasView.js +51 -44
  270. package/dist/canvas/useCanvasView.js.map +1 -1
  271. package/dist/canvas/useFrameLoop.js +11 -12
  272. package/dist/canvas/useFrameLoop.js.map +1 -1
  273. package/dist/canvas/useHostAnchor.js +35 -33
  274. package/dist/canvas/useHostAnchor.js.map +1 -1
  275. package/dist/canvas/useLateContentRedraw.js +8 -8
  276. package/dist/canvas/useLateContentRedraw.js.map +1 -1
  277. package/dist/canvas/useSceneAdapter.js +22 -0
  278. package/dist/canvas/useSceneAdapter.js.map +1 -0
  279. package/dist/canvas/useSceneLayerList.js +4 -14
  280. package/dist/canvas/useSceneLayerList.js.map +1 -1
  281. package/dist/canvas/useSurfaceInput.js +39 -0
  282. package/dist/canvas/useSurfaceInput.js.map +1 -0
  283. package/dist/canvas/useToolCursor.js +29 -0
  284. package/dist/canvas/useToolCursor.js.map +1 -0
  285. package/dist/canvas/useViewHelpers.js +46 -85
  286. package/dist/canvas/useViewHelpers.js.map +1 -1
  287. package/dist/canvas/viewInputs.js.map +1 -1
  288. package/dist/canvas/viewRegistry.js +40 -34
  289. package/dist/canvas/viewRegistry.js.map +1 -1
  290. package/dist/canvas/watchElementMove.js +43 -0
  291. package/dist/canvas/watchElementMove.js.map +1 -0
  292. package/dist/canvas/wrapNodeOutput.js +7 -2
  293. package/dist/canvas/wrapNodeOutput.js.map +1 -1
  294. package/dist/clipboard.d.ts +7 -14
  295. package/dist/{types-B4iJRHC3.d.ts → clone-C0eADtS0.d.ts} +129 -84
  296. package/dist/clone.d.ts +4 -8
  297. package/dist/clone.js +0 -2
  298. package/dist/core/device/targets.js.map +1 -1
  299. package/dist/core/device/useDeviceProfile.js +13 -13
  300. package/dist/core/device/useDeviceProfile.js.map +1 -1
  301. package/dist/{interactions/actions/resize → core/geometry}/autoPoseDescriptor.js +8 -7
  302. package/dist/core/geometry/autoPoseDescriptor.js.map +1 -0
  303. package/dist/core/geometry/pathPoseDescriptor.js +88 -0
  304. package/dist/core/geometry/pathPoseDescriptor.js.map +1 -0
  305. package/dist/core/geometry/poseDescriptor.js +102 -29
  306. package/dist/core/geometry/poseDescriptor.js.map +1 -1
  307. package/dist/core/geometry/regionHit.js +35 -37
  308. package/dist/core/geometry/regionHit.js.map +1 -1
  309. package/dist/core/geometry/targetFrame.js +94 -0
  310. package/dist/core/geometry/targetFrame.js.map +1 -0
  311. package/dist/core/geometry/unionBounds.js +4 -5
  312. package/dist/core/geometry/unionBounds.js.map +1 -1
  313. package/dist/core/layers/backgroundFill.js +31 -0
  314. package/dist/core/layers/backgroundFill.js.map +1 -0
  315. package/dist/{features/groups → core/layers}/children.js +2 -4
  316. package/dist/core/layers/children.js.map +1 -0
  317. package/dist/{features/focus → core/layers}/gateLayer.js +2 -2
  318. package/dist/core/layers/gateLayer.js.map +1 -0
  319. package/dist/core/layers/layerGroup.js +40 -0
  320. package/dist/core/layers/layerGroup.js.map +1 -0
  321. package/dist/core/layers/render.js +50 -76
  322. package/dist/core/layers/render.js.map +1 -1
  323. package/dist/core/ops/create.js +2 -2
  324. package/dist/core/ops/create.js.map +1 -1
  325. package/dist/core/ops/createHistory.js +9 -9
  326. package/dist/core/ops/createHistory.js.map +1 -1
  327. package/dist/core/ops/delete.js +19 -23
  328. package/dist/core/ops/delete.js.map +1 -1
  329. package/dist/core/ops/reorder/index.js +3 -7
  330. package/dist/core/ops/reorder/index.js.map +1 -1
  331. package/dist/core/ops/reorder/setChildOrder.js +2 -4
  332. package/dist/core/ops/reorder/setChildOrder.js.map +1 -1
  333. package/dist/core/ops/reparent.js +0 -1
  334. package/dist/core/ops/reparent.js.map +1 -1
  335. package/dist/core/ops/slot.js +3 -6
  336. package/dist/core/ops/slot.js.map +1 -1
  337. package/dist/core/pages/fitViewToPage.js +15 -0
  338. package/dist/core/pages/fitViewToPage.js.map +1 -0
  339. package/dist/core/pages/pages.js +65 -0
  340. package/dist/core/pages/pages.js.map +1 -0
  341. package/dist/core/pages/pagesLayer.js +27 -0
  342. package/dist/core/pages/pagesLayer.js.map +1 -0
  343. package/dist/core/paint/meshKind.js +16 -0
  344. package/dist/core/paint/meshKind.js.map +1 -0
  345. package/dist/{features/meshPaint/lazyKind.js → core/paint/meshKindLazy.js} +104 -93
  346. package/dist/core/paint/meshKindLazy.js.map +1 -0
  347. package/dist/core/paint/paintKindEntry.js +8 -0
  348. package/dist/core/paint/paintKindEntry.js.map +1 -0
  349. package/dist/core/paint/paintKinds.js +144 -0
  350. package/dist/core/paint/paintKinds.js.map +1 -0
  351. package/dist/core/paint/registerMesh.js +7 -0
  352. package/dist/core/paint/registerMesh.js.map +1 -0
  353. package/dist/core/scene/NodeProperties.js.map +1 -1
  354. package/dist/core/scene/NodeRouting.js.map +1 -1
  355. package/dist/core/scene/arrivalWindow.js +65 -64
  356. package/dist/core/scene/arrivalWindow.js.map +1 -1
  357. package/dist/core/scene/boundOps.js +40 -0
  358. package/dist/core/scene/boundOps.js.map +1 -0
  359. package/dist/core/scene/composeFrame.js +9 -6
  360. package/dist/core/scene/composeFrame.js.map +1 -1
  361. package/dist/core/scene/composePose.js +105 -0
  362. package/dist/core/scene/composePose.js.map +1 -0
  363. package/dist/core/scene/depMemo.js +31 -6
  364. package/dist/core/scene/depMemo.js.map +1 -1
  365. package/dist/core/scene/derivedPath.js +19 -20
  366. package/dist/core/scene/derivedPath.js.map +1 -1
  367. package/dist/core/scene/editMode.js +26 -0
  368. package/dist/core/scene/editMode.js.map +1 -0
  369. package/dist/core/scene/effectivePose.js +42 -39
  370. package/dist/core/scene/effectivePose.js.map +1 -1
  371. package/dist/core/scene/fieldEdits.js +98 -0
  372. package/dist/core/scene/fieldEdits.js.map +1 -0
  373. package/dist/core/scene/historyFacade.js +122 -70
  374. package/dist/core/scene/historyFacade.js.map +1 -1
  375. package/dist/core/scene/historyForm.js +6 -0
  376. package/dist/core/scene/historyForm.js.map +1 -0
  377. package/dist/core/scene/kitOps.js +83 -71
  378. package/dist/core/scene/kitOps.js.map +1 -1
  379. package/dist/core/scene/kitRegistry.js.map +1 -1
  380. package/dist/core/scene/layerStack.js +105 -12
  381. package/dist/core/scene/layerStack.js.map +1 -1
  382. package/dist/core/scene/layoutPass.js +58 -59
  383. package/dist/core/scene/layoutPass.js.map +1 -1
  384. package/dist/{features/groups → core/scene}/nestedHit.js +3 -3
  385. package/dist/core/scene/nestedHit.js.map +1 -0
  386. package/dist/core/scene/nodeFnFields.js +16 -9
  387. package/dist/core/scene/nodeFnFields.js.map +1 -1
  388. package/dist/core/scene/nodeMemo.js.map +1 -1
  389. package/dist/core/scene/nodeStore.js +72 -71
  390. package/dist/core/scene/nodeStore.js.map +1 -1
  391. package/dist/core/scene/notifier.js +37 -0
  392. package/dist/core/scene/notifier.js.map +1 -0
  393. package/dist/core/scene/opTable.js +50 -0
  394. package/dist/core/scene/opTable.js.map +1 -0
  395. package/dist/core/scene/outerOps.js +67 -0
  396. package/dist/core/scene/outerOps.js.map +1 -0
  397. package/dist/core/scene/poseHold.js +39 -0
  398. package/dist/core/scene/poseHold.js.map +1 -0
  399. package/dist/core/scene/poseOverrides.js +44 -36
  400. package/dist/core/scene/poseOverrides.js.map +1 -1
  401. package/dist/core/scene/poseSnapshot.js.map +1 -1
  402. package/dist/core/scene/reconcileSpecs.js +4 -3
  403. package/dist/core/scene/reconcileSpecs.js.map +1 -1
  404. package/dist/core/scene/recorder.js +86 -0
  405. package/dist/core/scene/recorder.js.map +1 -0
  406. package/dist/core/scene/renderOrder.js.map +1 -1
  407. package/dist/core/scene/scene.js +81 -690
  408. package/dist/core/scene/scene.js.map +1 -1
  409. package/dist/core/scene/sceneEdits.js +58 -0
  410. package/dist/core/scene/sceneEdits.js.map +1 -0
  411. package/dist/core/scene/sceneMutators.js +49 -0
  412. package/dist/core/scene/sceneMutators.js.map +1 -0
  413. package/dist/core/scene/scenePoseAdapter.js +16 -0
  414. package/dist/core/scene/scenePoseAdapter.js.map +1 -0
  415. package/dist/core/scene/sceneRecording.js +91 -0
  416. package/dist/core/scene/sceneRecording.js.map +1 -0
  417. package/dist/core/scene/sceneSelection.js +28 -0
  418. package/dist/core/scene/sceneSelection.js.map +1 -0
  419. package/dist/core/scene/sceneState.js +49 -0
  420. package/dist/core/scene/sceneState.js.map +1 -0
  421. package/dist/core/scene/serialization.js +8 -5
  422. package/dist/core/scene/serialization.js.map +1 -1
  423. package/dist/core/scene/staleReplay.js +51 -0
  424. package/dist/core/scene/staleReplay.js.map +1 -0
  425. package/dist/core/scene/statedFields.js +9 -0
  426. package/dist/core/scene/statedFields.js.map +1 -0
  427. package/dist/core/scene/treeEdits.js +127 -0
  428. package/dist/core/scene/treeEdits.js.map +1 -0
  429. package/dist/core/scene/treeReads.js +26 -0
  430. package/dist/core/scene/treeReads.js.map +1 -0
  431. package/dist/core/scene/types.js.map +1 -1
  432. package/dist/{features/groups → core/scene}/unionOfChildren.js +3 -3
  433. package/dist/core/scene/unionOfChildren.js.map +1 -0
  434. package/dist/core/scene/unitScopes.js +13 -0
  435. package/dist/core/scene/unitScopes.js.map +1 -0
  436. package/dist/core/scene/useScene.js.map +1 -1
  437. package/dist/core/selection/readOnlySelection.js +32 -0
  438. package/dist/core/selection/readOnlySelection.js.map +1 -0
  439. package/dist/core/selection/usePublishSceneSelection.js +26 -0
  440. package/dist/core/selection/usePublishSceneSelection.js.map +1 -0
  441. package/dist/core/selection/useSelection.js +34 -25
  442. package/dist/core/selection/useSelection.js.map +1 -1
  443. package/dist/core/shapeKinds.js.map +1 -1
  444. package/dist/core/stylus/stylus.js.map +1 -1
  445. package/dist/core/stylus/usePointerStylus.js.map +1 -1
  446. package/dist/core/usePaintKinds.js +1 -1
  447. package/dist/core/usePaintKinds.js.map +1 -1
  448. package/dist/core/viewport/clientToWorld.js.map +1 -1
  449. package/dist/core/viewport/fitViewToBounds.js.map +1 -1
  450. package/dist/core/viewport/parallax.js.map +1 -1
  451. package/dist/core/viewport/screenSlop.js +11 -11
  452. package/dist/core/viewport/screenSlop.js.map +1 -1
  453. package/dist/core/viewport/useCanvasSize.js.map +1 -1
  454. package/dist/core/viewport/useDecayLoop.js +31 -33
  455. package/dist/core/viewport/useDecayLoop.js.map +1 -1
  456. package/dist/core/viewport/useNodeOverlayFrame.js +84 -0
  457. package/dist/core/viewport/useNodeOverlayFrame.js.map +1 -0
  458. package/dist/core/viewport/useViewAnimation.js +113 -53
  459. package/dist/core/viewport/useViewAnimation.js.map +1 -1
  460. package/dist/core/viewport/view.js +14 -11
  461. package/dist/core/viewport/view.js.map +1 -1
  462. package/dist/core/viewport/wheelHandler.js.map +1 -1
  463. package/dist/core/viewport/zoomAt.js +11 -2
  464. package/dist/core/viewport/zoomAt.js.map +1 -1
  465. package/dist/{cornerHandles-CtCb8a3G.d.ts → cornerHandles-BSKbyuvQ.d.ts} +11 -24
  466. package/dist/debug/createDebugOverlayLayer.js +100 -100
  467. package/dist/debug/createDebugOverlayLayer.js.map +1 -1
  468. package/dist/debug/createDebugSink.js.map +1 -1
  469. package/dist/debug/frameStats.js.map +1 -1
  470. package/dist/debug/useDebugSink.js +52 -0
  471. package/dist/debug/useDebugSink.js.map +1 -0
  472. package/dist/features/chrome-caps/buildChromeCtx.js.map +1 -1
  473. package/dist/features/chrome-caps/conditions.js.map +1 -1
  474. package/dist/features/chrome-caps/defaults.js.map +1 -1
  475. package/dist/features/chrome-caps/resolve.js.map +1 -1
  476. package/dist/features/chrome-caps/useChromeCaps.js +54 -0
  477. package/dist/features/chrome-caps/useChromeCaps.js.map +1 -0
  478. package/dist/features/chrome-caps/useHoverTracking.js.map +1 -1
  479. package/dist/features/ingestion/contentHandlers.js +25 -19
  480. package/dist/features/ingestion/contentHandlers.js.map +1 -1
  481. package/dist/features/ingestion/imageHandler.js +21 -24
  482. package/dist/features/ingestion/imageHandler.js.map +1 -1
  483. package/dist/features/ingestion/openFilePicker.js.map +1 -1
  484. package/dist/features/ingestion/placement.js +16 -0
  485. package/dist/features/ingestion/placement.js.map +1 -0
  486. package/dist/features/ingestion/svgHandler.js +5 -0
  487. package/dist/features/ingestion/svgHandler.js.map +1 -1
  488. package/dist/features/ingestion/textHandler.js +28 -0
  489. package/dist/features/ingestion/textHandler.js.map +1 -0
  490. package/dist/features/ingestion/useCanvasIngestion.js +48 -0
  491. package/dist/features/ingestion/useCanvasIngestion.js.map +1 -0
  492. package/dist/features/ingestion/weaselJsonHandler.js +5 -0
  493. package/dist/features/ingestion/weaselJsonHandler.js.map +1 -1
  494. package/dist/features/longPress/longPressFeedback.js.map +1 -1
  495. package/dist/features/modes/modeLayers.js +7 -7
  496. package/dist/features/modes/modeLayers.js.map +1 -1
  497. package/dist/features/paths/editablePath.js +63 -0
  498. package/dist/features/paths/editablePath.js.map +1 -0
  499. package/dist/features/paths/index.js +9 -16
  500. package/dist/features/paths/pathEditState.js +41 -0
  501. package/dist/features/paths/pathEditState.js.map +1 -0
  502. package/dist/features/paths/pathEditingOverlayLayer.js +36 -38
  503. package/dist/features/paths/pathEditingOverlayLayer.js.map +1 -1
  504. package/dist/features/paths/pathLayer.js +3 -2
  505. package/dist/features/paths/pathLayer.js.map +1 -1
  506. package/dist/features/paths/penPreviewLayer.js +86 -88
  507. package/dist/features/paths/penPreviewLayer.js.map +1 -1
  508. package/dist/features/paths/shapeGenerator.js +89 -0
  509. package/dist/features/paths/shapeGenerator.js.map +1 -0
  510. package/dist/features/paths/usePathEdit.js +34 -0
  511. package/dist/features/paths/usePathEdit.js.map +1 -0
  512. package/dist/features/poseRun/usePoseRun.js +44 -57
  513. package/dist/features/poseRun/usePoseRun.js.map +1 -1
  514. package/dist/features/selection/overlay.js +170 -178
  515. package/dist/features/selection/overlay.js.map +1 -1
  516. package/dist/features/text/index.js +6 -0
  517. package/dist/features/text/textLayer.js +1 -1
  518. package/dist/features/text/textLayer.js.map +1 -1
  519. package/dist/features/text/useSceneTextEdit.js +119 -88
  520. package/dist/features/text/useSceneTextEdit.js.map +1 -1
  521. package/dist/features/viewports/viewResolver.js +28 -24
  522. package/dist/features/viewports/viewResolver.js.map +1 -1
  523. package/dist/features/viewports/viewportLayer.js +25 -36
  524. package/dist/features/viewports/viewportLayer.js.map +1 -1
  525. package/dist/icons/SliceIcon.js +24 -0
  526. package/dist/icons/SliceIcon.js.map +1 -0
  527. package/dist/index.d.ts +5200 -8777
  528. package/dist/index.js +284 -320
  529. package/dist/input/keyState.js +14 -14
  530. package/dist/interactions/actions/actionShortcuts.js.map +1 -1
  531. package/dist/interactions/actions/{defaults/align.js → align/action.js} +15 -16
  532. package/dist/interactions/actions/align/action.js.map +1 -0
  533. package/dist/interactions/actions/align/align.js +24 -24
  534. package/dist/interactions/actions/align/align.js.map +1 -1
  535. package/dist/interactions/actions/booleans/action.js +65 -0
  536. package/dist/interactions/actions/booleans/action.js.map +1 -0
  537. package/dist/interactions/actions/booleans/booleans.js +74 -83
  538. package/dist/interactions/actions/booleans/booleans.js.map +1 -1
  539. package/dist/interactions/actions/booleans/operands.js +40 -0
  540. package/dist/interactions/actions/booleans/operands.js.map +1 -0
  541. package/dist/interactions/actions/booleans/pieces.js +45 -0
  542. package/dist/interactions/actions/booleans/pieces.js.map +1 -0
  543. package/dist/interactions/actions/booleans/placement.js +24 -0
  544. package/dist/interactions/actions/booleans/placement.js.map +1 -0
  545. package/dist/interactions/actions/booleans/useBooleans.js +11 -9
  546. package/dist/interactions/actions/booleans/useBooleans.js.map +1 -1
  547. package/dist/interactions/actions/booleans/useBooleansAdapter.js.map +1 -1
  548. package/dist/interactions/actions/{defaults/clipboard.js → clipboard/action.js} +19 -19
  549. package/dist/interactions/actions/clipboard/action.js.map +1 -0
  550. package/dist/interactions/actions/clipboard/clipboardOps.js +15 -15
  551. package/dist/interactions/actions/clipboard/clipboardOps.js.map +1 -1
  552. package/dist/interactions/actions/clipboard/wireFormat.js.map +1 -1
  553. package/dist/interactions/actions/clone/action.js +103 -0
  554. package/dist/interactions/actions/clone/action.js.map +1 -0
  555. package/dist/interactions/actions/clone/behaviors.js +52 -0
  556. package/dist/interactions/actions/clone/behaviors.js.map +1 -0
  557. package/dist/interactions/actions/defaultCommitAdapter.js +10 -37
  558. package/dist/interactions/actions/defaultCommitAdapter.js.map +1 -1
  559. package/dist/interactions/actions/defaults/anchorEditing.js +69 -74
  560. package/dist/interactions/actions/defaults/anchorEditing.js.map +1 -1
  561. package/dist/interactions/actions/defaults/anchorHandles.js +42 -0
  562. package/dist/interactions/actions/defaults/anchorHandles.js.map +1 -0
  563. package/dist/interactions/actions/defaults/anchorJoin.js +92 -0
  564. package/dist/interactions/actions/defaults/anchorJoin.js.map +1 -0
  565. package/dist/interactions/actions/defaults/areaSelect.js.map +1 -1
  566. package/dist/interactions/actions/defaults/bendSegment.js +46 -0
  567. package/dist/interactions/actions/defaults/bendSegment.js.map +1 -0
  568. package/dist/interactions/actions/defaults/cancelGesture.js.map +1 -1
  569. package/dist/interactions/actions/defaults/clearSelection.js.map +1 -1
  570. package/dist/interactions/actions/defaults/copySubtree.js +1 -1
  571. package/dist/interactions/actions/defaults/copySubtree.js.map +1 -1
  572. package/dist/interactions/actions/defaults/createPaintAction.js.map +1 -1
  573. package/dist/interactions/actions/defaults/delete.js.map +1 -1
  574. package/dist/interactions/actions/defaults/duplicate.js +36 -21
  575. package/dist/interactions/actions/defaults/duplicate.js.map +1 -1
  576. package/dist/interactions/actions/defaults/enterPathEdit.js +19 -7
  577. package/dist/interactions/actions/defaults/enterPathEdit.js.map +1 -1
  578. package/dist/interactions/actions/defaults/enterTextEdit.js.map +1 -1
  579. package/dist/interactions/actions/defaults/group.js +35 -40
  580. package/dist/interactions/actions/defaults/group.js.map +1 -1
  581. package/dist/interactions/actions/defaults/icons/anchorIcons.js +75 -0
  582. package/dist/interactions/actions/defaults/icons/anchorIcons.js.map +1 -0
  583. package/dist/interactions/actions/defaults/icons/booleanIcons.js +24 -1
  584. package/dist/interactions/actions/defaults/icons/booleanIcons.js.map +1 -1
  585. package/dist/interactions/actions/defaults/icons/editIcons.js +35 -8
  586. package/dist/interactions/actions/defaults/icons/editIcons.js.map +1 -1
  587. package/dist/interactions/actions/defaults/icons/outlineIcons.js +39 -1
  588. package/dist/interactions/actions/defaults/icons/outlineIcons.js.map +1 -1
  589. package/dist/interactions/actions/defaults/ingest.js +19 -15
  590. package/dist/interactions/actions/defaults/ingest.js.map +1 -1
  591. package/dist/interactions/actions/defaults/insertPathAnchor.js +18 -34
  592. package/dist/interactions/actions/defaults/insertPathAnchor.js.map +1 -1
  593. package/dist/interactions/actions/defaults/nudge.js +43 -39
  594. package/dist/interactions/actions/defaults/nudge.js.map +1 -1
  595. package/dist/interactions/actions/defaults/pinchZoom.js +29 -29
  596. package/dist/interactions/actions/defaults/pinchZoom.js.map +1 -1
  597. package/dist/interactions/actions/defaults/requiresSelection.js.map +1 -1
  598. package/dist/interactions/actions/defaults/segmentUnder.js +22 -0
  599. package/dist/interactions/actions/defaults/segmentUnder.js.map +1 -0
  600. package/dist/interactions/actions/defaults/setFill.js +9 -3
  601. package/dist/interactions/actions/defaults/setFill.js.map +1 -1
  602. package/dist/interactions/actions/defaults/setFillOpacity.js +4 -1
  603. package/dist/interactions/actions/defaults/setFillOpacity.js.map +1 -1
  604. package/dist/interactions/actions/defaults/setStroke.js.map +1 -1
  605. package/dist/interactions/actions/defaults/sliceOps.js +20 -22
  606. package/dist/interactions/actions/defaults/sliceOps.js.map +1 -1
  607. package/dist/interactions/actions/defaults/toolActivate.js.map +1 -1
  608. package/dist/interactions/actions/defaults/toolResetToDefault.js.map +1 -1
  609. package/dist/interactions/actions/defaults/viewportDragPan.js +1 -1
  610. package/dist/interactions/actions/defaults/viewportDragPan.js.map +1 -1
  611. package/dist/interactions/actions/defaults/viewportWheelPan.js.map +1 -1
  612. package/dist/interactions/actions/defaults/viewportZoom.js +82 -79
  613. package/dist/interactions/actions/defaults/viewportZoom.js.map +1 -1
  614. package/dist/interactions/actions/{defaults/distribute.js → distribute/action.js} +18 -19
  615. package/dist/interactions/actions/distribute/action.js.map +1 -0
  616. package/dist/interactions/actions/distribute/distribute.js +15 -15
  617. package/dist/interactions/actions/distribute/distribute.js.map +1 -1
  618. package/dist/interactions/actions/edit-anchors/action.js +101 -0
  619. package/dist/interactions/actions/edit-anchors/action.js.map +1 -0
  620. package/dist/interactions/actions/edit-anchors/geometry.js +2 -4
  621. package/dist/interactions/actions/edit-anchors/geometry.js.map +1 -1
  622. package/dist/interactions/actions/edit-anchors/preview.js +26 -0
  623. package/dist/interactions/actions/edit-anchors/preview.js.map +1 -0
  624. package/dist/interactions/actions/edit-anchors/symmetry.js +11 -0
  625. package/dist/interactions/actions/edit-anchors/symmetry.js.map +1 -0
  626. package/dist/interactions/actions/flip/action.js +124 -0
  627. package/dist/interactions/actions/flip/action.js.map +1 -0
  628. package/dist/interactions/actions/flip/helpers.js +1 -1
  629. package/dist/interactions/actions/flip/helpers.js.map +1 -1
  630. package/dist/interactions/actions/geometryProjection.js.map +1 -1
  631. package/dist/interactions/actions/gestureFrames.js +18 -0
  632. package/dist/interactions/actions/gestureFrames.js.map +1 -0
  633. package/dist/interactions/actions/gestureLifecycle.js +47 -20
  634. package/dist/interactions/actions/gestureLifecycle.js.map +1 -1
  635. package/dist/interactions/actions/insert/action.js +79 -0
  636. package/dist/interactions/actions/insert/action.js.map +1 -0
  637. package/dist/interactions/actions/insert/commit.js +28 -0
  638. package/dist/interactions/actions/insert/commit.js.map +1 -0
  639. package/dist/interactions/actions/insert/extras.js +65 -0
  640. package/dist/interactions/actions/insert/extras.js.map +1 -0
  641. package/dist/interactions/actions/insert/frame.js +55 -0
  642. package/dist/interactions/actions/insert/frame.js.map +1 -0
  643. package/dist/interactions/actions/insert/geometry.js +35 -0
  644. package/dist/interactions/actions/insert/geometry.js.map +1 -0
  645. package/dist/interactions/actions/insert/repositionAction.js +31 -0
  646. package/dist/interactions/actions/insert/repositionAction.js.map +1 -0
  647. package/dist/interactions/actions/insert/rotateAction.js +21 -0
  648. package/dist/interactions/actions/insert/rotateAction.js.map +1 -0
  649. package/dist/interactions/actions/insert/session.js +59 -0
  650. package/dist/interactions/actions/insert/session.js.map +1 -0
  651. package/dist/interactions/actions/insert/shape.js +34 -0
  652. package/dist/interactions/actions/insert/shape.js.map +1 -0
  653. package/dist/interactions/actions/lasso-select/action.js +143 -0
  654. package/dist/interactions/actions/lasso-select/action.js.map +1 -0
  655. package/dist/interactions/actions/move/action.js +91 -0
  656. package/dist/interactions/actions/move/action.js.map +1 -0
  657. package/dist/interactions/actions/move/behaviors/layoutDrop.js +51 -0
  658. package/dist/interactions/actions/move/behaviors/layoutDrop.js.map +1 -0
  659. package/dist/interactions/actions/move/behaviors/reparentOnDrop.js +15 -0
  660. package/dist/interactions/actions/move/behaviors/reparentOnDrop.js.map +1 -0
  661. package/dist/interactions/actions/move/behaviors/snapToContainer.js +35 -28
  662. package/dist/interactions/actions/move/behaviors/snapToContainer.js.map +1 -1
  663. package/dist/interactions/actions/move/capture.js +108 -0
  664. package/dist/interactions/actions/move/capture.js.map +1 -0
  665. package/dist/interactions/actions/move/commit/index.js +41 -0
  666. package/dist/interactions/actions/move/commit/index.js.map +1 -0
  667. package/dist/interactions/actions/move/commit/layoutDrop.js +44 -0
  668. package/dist/interactions/actions/move/commit/layoutDrop.js.map +1 -0
  669. package/dist/interactions/actions/move/commit/layoutRelease.js +100 -0
  670. package/dist/interactions/actions/move/commit/layoutRelease.js.map +1 -0
  671. package/dist/interactions/actions/move/commit/rebase.js +18 -0
  672. package/dist/interactions/actions/move/commit/rebase.js.map +1 -0
  673. package/dist/interactions/actions/move/commit/reparent.js +65 -0
  674. package/dist/interactions/actions/move/commit/reparent.js.map +1 -0
  675. package/dist/interactions/actions/move/delta.js +51 -0
  676. package/dist/interactions/actions/move/delta.js.map +1 -0
  677. package/dist/interactions/actions/move/frame.js +47 -0
  678. package/dist/interactions/actions/move/frame.js.map +1 -0
  679. package/dist/interactions/actions/move/gestureAdapter.js +15 -40
  680. package/dist/interactions/actions/move/gestureAdapter.js.map +1 -1
  681. package/dist/interactions/actions/move/landedDescendants.js +8 -8
  682. package/dist/interactions/actions/move/layout/container.js +94 -0
  683. package/dist/interactions/actions/move/layout/container.js.map +1 -0
  684. package/dist/interactions/actions/move/layout/dragged.js +58 -0
  685. package/dist/interactions/actions/move/layout/dragged.js.map +1 -0
  686. package/dist/interactions/actions/move/layout/dropPass.js +122 -0
  687. package/dist/interactions/actions/move/layout/dropPass.js.map +1 -0
  688. package/dist/interactions/actions/move/layout/exits.js +38 -0
  689. package/dist/interactions/actions/move/layout/exits.js.map +1 -0
  690. package/dist/interactions/actions/move/layout/glide.js +48 -0
  691. package/dist/interactions/actions/move/layout/glide.js.map +1 -0
  692. package/dist/interactions/actions/move/session.js +63 -0
  693. package/dist/interactions/actions/move/session.js.map +1 -0
  694. package/dist/interactions/actions/move/translate.js +61 -0
  695. package/dist/interactions/actions/move/translate.js.map +1 -0
  696. package/dist/interactions/actions/outlines/createOutlines.js +17 -64
  697. package/dist/interactions/actions/outlines/createOutlines.js.map +1 -1
  698. package/dist/interactions/actions/outlines/createOutlinesAction.js +51 -0
  699. package/dist/interactions/actions/outlines/createOutlinesAction.js.map +1 -0
  700. package/dist/interactions/actions/outlines/outlineStroke.js +72 -0
  701. package/dist/interactions/actions/outlines/outlineStroke.js.map +1 -0
  702. package/dist/interactions/actions/outlines/outlineStrokeAction.js +37 -0
  703. package/dist/interactions/actions/outlines/outlineStrokeAction.js.map +1 -0
  704. package/dist/interactions/actions/outlines/replaceWithPaths.js +54 -0
  705. package/dist/interactions/actions/outlines/replaceWithPaths.js.map +1 -0
  706. package/dist/interactions/actions/outlines/strokeRegion.js +27 -0
  707. package/dist/interactions/actions/outlines/strokeRegion.js.map +1 -0
  708. package/dist/interactions/actions/pathCommands/cutJoin.js +102 -0
  709. package/dist/interactions/actions/pathCommands/cutJoin.js.map +1 -0
  710. package/dist/interactions/actions/pathCommands/livePathEdit.js +64 -0
  711. package/dist/interactions/actions/pathCommands/livePathEdit.js.map +1 -0
  712. package/dist/interactions/actions/pathCommands/pathNodes.js +99 -0
  713. package/dist/interactions/actions/pathCommands/pathNodes.js.map +1 -0
  714. package/dist/interactions/actions/pathCommands/simplifyOffset.js +42 -0
  715. package/dist/interactions/actions/pathCommands/simplifyOffset.js.map +1 -0
  716. package/dist/interactions/actions/planeInput.js.map +1 -1
  717. package/dist/interactions/actions/pointerState.js +12 -0
  718. package/dist/interactions/actions/pointerState.js.map +1 -0
  719. package/dist/interactions/actions/poseDescriptorDep.js +1 -1
  720. package/dist/interactions/actions/poseDescriptorDep.js.map +1 -1
  721. package/dist/interactions/actions/poseFrame.js +26 -26
  722. package/dist/interactions/actions/poseFrame.js.map +1 -1
  723. package/dist/interactions/actions/resize/action.js +66 -0
  724. package/dist/interactions/actions/resize/action.js.map +1 -0
  725. package/dist/interactions/actions/resize/behaviors/lockAspect.js.map +1 -1
  726. package/dist/interactions/actions/resize/boxFrame.js +16 -0
  727. package/dist/interactions/actions/resize/boxFrame.js.map +1 -0
  728. package/dist/interactions/actions/resize/capture.js +85 -0
  729. package/dist/interactions/actions/resize/capture.js.map +1 -0
  730. package/dist/interactions/actions/resize/commit.js +69 -0
  731. package/dist/interactions/actions/resize/commit.js.map +1 -0
  732. package/dist/interactions/actions/resize/frame.js +88 -0
  733. package/dist/interactions/actions/resize/frame.js.map +1 -0
  734. package/dist/interactions/actions/resize/pointSnap.js +111 -0
  735. package/dist/interactions/actions/resize/pointSnap.js.map +1 -0
  736. package/dist/interactions/actions/resize/replay.js +47 -0
  737. package/dist/interactions/actions/resize/replay.js.map +1 -0
  738. package/dist/interactions/actions/resize/ruleBounds.js +9 -0
  739. package/dist/interactions/actions/resize/ruleBounds.js.map +1 -0
  740. package/dist/interactions/actions/resize/session.js +63 -0
  741. package/dist/interactions/actions/resize/session.js.map +1 -0
  742. package/dist/interactions/actions/resolveOverlays.js +2 -1
  743. package/dist/interactions/actions/resolveOverlays.js.map +1 -1
  744. package/dist/interactions/actions/resolvePreviews.js.map +1 -1
  745. package/dist/interactions/actions/rotate/action.js +71 -0
  746. package/dist/interactions/actions/rotate/action.js.map +1 -0
  747. package/dist/interactions/actions/rotate/behaviors/index.js +7 -0
  748. package/dist/interactions/actions/rotate/behaviors/index.js.map +1 -0
  749. package/dist/interactions/actions/rotate/behaviors/snapRotation.js +12 -0
  750. package/dist/interactions/actions/rotate/behaviors/snapRotation.js.map +1 -0
  751. package/dist/interactions/actions/rotate/commit.js +40 -0
  752. package/dist/interactions/actions/rotate/commit.js.map +1 -0
  753. package/dist/interactions/actions/rotate/frame.js +65 -0
  754. package/dist/interactions/actions/rotate/frame.js.map +1 -0
  755. package/dist/interactions/actions/rotate/handle.js +12 -12
  756. package/dist/interactions/actions/rotate/handle.js.map +1 -1
  757. package/dist/interactions/actions/rotate/replay.js +22 -0
  758. package/dist/interactions/actions/rotate/replay.js.map +1 -0
  759. package/dist/interactions/actions/rotate/session.js +102 -0
  760. package/dist/interactions/actions/rotate/session.js.map +1 -0
  761. package/dist/interactions/actions/spatialReference.js.map +1 -1
  762. package/dist/interactions/actions/transform-again/action.js +63 -0
  763. package/dist/interactions/actions/transform-again/action.js.map +1 -0
  764. package/dist/interactions/actions/transform-again/memory.js +35 -0
  765. package/dist/interactions/actions/transform-again/memory.js.map +1 -0
  766. package/dist/interactions/actions/useStandardActions.js +84 -61
  767. package/dist/interactions/actions/useStandardActions.js.map +1 -1
  768. package/dist/interactions/gestures/pointerDrag/pointerDrag.js +61 -42
  769. package/dist/interactions/gestures/pointerDrag/pointerDrag.js.map +1 -1
  770. package/dist/interactions/gestures/shared/originProjection.js +1 -1
  771. package/dist/interactions/gestures/shared/originProjection.js.map +1 -1
  772. package/dist/interactions/gestures/shared/screenTolerance.js +8 -2
  773. package/dist/interactions/gestures/shared/screenTolerance.js.map +1 -1
  774. package/dist/interactions/gestures/shared/snap.js.map +1 -1
  775. package/dist/math-CYUjoyyU.d.ts +33 -0
  776. package/dist/math.d.ts +5 -2
  777. package/dist/math.js +6 -6
  778. package/dist/mesh.d.ts +4 -268
  779. package/dist/mesh.js +3 -7
  780. package/dist/move.d.ts +6 -4
  781. package/dist/{originProjection-gHnOup4e.d.ts → originProjection-CoNVpITV.d.ts} +1 -1
  782. package/dist/patterns-builtin.d.ts +1 -118
  783. package/dist/patterns-builtin.js +2 -3
  784. package/dist/poseDescriptor-Bqk-11Rl.d.ts +73 -0
  785. package/dist/renderer.d.ts +1 -92
  786. package/dist/renderer.js +2 -19
  787. package/dist/resize.d.ts +11 -22
  788. package/dist/resize.js +1 -1
  789. package/dist/style.css +1 -1
  790. package/dist/test-hook/install.js.map +1 -1
  791. package/dist/test-hook/useTestHook.js +22 -0
  792. package/dist/test-hook/useTestHook.js.map +1 -0
  793. package/dist/test-seams-D0pyV3pR.d.ts +149 -0
  794. package/dist/test-seams.d.ts +4 -4
  795. package/dist/test-seams.js +2 -2
  796. package/dist/tools/builtin/bone/boneActions.js +130 -0
  797. package/dist/tools/builtin/bone/boneActions.js.map +1 -0
  798. package/dist/tools/builtin/bone/boneOverlay.js +58 -0
  799. package/dist/tools/builtin/bone/boneOverlay.js.map +1 -0
  800. package/dist/tools/builtin/bone/placedRig.js +24 -0
  801. package/dist/tools/builtin/bone/placedRig.js.map +1 -0
  802. package/dist/tools/builtin/bone/rigEditState.js +21 -0
  803. package/dist/tools/builtin/bone/rigEditState.js.map +1 -0
  804. package/dist/tools/builtin/bone/useBoneTool.js +98 -0
  805. package/dist/tools/builtin/bone/useBoneTool.js.map +1 -0
  806. package/dist/tools/builtin/ellipse/useEllipseTool.js +16 -15
  807. package/dist/tools/builtin/ellipse/useEllipseTool.js.map +1 -1
  808. package/dist/tools/builtin/eyedropper/useEyedropperTool.js.map +1 -1
  809. package/dist/tools/builtin/hand/useHandTool.js.map +1 -1
  810. package/dist/tools/builtin/image/useImageTool.js.map +1 -1
  811. package/dist/tools/builtin/lasso/useLassoTool.js.map +1 -1
  812. package/dist/tools/builtin/line/useLineTool.js +16 -15
  813. package/dist/tools/builtin/line/useLineTool.js.map +1 -1
  814. package/dist/tools/builtin/pen/usePenTool.js +162 -164
  815. package/dist/tools/builtin/pen/usePenTool.js.map +1 -1
  816. package/dist/tools/builtin/pencil/usePencilTool.js.map +1 -1
  817. package/dist/tools/builtin/pickTopMostHit.js +11 -14
  818. package/dist/tools/builtin/pickTopMostHit.js.map +1 -1
  819. package/dist/tools/builtin/polygon/usePolygonTool.js +17 -15
  820. package/dist/tools/builtin/polygon/usePolygonTool.js.map +1 -1
  821. package/dist/tools/builtin/rect/useRectTool.js +15 -14
  822. package/dist/tools/builtin/rect/useRectTool.js.map +1 -1
  823. package/dist/tools/builtin/select/adapterPointQuery.js +40 -0
  824. package/dist/tools/builtin/select/adapterPointQuery.js.map +1 -0
  825. package/dist/tools/builtin/select/selectionContributions.js +5 -5
  826. package/dist/tools/builtin/select/selectionContributions.js.map +1 -1
  827. package/dist/tools/builtin/select/useSelectTool.js +44 -71
  828. package/dist/tools/builtin/select/useSelectTool.js.map +1 -1
  829. package/dist/tools/builtin/shared/pointerFollower.js.map +1 -1
  830. package/dist/tools/builtin/slice/useSliceTool.js +69 -72
  831. package/dist/tools/builtin/slice/useSliceTool.js.map +1 -1
  832. package/dist/tools/builtin/star/useStarTool.js +18 -16
  833. package/dist/tools/builtin/star/useStarTool.js.map +1 -1
  834. package/dist/tools/builtin/text/useTextTool.js +10 -2
  835. package/dist/tools/builtin/text/useTextTool.js.map +1 -1
  836. package/dist/tools/builtin/weight/useWeightTool.js +77 -0
  837. package/dist/tools/builtin/weight/useWeightTool.js.map +1 -0
  838. package/dist/tools/builtin/weight/weightActions.js +112 -0
  839. package/dist/tools/builtin/weight/weightActions.js.map +1 -0
  840. package/dist/tools/builtin/weight/weightOverlay.js +61 -0
  841. package/dist/tools/builtin/weight/weightOverlay.js.map +1 -0
  842. package/dist/tools/overlayBinding.js.map +1 -1
  843. package/dist/tools/useKeybindings.js +20 -14
  844. package/dist/tools/useKeybindings.js.map +1 -1
  845. package/dist/{types-k-5Oqh-U.d.ts → types-DBbbCy0i.d.ts} +103 -176
  846. package/dist/util/paint.js +1 -1
  847. package/dist/util/paint.js.map +1 -1
  848. package/dist/version.js +1 -1
  849. package/package.json +26 -21
  850. package/dist/animation/colorHelpers.js +0 -135
  851. package/dist/animation/colorHelpers.js.map +0 -1
  852. package/dist/animation/colorRegistry.js +0 -37
  853. package/dist/animation/colorRegistry.js.map +0 -1
  854. package/dist/animation/engine/axes.js +0 -36
  855. package/dist/animation/engine/axes.js.map +0 -1
  856. package/dist/animation/engine/codec.js +0 -170
  857. package/dist/animation/engine/codec.js.map +0 -1
  858. package/dist/animation/engine/integrator.js +0 -12
  859. package/dist/animation/engine/integrator.js.map +0 -1
  860. package/dist/animation/loop.js +0 -60
  861. package/dist/animation/loop.js.map +0 -1
  862. package/dist/animation/observe.js +0 -23
  863. package/dist/animation/observe.js.map +0 -1
  864. package/dist/animation/rig/blendPoses.js +0 -43
  865. package/dist/animation/rig/blendPoses.js.map +0 -1
  866. package/dist/animation/rig/mirrorPose.js +0 -19
  867. package/dist/animation/rig/mirrorPose.js.map +0 -1
  868. package/dist/animation/rig/resolveSkeleton.js +0 -33
  869. package/dist/animation/rig/resolveSkeleton.js.map +0 -1
  870. package/dist/animation/rig/solveIk.js +0 -103
  871. package/dist/animation/rig/solveIk.js.map +0 -1
  872. package/dist/animation/rig/types.js +0 -12
  873. package/dist/animation/rig/types.js.map +0 -1
  874. package/dist/animation/slew.js +0 -27
  875. package/dist/animation/slew.js.map +0 -1
  876. package/dist/animation/stagger.js +0 -146
  877. package/dist/animation/stagger.js.map +0 -1
  878. package/dist/animation/timeline/booking.js +0 -114
  879. package/dist/animation/timeline/booking.js.map +0 -1
  880. package/dist/animation/timeline/createTimeline.js +0 -125
  881. package/dist/animation/timeline/createTimeline.js.map +0 -1
  882. package/dist/animation/timeline/sampleTrack.js +0 -79
  883. package/dist/animation/timeline/sampleTrack.js.map +0 -1
  884. package/dist/animation/useAnimator.js +0 -388
  885. package/dist/animation/useAnimator.js.map +0 -1
  886. package/dist/autoPoseDescriptor-Ct7yqivU.d.ts +0 -108
  887. package/dist/builtins-DPcdghtB.d.ts +0 -1223
  888. package/dist/canvas/MinimapCanvas.js +0 -140
  889. package/dist/canvas/MinimapCanvas.js.map +0 -1
  890. package/dist/canvas/deps/poseComposition.js +0 -11
  891. package/dist/canvas/deps/poseComposition.js.map +0 -1
  892. package/dist/canvas/minimapMath.js +0 -82
  893. package/dist/canvas/minimapMath.js.map +0 -1
  894. package/dist/canvas/toolPreview.js +0 -39
  895. package/dist/canvas/toolPreview.js.map +0 -1
  896. package/dist/core/adapters/arrayAdapter.js +0 -94
  897. package/dist/core/adapters/arrayAdapter.js.map +0 -1
  898. package/dist/core/adapters/useArrayAdapter.js +0 -13
  899. package/dist/core/adapters/useArrayAdapter.js.map +0 -1
  900. package/dist/core/fillInPoseFrame.js +0 -102
  901. package/dist/core/fillInPoseFrame.js.map +0 -1
  902. package/dist/core/geometry/poseFrame.js +0 -44
  903. package/dist/core/geometry/poseFrame.js.map +0 -1
  904. package/dist/core/geometry/poseRotation.js +0 -58
  905. package/dist/core/geometry/poseRotation.js.map +0 -1
  906. package/dist/core/gradient.js +0 -136
  907. package/dist/core/gradient.js.map +0 -1
  908. package/dist/core/markerInset.js +0 -24
  909. package/dist/core/markerInset.js.map +0 -1
  910. package/dist/core/mixed.js +0 -6
  911. package/dist/core/mixed.js.map +0 -1
  912. package/dist/core/paintKinds.js +0 -156
  913. package/dist/core/paintKinds.js.map +0 -1
  914. package/dist/core/scene/pickability.js +0 -6
  915. package/dist/core/scene/pickability.js.map +0 -1
  916. package/dist/core/strokeMarkerShapes.js +0 -139
  917. package/dist/core/strokeMarkerShapes.js.map +0 -1
  918. package/dist/core/strokeMarkers.js +0 -28
  919. package/dist/core/strokeMarkers.js.map +0 -1
  920. package/dist/core/viewport/meanScale.js +0 -8
  921. package/dist/core/viewport/meanScale.js.map +0 -1
  922. package/dist/core/viewport/pxExtent.js +0 -42
  923. package/dist/core/viewport/pxExtent.js.map +0 -1
  924. package/dist/features/cursor/paintedCursorLayer.js.map +0 -1
  925. package/dist/features/focus/gateLayer.js.map +0 -1
  926. package/dist/features/focus/useCanvasFocus.js +0 -29
  927. package/dist/features/focus/useCanvasFocus.js.map +0 -1
  928. package/dist/features/groups/children.js.map +0 -1
  929. package/dist/features/groups/composePose.js +0 -67
  930. package/dist/features/groups/composePose.js.map +0 -1
  931. package/dist/features/groups/nestedHit.js.map +0 -1
  932. package/dist/features/groups/unionOfChildren.js.map +0 -1
  933. package/dist/features/images/imageCache.js +0 -104
  934. package/dist/features/images/imageCache.js.map +0 -1
  935. package/dist/features/ingestion/index.js +0 -8
  936. package/dist/features/meshPaint/bake.js +0 -79
  937. package/dist/features/meshPaint/bake.js.map +0 -1
  938. package/dist/features/meshPaint/bakeCache.js +0 -59
  939. package/dist/features/meshPaint/bakeCache.js.map +0 -1
  940. package/dist/features/meshPaint/handles.js +0 -86
  941. package/dist/features/meshPaint/handles.js.map +0 -1
  942. package/dist/features/meshPaint/lazyKind.js.map +0 -1
  943. package/dist/features/meshPaint/meshPaint.js +0 -239
  944. package/dist/features/meshPaint/meshPaint.js.map +0 -1
  945. package/dist/features/meshPaint/meshShader.js +0 -6
  946. package/dist/features/meshPaint/meshShader.js.map +0 -1
  947. package/dist/features/meshPaint/register.js +0 -7
  948. package/dist/features/meshPaint/register.js.map +0 -1
  949. package/dist/features/meshPaint/surface.js +0 -110
  950. package/dist/features/meshPaint/surface.js.map +0 -1
  951. package/dist/features/minimap/actions.js +0 -53
  952. package/dist/features/minimap/actions.js.map +0 -1
  953. package/dist/features/minimap/createMinimapContribution.js +0 -96
  954. package/dist/features/minimap/createMinimapContribution.js.map +0 -1
  955. package/dist/features/minimap/layers.js +0 -85
  956. package/dist/features/minimap/layers.js.map +0 -1
  957. package/dist/features/overlays/useNodeOverlayFrame.js +0 -103
  958. package/dist/features/overlays/useNodeOverlayFrame.js.map +0 -1
  959. package/dist/features/parallax/createParallaxLayer.js +0 -26
  960. package/dist/features/parallax/createParallaxLayer.js.map +0 -1
  961. package/dist/features/parallax/createParallaxPlane.js +0 -22
  962. package/dist/features/parallax/createParallaxPlane.js.map +0 -1
  963. package/dist/features/paths/anchorEdits.js +0 -167
  964. package/dist/features/paths/anchorEdits.js.map +0 -1
  965. package/dist/features/paths/anchors.js +0 -159
  966. package/dist/features/paths/anchors.js.map +0 -1
  967. package/dist/features/paths/booleans.js +0 -2
  968. package/dist/features/paths/markerCommands.js +0 -149
  969. package/dist/features/paths/markerCommands.js.map +0 -1
  970. package/dist/features/paths/markerSites.js +0 -59
  971. package/dist/features/paths/markerSites.js.map +0 -1
  972. package/dist/features/paths/markers.js +0 -95
  973. package/dist/features/paths/markers.js.map +0 -1
  974. package/dist/features/paths/nearestAnchor.js +0 -36
  975. package/dist/features/paths/nearestAnchor.js.map +0 -1
  976. package/dist/features/paths/pathInWorld.js +0 -41
  977. package/dist/features/paths/pathInWorld.js.map +0 -1
  978. package/dist/features/paths/poseDescriptor.js +0 -39
  979. package/dist/features/paths/poseDescriptor.js.map +0 -1
  980. package/dist/features/paths/strokeToPath.js +0 -40
  981. package/dist/features/paths/strokeToPath.js.map +0 -1
  982. package/dist/features/paths/tessellate/dash.js +0 -52
  983. package/dist/features/paths/tessellate/dash.js.map +0 -1
  984. package/dist/features/paths/tessellate/insets.js +0 -32
  985. package/dist/features/paths/tessellate/insets.js.map +0 -1
  986. package/dist/features/paths/tessellate/metric.js +0 -72
  987. package/dist/features/paths/tessellate/metric.js.map +0 -1
  988. package/dist/features/paths/tessellate/stroke.js +0 -170
  989. package/dist/features/paths/tessellate/stroke.js.map +0 -1
  990. package/dist/features/paths/tessellate/vertexWidths.js +0 -32
  991. package/dist/features/paths/tessellate/vertexWidths.js.map +0 -1
  992. package/dist/features/patterns/commandPaint.js +0 -18
  993. package/dist/features/patterns/commandPaint.js.map +0 -1
  994. package/dist/features/patterns/index.js +0 -11
  995. package/dist/features/patterns/index.js.map +0 -1
  996. package/dist/features/patterns/patterns-builtin.js +0 -38
  997. package/dist/features/patterns/patterns-builtin.js.map +0 -1
  998. package/dist/features/patterns/rasterizeTile.js +0 -17
  999. package/dist/features/patterns/rasterizeTile.js.map +0 -1
  1000. package/dist/features/patterns/resolveSpec.js +0 -65
  1001. package/dist/features/patterns/resolveSpec.js.map +0 -1
  1002. package/dist/features/patterns/tileGeometry.js +0 -158
  1003. package/dist/features/patterns/tileGeometry.js.map +0 -1
  1004. package/dist/features/pointer/PointerContext.js +0 -45
  1005. package/dist/features/pointer/PointerContext.js.map +0 -1
  1006. package/dist/features/selection/SelectionContext.js +0 -51
  1007. package/dist/features/selection/SelectionContext.js.map +0 -1
  1008. package/dist/features/simulation/createSimulation.js +0 -61
  1009. package/dist/features/simulation/createSimulation.js.map +0 -1
  1010. package/dist/features/simulation/types.js +0 -6
  1011. package/dist/features/simulation/types.js.map +0 -1
  1012. package/dist/features/simulation/useSimulation.js +0 -74
  1013. package/dist/features/simulation/useSimulation.js.map +0 -1
  1014. package/dist/features/text/domOffsets.js +0 -82
  1015. package/dist/features/text/domOffsets.js.map +0 -1
  1016. package/dist/features/text/domRuns.js +0 -230
  1017. package/dist/features/text/domRuns.js.map +0 -1
  1018. package/dist/features/text/fitTextPose.js +0 -38
  1019. package/dist/features/text/fitTextPose.js.map +0 -1
  1020. package/dist/features/text/hitTest.js +0 -48
  1021. package/dist/features/text/hitTest.js.map +0 -1
  1022. package/dist/features/text/isTextData.js +0 -8
  1023. package/dist/features/text/isTextData.js.map +0 -1
  1024. package/dist/features/text/overlayDirection.js +0 -15
  1025. package/dist/features/text/overlayDirection.js.map +0 -1
  1026. package/dist/features/text/renderLabel.js +0 -14
  1027. package/dist/features/text/renderLabel.js.map +0 -1
  1028. package/dist/features/text/runs/effectiveRangeStyle.js +0 -66
  1029. package/dist/features/text/runs/effectiveRangeStyle.js.map +0 -1
  1030. package/dist/features/text/runs/flagRange.js +0 -53
  1031. package/dist/features/text/runs/flagRange.js.map +0 -1
  1032. package/dist/features/text/runs/rangeStyle.js +0 -133
  1033. package/dist/features/text/runs/rangeStyle.js.map +0 -1
  1034. package/dist/features/text/textCommand.js +0 -60
  1035. package/dist/features/text/textCommand.js.map +0 -1
  1036. package/dist/features/text/textToPath.js +0 -181
  1037. package/dist/features/text/textToPath.js.map +0 -1
  1038. package/dist/features/text/useTextEdit.js +0 -491
  1039. package/dist/features/text/useTextEdit.js.map +0 -1
  1040. package/dist/features/tiling/createTiledLayer.js +0 -65
  1041. package/dist/features/tiling/createTiledLayer.js.map +0 -1
  1042. package/dist/features/tiling/tiledProject.js +0 -14
  1043. package/dist/features/tiling/tiledProject.js.map +0 -1
  1044. package/dist/interactions/actions/clone/behaviors/cloneByAltDrag.js +0 -26
  1045. package/dist/interactions/actions/clone/behaviors/cloneByAltDrag.js.map +0 -1
  1046. package/dist/interactions/actions/defaults/align.js.map +0 -1
  1047. package/dist/interactions/actions/defaults/booleans.js +0 -52
  1048. package/dist/interactions/actions/defaults/booleans.js.map +0 -1
  1049. package/dist/interactions/actions/defaults/clipboard.js.map +0 -1
  1050. package/dist/interactions/actions/defaults/clone.js +0 -91
  1051. package/dist/interactions/actions/defaults/clone.js.map +0 -1
  1052. package/dist/interactions/actions/defaults/createOutlines.js +0 -47
  1053. package/dist/interactions/actions/defaults/createOutlines.js.map +0 -1
  1054. package/dist/interactions/actions/defaults/distribute.js.map +0 -1
  1055. package/dist/interactions/actions/defaults/editAnchors.js +0 -100
  1056. package/dist/interactions/actions/defaults/editAnchors.js.map +0 -1
  1057. package/dist/interactions/actions/defaults/flip.js +0 -125
  1058. package/dist/interactions/actions/defaults/flip.js.map +0 -1
  1059. package/dist/interactions/actions/defaults/insert.js +0 -287
  1060. package/dist/interactions/actions/defaults/insert.js.map +0 -1
  1061. package/dist/interactions/actions/defaults/lassoSelect.js +0 -153
  1062. package/dist/interactions/actions/defaults/lassoSelect.js.map +0 -1
  1063. package/dist/interactions/actions/defaults/move.js +0 -778
  1064. package/dist/interactions/actions/defaults/move.js.map +0 -1
  1065. package/dist/interactions/actions/defaults/resize.js +0 -341
  1066. package/dist/interactions/actions/defaults/resize.js.map +0 -1
  1067. package/dist/interactions/actions/defaults/rotate.js +0 -185
  1068. package/dist/interactions/actions/defaults/rotate.js.map +0 -1
  1069. package/dist/interactions/actions/previewOverrides.js +0 -25
  1070. package/dist/interactions/actions/previewOverrides.js.map +0 -1
  1071. package/dist/interactions/actions/resize/autoPoseDescriptor.js.map +0 -1
  1072. package/dist/layout/arrivals.js +0 -36
  1073. package/dist/layout/arrivals.js.map +0 -1
  1074. package/dist/math-J-ACHyEg.d.ts +0 -159
  1075. package/dist/registerProgram-T9S_PfAX.d.ts +0 -208
  1076. package/dist/renderer/DrawCommand.js +0 -6
  1077. package/dist/renderer/DrawCommand.js.map +0 -1
  1078. package/dist/renderer/WeaselRenderer.js +0 -333
  1079. package/dist/renderer/WeaselRenderer.js.map +0 -1
  1080. package/dist/renderer/batchClip.js +0 -46
  1081. package/dist/renderer/batchClip.js.map +0 -1
  1082. package/dist/renderer/cache/GLImageCache.js +0 -74
  1083. package/dist/renderer/cache/GLImageCache.js.map +0 -1
  1084. package/dist/renderer/cache/GLMeshCache.js +0 -102
  1085. package/dist/renderer/cache/GLMeshCache.js.map +0 -1
  1086. package/dist/renderer/cache/GLTextureCache.js +0 -68
  1087. package/dist/renderer/cache/GLTextureCache.js.map +0 -1
  1088. package/dist/renderer/cache/GradientRampAtlas.js +0 -82
  1089. package/dist/renderer/cache/GradientRampAtlas.js.map +0 -1
  1090. package/dist/renderer/cache/cache.js +0 -13
  1091. package/dist/renderer/cache/cache.js.map +0 -1
  1092. package/dist/renderer/cache/markerCommandCache.js +0 -63
  1093. package/dist/renderer/cache/markerCommandCache.js.map +0 -1
  1094. package/dist/renderer/cache/outlineMeshCache.js +0 -15
  1095. package/dist/renderer/cache/outlineMeshCache.js.map +0 -1
  1096. package/dist/renderer/cache/outlineStrokeMeshCache.js +0 -36
  1097. package/dist/renderer/cache/outlineStrokeMeshCache.js.map +0 -1
  1098. package/dist/renderer/cache/strokeMeshCache.js +0 -55
  1099. package/dist/renderer/cache/strokeMeshCache.js.map +0 -1
  1100. package/dist/renderer/cullDrawCommands.js +0 -90
  1101. package/dist/renderer/cullDrawCommands.js.map +0 -1
  1102. package/dist/renderer/draw/batch.js +0 -133
  1103. package/dist/renderer/draw/batch.js.map +0 -1
  1104. package/dist/renderer/draw/clip.js +0 -89
  1105. package/dist/renderer/draw/clip.js.map +0 -1
  1106. package/dist/renderer/draw/customShader.js +0 -230
  1107. package/dist/renderer/draw/customShader.js.map +0 -1
  1108. package/dist/renderer/draw/drawTriangles.js +0 -8
  1109. package/dist/renderer/draw/drawTriangles.js.map +0 -1
  1110. package/dist/renderer/draw/effects.js +0 -28
  1111. package/dist/renderer/draw/effects.js.map +0 -1
  1112. package/dist/renderer/draw/flushBatch.js +0 -35
  1113. package/dist/renderer/draw/flushBatch.js.map +0 -1
  1114. package/dist/renderer/draw/gradient.js +0 -90
  1115. package/dist/renderer/draw/gradient.js.map +0 -1
  1116. package/dist/renderer/draw/image.js +0 -38
  1117. package/dist/renderer/draw/image.js.map +0 -1
  1118. package/dist/renderer/draw/mesh.js +0 -16
  1119. package/dist/renderer/draw/mesh.js.map +0 -1
  1120. package/dist/renderer/draw/paintBind.js +0 -70
  1121. package/dist/renderer/draw/paintBind.js.map +0 -1
  1122. package/dist/renderer/draw/pathPaint.js +0 -142
  1123. package/dist/renderer/draw/pathPaint.js.map +0 -1
  1124. package/dist/renderer/draw/scratchPass.js +0 -83
  1125. package/dist/renderer/draw/scratchPass.js.map +0 -1
  1126. package/dist/renderer/draw/stencil.js +0 -28
  1127. package/dist/renderer/draw/stencil.js.map +0 -1
  1128. package/dist/renderer/draw/text.js +0 -167
  1129. package/dist/renderer/draw/text.js.map +0 -1
  1130. package/dist/renderer/draw/uniforms.js +0 -77
  1131. package/dist/renderer/draw/uniforms.js.map +0 -1
  1132. package/dist/renderer/draw.js +0 -79
  1133. package/dist/renderer/draw.js.map +0 -1
  1134. package/dist/renderer/drawBatch.js +0 -198
  1135. package/dist/renderer/drawBatch.js.map +0 -1
  1136. package/dist/renderer/effects/EffectTargets.js +0 -48
  1137. package/dist/renderer/effects/EffectTargets.js.map +0 -1
  1138. package/dist/renderer/effects/builtins.js +0 -31
  1139. package/dist/renderer/effects/builtins.js.map +0 -1
  1140. package/dist/renderer/effects/composite.js +0 -11
  1141. package/dist/renderer/effects/composite.js.map +0 -1
  1142. package/dist/renderer/effects/effectPrelude.js +0 -10
  1143. package/dist/renderer/effects/effectPrelude.js.map +0 -1
  1144. package/dist/renderer/effects/types.js +0 -10
  1145. package/dist/renderer/effects/types.js.map +0 -1
  1146. package/dist/renderer/glyphOutlineMesh.js +0 -67
  1147. package/dist/renderer/glyphOutlineMesh.js.map +0 -1
  1148. package/dist/renderer/index.js +0 -20
  1149. package/dist/renderer/math/color.js +0 -321
  1150. package/dist/renderer/math/color.js.map +0 -1
  1151. package/dist/renderer/math/mat3.js +0 -80
  1152. package/dist/renderer/math/mat3.js.map +0 -1
  1153. package/dist/renderer/math/patternSpace.js +0 -22
  1154. package/dist/renderer/math/patternSpace.js.map +0 -1
  1155. package/dist/renderer/math/viewToMat3.js +0 -19
  1156. package/dist/renderer/math/viewToMat3.js.map +0 -1
  1157. package/dist/renderer/paintResources.js +0 -18
  1158. package/dist/renderer/paintResources.js.map +0 -1
  1159. package/dist/renderer/paintScratch.js +0 -37
  1160. package/dist/renderer/paintScratch.js.map +0 -1
  1161. package/dist/renderer/shaders/ShaderProgram.js +0 -74
  1162. package/dist/renderer/shaders/ShaderProgram.js.map +0 -1
  1163. package/dist/renderer/shaders/batchFill.js +0 -119
  1164. package/dist/renderer/shaders/batchFill.js.map +0 -1
  1165. package/dist/renderer/shaders/customPrelude.js +0 -34
  1166. package/dist/renderer/shaders/customPrelude.js.map +0 -1
  1167. package/dist/renderer/shaders/extractUniformNames.js +0 -184
  1168. package/dist/renderer/shaders/extractUniformNames.js.map +0 -1
  1169. package/dist/renderer/shaders/glyphPaint.js +0 -61
  1170. package/dist/renderer/shaders/glyphPaint.js.map +0 -1
  1171. package/dist/renderer/shaders/gradFill.js +0 -31
  1172. package/dist/renderer/shaders/gradFill.js.map +0 -1
  1173. package/dist/renderer/shaders/pathFill.js +0 -14
  1174. package/dist/renderer/shaders/pathFill.js.map +0 -1
  1175. package/dist/renderer/shaders/patternFill.js +0 -25
  1176. package/dist/renderer/shaders/patternFill.js.map +0 -1
  1177. package/dist/renderer/shaders/registerProgram.js +0 -18
  1178. package/dist/renderer/shaders/registerProgram.js.map +0 -1
  1179. package/dist/renderer/spriteSheet.js +0 -14
  1180. package/dist/renderer/spriteSheet.js.map +0 -1
  1181. package/dist/renderer/state/GroupState.js +0 -77
  1182. package/dist/renderer/state/GroupState.js.map +0 -1
  1183. package/dist/renderer/strokeLengths.js +0 -50
  1184. package/dist/renderer/strokeLengths.js.map +0 -1
  1185. package/dist/renderer/syntheticItalic.js +0 -6
  1186. package/dist/renderer/syntheticItalic.js.map +0 -1
  1187. package/dist/renderer/textures/registerTexture.js +0 -34
  1188. package/dist/renderer/textures/registerTexture.js.map +0 -1
  1189. package/dist/scheduling/useVisibleRaf.js +0 -69
  1190. package/dist/scheduling/useVisibleRaf.js.map +0 -1
  1191. package/dist/test-seams-DM2B87-g.d.ts +0 -356
@@ -1,20 +1,15 @@
1
- import { springPose as e, tweenPose as t } from "./poseHelpers.js";
2
- import { sampleTrack as n } from "./timeline/sampleTrack.js";
3
- import { ColorOverrideRegistry as r } from "./colorRegistry.js";
4
- import { useAnimator as i } from "./useAnimator.js";
5
- import { animateOnSetPose as a } from "./wrappers/animateOnSetPose.js";
6
- import { animateLifecycle as o } from "./wrappers/animateLifecycle.js";
7
- import { createReflowTransition as s, useAnimatedReflow as c } from "./reflow.js";
8
- import { momentum as l } from "./behaviors/momentum.js";
9
- import { createSlew as u, slewToward as d } from "./slew.js";
10
- import { cycleVertexColors as f, rainbowVertexColors as p, solidVertexColors as m, springVertexColors as h, staggerVertexColors as g, tweenVertexColors as _ } from "./colorHelpers.js";
11
- import { IDENTITY_JOINT as v } from "./rig/types.js";
12
- import { blendPoses as y } from "./rig/blendPoses.js";
13
- import { mirrorPose as b } from "./rig/mirrorPose.js";
14
- import { resolveSkeleton as x } from "./rig/resolveSkeleton.js";
15
- import { bindRig as S, rigidRigApply as C } from "./rig/bindRig.js";
16
- import { solveIk as w } from "./rig/solveIk.js";
17
- import { useRig as T } from "./rig/useRig.js";
18
- import { hexToOklchDeg as E, hslToSrgb as D, interpolateSrgb as O, lerpColorArray as k, lerpOklab as A, lerpOklch as j, linearSrgbToOklab as M, linearToSrgb as N, oklabToLinearSrgb as P, oklabToOklch as F, oklabToSrgbU8 as I, oklchDegToHex as L, oklchToOklab as R, srgbFloatToOklab as z, srgbToHsl as B, srgbToLinear as V, srgbU8ToOklab as H } from "@weasel-js/paint";
19
- import { EASINGS as U, SPRING_PRESETS as W, cubicBezierEasing as G, easeIn as K, easeInBack as q, easeInBounce as J, easeInCirc as Y, easeInCubic as X, easeInElastic as Z, easeInExpo as Q, easeInOut as $, easeInOutBack as ee, easeInOutBounce as te, easeInOutCirc as ne, easeInOutCubic as re, easeInOutElastic as ie, easeInOutExpo as ae, easeInOutQuad as oe, easeInOutQuart as se, easeInOutQuint as ce, easeInOutSine as le, easeInQuad as ue, easeInQuart as de, easeInQuint as fe, easeInSine as pe, easeOut as me, easeOutBack as he, easeOutBounce as ge, easeOutCirc as _e, easeOutCubic as ve, easeOutElastic as ye, easeOutExpo as be, easeOutQuad as xe, easeOutQuart as Se, easeOutQuint as Ce, easeOutSine as we, linear as Te, resolveEasing as Ee } from "@weasel-js/geom";
20
- export { r as ColorOverrideRegistry, U as EASINGS, v as IDENTITY_JOINT, W as SPRING_PRESETS, o as animateLifecycle, a as animateOnSetPose, S as bindRig, y as blendPoses, s as createReflowTransition, u as createSlew, G as cubicBezierEasing, f as cycleVertexColors, K as easeIn, q as easeInBack, J as easeInBounce, Y as easeInCirc, X as easeInCubic, Z as easeInElastic, Q as easeInExpo, $ as easeInOut, ee as easeInOutBack, te as easeInOutBounce, ne as easeInOutCirc, re as easeInOutCubic, ie as easeInOutElastic, ae as easeInOutExpo, oe as easeInOutQuad, se as easeInOutQuart, ce as easeInOutQuint, le as easeInOutSine, ue as easeInQuad, de as easeInQuart, fe as easeInQuint, pe as easeInSine, me as easeOut, he as easeOutBack, ge as easeOutBounce, _e as easeOutCirc, ve as easeOutCubic, ye as easeOutElastic, be as easeOutExpo, xe as easeOutQuad, Se as easeOutQuart, Ce as easeOutQuint, we as easeOutSine, E as hexToOklchDeg, D as hslToSrgb, O as interpolateSrgb, k as lerpColorArray, A as lerpOklab, j as lerpOklch, Te as linear, M as linearSrgbToOklab, N as linearToSrgb, b as mirrorPose, l as momentum, P as oklabToLinearSrgb, F as oklabToOklch, I as oklabToSrgbU8, L as oklchDegToHex, R as oklchToOklab, p as rainbowVertexColors, Ee as resolveEasing, x as resolveSkeleton, C as rigidRigApply, n as sampleTrack, d as slewToward, m as solidVertexColors, w as solveIk, e as springPose, h as springVertexColors, z as srgbFloatToOklab, B as srgbToHsl, V as srgbToLinear, H as srgbU8ToOklab, g as staggerVertexColors, t as tweenPose, _ as tweenVertexColors, c as useAnimatedReflow, i as useAnimator, T as useRig };
1
+ import { createPoseTarget as e, poseAxes as t, scenePoseTarget as n } from "./poseTarget.js";
2
+ import { dataRestPath as r } from "./rig/skinBinding.js";
3
+ import { bindRig as i, rigidRigApply as a } from "./rig/bindRig.js";
4
+ import { useRig as o } from "./rig/useRig.js";
5
+ import { placeSkeleton as s, rigFromNode as c, unplaceSkeleton as l, useRigNode as u } from "./rig/rigNode.js";
6
+ import { createWrittenPoseTarget as d } from "./writtenPoseTarget.js";
7
+ import { sceneClipTargets as f } from "./clipTargets.js";
8
+ import { springPose as p, staggerSpringPose as m, tweenPose as h } from "./poseHelpers.js";
9
+ import { animateOnSetPose as g } from "./wrappers/animateOnSetPose.js";
10
+ import { animateLifecycle as _ } from "./wrappers/animateLifecycle.js";
11
+ import { createReflowTransition as v, useAnimatedReflow as y } from "./reflow.js";
12
+ import { momentum as b } from "./behaviors/momentum.js";
13
+ import { EASINGS as x, SPRING_PRESETS as S, cubicBezierEasing as C, easeIn as w, easeInBack as T, easeInBounce as E, easeInCirc as D, easeInCubic as O, easeInElastic as k, easeInExpo as A, easeInOut as j, easeInOutBack as M, easeInOutBounce as N, easeInOutCirc as P, easeInOutCubic as F, easeInOutElastic as I, easeInOutExpo as L, easeInOutQuad as R, easeInOutQuart as z, easeInOutQuint as B, easeInOutSine as V, easeInQuad as H, easeInQuart as U, easeInQuint as W, easeInSine as G, easeOut as K, easeOutBack as q, easeOutBounce as J, easeOutCirc as Y, easeOutCubic as X, easeOutElastic as Z, easeOutExpo as Q, easeOutQuad as $, easeOutQuart as ee, easeOutQuint as te, easeOutSine as ne, linear as re, resolveEasing as ie } from "@weasel-js/geom";
14
+ import { hexToOklchDeg as ae, hslToSrgb as oe, interpolateSrgb as se, lerpColorArray as ce, lerpOklab as le, lerpOklch as ue, linearSrgbToOklab as de, linearToSrgb as fe, oklabToLinearSrgb as pe, oklabToOklch as me, oklabToSrgbU8 as he, oklchDegToHex as ge, oklchToOklab as _e, srgbFloatToOklab as ve, srgbToHsl as ye, srgbToLinear as be, srgbU8ToOklab as xe } from "@weasel-js/paint";
15
+ export { x as EASINGS, S as SPRING_PRESETS, _ as animateLifecycle, g as animateOnSetPose, i as bindRig, e as createPoseTarget, v as createReflowTransition, d as createWrittenPoseTarget, C as cubicBezierEasing, r as dataRestPath, w as easeIn, T as easeInBack, E as easeInBounce, D as easeInCirc, O as easeInCubic, k as easeInElastic, A as easeInExpo, j as easeInOut, M as easeInOutBack, N as easeInOutBounce, P as easeInOutCirc, F as easeInOutCubic, I as easeInOutElastic, L as easeInOutExpo, R as easeInOutQuad, z as easeInOutQuart, B as easeInOutQuint, V as easeInOutSine, H as easeInQuad, U as easeInQuart, W as easeInQuint, G as easeInSine, K as easeOut, q as easeOutBack, J as easeOutBounce, Y as easeOutCirc, X as easeOutCubic, Z as easeOutElastic, Q as easeOutExpo, $ as easeOutQuad, ee as easeOutQuart, te as easeOutQuint, ne as easeOutSine, ae as hexToOklchDeg, oe as hslToSrgb, se as interpolateSrgb, ce as lerpColorArray, le as lerpOklab, ue as lerpOklch, re as linear, de as linearSrgbToOklab, fe as linearToSrgb, b as momentum, pe as oklabToLinearSrgb, me as oklabToOklch, he as oklabToSrgbU8, ge as oklchDegToHex, _e as oklchToOklab, s as placeSkeleton, t as poseAxes, ie as resolveEasing, c as rigFromNode, a as rigidRigApply, f as sceneClipTargets, n as scenePoseTarget, p as springPose, ve as srgbFloatToOklab, ye as srgbToHsl, be as srgbToLinear, xe as srgbU8ToOklab, m as staggerSpringPose, h as tweenPose, l as unplaceSkeleton, y as useAnimatedReflow, o as useRig, u as useRigNode };
@@ -1,50 +1,129 @@
1
- import { createTransformOp as e } from "../core/ops/transform.js";
2
- import { RECT_POSE_DESCRIPTOR as t } from "../core/geometry/poseDescriptor.js";
1
+ import { RECT_POSE_DESCRIPTOR as e } from "../core/geometry/poseDescriptor.js";
2
+ import { createTransformOp as t } from "../core/ops/transform.js";
3
+ import { rewindingSpring as n, rewindingTween as r } from "./rewind.js";
3
4
  //#region src/animation/poseHelpers.ts
4
- var n = (e) => `pose:${e}`;
5
- function r(t, n, r, i, a) {
6
- if (!t.applyOps) return;
7
- let o = e({
5
+ var i = (e) => `pose:${e}`;
6
+ function a(e, n, r, i, a) {
7
+ if (!e.applyOps) return;
8
+ let o = t({
8
9
  id: n,
9
10
  from: r,
10
11
  to: i,
11
12
  label: a
12
13
  });
13
- t.applyOps([o], a);
14
+ e.applyOps([o], a);
14
15
  }
15
- function i(e, i, a) {
16
- let o = a.geometry ?? t;
17
- if (!o.lerp) throw Error("tweenPose: geometry has no lerp; supply geometry: { ..., lerp }");
18
- let s = o.lerp, c = i.getPose(a.id), l = a.recordOp ?? !0, u = a.opLabel ?? "animate";
19
- return l && r(i, a.id, c, a.to, u), e.tween({
20
- from: c,
21
- to: a.to,
22
- ms: a.ms,
23
- easing: a.easing,
24
- cancelKey: n(a.id),
25
- interpolate: (e, t, n) => s(e, t, n),
26
- onTick: (e) => i.setPose(a.id, e),
27
- onDone: a.onDone
16
+ function o(t, n, o) {
17
+ let s = o.recordOp ?? !0, c = o.opLabel ?? "animate", l = i(o.id), u = n.poseTarget?.(o.id, o.geometry);
18
+ if (u) {
19
+ let e = u.committed();
20
+ s && a(n, o.id, e, o.to, c);
21
+ let i = o.geometry?.lerp;
22
+ return o.rewind ? r(t, u, {
23
+ start: e,
24
+ from: o.from ?? e,
25
+ to: o.to,
26
+ ms: o.ms,
27
+ easing: o.easing,
28
+ cancelKey: l,
29
+ interpolate: i && ((e, t, n) => i(e, t, n)),
30
+ onDone: o.onDone
31
+ }) : t.tween({
32
+ target: u,
33
+ from: o.from ?? e,
34
+ to: o.to,
35
+ ms: o.ms,
36
+ easing: o.easing,
37
+ cancelKey: l,
38
+ interrupt: !1,
39
+ interpolate: i && ((e, t, n) => i(e, t, n)),
40
+ onDone: o.onDone
41
+ });
42
+ }
43
+ let d = o.geometry ?? e;
44
+ if (!d.lerp) throw Error("tweenPose: geometry has no lerp; supply geometry: { ..., lerp }");
45
+ let f = d.lerp, p = n.getPose(o.id);
46
+ return s && a(n, o.id, p, o.to, c), t.tween({
47
+ from: o.from ?? p,
48
+ to: o.to,
49
+ ms: o.ms,
50
+ easing: o.easing,
51
+ cancelKey: l,
52
+ interpolate: (e, t, n) => f(e, t, n),
53
+ onTick: (e) => n.setPose(o.id, e),
54
+ onDone: o.onDone
28
55
  });
29
56
  }
30
- function a(e, i, a) {
31
- let o = a.geometry ?? t;
32
- if (!o.lerp) throw Error("springPose: geometry has no lerp; supply geometry: { ..., lerp }");
33
- let s = o.lerp, c = i.getPose(a.id), l = a.recordOp ?? !0, u = a.opLabel ?? "animate";
34
- return l && r(i, a.id, c, a.to, u), e.spring({
57
+ function s(t, r, o) {
58
+ let s = o.recordOp ?? !0, c = o.opLabel ?? "animate", l = i(o.id), u = r.poseTarget?.(o.id, o.geometry);
59
+ if (u) {
60
+ let e = u.read(), i = u.committed();
61
+ return s && a(r, o.id, i, o.to, c), o.rewind ? n(t, u, {
62
+ start: i,
63
+ from: e,
64
+ to: o.to,
65
+ cancelKey: l,
66
+ onDone: o.onDone,
67
+ tuning: {
68
+ preset: o.preset,
69
+ stiffness: o.stiffness,
70
+ damping: o.damping,
71
+ mass: o.mass
72
+ }
73
+ }) : t.spring({
74
+ target: u,
75
+ from: e,
76
+ to: o.to,
77
+ preset: o.preset,
78
+ stiffness: o.stiffness,
79
+ damping: o.damping,
80
+ mass: o.mass,
81
+ cancelKey: l,
82
+ onDone: o.onDone
83
+ });
84
+ }
85
+ let d = o.geometry ?? e;
86
+ if (!d.lerp) throw Error("springPose: geometry has no lerp; supply geometry: { ..., lerp }");
87
+ let f = d.lerp, p = r.getPose(o.id);
88
+ return s && a(r, o.id, p, o.to, c), t.spring({
35
89
  from: 0,
36
90
  to: 1,
37
- preset: a.preset,
38
- stiffness: a.stiffness,
39
- damping: a.damping,
40
- mass: a.mass,
41
- cancelKey: n(a.id),
91
+ preset: o.preset,
92
+ stiffness: o.stiffness,
93
+ damping: o.damping,
94
+ mass: o.mass,
95
+ cancelKey: l,
42
96
  interpolate: (e, t, n) => e + (t - e) * n,
43
- onTick: (e) => i.setPose(a.id, s(c, a.to, e)),
44
- onDone: a.onDone
97
+ onTick: (e) => r.setPose(o.id, f(p, o.to, e)),
98
+ onDone: o.onDone
99
+ });
100
+ }
101
+ function c(e) {
102
+ if (typeof e == "object" && e && "id" in e) {
103
+ let t = e.id;
104
+ if (typeof t == "string") return t;
105
+ }
106
+ if (typeof e == "string" || typeof e == "number") return String(e);
107
+ throw Error("staggerSpringPose: each item must either be a primitive (string/number) or have a string `id` field. Otherwise pose ids would collide.");
108
+ }
109
+ function l(e, t, n) {
110
+ return e.stagger(n.items, n.delay).each((r, i) => s(e, t, {
111
+ id: c(r),
112
+ to: n.to(r, i),
113
+ preset: n.preset,
114
+ stiffness: n.stiffness,
115
+ damping: n.damping,
116
+ mass: n.mass,
117
+ geometry: n.geometry,
118
+ recordOp: n.recordOp,
119
+ opLabel: n.opLabel,
120
+ rewind: n.rewind
121
+ }), {
122
+ cancelKey: n.cancelKey,
123
+ label: n.label
45
124
  });
46
125
  }
47
126
  //#endregion
48
- export { a as springPose, i as tweenPose };
127
+ export { i as poseKey, s as springPose, l as staggerSpringPose, o as tweenPose };
49
128
 
50
129
  //# sourceMappingURL=poseHelpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"poseHelpers.js","names":["cancelKeyFor","id","recordTransformOp","adapter","op","createTransformOp","label","tweenPose","geometry","opts","RECT_POSE_DESCRIPTOR","lerp","from","recordOp","animator","a","b","t","value","springPose","progress"],"sources":["../../src/animation/poseHelpers.ts"],"sourcesContent":["import { createTransformOp } from 'core/ops/transform';\nimport { RECT_POSE_DESCRIPTOR, type PoseDescriptor } from 'interactions/actions/resize/geometry';\nimport type { SceneAdapter } from 'core/adapters/types';\nimport type { AnimationHandle, Animator, EasingSpec, SpringPresetName } from './types';\n\n/** Options for `tweenPose`. */\nexport interface TweenPoseOptions<TPose> {\n id: string;\n to: TPose;\n ms: number;\n easing?: EasingSpec;\n /** Pose descriptor with a `lerp(from, to, t)` method. Defaults to\n * `RECT_POSE_DESCRIPTOR`, which interpolates x/y/width/height linearly. */\n geometry?: PoseDescriptor<TPose>;\n /** When true (default), emit a transform op before the tween so undo\n * restores the pre-animation pose. */\n recordOp?: boolean;\n /** Label for the recorded op. Default: `'animate'`. */\n opLabel?: string;\n onDone?: () => void;\n}\n\n/** Options for `springPose`. */\nexport interface SpringPoseOptions<TPose> {\n id: string;\n to: TPose;\n preset?: SpringPresetName;\n stiffness?: number;\n damping?: number;\n mass?: number;\n geometry?: PoseDescriptor<TPose>;\n recordOp?: boolean;\n opLabel?: string;\n onDone?: () => void;\n}\n\nconst cancelKeyFor = (id: string): string => `pose:${id}`;\n\nfunction recordTransformOp<TPose>(\n adapter: SceneAdapter<{ id: string }, TPose>,\n id: string,\n from: TPose,\n to: TPose,\n label: string,\n): void {\n if (!adapter.applyOps) return;\n const op = createTransformOp<TPose>({ id, from, to, label });\n adapter.applyOps([op], label);\n}\n\n/**\n * Animate one node's pose to `to` over `ms`, writing each frame through the\n * adapter.\n *\n * Unlike the color helpers this really does move the node. Undo therefore has\n * to be considered: by default a single transform op covering the whole\n * animation is recorded up front, so one undo returns the node to where it\n * started rather than replaying frames.\n */\nexport function tweenPose<TNode extends { id: string }, TPose>(\n animator: Animator,\n adapter: SceneAdapter<TNode, TPose>,\n opts: TweenPoseOptions<TPose>,\n): AnimationHandle {\n const geometry = (opts.geometry ?? (RECT_POSE_DESCRIPTOR as unknown as PoseDescriptor<TPose>));\n if (!geometry.lerp) {\n throw new Error('tweenPose: geometry has no lerp; supply geometry: { ..., lerp }');\n }\n const lerp = geometry.lerp;\n const from = adapter.getPose(opts.id);\n const recordOp = opts.recordOp ?? true;\n const label = opts.opLabel ?? 'animate';\n if (recordOp) recordTransformOp(adapter as never, opts.id, from, opts.to, label);\n return animator.tween<TPose>({\n from,\n to: opts.to,\n ms: opts.ms,\n easing: opts.easing,\n cancelKey: cancelKeyFor(opts.id),\n interpolate: (a, b, t) => lerp(a, b, t),\n onTick: (value) => adapter.setPose(opts.id, value),\n onDone: opts.onDone,\n });\n}\n\n/** `tweenPose` driven by a spring instead of a duration. Same op-recording\n * behavior. */\nexport function springPose<TNode extends { id: string }, TPose>(\n animator: Animator,\n adapter: SceneAdapter<TNode, TPose>,\n opts: SpringPoseOptions<TPose>,\n): AnimationHandle {\n const geometry = (opts.geometry ?? (RECT_POSE_DESCRIPTOR as unknown as PoseDescriptor<TPose>));\n if (!geometry.lerp) {\n throw new Error('springPose: geometry has no lerp; supply geometry: { ..., lerp }');\n }\n const lerp = geometry.lerp;\n const from = adapter.getPose(opts.id);\n const recordOp = opts.recordOp ?? true;\n const label = opts.opLabel ?? 'animate';\n if (recordOp) recordTransformOp(adapter as never, opts.id, from, opts.to, label);\n // For pose springs: integrate progress (0..1) as the spring's value, then\n // use lerp(from, to, progress) for the actual visual write. This avoids\n // requiring full add/subtract/scale/magnitude on TPose.\n const progressLerp = (a: number, b: number, t: number) => a + (b - a) * t;\n return animator.spring<number>({\n from: 0,\n to: 1,\n preset: opts.preset,\n stiffness: opts.stiffness,\n damping: opts.damping,\n mass: opts.mass,\n cancelKey: cancelKeyFor(opts.id),\n interpolate: progressLerp,\n onTick: (progress) => adapter.setPose(opts.id, lerp(from, opts.to, progress)),\n onDone: opts.onDone,\n });\n}\n"],"mappings":";;;AAoCA,IAAMA,KAAgB,MAAuB,QAAQC;AAErD,SAASC,EACP,GACA,GACA,GACA,GACA,GACM;CACN,IAAI,CAACC,EAAQ,UAAU;CACvB,IAAMC,IAAKC,EAAyB;EAAE;EAAI;EAAM;EAAI;CAAM,CAAC;CAC3D,EAAQ,SAAS,CAACD,CAAE,GAAGE,CAAK;AAC9B;AAWA,SAAgBC,EACd,GACA,GACA,GACiB;CACjB,IAAMC,IAAYC,EAAK,YAAaC;CACpC,IAAI,CAACF,EAAS,MACZ,MAAU,MAAM,iEAAiE;CAEnF,IAAMG,IAAOH,EAAS,MAChBI,IAAOT,EAAQ,QAAQM,EAAK,EAAE,GAC9BI,IAAWJ,EAAK,YAAY,IAC5BH,IAAQG,EAAK,WAAW;CAE9B,OADII,KAAUX,EAAkBC,GAAkBM,EAAK,IAAIG,GAAMH,EAAK,IAAIH,CAAK,GACxEQ,EAAS,MAAa;EAC3B;EACA,IAAIL,EAAK;EACT,IAAIA,EAAK;EACT,QAAQA,EAAK;EACb,WAAWT,EAAaS,EAAK,EAAE;EAC/B,cAAc,GAAG,GAAG,MAAME,EAAKI,GAAGC,GAAGC,CAAC;EACtC,SAAS,MAAUd,EAAQ,QAAQM,EAAK,IAAIS,CAAK;EACjD,QAAQT,EAAK;CACf,CAAC;AACH;AAIA,SAAgBU,EACd,GACA,GACA,GACiB;CACjB,IAAMX,IAAYC,EAAK,YAAaC;CACpC,IAAI,CAACF,EAAS,MACZ,MAAU,MAAM,kEAAkE;CAEpF,IAAMG,IAAOH,EAAS,MAChBI,IAAOT,EAAQ,QAAQM,EAAK,EAAE,GAC9BI,IAAWJ,EAAK,YAAY,IAC5BH,IAAQG,EAAK,WAAW;CAM9B,OALII,KAAUX,EAAkBC,GAAkBM,EAAK,IAAIG,GAAMH,EAAK,IAAIH,CAAK,GAKxEQ,EAAS,OAAe;EAC7B,MAAM;EACN,IAAI;EACJ,QAAQL,EAAK;EACb,WAAWA,EAAK;EAChB,SAASA,EAAK;EACd,MAAMA,EAAK;EACX,WAAWT,EAAaS,EAAK,EAAE;EAC/B,cAToB,GAAW,GAAW,MAAcM,KAAKC,IAAID,KAAKE;EAUtE,SAAS,MAAad,EAAQ,QAAQM,EAAK,IAAIE,EAAKC,GAAMH,EAAK,IAAIW,CAAQ,CAAC;EAC5E,QAAQX,EAAK;CACf,CAAC;AACH"}
1
+ {"version":3,"file":"poseHelpers.js","names":["poseKey","id","recordTransformOp","adapter","op","createTransformOp","label","tweenPose","recordOp","opts","cancelKey","target","committed","lerp","rewindingTween","animator","a","b","t","geometry","RECT_POSE_DESCRIPTOR","from","value","springPose","shown","rewindingSpring","progress","itemId","item","staggerSpringPose"],"sources":["../../src/animation/poseHelpers.ts"],"sourcesContent":["import { createTransformOp } from 'core/ops/transform';\nimport { RECT_POSE_DESCRIPTOR, type PoseDescriptor } from 'interactions/actions/resize/geometry';\nimport type { Op } from 'core/ops/types';\nimport type {\n AnimationHandle, Animator, EasingSpec, SpringPresetName, StaggerDelay, StaggerOptions,\n} from '@weasel-js/animator';\nimport type { Target } from '@weasel-js/animator';\nimport { rewindingSpring, rewindingTween } from './rewind';\n\n/** The part of an adapter `tweenPose` and `springPose` use. The adapter `sceneToAdapter` and\n * `useSceneAdapter` build is one. */\nexport interface PoseAnimationAdapter<TPose> {\n getPose(id: string): TPose;\n setPose(id: string, pose: TPose): void;\n applyOps?(ops: Op[], label: string): void;\n /** See `MoveAdapter.poseTarget`. */\n poseTarget?(id: string, descriptor?: PoseDescriptor<TPose>): Target<TPose> | undefined;\n}\n\n/** Options for `tweenPose`. */\nexport interface TweenPoseOptions<TPose> {\n id: string;\n to: TPose;\n /** Where the move appears to start. Default: where the node is. Nothing is written there. */\n from?: TPose;\n ms: number;\n easing?: EasingSpec;\n /** Supplies the pose's axes, and its `lerp` is the path the move follows. Without one the\n * adapter's own descriptor maps the pose and each axis travels in a straight line. */\n geometry?: PoseDescriptor<TPose>;\n /** When true (default), emit a transform op before the tween so undo\n * restores the pre-animation pose. */\n recordOp?: boolean;\n /** Label for the recorded op. Default: `'animate'`. */\n opLabel?: string;\n /**\n * When true, a move undone mid-flight travels back to where it began, and one redone\n * mid-way back turns forward again, where by default the node comes to rest on the written\n * pose at once. `onDone` is called only when the move arrives at `to`. Needs an adapter with\n * `poseTarget`. Default false.\n */\n rewind?: boolean;\n onDone?: () => void;\n}\n\n/** Options for `springPose`. */\nexport interface SpringPoseOptions<TPose> {\n id: string;\n to: TPose;\n preset?: SpringPresetName;\n stiffness?: number;\n damping?: number;\n mass?: number;\n geometry?: PoseDescriptor<TPose>;\n recordOp?: boolean;\n opLabel?: string;\n /** As `TweenPoseOptions.rewind`: undone mid-flight, it springs back to where it began from\n * where it is, at the speed it has. */\n rewind?: boolean;\n onDone?: () => void;\n}\n\n/** The cancel key every move of node `id`'s pose shares. */\nexport const poseKey = (id: string): string => `pose:${id}`;\n\nfunction recordTransformOp<TPose>(\n adapter: PoseAnimationAdapter<TPose>,\n id: string,\n from: TPose,\n to: TPose,\n label: string,\n): void {\n if (!adapter.applyOps) return;\n const op = createTransformOp<TPose>({ id, from, to, label });\n adapter.applyOps([op], label);\n}\n\n/**\n * Animate one node's pose to `to` over `ms`.\n *\n * On an adapter with `poseTarget`, the destination is committed as the move starts. A\n * scene-backed adapter shows the travel through the scene's pose overrides, so the document\n * holds `to` throughout and nothing is written per frame; a store with no overrides, behind\n * `createWrittenPoseTarget`, is written the pose on screen each frame and `to` as the move ends. Moves on one node add: a\n * second `tweenPose` bends the first toward its own destination and cancels nothing. They share\n * the key `pose:<id>` for `cancelKey`, `pauseKey`, and `isActive`.\n *\n * By default one transform op covering the whole move is recorded up front, so one undo\n * returns the node to where it started. Undone mid-flight, the node comes to rest on the\n * undone pose, or with `rewind` travels back to it.\n *\n * An adapter without `poseTarget`, and a pose its descriptor gives no axes for, keep the older\n * behavior: `setPose` is written each frame, and a new move on the node cancels the one running.\n */\nexport function tweenPose<TPose>(\n animator: Animator,\n adapter: PoseAnimationAdapter<TPose>,\n opts: TweenPoseOptions<TPose>,\n): AnimationHandle {\n const recordOp = opts.recordOp ?? true;\n const label = opts.opLabel ?? 'animate';\n const cancelKey = poseKey(opts.id);\n const target = adapter.poseTarget?.(opts.id, opts.geometry);\n if (target) {\n const committed = target.committed();\n if (recordOp) recordTransformOp(adapter, opts.id, committed, opts.to, label);\n const lerp = opts.geometry?.lerp;\n if (opts.rewind) {\n return rewindingTween(animator, target, {\n start: committed, from: opts.from ?? committed, to: opts.to, ms: opts.ms, easing: opts.easing,\n cancelKey, interpolate: lerp && ((a, b, t) => lerp(a, b, t)), onDone: opts.onDone,\n });\n }\n return animator.tween<TPose>({\n target,\n from: opts.from ?? committed,\n to: opts.to,\n ms: opts.ms,\n easing: opts.easing,\n cancelKey,\n interrupt: false,\n interpolate: lerp && ((a, b, t) => lerp(a, b, t)),\n onDone: opts.onDone,\n });\n }\n const geometry = (opts.geometry ?? (RECT_POSE_DESCRIPTOR as unknown as PoseDescriptor<TPose>));\n if (!geometry.lerp) {\n throw new Error('tweenPose: geometry has no lerp; supply geometry: { ..., lerp }');\n }\n const lerp = geometry.lerp;\n const from = adapter.getPose(opts.id);\n if (recordOp) recordTransformOp(adapter, opts.id, from, opts.to, label);\n return animator.tween<TPose>({\n from: opts.from ?? from,\n to: opts.to,\n ms: opts.ms,\n easing: opts.easing,\n cancelKey,\n interpolate: (a, b, t) => lerp(a, b, t),\n onTick: (value) => adapter.setPose(opts.id, value),\n onDone: opts.onDone,\n });\n}\n\n/**\n * `tweenPose` driven by a spring instead of a duration, with the same op recording.\n *\n * On an adapter with `poseTarget` it interrupts every move under `pose:<id>` and starts at\n * their velocity, from the pose on screen. Otherwise it falls back as `tweenPose` does.\n */\nexport function springPose<TPose>(\n animator: Animator,\n adapter: PoseAnimationAdapter<TPose>,\n opts: SpringPoseOptions<TPose>,\n): AnimationHandle {\n const recordOp = opts.recordOp ?? true;\n const label = opts.opLabel ?? 'animate';\n const cancelKey = poseKey(opts.id);\n const target = adapter.poseTarget?.(opts.id, opts.geometry);\n if (target) {\n // Read ahead of the op: the spring starts from the pose on screen, wherever that commit\n // and the interrupted moves leave the committed one.\n const shown = target.read();\n const committed = target.committed();\n if (recordOp) recordTransformOp(adapter, opts.id, committed, opts.to, label);\n if (opts.rewind) {\n return rewindingSpring(animator, target, {\n start: committed, from: shown, to: opts.to, cancelKey, onDone: opts.onDone,\n tuning: { preset: opts.preset, stiffness: opts.stiffness, damping: opts.damping, mass: opts.mass },\n });\n }\n return animator.spring<TPose>({\n target,\n from: shown,\n to: opts.to,\n preset: opts.preset,\n stiffness: opts.stiffness,\n damping: opts.damping,\n mass: opts.mass,\n cancelKey,\n onDone: opts.onDone,\n });\n }\n const geometry = (opts.geometry ?? (RECT_POSE_DESCRIPTOR as unknown as PoseDescriptor<TPose>));\n if (!geometry.lerp) {\n throw new Error('springPose: geometry has no lerp; supply geometry: { ..., lerp }');\n }\n const lerp = geometry.lerp;\n const from = adapter.getPose(opts.id);\n if (recordOp) recordTransformOp(adapter, opts.id, from, opts.to, label);\n // The spring integrates progress from 0 to 1, and lerp makes the pose from it.\n return animator.spring<number>({\n from: 0,\n to: 1,\n preset: opts.preset,\n stiffness: opts.stiffness,\n damping: opts.damping,\n mass: opts.mass,\n cancelKey,\n interpolate: (a, b, t) => a + (b - a) * t,\n onTick: (progress) => adapter.setPose(opts.id, lerp(from, opts.to, progress)),\n onDone: opts.onDone,\n });\n}\n\n/** Options for `staggerSpringPose`: the items and their delays, each item's destination, and\n * the spring tuning. `cancelKey` and `label` belong to the stagger as a whole; each item's\n * spring keeps its own `pose:<id>` key. */\nexport interface StaggerSpringPoseOptions<TItem, TPose> extends StaggerOptions {\n /** Each is a node id, or carries one in a string `id` field. */\n items: readonly TItem[];\n delay: StaggerDelay;\n to: (item: TItem, index: number) => TPose;\n preset?: SpringPresetName;\n stiffness?: number;\n damping?: number;\n mass?: number;\n geometry?: PoseDescriptor<TPose>;\n recordOp?: boolean;\n opLabel?: string;\n /** As `SpringPoseOptions.rewind`, for each item's spring. */\n rewind?: boolean;\n}\n\nfunction itemId(item: unknown): string {\n if (item != null && typeof item === 'object' && 'id' in item) {\n const id = (item as { id: unknown }).id;\n if (typeof id === 'string') return id;\n }\n if (typeof item === 'string' || typeof item === 'number') return String(item);\n throw new Error(\n 'staggerSpringPose: each item must either be a primitive (string/number) ' +\n 'or have a string `id` field. Otherwise pose ids would collide.',\n );\n}\n\n/** `springPose` for each of `items`, started `delay` apart as `animator.stagger` counts it. */\nexport function staggerSpringPose<TItem, TPose>(\n animator: Animator,\n adapter: PoseAnimationAdapter<TPose>,\n opts: StaggerSpringPoseOptions<TItem, TPose>,\n): AnimationHandle {\n return animator.stagger(opts.items, opts.delay).each(\n (item, i) =>\n springPose(animator, adapter, {\n id: itemId(item),\n to: opts.to(item, i),\n preset: opts.preset,\n stiffness: opts.stiffness,\n damping: opts.damping,\n mass: opts.mass,\n geometry: opts.geometry,\n recordOp: opts.recordOp,\n opLabel: opts.opLabel,\n rewind: opts.rewind,\n }),\n { cancelKey: opts.cancelKey, label: opts.label },\n );\n}\n"],"mappings":"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"}
@@ -0,0 +1,115 @@
1
+ import { documentPose as e } from "../core/scene/effectivePose.js";
2
+ import { RECT_POSE_DESCRIPTOR as t } from "../core/geometry/poseDescriptor.js";
3
+ import { axesOf as n, createTarget as r } from "@weasel-js/animator";
4
+ //#region src/animation/poseTarget.ts
5
+ function i(e, t) {
6
+ return e?.axes?.(t) ?? n(t);
7
+ }
8
+ var a = /* @__PURE__ */ new WeakMap();
9
+ function o(e) {
10
+ let t = a.get(e);
11
+ return t || (t = () => e.commit(), a.set(e, t)), t;
12
+ }
13
+ function s(e, t) {
14
+ let n = t(), r = i(e, n);
15
+ if (!r) return null;
16
+ let { count: a, angles: o } = r, s = () => {
17
+ let o = t();
18
+ if (o !== n) {
19
+ let t = i(e, o);
20
+ t && t.count === a && (r = t), n = o;
21
+ }
22
+ return r;
23
+ };
24
+ return {
25
+ count: a,
26
+ angles: o,
27
+ to: (e) => s().to(e),
28
+ from: (e) => s().from(e),
29
+ add: r.add && ((e, t) => {
30
+ let n = s();
31
+ return n.add ? n.add(e, t) : n.from(n.to(e).map((e, n) => e + t[n]));
32
+ }),
33
+ write: r.write && ((e, t, n) => {
34
+ let r = s();
35
+ r.write ? r.write(e, t, n) : r.to(e).forEach((e, r) => {
36
+ t[n + r] = e;
37
+ });
38
+ })
39
+ };
40
+ }
41
+ function c(e, t) {
42
+ let n = /* @__PURE__ */ new Map();
43
+ return (r) => {
44
+ let i = /* @__PURE__ */ new Set();
45
+ for (let [a, o] of r === null ? [] : t.beside(r)) {
46
+ let t = n.get(a);
47
+ if (!t) {
48
+ if (e.has(a)) continue;
49
+ n.set(a, t = {}), e.set(a, t);
50
+ }
51
+ t.pose = o, i.add(a);
52
+ }
53
+ for (let [t, r] of n) i.has(t) || (e.get(t) === r && e.clear(t), n.delete(t));
54
+ };
55
+ }
56
+ function l(e, t, n, i) {
57
+ let { overrides: a } = e, c = e.id, l = s(e.descriptor, e.get);
58
+ if (!l) return null;
59
+ let u = {}, d = !1, f = r({
60
+ get: e.get,
61
+ set: e.set,
62
+ axes: l,
63
+ show(e) {
64
+ if (f.active && n?.() && f.stop({ commit: !1 }), f.active) {
65
+ u.pose = e, d || a.set(c, u), d = !0, i?.(e);
66
+ return;
67
+ }
68
+ d = !1, a.get(c) === u && a.clear(c), i?.(null), t?.();
69
+ },
70
+ publish: o(a)
71
+ });
72
+ return f;
73
+ }
74
+ function u(e) {
75
+ let t = l(e);
76
+ if (!t) throw Error("createPoseTarget: this pose has no axes; give a descriptor whose `axes` maps it");
77
+ return t;
78
+ }
79
+ var d = /* @__PURE__ */ new WeakMap();
80
+ function f(e, t) {
81
+ if (e === t) return !0;
82
+ if (typeof e != "object" || typeof t != "object" || e === null || t === null) return !1;
83
+ let n = Object.keys(e);
84
+ return n.length === Object.keys(t).length && n.every((n) => e[n] === t[n]);
85
+ }
86
+ function p(n, r, a, o) {
87
+ let s = d.get(n.overrides);
88
+ s || (s = /* @__PURE__ */ new Map(), d.set(n.overrides, s));
89
+ let u = r, p = n.get(u), m = a ?? t, h = s.get(r), g = !h || h.active || !p || i(m, e(n, p))?.count === h.axisCount;
90
+ if (h && g) return h;
91
+ if (!p) return;
92
+ let _ = e(n, p), v, y = s, b = null;
93
+ if (b = l({
94
+ id: r,
95
+ descriptor: m,
96
+ overrides: n.overrides,
97
+ get() {
98
+ let t = n.get(u);
99
+ return t && (_ = e(n, t)), t && !b?.active && (v = t.pose), _;
100
+ },
101
+ set(e) {
102
+ let t = n.get(u);
103
+ t && (f(t.pose, e) || n.untracked(() => o ? o.write(e) : n.setPose(u, e)), v = n.get(u)?.pose);
104
+ }
105
+ }, () => {
106
+ n.get(u) || y.delete(r);
107
+ }, () => {
108
+ let e = n.get(u);
109
+ return !!e && v !== void 0 && !f(e.pose, v);
110
+ }, o && c(n.overrides, o)), b) return s.set(r, b), b;
111
+ }
112
+ //#endregion
113
+ export { u as createPoseTarget, s as liveAxes, i as poseAxes, p as scenePoseTarget };
114
+
115
+ //# sourceMappingURL=poseTarget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"poseTarget.js","names":["poseAxes","descriptor","like","axesOf","publishers","publisherOf","publish","overrides","liveAxes","get","axes","current","now","next","count","p","a","d","n","i","out","at","riders","riding","seen","id","beside","pose","cascade","entry","build","opts","installed","target","createTarget","overwritten","ride","onRest","createPoseTarget","sceneTargets","samePose","b","ka","k","scenePoseTarget","made","scene","nid","node","by","RECT_POSE_DESCRIPTOR","held","fits","documentPose","last","mine","cache"],"sources":["../../src/animation/poseTarget.ts"],"sourcesContent":["import { RECT_POSE_DESCRIPTOR, type PoseDescriptor } from '../core/geometry/poseDescriptor';\nimport { documentPose, type PoseSource } from '../core/scene/effectivePose';\nimport type { NodeId, PoseOverride, PoseOverrides } from '../core/scene/types';\nimport { axesOf } from '@weasel-js/animator';\nimport { createTarget, type Target, type TargetAxes } from '@weasel-js/animator';\n\n/** What {@link createPoseTarget} takes. */\nexport interface PoseTargetOptions<TPose> {\n /** The node whose pose it is. */\n id: string;\n /** The node's committed pose: where the document says it is. */\n get(): TPose;\n /** Commits a pose: an animation's destination as it starts, and where a canceled one stopped. */\n set(pose: TPose): void;\n /** Where the pose on screen is published while the node moves. */\n overrides: PoseOverrides<TPose>;\n /** Supplies the pose's axes through `PoseDescriptor.axes`. Without one, or where it answers\n * null, the pose has to be a number, an array of numbers, or an object of numeric fields. */\n descriptor?: PoseDescriptor<TPose>;\n}\n\n/** The part of a scene {@link scenePoseTarget} reads and writes. A `Scene` satisfies it. */\nexport interface PoseTargetScene<TPose> extends PoseSource<TPose> {\n readonly overrides: PoseOverrides<TPose>;\n setPose(id: NodeId, pose: TPose): void;\n untracked<T>(fn: () => T): T;\n}\n\n/** How `like`'s kind of pose maps to axes: the descriptor's own mapping, else its flat numeric\n * fields. Null for a pose with neither. */\nexport function poseAxes<TPose>(\n descriptor: PoseDescriptor<TPose> | undefined,\n like: TPose,\n): TargetAxes<TPose> | null {\n return descriptor?.axes?.(like) ?? (axesOf(like) as TargetAxes<TPose> | null);\n}\n\nconst publishers = new WeakMap<object, () => void>();\n\n/** One function per overrides table, so every target publishing into it shares one commit a frame. */\nfunction publisherOf<TPose>(overrides: PoseOverrides<TPose>): () => void {\n let publish = publishers.get(overrides);\n if (!publish) {\n publish = () => overrides.commit();\n publishers.set(overrides, publish);\n }\n return publish;\n}\n\n/**\n * `poseAxes` for the pose `get` answers, with `from` keeping the fields that are not axes as\n * that pose has them now. Reading them once would leave them stale in every pose a canceled\n * animation commits. Null where the pose has no axes.\n */\nexport function liveAxes<TPose>(\n descriptor: PoseDescriptor<TPose> | undefined,\n get: () => TPose,\n): TargetAxes<TPose> | null {\n let like = get();\n let axes = poseAxes(descriptor, like);\n if (!axes) return null;\n const { count, angles } = axes;\n const current = (): TargetAxes<TPose> => {\n const now = get();\n if (now !== like) {\n const next = poseAxes(descriptor, now);\n if (next && next.count === count) axes = next;\n like = now;\n }\n return axes!;\n };\n return {\n count,\n angles,\n to: (p) => current().to(p),\n from: (a) => current().from(a),\n add: axes.add && ((p, d) => {\n const now = current();\n if (now.add) return now.add(p, d);\n return now.from(now.to(p).map((n, i) => n + d[i]!));\n }),\n write: axes.write && ((p, out, at) => {\n const now = current();\n if (now.write) now.write(p, out, at);\n else now.to(p).forEach((n, i) => { out[at + i] = n; });\n }),\n };\n}\n\n/** How a container's pose target carries its descendants, for {@link scenePoseTarget}. */\nexport interface PoseCascade<TPose> {\n /** Commits `pose` to the container, moving its descendants' poses with it. */\n write(pose: TPose): void;\n /** The descendants, each at the pose to show it at while the container shows at `pose`. */\n beside(pose: TPose): Iterable<readonly [NodeId, TPose]>;\n}\n\n/** Shows a moving container's descendants through overrides of their own, and takes them back\n * as it rests. A descendant something else already overrides is left to it. */\nfunction riders<TPose>(overrides: PoseOverrides<TPose>, cascade: PoseCascade<TPose>): (pose: TPose | null) => void {\n const riding = new Map<NodeId, PoseOverride<TPose>>();\n return (pose) => {\n const seen = new Set<NodeId>();\n for (const [id, beside] of pose === null ? [] : cascade.beside(pose)) {\n let entry = riding.get(id);\n if (!entry) {\n if (overrides.has(id)) continue;\n riding.set(id, entry = {});\n overrides.set(id, entry);\n }\n entry.pose = beside;\n seen.add(id);\n }\n for (const [id, entry] of riding) {\n if (seen.has(id)) continue;\n if (overrides.get(id) === entry) overrides.clear(id);\n riding.delete(id);\n }\n };\n}\n\nfunction build<TPose>(\n opts: PoseTargetOptions<TPose>,\n onRest?: () => void,\n /** Whether something else has written the committed pose since an animation last did. */\n overwritten?: () => boolean,\n /** Told the pose on screen each time it is shown, and null as the node comes to rest. */\n ride?: (pose: TPose | null) => void,\n): Target<TPose> | null {\n const { overrides } = opts;\n const id = opts.id as NodeId;\n const axes = liveAxes(opts.descriptor, opts.get);\n if (!axes) return null;\n const entry: PoseOverride<TPose> = {};\n let installed = false;\n const target = createTarget<TPose>({\n get: opts.get,\n set: opts.set,\n axes,\n show(pose) {\n // The writer wins: what was left to travel belonged to a pose that is no longer committed.\n if (target.active && overwritten?.()) target.stop({ commit: false });\n if (target.active) {\n entry.pose = pose;\n // Installed once per run: an override laid over it since, a drag's, is not taken back.\n if (!installed) overrides.set(id, entry);\n installed = true;\n ride?.(pose);\n return;\n }\n installed = false;\n if (overrides.get(id) === entry) overrides.clear(id);\n ride?.(null);\n onRest?.();\n },\n publish: publisherOf(overrides),\n });\n return target;\n}\n\n/**\n * A {@link Target} over one node's pose. Animations on it commit their destination through\n * `set` as they start, and the pose on screen reaches the paint and pick walks as a pose\n * override: installed while the node moves and cleared when it comes to rest.\n *\n * Throws for a pose with no axes. Make one per node: two targets over one node do not add.\n * {@link scenePoseTarget} keeps that one for a scene's nodes.\n */\nexport function createPoseTarget<TPose>(opts: PoseTargetOptions<TPose>): Target<TPose> {\n const target = build(opts);\n if (!target) {\n throw new Error('createPoseTarget: this pose has no axes; give a descriptor whose `axes` maps it');\n }\n return target;\n}\n\nconst sceneTargets = new WeakMap<object, Map<string, Target<unknown>>>();\n\nfunction samePose(a: unknown, b: unknown): boolean {\n if (a === b) return true;\n if (typeof a !== 'object' || typeof b !== 'object' || a === null || b === null) return false;\n const ka = Object.keys(a);\n return ka.length === Object.keys(b).length\n && ka.every((k) => (a as Record<string, unknown>)[k] === (b as Record<string, unknown>)[k]);\n}\n\n/**\n * The pose target of node `id` in `scene`: the same one on every call, so everything animating\n * the node adds. Its committed value is the node's document pose, written without recording;\n * a caller that wants the move in history records its own op first.\n *\n * Undefined for a node that is not in the scene, or whose pose has no axes. `descriptor`\n * defaults to `RECT_POSE_DESCRIPTOR`. With `cascade`, for a container whose descendants hold\n * poses of their own, a commit goes through `cascade.write` and the descendants are shown\n * traveling beside the container. Both are read the first time a node's target is made.\n */\nexport function scenePoseTarget<TPose>(\n scene: PoseTargetScene<TPose>,\n id: string,\n descriptor?: PoseDescriptor<TPose>,\n cascade?: PoseCascade<TPose>,\n): Target<TPose> | undefined {\n let made = sceneTargets.get(scene.overrides);\n if (!made) {\n made = new Map();\n sceneTargets.set(scene.overrides, made);\n }\n const nid = id as NodeId;\n const node = scene.get(nid);\n const by = descriptor ?? (RECT_POSE_DESCRIPTOR as unknown as PoseDescriptor<TPose>);\n const held = made.get(id) as Target<TPose> | undefined;\n // A pose that has changed shape at rest, a polygon given more points, needs axes made for it.\n const fits = !held || held.active || !node\n || poseAxes(by, documentPose(scene, node))?.count === held.axisCount;\n if (held && fits) return held;\n if (!node) return undefined;\n // A node removed mid-flight keeps answering with the last pose it had.\n let last = documentPose(scene, node);\n /** The node's pose as an animation last left it, or as it was when the first one started. */\n let mine: TPose | undefined;\n const cache = made;\n let target: Target<TPose> | null = null;\n target = build<TPose>({\n id,\n descriptor: by,\n overrides: scene.overrides,\n get() {\n const n = scene.get(nid);\n if (n) last = documentPose(scene, n);\n if (n && !target?.active) mine = n.pose;\n return last;\n },\n set(pose) {\n const n = scene.get(nid);\n if (!n) return;\n if (!samePose(n.pose, pose)) scene.untracked(() => (cascade ? cascade.write(pose) : scene.setPose(nid, pose)));\n mine = scene.get(nid)?.pose;\n },\n }, () => {\n if (!scene.get(nid)) cache.delete(id);\n }, () => {\n const n = scene.get(nid);\n return !!n && mine !== undefined && !samePose(n.pose, mine);\n }, cascade && riders(scene.overrides, cascade));\n if (!target) return undefined;\n made.set(id, target as Target<unknown>);\n return target;\n}\n"],"mappings":";;;;AA8BA,SAAgBA,EACd,GACA,GAC0B;CAC1B,OAAOC,GAAY,OAAOC,CAAI,KAAMC,EAAOD,CAAI;AACjD;AAEA,IAAME,oBAAa,IAAI,QAA4B;AAGnD,SAASC,EAAmB,GAA6C;CACvE,IAAIC,IAAUF,EAAW,IAAIG,CAAS;CAKtC,OAJKD,MACH,UAAgBC,EAAU,OAAO,GACjCH,EAAW,IAAIG,GAAWD,CAAO,IAE5BA;AACT;AAOA,SAAgBE,EACd,GACA,GAC0B;CAC1B,IAAIN,IAAOO,EAAI,GACXC,IAAOV,EAASC,GAAYC,CAAI;CACpC,IAAI,CAACQ,GAAM,OAAO;CAClB,IAAM,EAAE,UAAO,cAAWA,GACpBC,UAAmC;EACvC,IAAMC,IAAMH,EAAI;EAChB,IAAIG,MAAQV,GAAM;GAChB,IAAMW,IAAOb,EAASC,GAAYW,CAAG;GAErC,AADIC,KAAQA,EAAK,UAAUC,MAAO,IAAOD,IACzC,IAAOD;EACT;EACA,OAAOF;CACT;CACA,OAAO;EACL;EACA;EACA,KAAK,MAAMC,EAAQ,CAAC,CAAC,GAAGI,CAAC;EACzB,OAAO,MAAMJ,EAAQ,CAAC,CAAC,KAAKK,CAAC;EAC7B,KAAKN,EAAK,SAAS,GAAG,MAAM;GAC1B,IAAME,IAAMD,EAAQ;GAEpB,OADIC,EAAI,MAAYA,EAAI,IAAIG,GAAGE,CAAC,IACzBL,EAAI,KAAKA,EAAI,GAAGG,CAAC,CAAC,CAAC,KAAK,GAAG,MAAMG,IAAID,EAAEE,EAAG,CAAC;EACpD;EACA,OAAOT,EAAK,WAAW,GAAG,GAAK,MAAO;GACpC,IAAME,IAAMD,EAAQ;GACpB,AAAIC,EAAI,QAAOA,EAAI,MAAMG,GAAGK,GAAKC,CAAE,IAC9BT,EAAI,GAAGG,CAAC,CAAC,CAAC,SAAS,GAAG,MAAM;IAAE,EAAIM,IAAKF,KAAKD;GAAG,CAAC;EACvD;CACF;AACF;AAYA,SAASI,EAAc,GAAiC,GAA2D;CACjH,IAAMC,oBAAS,IAAI,IAAiC;CACpD,QAAQ,MAAS;EACf,IAAMC,oBAAO,IAAI,IAAY;EAC7B,KAAK,IAAM,CAACC,GAAIC,MAAWC,MAAS,OAAO,CAAC,IAAIC,EAAQ,OAAOD,CAAI,GAAG;GACpE,IAAIE,IAAQN,EAAO,IAAIE,CAAE;GACzB,IAAI,CAACI,GAAO;IACV,IAAItB,EAAU,IAAIkB,CAAE,GAAG;IAEvB,AADAF,EAAO,IAAIE,GAAI,IAAQ,CAAC,CAAC,GACzBlB,EAAU,IAAIkB,GAAII,CAAK;GACzB;GAEA,AADA,EAAM,OAAOH,GACbF,EAAK,IAAIC,CAAE;EACb;EACA,KAAK,IAAM,CAACA,GAAII,MAAUN,GACxB,AAAIC,EAAK,IAAIC,CAAE,MACXlB,EAAU,IAAIkB,CAAE,MAAMI,KAAOtB,EAAU,MAAMkB,CAAE,GACnDF,EAAO,OAAOE,CAAE;CAEpB;AACF;AAEA,SAASK,EACP,GACA,GAEA,GAEA,GACsB;CACtB,IAAM,EAAE,iBAAcC,GAChBN,IAAKM,EAAK,IACVrB,IAAOF,EAASuB,EAAK,YAAYA,EAAK,GAAG;CAC/C,IAAI,CAACrB,GAAM,OAAO;CAClB,IAAMmB,IAA6B,CAAC,GAChCG,IAAY,IACVC,IAASC,EAAoB;EACjC,KAAKH,EAAK;EACV,KAAKA,EAAK;EACV;EACA,KAAK,GAAM;GAGT,IADIE,EAAO,UAAUE,IAAc,KAAGF,EAAO,KAAK,EAAE,QAAQ,GAAM,CAAC,GAC/DA,EAAO,QAAQ;IAKjB,AAJA,EAAM,OAAON,GAERK,KAAWzB,EAAU,IAAIkB,GAAII,CAAK,GACvC,IAAY,IACZO,IAAOT,CAAI;IACX;GACF;GAIA,AAHA,IAAY,IACRpB,EAAU,IAAIkB,CAAE,MAAMI,KAAOtB,EAAU,MAAMkB,CAAE,GACnDW,IAAO,IAAI,GACXC,IAAS;EACX;EACA,SAAShC,EAAYE,CAAS;CAChC,CAAC;CACD,OAAO0B;AACT;AAUA,SAAgBK,EAAwB,GAA+C;CACrF,IAAML,IAASH,EAAMC,CAAI;CACzB,IAAI,CAACE,GACH,MAAU,MAAM,iFAAiF;CAEnG,OAAOA;AACT;AAEA,IAAMM,oBAAe,IAAI,QAA8C;AAEvE,SAASC,EAAS,GAAY,GAAqB;CACjD,IAAIxB,MAAMyB,GAAG,OAAO;CACpB,IAAI,OAAOzB,KAAM,YAAY,OAAOyB,KAAM,YAAYzB,MAAM,QAAQyB,MAAM,MAAM,OAAO;CACvF,IAAMC,IAAK,OAAO,KAAK1B,CAAC;CACxB,OAAO0B,EAAG,WAAW,OAAO,KAAKD,CAAC,CAAC,CAAC,UAC/BC,EAAG,OAAO,MAAO1B,EAA8B2B,OAAQF,EAA8BE,EAAE;AAC9F;AAYA,SAAgBC,EACd,GACA,GACA,GACA,GAC2B;CAC3B,IAAIC,IAAON,EAAa,IAAIO,EAAM,SAAS;CAC3C,AAAKD,MACH,oBAAO,IAAI,IAAI,GACfN,EAAa,IAAIO,EAAM,WAAWD,CAAI;CAExC,IAAME,IAAMtB,GACNuB,IAAOF,EAAM,IAAIC,CAAG,GACpBE,IAAKhD,KAAeiD,GACpBC,IAAON,EAAK,IAAIpB,CAAE,GAElB2B,IAAO,CAACD,KAAQA,EAAK,UAAU,CAACH,KACjChD,EAASiD,GAAII,EAAaP,GAAOE,CAAI,CAAC,CAAC,EAAE,UAAUG,EAAK;CAC7D,IAAIA,KAAQC,GAAM,OAAOD;CACzB,IAAI,CAACH,GAAM;CAEX,IAAIM,IAAOD,EAAaP,GAAOE,CAAI,GAE/BO,GACEC,IAAQX,GACVZ,IAA+B;CAuBnC,IAtBA,IAASH,EAAa;EACpB;EACA,YAAYmB;EACZ,WAAWH,EAAM;EACjB,MAAM;GACJ,IAAM5B,IAAI4B,EAAM,IAAIC,CAAG;GAGvB,OAFI7B,MAAG,IAAOmC,EAAaP,GAAO5B,CAAC,IAC/BA,KAAK,CAACe,GAAQ,WAAQ,IAAOf,EAAE,OAC5BoC;EACT;EACA,IAAI,GAAM;GACR,IAAMpC,IAAI4B,EAAM,IAAIC,CAAG;GACvB,AAAK7B,MACAsB,EAAStB,EAAE,MAAMS,CAAI,KAAGmB,EAAM,gBAAiBlB,IAAUA,EAAQ,MAAMD,CAAI,IAAImB,EAAM,QAAQC,GAAKpB,CAAI,CAAE,GAC7G,IAAOmB,EAAM,IAAIC,CAAG,CAAC,EAAE;EACzB;CACF,SAAS;EACP,AAAKD,EAAM,IAAIC,CAAG,KAAGS,EAAM,OAAO/B,CAAE;CACtC,SAAS;EACP,IAAMP,IAAI4B,EAAM,IAAIC,CAAG;EACvB,OAAO,CAAC,CAAC7B,KAAKqC,MAAS,KAAA,KAAa,CAACf,EAAStB,EAAE,MAAMqC,CAAI;CAC5D,GAAG3B,KAAWN,EAAOwB,EAAM,WAAWlB,CAAO,CAAC,GACzCK,GAEL,OADAY,EAAK,IAAIpB,GAAIQ,CAAyB,GAC/BA;AACT"}
@@ -1,121 +1,151 @@
1
1
  import { documentPose as e, effectivePose as t } from "../core/scene/effectivePose.js";
2
2
  import { RECT_POSE_DESCRIPTOR as n } from "../core/geometry/poseDescriptor.js";
3
- import { useEffect as r, useMemo as i } from "react";
4
- import { useLatest as a } from "@weasel-js/react";
3
+ import { liveAxes as r } from "./poseTarget.js";
4
+ import { useEffect as i, useMemo as a } from "react";
5
+ import { useLatest as o } from "@weasel-js/react";
6
+ import { createTarget as s } from "@weasel-js/animator";
5
7
  //#region src/animation/reflow.ts
6
- var o = (e) => `reflow:${e}`;
7
- function s(e, t) {
8
+ var c = (e) => `reflow:${e}`;
9
+ function l(e, t) {
8
10
  if (Object.is(e, t)) return !0;
9
11
  if (typeof e != "object" || typeof t != "object" || e === null || t === null || Array.isArray(e) !== Array.isArray(t)) return !1;
10
12
  let n = Object.keys(e);
11
13
  if (n.length !== Object.keys(t).length) return !1;
12
- for (let r of n) if (!s(e[r], t[r])) return !1;
14
+ for (let r of n) if (!l(e[r], t[r])) return !1;
13
15
  return !0;
14
16
  }
15
- function c(r, i, a) {
16
- let c = /* @__PURE__ */ new Map(), l = !1, u = null, d = () => {
17
- u ||= i.onTick(() => {
18
- l && (l = !1, r.overrides.commit());
17
+ function u(i, a, o) {
18
+ let u = /* @__PURE__ */ new Map(), d = !1, f = null, p = () => {
19
+ f ||= a.onTick(() => {
20
+ d && (d = !1, i.overrides.commit());
19
21
  });
20
- }, f = () => {
21
- c.size > 0 || !u || (u(), u = null);
22
- }, p = (e, t) => {
23
- c.get(e) === t && c.delete(e);
22
+ }, m = () => {
23
+ u.size > 0 || !f || (f(), f = null);
24
+ }, h = (e, t) => {
25
+ u.get(e) === t && u.delete(e);
24
26
  let n = e;
25
- r.overrides.get(n) === t.entry && r.overrides.clear(n), l = !0;
26
- }, m = (e, t, c, u) => {
27
- let m = t.entry.pose;
28
- if (t.target = c, t.settling = u, s(m, c)) {
29
- t.handle?.cancel(), t.handle = null, t.entry.pose = c, u && p(e, t), r.overrides.commit(), f();
27
+ i.overrides.get(n) === t.entry && i.overrides.clear(n), d = !0;
28
+ }, g = (e, t, n, r) => {
29
+ let s = t.entry.pose;
30
+ if (t.settling = r, l(s, n)) {
31
+ a.cancelKey(c(e)), t.slot = n, t.entry.pose = n, r && h(e, t), i.overrides.commit(), m();
30
32
  return;
31
33
  }
32
- let h = a(), g = (h.geometry ?? n).lerp;
33
- if (!g) throw Error("useAnimatedReflow: geometry has no lerp; supply geometry: { ..., lerp }");
34
- let _ = (e) => {
35
- t.entry.pose = g(m, c, e), l = !0;
36
- }, v = () => {
37
- t.handle = null, t.settling && (p(e, t), f());
38
- }, y = o(e), b = h.label ?? "reflow";
39
- d(), t.handle = h.spring ? i.spring({
40
- from: 0,
41
- to: 1,
42
- ...h.spring,
43
- cancelKey: y,
44
- label: b,
45
- onTick: _,
46
- onDone: v
47
- }) : i.tween({
48
- from: 0,
49
- to: 1,
50
- ms: h.ms ?? 200,
51
- easing: h.easing,
52
- cancelKey: y,
53
- label: b,
54
- onTick: _,
55
- onDone: v
56
- }), r.overrides.commit();
57
- }, h = (e, t) => i.isActive(o(e)) || s(t.entry.pose, t.target), g = (e) => {
58
- let t = c.get(e);
59
- if (!t) return;
60
- c.delete(e), t.handle?.cancel();
61
- let n = e;
62
- r.overrides.get(n) === t.entry && (r.overrides.clear(n), r.overrides.commit()), f();
63
- }, _ = (e, n, i, a) => {
64
- if (i) a !== void 0 && (i.entry.pose = a);
34
+ if (t.target?.active && l(t.slot, n)) return;
35
+ let u = o(), f = u.geometry?.lerp, g = () => {
36
+ !t.target?.active && t.settling && (h(e, t), m());
37
+ }, _ = c(e), v = u.label ?? "reflow";
38
+ if (p(), t.target) u.spring ? a.spring({
39
+ target: t.target,
40
+ to: n,
41
+ ...u.spring,
42
+ cancelKey: _,
43
+ label: v,
44
+ onDone: g
45
+ }) : a.tween({
46
+ target: t.target,
47
+ to: n,
48
+ ms: u.ms ?? 200,
49
+ easing: u.easing,
50
+ cancelKey: _,
51
+ interrupt: !1,
52
+ label: v,
53
+ onDone: g,
54
+ interpolate: f && ((e, t, n) => f(e, t, n))
55
+ });
65
56
  else {
66
- let o = a ?? t(r, n);
67
- i = {
68
- entry: { pose: o },
69
- target: o,
70
- settling: !1,
71
- handle: null
72
- }, c.set(e, i);
57
+ if (!f) throw Error("useAnimatedReflow: this pose has no axes; supply geometry: { ..., lerp }");
58
+ t.slot = n;
59
+ let e = (e) => {
60
+ t.entry.pose = f(s, n, e), d = !0;
61
+ };
62
+ u.spring ? a.spring({
63
+ from: 0,
64
+ to: 1,
65
+ ...u.spring,
66
+ cancelKey: _,
67
+ label: v,
68
+ onTick: e,
69
+ onDone: g
70
+ }) : a.tween({
71
+ from: 0,
72
+ to: 1,
73
+ ms: u.ms ?? 200,
74
+ easing: u.easing,
75
+ cancelKey: _,
76
+ label: v,
77
+ onTick: e,
78
+ onDone: g
79
+ });
73
80
  }
74
- return r.overrides.get(e) !== i.entry && r.overrides.set(e, i.entry), i;
75
- };
81
+ i.overrides.commit();
82
+ }, _ = (e, t) => a.isActive(c(e)) || l(t.entry.pose, t.slot), v = (e) => {
83
+ let t = u.get(e);
84
+ if (!t) return;
85
+ u.delete(e), a.cancelKey(c(e));
86
+ let n = e;
87
+ i.overrides.get(n) === t.entry && (i.overrides.clear(n), i.overrides.commit()), m();
88
+ }, y = (e, t) => {
89
+ let i = {
90
+ entry: { pose: t },
91
+ slot: t,
92
+ settling: !1,
93
+ target: null
94
+ }, a = o().geometry ?? n, c = r(a, () => i.slot);
95
+ return c && (i.target = s({
96
+ axes: c,
97
+ get: () => i.slot,
98
+ set: (e) => {
99
+ i.slot = e;
100
+ },
101
+ show: (e) => {
102
+ i.entry.pose = e, d = !0;
103
+ }
104
+ })), u.set(e, i), i;
105
+ }, b = (e, n, r, o) => (r ? o !== void 0 && (a.cancelKey(c(e)), r.slot = o, r.entry.pose = o) : r = y(e, o ?? t(i, n)), i.overrides.get(e) !== r.entry && i.overrides.set(e, r.entry), r);
76
106
  return {
77
107
  glide(e, t, n) {
78
- let i = r.get(e);
79
- if (!i) return;
80
- let a = n?.from, o = c.get(e);
81
- o && a === void 0 && !o.settling && s(o.target, t) && h(e, o) || m(e, _(e, i, o, a), t, !1);
108
+ let r = i.get(e);
109
+ if (!r) return;
110
+ let a = n?.from, o = u.get(e);
111
+ o && a === void 0 && !o.settling && l(o.slot, t) && _(e, o) || g(e, b(e, r, o, a), t, !1);
82
112
  },
83
113
  settle(t, n) {
84
- let i = n?.from, a = c.get(t);
85
- if (!a && i === void 0) return;
86
- let o = r.get(t);
114
+ let r = n?.from, a = u.get(t);
115
+ if (!a && r === void 0) return;
116
+ let o = i.get(t);
87
117
  if (!o) {
88
- g(t);
118
+ v(t);
89
119
  return;
90
120
  }
91
- let l = e(r, o);
92
- if (a && i === void 0) {
93
- if (a.settling && s(a.target, l) && h(t, a)) return;
94
- m(t, a, l, !0);
121
+ let s = e(i, o);
122
+ if (a && r === void 0) {
123
+ if (a.settling && l(a.slot, s) && _(t, a)) return;
124
+ g(t, a, s, !0);
95
125
  return;
96
126
  }
97
- m(t, _(t, o, a, i), l, !0);
127
+ g(t, b(t, o, a, r), s, !0);
98
128
  },
99
- stop: g,
100
- poseOf: (e) => c.get(e)?.entry.pose,
129
+ stop: v,
130
+ poseOf: (e) => u.get(e)?.entry.pose,
101
131
  dispose() {
102
- for (let e of [...c.keys()]) g(e);
132
+ for (let e of [...u.keys()]) v(e);
103
133
  }
104
134
  };
105
135
  }
106
- function l(e, t, n = {}) {
107
- return c(e, t, () => n);
136
+ function d(e, t, n = {}) {
137
+ return u(e, t, () => n);
108
138
  }
109
- function u(e, t, n) {
110
- let o = a(n || {}), s = !!n, l = i(() => s ? c(e, t, () => o.current) : null, [
139
+ function f(e, t, n) {
140
+ let r = o(n || {}), s = !!n, c = a(() => s ? u(e, t, () => r.current) : null, [
111
141
  s,
112
142
  e,
113
143
  t,
114
- o
144
+ r
115
145
  ]);
116
- return r(() => () => l?.dispose(), [l]), l;
146
+ return i(() => () => c?.dispose(), [c]), c;
117
147
  }
118
148
  //#endregion
119
- export { l as createReflowTransition, u as useAnimatedReflow };
149
+ export { d as createReflowTransition, f as useAnimatedReflow };
120
150
 
121
151
  //# sourceMappingURL=reflow.js.map