@weasel-js/core 1.10.0 → 1.11.0

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 (1433) hide show
  1. package/CHANGELOG.md +755 -0
  2. package/README.md +45 -11
  3. package/dist/WeaselProvider.js +25 -9
  4. package/dist/WeaselProvider.js.map +1 -1
  5. package/dist/affordances/composeAffordanceLayer.js +217 -140
  6. package/dist/affordances/composeAffordanceLayer.js.map +1 -1
  7. package/dist/affordances/cornerResize.js +92 -50
  8. package/dist/affordances/cornerResize.js.map +1 -1
  9. package/dist/affordances/hitAffordanceRegions.js +152 -73
  10. package/dist/affordances/hitAffordanceRegions.js.map +1 -1
  11. package/dist/affordances/pathAnchors.js +148 -51
  12. package/dist/affordances/pathAnchors.js.map +1 -1
  13. package/dist/affordances/rotateCursor.js +18 -0
  14. package/dist/affordances/rotateCursor.js.map +1 -0
  15. package/dist/affordances/rotationHandle.js +83 -63
  16. package/dist/affordances/rotationHandle.js.map +1 -1
  17. package/dist/animation/behaviors/coast.js +20 -14
  18. package/dist/animation/behaviors/coast.js.map +1 -1
  19. package/dist/animation/behaviors/coastByWrite.js +98 -70
  20. package/dist/animation/behaviors/coastByWrite.js.map +1 -1
  21. package/dist/animation/behaviors/coastOnTargets.js +115 -67
  22. package/dist/animation/behaviors/coastOnTargets.js.map +1 -1
  23. package/dist/animation/behaviors/momentum.js +88 -53
  24. package/dist/animation/behaviors/momentum.js.map +1 -1
  25. package/dist/animation/clipTargets.js +14 -7
  26. package/dist/animation/clipTargets.js.map +1 -1
  27. package/dist/animation/departures.js +116 -0
  28. package/dist/animation/departures.js.map +1 -0
  29. package/dist/animation/index.js +18 -15
  30. package/dist/animation/poseHelpers.js +147 -107
  31. package/dist/animation/poseHelpers.js.map +1 -1
  32. package/dist/animation/poseTarget.js +158 -85
  33. package/dist/animation/poseTarget.js.map +1 -1
  34. package/dist/animation/poseTransition.js +64 -0
  35. package/dist/animation/poseTransition.js.map +1 -0
  36. package/dist/animation/reflow.js +208 -120
  37. package/dist/animation/reflow.js.map +1 -1
  38. package/dist/animation/rewind.js +76 -45
  39. package/dist/animation/rewind.js.map +1 -1
  40. package/dist/animation/rig/bindRig.js +135 -82
  41. package/dist/animation/rig/bindRig.js.map +1 -1
  42. package/dist/animation/rig/rigNode.js +120 -69
  43. package/dist/animation/rig/rigNode.js.map +1 -1
  44. package/dist/animation/rig/rigSeat.js +70 -17
  45. package/dist/animation/rig/rigSeat.js.map +1 -1
  46. package/dist/animation/rig/skinBinding.js +59 -39
  47. package/dist/animation/rig/skinBinding.js.map +1 -1
  48. package/dist/animation/rig/useRig.js +44 -30
  49. package/dist/animation/rig/useRig.js.map +1 -1
  50. package/dist/animation/wrappers/animateLifecycle.js +51 -35
  51. package/dist/animation/wrappers/animateLifecycle.js.map +1 -1
  52. package/dist/animation/wrappers/animateOnSetPose.js +55 -32
  53. package/dist/animation/wrappers/animateOnSetPose.js.map +1 -1
  54. package/dist/animation/wrappers/instantPose.js +13 -8
  55. package/dist/animation/wrappers/instantPose.js.map +1 -1
  56. package/dist/animation/writtenPoseTarget.js +44 -22
  57. package/dist/animation/writtenPoseTarget.js.map +1 -1
  58. package/dist/{autoPoseDescriptor-DHg5KqaJ.d.ts → autoPoseDescriptor-CZ1eXbzY.d.ts} +1 -1
  59. package/dist/barrel/canvas.js +41 -31
  60. package/dist/barrel/chrome.js +19 -16
  61. package/dist/barrel/icons.js +6 -0
  62. package/dist/barrel/input.js +19 -18
  63. package/dist/barrel/interactions.js +40 -38
  64. package/dist/barrel/paint.js +12 -11
  65. package/dist/barrel/paths.js +39 -12
  66. package/dist/barrel/renderer.js +24 -14
  67. package/dist/barrel/routing.js +69 -57
  68. package/dist/barrel/scene.js +48 -37
  69. package/dist/barrel/text.js +10 -9
  70. package/dist/barrel/viewport.js +47 -42
  71. package/dist/canvas/Canvas.js +189 -317
  72. package/dist/canvas/Canvas.js.map +1 -1
  73. package/dist/canvas/CanvasView.js +273 -202
  74. package/dist/canvas/CanvasView.js.map +1 -1
  75. package/dist/canvas/CursorCoordsHud.js +103 -64
  76. package/dist/canvas/CursorCoordsHud.js.map +1 -1
  77. package/dist/canvas/DrawCanvas.js +68 -41
  78. package/dist/canvas/DrawCanvas.js.map +1 -1
  79. package/dist/canvas/LeanSceneCanvas.js +23 -0
  80. package/dist/canvas/LeanSceneCanvas.js.map +1 -0
  81. package/dist/canvas/ModalityHud.js +58 -43
  82. package/dist/canvas/ModalityHud.js.map +1 -1
  83. package/dist/canvas/NodeShape.js +137 -60
  84. package/dist/canvas/NodeShape.js.map +1 -1
  85. package/dist/canvas/PickHud.js +77 -59
  86. package/dist/canvas/PickHud.js.map +1 -1
  87. package/dist/canvas/SceneCanvas/ActionsProviderIfRoot.js +9 -6
  88. package/dist/canvas/SceneCanvas/ActionsProviderIfRoot.js.map +1 -1
  89. package/dist/canvas/SceneCanvas/CanvasKitProviders.js +25 -0
  90. package/dist/canvas/SceneCanvas/CanvasKitProviders.js.map +1 -0
  91. package/dist/canvas/SceneCanvas/DepRegistryProviderIfRoot.js +10 -6
  92. package/dist/canvas/SceneCanvas/DepRegistryProviderIfRoot.js.map +1 -1
  93. package/dist/canvas/SceneCanvas/DevHuds.js +47 -32
  94. package/dist/canvas/SceneCanvas/DevHuds.js.map +1 -1
  95. package/dist/canvas/SceneCanvas/PointerProviderIfRoot.js +72 -36
  96. package/dist/canvas/SceneCanvas/PointerProviderIfRoot.js.map +1 -1
  97. package/dist/canvas/SceneCanvas/SceneCanvasInput.js +110 -0
  98. package/dist/canvas/SceneCanvas/SceneCanvasInput.js.map +1 -0
  99. package/dist/canvas/SceneCanvas/brushOverlay.js +36 -0
  100. package/dist/canvas/SceneCanvas/brushOverlay.js.map +1 -0
  101. package/dist/canvas/SceneCanvas/canvasPassThrough.js +72 -0
  102. package/dist/canvas/SceneCanvas/canvasPassThrough.js.map +1 -0
  103. package/dist/canvas/SceneCanvas/contributionFrameHooks.js +54 -32
  104. package/dist/canvas/SceneCanvas/contributionFrameHooks.js.map +1 -1
  105. package/dist/canvas/SceneCanvas/coordTrace.js +36 -29
  106. package/dist/canvas/SceneCanvas/coordTrace.js.map +1 -1
  107. package/dist/canvas/SceneCanvas/defaultNodeProperties.js +513 -316
  108. package/dist/canvas/SceneCanvas/defaultNodeProperties.js.map +1 -1
  109. package/dist/canvas/SceneCanvas/defaultNodeRouting.js +39 -13
  110. package/dist/canvas/SceneCanvas/defaultNodeRouting.js.map +1 -1
  111. package/dist/canvas/SceneCanvas/dispatcherGestureBounds.js +83 -47
  112. package/dist/canvas/SceneCanvas/dispatcherGestureBounds.js.map +1 -1
  113. package/dist/canvas/SceneCanvas/features.js +83 -127
  114. package/dist/canvas/SceneCanvas/features.js.map +1 -1
  115. package/dist/canvas/SceneCanvas/insertPreviewCommands.js +115 -0
  116. package/dist/canvas/SceneCanvas/insertPreviewCommands.js.map +1 -0
  117. package/dist/canvas/SceneCanvas/mergeLayers.js +43 -0
  118. package/dist/canvas/SceneCanvas/mergeLayers.js.map +1 -0
  119. package/dist/canvas/SceneCanvas/namedPresets.js +56 -0
  120. package/dist/canvas/SceneCanvas/namedPresets.js.map +1 -0
  121. package/dist/canvas/SceneCanvas/poseGeometry.js +66 -31
  122. package/dist/canvas/SceneCanvas/poseGeometry.js.map +1 -1
  123. package/dist/canvas/SceneCanvas/poseRegistrars.js +18 -8
  124. package/dist/canvas/SceneCanvas/poseRegistrars.js.map +1 -1
  125. package/dist/canvas/SceneCanvas/presets/arrange.js +27 -0
  126. package/dist/canvas/SceneCanvas/presets/arrange.js.map +1 -0
  127. package/dist/canvas/SceneCanvas/presets/chrome.js +14 -0
  128. package/dist/canvas/SceneCanvas/presets/chrome.js.map +1 -0
  129. package/dist/canvas/SceneCanvas/presets/edit.js +59 -0
  130. package/dist/canvas/SceneCanvas/presets/edit.js.map +1 -0
  131. package/dist/canvas/SceneCanvas/presets/ingest.js +13 -0
  132. package/dist/canvas/SceneCanvas/presets/ingest.js.map +1 -0
  133. package/dist/canvas/SceneCanvas/presets/paths.js +67 -0
  134. package/dist/canvas/SceneCanvas/presets/paths.js.map +1 -0
  135. package/dist/canvas/SceneCanvas/presets/select.js +19 -0
  136. package/dist/canvas/SceneCanvas/presets/select.js.map +1 -0
  137. package/dist/canvas/SceneCanvas/presets/toolDriven.js +20 -0
  138. package/dist/canvas/SceneCanvas/presets/toolDriven.js.map +1 -0
  139. package/dist/canvas/SceneCanvas/presets/transform.js +41 -0
  140. package/dist/canvas/SceneCanvas/presets/transform.js.map +1 -0
  141. package/dist/canvas/SceneCanvas/presets/view.js +14 -0
  142. package/dist/canvas/SceneCanvas/presets/view.js.map +1 -0
  143. package/dist/canvas/SceneCanvas/props.js +19 -35
  144. package/dist/canvas/SceneCanvas/props.js.map +1 -1
  145. package/dist/canvas/SceneCanvas/scenePointQuery.js +58 -0
  146. package/dist/canvas/SceneCanvas/scenePointQuery.js.map +1 -0
  147. package/dist/canvas/SceneCanvas/shapeGeneratorProperties.js +59 -0
  148. package/dist/canvas/SceneCanvas/shapeGeneratorProperties.js.map +1 -0
  149. package/dist/canvas/SceneCanvas/toolRegistry.js +30 -15
  150. package/dist/canvas/SceneCanvas/toolRegistry.js.map +1 -1
  151. package/dist/canvas/SceneCanvas/useActionTunings.js +20 -0
  152. package/dist/canvas/SceneCanvas/useActionTunings.js.map +1 -0
  153. package/dist/canvas/SceneCanvas/useActionsPropResolver.js +68 -35
  154. package/dist/canvas/SceneCanvas/useActionsPropResolver.js.map +1 -1
  155. package/dist/canvas/SceneCanvas/useBakedScene.js +17 -0
  156. package/dist/canvas/SceneCanvas/useBakedScene.js.map +1 -0
  157. package/dist/canvas/SceneCanvas/useBuiltinRigTools.js +65 -0
  158. package/dist/canvas/SceneCanvas/useBuiltinRigTools.js.map +1 -0
  159. package/dist/canvas/SceneCanvas/useBuiltinShapeTools.js +47 -23
  160. package/dist/canvas/SceneCanvas/useBuiltinShapeTools.js.map +1 -1
  161. package/dist/canvas/SceneCanvas/useBuiltinTools.js +29 -14
  162. package/dist/canvas/SceneCanvas/useBuiltinTools.js.map +1 -1
  163. package/dist/canvas/SceneCanvas/useCanvasCamera.js +55 -32
  164. package/dist/canvas/SceneCanvas/useCanvasCamera.js.map +1 -1
  165. package/dist/canvas/SceneCanvas/useCanvasDispatcher.js +24 -14
  166. package/dist/canvas/SceneCanvas/useCanvasDispatcher.js.map +1 -1
  167. package/dist/canvas/SceneCanvas/useCanvasSelection.js +30 -12
  168. package/dist/canvas/SceneCanvas/useCanvasSelection.js.map +1 -1
  169. package/dist/canvas/SceneCanvas/useCanvasTools.js +112 -53
  170. package/dist/canvas/SceneCanvas/useCanvasTools.js.map +1 -1
  171. package/dist/canvas/SceneCanvas/useChromeAffordances.js +31 -0
  172. package/dist/canvas/SceneCanvas/useChromeAffordances.js.map +1 -0
  173. package/dist/canvas/SceneCanvas/useContributionRoles.js +107 -56
  174. package/dist/canvas/SceneCanvas/useContributionRoles.js.map +1 -1
  175. package/dist/canvas/SceneCanvas/useDepartureGhostLayer.js +64 -0
  176. package/dist/canvas/SceneCanvas/useDepartureGhostLayer.js.map +1 -0
  177. package/dist/canvas/SceneCanvas/useDispatcherOverlayLayer.js +105 -136
  178. package/dist/canvas/SceneCanvas/useDispatcherOverlayLayer.js.map +1 -1
  179. package/dist/canvas/SceneCanvas/useHeldModifiers.js +21 -14
  180. package/dist/canvas/SceneCanvas/useHeldModifiers.js.map +1 -1
  181. package/dist/canvas/SceneCanvas/useNodeAtPoint.js +21 -19
  182. package/dist/canvas/SceneCanvas/useNodeAtPoint.js.map +1 -1
  183. package/dist/canvas/SceneCanvas/useNodeKinds.js +28 -19
  184. package/dist/canvas/SceneCanvas/useNodeKinds.js.map +1 -1
  185. package/dist/canvas/SceneCanvas/usePreviewGhostLayer.js +93 -53
  186. package/dist/canvas/SceneCanvas/usePreviewGhostLayer.js.map +1 -1
  187. package/dist/canvas/SceneCanvas/useSceneCanvasHandle.js +62 -35
  188. package/dist/canvas/SceneCanvas/useSceneCanvasHandle.js.map +1 -1
  189. package/dist/canvas/SceneCanvas/useSceneCanvasLayers.js +110 -50
  190. package/dist/canvas/SceneCanvas/useSceneCanvasLayers.js.map +1 -1
  191. package/dist/canvas/SceneCanvas/useSceneCanvasPathEdit.js +30 -0
  192. package/dist/canvas/SceneCanvas/useSceneCanvasPathEdit.js.map +1 -0
  193. package/dist/canvas/SceneCanvas/useSceneCanvasTools.js +40 -0
  194. package/dist/canvas/SceneCanvas/useSceneCanvasTools.js.map +1 -0
  195. package/dist/canvas/SceneCanvas/useSceneChrome.js +100 -44
  196. package/dist/canvas/SceneCanvas/useSceneChrome.js.map +1 -1
  197. package/dist/canvas/SceneCanvas/useSceneGestureDispatcher.js +163 -0
  198. package/dist/canvas/SceneCanvas/useSceneGestureDispatcher.js.map +1 -0
  199. package/dist/canvas/SceneCanvas/useScenePicking.js +69 -0
  200. package/dist/canvas/SceneCanvas/useScenePicking.js.map +1 -0
  201. package/dist/canvas/SceneCanvas/useSceneRedrawSources.js +28 -17
  202. package/dist/canvas/SceneCanvas/useSceneRedrawSources.js.map +1 -1
  203. package/dist/canvas/SceneCanvas/useSceneSelectTool.js +158 -111
  204. package/dist/canvas/SceneCanvas/useSceneSelectTool.js.map +1 -1
  205. package/dist/canvas/SceneCanvas/useSceneSlotLayers.js +38 -26
  206. package/dist/canvas/SceneCanvas/useSceneSlotLayers.js.map +1 -1
  207. package/dist/canvas/SceneCanvas/useSceneStandardActions.js +108 -0
  208. package/dist/canvas/SceneCanvas/useSceneStandardActions.js.map +1 -0
  209. package/dist/canvas/SceneCanvas/useSelectionOverlayLayer.js +40 -27
  210. package/dist/canvas/SceneCanvas/useSelectionOverlayLayer.js.map +1 -1
  211. package/dist/canvas/SceneCanvas/useSurfaceRouting.js +29 -0
  212. package/dist/canvas/SceneCanvas/useSurfaceRouting.js.map +1 -0
  213. package/dist/canvas/SceneCanvas/useSurfaceViewInputs.js +44 -0
  214. package/dist/canvas/SceneCanvas/useSurfaceViewInputs.js.map +1 -0
  215. package/dist/canvas/SceneCanvas/useToolKeybindings.js +28 -0
  216. package/dist/canvas/SceneCanvas/useToolKeybindings.js.map +1 -0
  217. package/dist/canvas/SceneCanvas/useViewportActions.js +52 -28
  218. package/dist/canvas/SceneCanvas/useViewportActions.js.map +1 -1
  219. package/dist/canvas/SceneCanvas/worldPointAt.js +10 -5
  220. package/dist/canvas/SceneCanvas/worldPointAt.js.map +1 -1
  221. package/dist/canvas/SceneCanvas.js +274 -315
  222. package/dist/canvas/SceneCanvas.js.map +1 -1
  223. package/dist/canvas/SceneViewCanvas.js +68 -42
  224. package/dist/canvas/SceneViewCanvas.js.map +1 -1
  225. package/dist/canvas/SurfaceCanvas.js +62 -0
  226. package/dist/canvas/SurfaceCanvas.js.map +1 -0
  227. package/dist/canvas/accentColor.js +8 -5
  228. package/dist/canvas/accentColor.js.map +1 -1
  229. package/dist/canvas/adapterDerivedPath.js +33 -18
  230. package/dist/canvas/adapterDerivedPath.js.map +1 -1
  231. package/dist/canvas/adapterPickSource.js +60 -0
  232. package/dist/canvas/adapterPickSource.js.map +1 -0
  233. package/dist/canvas/affordanceAt.js +106 -50
  234. package/dist/canvas/affordanceAt.js.map +1 -1
  235. package/dist/canvas/buildSceneLayer.js +111 -80
  236. package/dist/canvas/buildSceneLayer.js.map +1 -1
  237. package/dist/canvas/buildSceneTree.js +110 -46
  238. package/dist/canvas/buildSceneTree.js.map +1 -1
  239. package/dist/canvas/canvasRenderer.js +156 -71
  240. package/dist/canvas/canvasRenderer.js.map +1 -1
  241. package/dist/canvas/colorOverrides.js +18 -10
  242. package/dist/canvas/colorOverrides.js.map +1 -1
  243. package/dist/canvas/copiesAbove.js +37 -0
  244. package/dist/canvas/copiesAbove.js.map +1 -0
  245. package/dist/canvas/defaultDrawOne.js +56 -31
  246. package/dist/canvas/defaultDrawOne.js.map +1 -1
  247. package/dist/canvas/deps/areaSelect.js +30 -12
  248. package/dist/canvas/deps/areaSelect.js.map +1 -1
  249. package/dist/canvas/deps/booleans.js +104 -0
  250. package/dist/canvas/deps/booleans.js.map +1 -0
  251. package/dist/canvas/deps/changes.js +17 -9
  252. package/dist/canvas/deps/changes.js.map +1 -1
  253. package/dist/canvas/deps/debug.js +12 -5
  254. package/dist/canvas/deps/debug.js.map +1 -1
  255. package/dist/canvas/deps/dispatchSources.js +27 -0
  256. package/dist/canvas/deps/dispatchSources.js.map +1 -0
  257. package/dist/canvas/deps/dispatcher.js +18 -7
  258. package/dist/canvas/deps/dispatcher.js.map +1 -1
  259. package/dist/canvas/deps/editAnchors.js +253 -68
  260. package/dist/canvas/deps/editAnchors.js.map +1 -1
  261. package/dist/canvas/deps/geometryProjection.js +13 -7
  262. package/dist/canvas/deps/geometryProjection.js.map +1 -1
  263. package/dist/canvas/deps/hitTestArea.js +80 -40
  264. package/dist/canvas/deps/hitTestArea.js.map +1 -1
  265. package/dist/canvas/deps/ingestion.js +18 -13
  266. package/dist/canvas/deps/ingestion.js.map +1 -1
  267. package/dist/canvas/deps/insert.js +205 -111
  268. package/dist/canvas/deps/insert.js.map +1 -1
  269. package/dist/canvas/deps/kitSettings.js +16 -0
  270. package/dist/canvas/deps/kitSettings.js.map +1 -0
  271. package/dist/canvas/deps/lassoSelect.js +25 -13
  272. package/dist/canvas/deps/lassoSelect.js.map +1 -1
  273. package/dist/canvas/deps/layout.js +32 -26
  274. package/dist/canvas/deps/layout.js.map +1 -1
  275. package/dist/canvas/deps/nodeAtPoint.js +28 -14
  276. package/dist/canvas/deps/nodeAtPoint.js.map +1 -1
  277. package/dist/canvas/deps/pathLeaf.js +66 -0
  278. package/dist/canvas/deps/pathLeaf.js.map +1 -0
  279. package/dist/canvas/deps/pathLeafDeps.js +13 -0
  280. package/dist/canvas/deps/pathLeafDeps.js.map +1 -0
  281. package/dist/canvas/deps/poseDescriptor.js +10 -8
  282. package/dist/canvas/deps/poseDescriptor.js.map +1 -1
  283. package/dist/canvas/deps/previewPaths.js +44 -0
  284. package/dist/canvas/deps/previewPaths.js.map +1 -0
  285. package/dist/canvas/deps/resizePolicy.js +32 -25
  286. package/dist/canvas/deps/resizePolicy.js.map +1 -1
  287. package/dist/canvas/deps/slice.js +73 -87
  288. package/dist/canvas/deps/slice.js.map +1 -1
  289. package/dist/canvas/deps/snap.js +58 -7
  290. package/dist/canvas/deps/snap.js.map +1 -1
  291. package/dist/canvas/deps/surface.js +30 -0
  292. package/dist/canvas/deps/surface.js.map +1 -0
  293. package/dist/canvas/deps/textEdit.js +21 -13
  294. package/dist/canvas/deps/textEdit.js.map +1 -1
  295. package/dist/canvas/deps/view.js +46 -34
  296. package/dist/canvas/deps/view.js.map +1 -1
  297. package/dist/canvas/derivedPath.js +158 -50
  298. package/dist/canvas/derivedPath.js.map +1 -1
  299. package/dist/canvas/doubleClickTarget.js +20 -0
  300. package/dist/canvas/doubleClickTarget.js.map +1 -0
  301. package/dist/canvas/drawEnvelope.js +26 -17
  302. package/dist/canvas/drawEnvelope.js.map +1 -1
  303. package/dist/canvas/drawnBounds.js +116 -0
  304. package/dist/canvas/drawnBounds.js.map +1 -0
  305. package/dist/canvas/getNodeAtPoint.js +11 -8
  306. package/dist/canvas/getNodeAtPoint.js.map +1 -1
  307. package/dist/canvas/hostAnchor.js +35 -18
  308. package/dist/canvas/hostAnchor.js.map +1 -1
  309. package/dist/canvas/hud.module.js +25 -14
  310. package/dist/canvas/hud.module.js.map +1 -1
  311. package/dist/canvas/insertPreviewExtent.js +81 -58
  312. package/dist/canvas/insertPreviewExtent.js.map +1 -1
  313. package/dist/canvas/kitRequirements.js +154 -115
  314. package/dist/canvas/kitRequirements.js.map +1 -1
  315. package/dist/canvas/layerHover.js +28 -0
  316. package/dist/canvas/layerHover.js.map +1 -0
  317. package/dist/canvas/layerOrder.js +107 -57
  318. package/dist/canvas/layerOrder.js.map +1 -1
  319. package/dist/canvas/layerSlots.js +16 -9
  320. package/dist/canvas/layerSlots.js.map +1 -1
  321. package/dist/canvas/mountedCanvases.js +23 -13
  322. package/dist/canvas/mountedCanvases.js.map +1 -1
  323. package/dist/canvas/nodeShapes/derivedPainter.js +65 -25
  324. package/dist/canvas/nodeShapes/derivedPainter.js.map +1 -1
  325. package/dist/canvas/nodeShapes/imagePainter.js +69 -53
  326. package/dist/canvas/nodeShapes/imagePainter.js.map +1 -1
  327. package/dist/canvas/nodeShapes/measurePainter.js +58 -0
  328. package/dist/canvas/nodeShapes/measurePainter.js.map +1 -0
  329. package/dist/canvas/nodeShapes/memo.js +16 -5
  330. package/dist/canvas/nodeShapes/memo.js.map +1 -1
  331. package/dist/canvas/nodeShapes/nodePaint.js +125 -46
  332. package/dist/canvas/nodeShapes/nodePaint.js.map +1 -1
  333. package/dist/canvas/nodeShapes/pathPainter.js +41 -27
  334. package/dist/canvas/nodeShapes/pathPainter.js.map +1 -1
  335. package/dist/canvas/nodeShapes/poseBox.js +20 -13
  336. package/dist/canvas/nodeShapes/poseBox.js.map +1 -1
  337. package/dist/canvas/nodeShapes/rectFallbackPainter.js +26 -22
  338. package/dist/canvas/nodeShapes/rectFallbackPainter.js.map +1 -1
  339. package/dist/canvas/nodeShapes/shapePainter.js +67 -46
  340. package/dist/canvas/nodeShapes/shapePainter.js.map +1 -1
  341. package/dist/canvas/nodeShapes/strokedBounds.js +177 -0
  342. package/dist/canvas/nodeShapes/strokedBounds.js.map +1 -0
  343. package/dist/canvas/nodeShapes/textPainter.js +170 -37
  344. package/dist/canvas/nodeShapes/textPainter.js.map +1 -1
  345. package/dist/canvas/overChildren.js +40 -0
  346. package/dist/canvas/overChildren.js.map +1 -0
  347. package/dist/canvas/overlayRoleStrokes.js +20 -3
  348. package/dist/canvas/overlayRoleStrokes.js.map +1 -1
  349. package/dist/canvas/paintCull.js +24 -12
  350. package/dist/canvas/paintCull.js.map +1 -1
  351. package/dist/canvas/paintedCursorLayer.js +59 -35
  352. package/dist/canvas/paintedCursorLayer.js.map +1 -1
  353. package/dist/canvas/pathOverlay.js +63 -0
  354. package/dist/canvas/pathOverlay.js.map +1 -0
  355. package/dist/canvas/pickReach.js +40 -0
  356. package/dist/canvas/pickReach.js.map +1 -0
  357. package/dist/canvas/pickWalk.js +150 -130
  358. package/dist/canvas/pickWalk.js.map +1 -1
  359. package/dist/canvas/planeClips.js +39 -22
  360. package/dist/canvas/planeClips.js.map +1 -1
  361. package/dist/canvas/poseCascade.js +51 -27
  362. package/dist/canvas/poseCascade.js.map +1 -1
  363. package/dist/canvas/poseRotation.js +24 -14
  364. package/dist/canvas/poseRotation.js.map +1 -1
  365. package/dist/canvas/rasterReadback.js +23 -15
  366. package/dist/canvas/rasterReadback.js.map +1 -1
  367. package/dist/canvas/rasterToPng.js +21 -15
  368. package/dist/canvas/rasterToPng.js.map +1 -1
  369. package/dist/canvas/renderDebugSnapshot.js +36 -19
  370. package/dist/canvas/renderDebugSnapshot.js.map +1 -1
  371. package/dist/canvas/renderNeeds.js +33 -18
  372. package/dist/canvas/renderNeeds.js.map +1 -1
  373. package/dist/canvas/renderSceneToPixels.js +202 -87
  374. package/dist/canvas/renderSceneToPixels.js.map +1 -1
  375. package/dist/canvas/sceneAdapter.js +96 -96
  376. package/dist/canvas/sceneAdapter.js.map +1 -1
  377. package/dist/canvas/sceneClipboard.js +141 -92
  378. package/dist/canvas/sceneClipboard.js.map +1 -1
  379. package/dist/canvas/sceneLayerPaint.js +56 -27
  380. package/dist/canvas/sceneLayerPaint.js.map +1 -1
  381. package/dist/canvas/sceneSlotWiring.js +24 -13
  382. package/dist/canvas/sceneSlotWiring.js.map +1 -1
  383. package/dist/canvas/sceneViewRender.js +85 -55
  384. package/dist/canvas/sceneViewRender.js.map +1 -1
  385. package/dist/canvas/slopsDebugLayer.js +58 -49
  386. package/dist/canvas/slopsDebugLayer.js.map +1 -1
  387. package/dist/canvas/surfaceContribution.js +22 -10
  388. package/dist/canvas/surfaceContribution.js.map +1 -1
  389. package/dist/canvas/useCanvasElements.js +31 -0
  390. package/dist/canvas/useCanvasElements.js.map +1 -0
  391. package/dist/canvas/useCanvasHandle.js +69 -0
  392. package/dist/canvas/useCanvasHandle.js.map +1 -0
  393. package/dist/canvas/useCanvasPaint.js +91 -0
  394. package/dist/canvas/useCanvasPaint.js.map +1 -0
  395. package/dist/canvas/useCanvasRenderer.js +45 -23
  396. package/dist/canvas/useCanvasRenderer.js.map +1 -1
  397. package/dist/canvas/useCanvasSurface.js +41 -23
  398. package/dist/canvas/useCanvasSurface.js.map +1 -1
  399. package/dist/canvas/useCanvasView.js +80 -50
  400. package/dist/canvas/useCanvasView.js.map +1 -1
  401. package/dist/canvas/useClientToWorld.js +27 -0
  402. package/dist/canvas/useClientToWorld.js.map +1 -0
  403. package/dist/canvas/useExtraLayers.js +45 -0
  404. package/dist/canvas/useExtraLayers.js.map +1 -0
  405. package/dist/canvas/useFrameLoop.js +109 -49
  406. package/dist/canvas/useFrameLoop.js.map +1 -1
  407. package/dist/canvas/useHitObserver.js +22 -15
  408. package/dist/canvas/useHitObserver.js.map +1 -1
  409. package/dist/canvas/useHostAnchor.js +83 -53
  410. package/dist/canvas/useHostAnchor.js.map +1 -1
  411. package/dist/canvas/useLateContentRedraw.js +21 -14
  412. package/dist/canvas/useLateContentRedraw.js.map +1 -1
  413. package/dist/canvas/useLayerStack.js +72 -0
  414. package/dist/canvas/useLayerStack.js.map +1 -0
  415. package/dist/canvas/usePaintedCursor.js +28 -0
  416. package/dist/canvas/usePaintedCursor.js.map +1 -0
  417. package/dist/canvas/useRedrawOn.js +24 -14
  418. package/dist/canvas/useRedrawOn.js.map +1 -1
  419. package/dist/canvas/useSceneAdapter.js +27 -0
  420. package/dist/canvas/useSceneAdapter.js.map +1 -0
  421. package/dist/canvas/useSceneLayerList.js +15 -7
  422. package/dist/canvas/useSceneLayerList.js.map +1 -1
  423. package/dist/canvas/useSurfaceInput.js +46 -30
  424. package/dist/canvas/useSurfaceInput.js.map +1 -1
  425. package/dist/canvas/useSurfaceSize.js +43 -0
  426. package/dist/canvas/useSurfaceSize.js.map +1 -0
  427. package/dist/canvas/useToolCursor.js +30 -21
  428. package/dist/canvas/useToolCursor.js.map +1 -1
  429. package/dist/canvas/useViewHelpers.js +112 -61
  430. package/dist/canvas/useViewHelpers.js.map +1 -1
  431. package/dist/canvas/useViewLayerGate.js +29 -0
  432. package/dist/canvas/useViewLayerGate.js.map +1 -0
  433. package/dist/canvas/useViewNesting.js +104 -0
  434. package/dist/canvas/useViewNesting.js.map +1 -0
  435. package/dist/canvas/useViewRegistrySurface.js +44 -0
  436. package/dist/canvas/useViewRegistrySurface.js.map +1 -0
  437. package/dist/canvas/viewInputs.js +14 -11
  438. package/dist/canvas/viewInputs.js.map +1 -1
  439. package/dist/canvas/viewRegistry.js +144 -38
  440. package/dist/canvas/viewRegistry.js.map +1 -1
  441. package/dist/canvas/watchElementMove.js +71 -33
  442. package/dist/canvas/watchElementMove.js.map +1 -1
  443. package/dist/canvas/wrapNodeOutput.js +21 -9
  444. package/dist/canvas/wrapNodeOutput.js.map +1 -1
  445. package/dist/clipboard.d.ts +7 -3
  446. package/dist/clipboard.js +4 -3
  447. package/dist/{clone-2a5hVbBd.d.ts → clone-DZDrfIlU.d.ts} +31 -64
  448. package/dist/clone.d.ts +5 -4
  449. package/dist/core/adapters/testing/rootsTree.js +17 -0
  450. package/dist/core/adapters/testing/rootsTree.js.map +1 -0
  451. package/dist/core/applyOps.js +23 -7
  452. package/dist/core/applyOps.js.map +1 -1
  453. package/dist/core/device/index.js +6 -5
  454. package/dist/core/device/targets.js +29 -8
  455. package/dist/core/device/targets.js.map +1 -1
  456. package/dist/core/device/useDeviceProfile.js +86 -52
  457. package/dist/core/device/useDeviceProfile.js.map +1 -1
  458. package/dist/core/device/useTargetBasePx.js +23 -0
  459. package/dist/core/device/useTargetBasePx.js.map +1 -0
  460. package/dist/core/device/watchDevicePixelRatio.js +27 -10
  461. package/dist/core/device/watchDevicePixelRatio.js.map +1 -1
  462. package/dist/core/geometry/autoPoseDescriptor.js +38 -24
  463. package/dist/core/geometry/autoPoseDescriptor.js.map +1 -1
  464. package/dist/core/geometry/inkExtents.js +60 -0
  465. package/dist/core/geometry/inkExtents.js.map +1 -0
  466. package/dist/core/geometry/pathPoseDescriptor.js +101 -76
  467. package/dist/core/geometry/pathPoseDescriptor.js.map +1 -1
  468. package/dist/core/geometry/poseDescriptor.js +209 -120
  469. package/dist/core/geometry/poseDescriptor.js.map +1 -1
  470. package/dist/core/geometry/regionHit.js +127 -79
  471. package/dist/core/geometry/regionHit.js.map +1 -1
  472. package/dist/core/geometry/targetFrame.js +84 -60
  473. package/dist/core/geometry/targetFrame.js.map +1 -1
  474. package/dist/core/geometry/unionBounds.js +103 -48
  475. package/dist/core/geometry/unionBounds.js.map +1 -1
  476. package/dist/core/isPlainObject.js +3 -2
  477. package/dist/core/layers/backgroundFill.js +23 -15
  478. package/dist/core/layers/backgroundFill.js.map +1 -1
  479. package/dist/core/layers/children.js +16 -15
  480. package/dist/core/layers/children.js.map +1 -1
  481. package/dist/core/layers/gateLayer.js +24 -9
  482. package/dist/core/layers/gateLayer.js.map +1 -1
  483. package/dist/core/layers/layerGroup.js +42 -29
  484. package/dist/core/layers/layerGroup.js.map +1 -1
  485. package/dist/core/layers/redrawSource.js +15 -0
  486. package/dist/core/layers/redrawSource.js.map +1 -0
  487. package/dist/core/layers/render.js +183 -93
  488. package/dist/core/layers/render.js.map +1 -1
  489. package/dist/core/layers/retain.js +38 -0
  490. package/dist/core/layers/retain.js.map +1 -0
  491. package/dist/core/ops/arrange.js +30 -19
  492. package/dist/core/ops/arrange.js.map +1 -1
  493. package/dist/core/ops/create.js +32 -23
  494. package/dist/core/ops/create.js.map +1 -1
  495. package/dist/core/ops/createHistory.js +23 -14
  496. package/dist/core/ops/createHistory.js.map +1 -1
  497. package/dist/core/ops/delete.js +80 -57
  498. package/dist/core/ops/delete.js.map +1 -1
  499. package/dist/core/ops/nodeFlags.js +44 -0
  500. package/dist/core/ops/nodeFlags.js.map +1 -0
  501. package/dist/core/ops/registry.js +26 -11
  502. package/dist/core/ops/registry.js.map +1 -1
  503. package/dist/core/ops/reorder/algorithms.js +62 -38
  504. package/dist/core/ops/reorder/algorithms.js.map +1 -1
  505. package/dist/core/ops/reorder/index.js +124 -88
  506. package/dist/core/ops/reorder/index.js.map +1 -1
  507. package/dist/core/ops/reorder/setChildOrder.js +32 -25
  508. package/dist/core/ops/reorder/setChildOrder.js.map +1 -1
  509. package/dist/core/ops/reparent.js +63 -38
  510. package/dist/core/ops/reparent.js.map +1 -1
  511. package/dist/core/ops/select.js +23 -20
  512. package/dist/core/ops/select.js.map +1 -1
  513. package/dist/core/ops/setData.js +23 -21
  514. package/dist/core/ops/setData.js.map +1 -1
  515. package/dist/core/ops/setLayer.js +26 -21
  516. package/dist/core/ops/setLayer.js.map +1 -1
  517. package/dist/core/ops/setLayout.js +27 -18
  518. package/dist/core/ops/setLayout.js.map +1 -1
  519. package/dist/core/ops/setPath.js +60 -41
  520. package/dist/core/ops/setPath.js.map +1 -1
  521. package/dist/core/ops/setText.js +26 -21
  522. package/dist/core/ops/setText.js.map +1 -1
  523. package/dist/core/ops/slot.js +36 -25
  524. package/dist/core/ops/slot.js.map +1 -1
  525. package/dist/core/ops/transform.js +35 -28
  526. package/dist/core/ops/transform.js.map +1 -1
  527. package/dist/core/pages/fitViewToPage.js +17 -0
  528. package/dist/core/pages/fitViewToPage.js.map +1 -0
  529. package/dist/core/pages/pages.js +96 -0
  530. package/dist/core/pages/pages.js.map +1 -0
  531. package/dist/core/pages/pagesLayer.js +33 -0
  532. package/dist/core/pages/pagesLayer.js.map +1 -0
  533. package/dist/core/paint/meshKind.js +16 -11
  534. package/dist/core/paint/meshKind.js.map +1 -1
  535. package/dist/core/paint/meshKindLazy.js +3 -3
  536. package/dist/core/paint/meshKindLazy.js.map +1 -1
  537. package/dist/core/paint/paintKindEntry.js +13 -4
  538. package/dist/core/paint/paintKindEntry.js.map +1 -1
  539. package/dist/core/paint/paintKinds.js +149 -88
  540. package/dist/core/paint/paintKinds.js.map +1 -1
  541. package/dist/core/paint/registerMesh.js +6 -4
  542. package/dist/core/paint/registerMesh.js.map +1 -1
  543. package/dist/core/scene/NodeProperties.js +15 -10
  544. package/dist/core/scene/NodeProperties.js.map +1 -1
  545. package/dist/core/scene/NodeRouting.js +16 -12
  546. package/dist/core/scene/NodeRouting.js.map +1 -1
  547. package/dist/core/scene/annotation.js +28 -0
  548. package/dist/core/scene/annotation.js.map +1 -0
  549. package/dist/core/scene/appliedLog.js +31 -23
  550. package/dist/core/scene/appliedLog.js.map +1 -1
  551. package/dist/core/scene/arrivalWindow.js +120 -75
  552. package/dist/core/scene/arrivalWindow.js.map +1 -1
  553. package/dist/core/scene/arrivals.js +17 -6
  554. package/dist/core/scene/arrivals.js.map +1 -1
  555. package/dist/core/scene/boundOps.js +42 -23
  556. package/dist/core/scene/boundOps.js.map +1 -1
  557. package/dist/core/scene/composeFrame.js +51 -21
  558. package/dist/core/scene/composeFrame.js.map +1 -1
  559. package/dist/core/scene/composePose.js +129 -39
  560. package/dist/core/scene/composePose.js.map +1 -1
  561. package/dist/core/scene/depFrame.js +94 -0
  562. package/dist/core/scene/depFrame.js.map +1 -0
  563. package/dist/core/scene/depMemo.js +44 -19
  564. package/dist/core/scene/depMemo.js.map +1 -1
  565. package/dist/core/scene/dependents.js +73 -45
  566. package/dist/core/scene/dependents.js.map +1 -1
  567. package/dist/core/scene/derivedParts.js +58 -0
  568. package/dist/core/scene/derivedParts.js.map +1 -0
  569. package/dist/core/scene/derivedPath.js +52 -22
  570. package/dist/core/scene/derivedPath.js.map +1 -1
  571. package/dist/core/scene/editMode.js +11 -11
  572. package/dist/core/scene/editMode.js.map +1 -1
  573. package/dist/core/scene/effectivePose.js +168 -48
  574. package/dist/core/scene/effectivePose.js.map +1 -1
  575. package/dist/core/scene/fieldEdits.js +95 -75
  576. package/dist/core/scene/fieldEdits.js.map +1 -1
  577. package/dist/core/scene/historyFacade.js +130 -85
  578. package/dist/core/scene/historyFacade.js.map +1 -1
  579. package/dist/core/scene/historyForm.js +7 -3
  580. package/dist/core/scene/historyForm.js.map +1 -1
  581. package/dist/core/scene/kitOps.js +203 -131
  582. package/dist/core/scene/kitOps.js.map +1 -1
  583. package/dist/core/scene/kitRegistry.js +49 -22
  584. package/dist/core/scene/kitRegistry.js.map +1 -1
  585. package/dist/core/scene/layerStack.js +123 -92
  586. package/dist/core/scene/layerStack.js.map +1 -1
  587. package/dist/core/scene/layoutPass.js +118 -72
  588. package/dist/core/scene/layoutPass.js.map +1 -1
  589. package/dist/core/scene/lockGuard.js +32 -24
  590. package/dist/core/scene/lockGuard.js.map +1 -1
  591. package/dist/core/scene/minSize.js +17 -0
  592. package/dist/core/scene/minSize.js.map +1 -0
  593. package/dist/core/scene/nestedHit.js +45 -31
  594. package/dist/core/scene/nestedHit.js.map +1 -1
  595. package/dist/core/scene/nodeFlags.js +43 -0
  596. package/dist/core/scene/nodeFlags.js.map +1 -0
  597. package/dist/core/scene/nodeFnFields.js +64 -40
  598. package/dist/core/scene/nodeFnFields.js.map +1 -1
  599. package/dist/core/scene/nodeGates.js +58 -0
  600. package/dist/core/scene/nodeGates.js.map +1 -0
  601. package/dist/core/scene/nodeMemo.js +92 -40
  602. package/dist/core/scene/nodeMemo.js.map +1 -1
  603. package/dist/core/scene/nodeStore.js +179 -99
  604. package/dist/core/scene/nodeStore.js.map +1 -1
  605. package/dist/core/scene/notifier.js +30 -19
  606. package/dist/core/scene/notifier.js.map +1 -1
  607. package/dist/core/scene/opTable.js +42 -36
  608. package/dist/core/scene/opTable.js.map +1 -1
  609. package/dist/core/scene/outerOps.js +50 -43
  610. package/dist/core/scene/outerOps.js.map +1 -1
  611. package/dist/core/scene/pathEffects/blend.js +80 -0
  612. package/dist/core/scene/pathEffects/blend.js.map +1 -0
  613. package/dist/core/scene/pathEffects/derive.js +112 -0
  614. package/dist/core/scene/pathEffects/derive.js.map +1 -0
  615. package/dist/core/scene/pathEffects/effects.js +40 -0
  616. package/dist/core/scene/pathEffects/effects.js.map +1 -0
  617. package/dist/core/scene/poseFeed.js +95 -60
  618. package/dist/core/scene/poseFeed.js.map +1 -1
  619. package/dist/core/scene/poseHold.js +33 -24
  620. package/dist/core/scene/poseHold.js.map +1 -1
  621. package/dist/core/scene/poseOverrides.js +86 -49
  622. package/dist/core/scene/poseOverrides.js.map +1 -1
  623. package/dist/core/scene/poseRemovals.js +58 -0
  624. package/dist/core/scene/poseRemovals.js.map +1 -0
  625. package/dist/core/scene/poseSnapshot.js +62 -41
  626. package/dist/core/scene/poseSnapshot.js.map +1 -1
  627. package/dist/core/scene/poseWrites.js +151 -0
  628. package/dist/core/scene/poseWrites.js.map +1 -0
  629. package/dist/core/scene/reconcileSpecs.js +63 -34
  630. package/dist/core/scene/reconcileSpecs.js.map +1 -1
  631. package/dist/core/scene/recorder.js +90 -57
  632. package/dist/core/scene/recorder.js.map +1 -1
  633. package/dist/core/scene/renderOrder.js +105 -59
  634. package/dist/core/scene/renderOrder.js.map +1 -1
  635. package/dist/core/scene/scene.js +133 -80
  636. package/dist/core/scene/scene.js.map +1 -1
  637. package/dist/core/scene/sceneEdits.js +62 -49
  638. package/dist/core/scene/sceneEdits.js.map +1 -1
  639. package/dist/core/scene/sceneMutators.js +44 -36
  640. package/dist/core/scene/sceneMutators.js.map +1 -1
  641. package/dist/core/scene/scenePoseAdapter.js +13 -9
  642. package/dist/core/scene/scenePoseAdapter.js.map +1 -1
  643. package/dist/core/scene/sceneRecording.js +89 -72
  644. package/dist/core/scene/sceneRecording.js.map +1 -1
  645. package/dist/core/scene/sceneSelection.js +23 -16
  646. package/dist/core/scene/sceneSelection.js.map +1 -1
  647. package/dist/core/scene/sceneState.js +54 -36
  648. package/dist/core/scene/sceneState.js.map +1 -1
  649. package/dist/core/scene/serialization.js +87 -50
  650. package/dist/core/scene/serialization.js.map +1 -1
  651. package/dist/core/scene/staleReplay.js +35 -26
  652. package/dist/core/scene/staleReplay.js.map +1 -1
  653. package/dist/core/scene/statedFields.js +10 -5
  654. package/dist/core/scene/statedFields.js.map +1 -1
  655. package/dist/core/scene/treeEdits.js +129 -98
  656. package/dist/core/scene/treeEdits.js.map +1 -1
  657. package/dist/core/scene/treeOrder.js +13 -8
  658. package/dist/core/scene/treeOrder.js.map +1 -1
  659. package/dist/core/scene/treeReads.js +25 -16
  660. package/dist/core/scene/treeReads.js.map +1 -1
  661. package/dist/core/scene/types.js +4 -3
  662. package/dist/core/scene/types.js.map +1 -1
  663. package/dist/core/scene/unionOfChildren.js +20 -10
  664. package/dist/core/scene/unionOfChildren.js.map +1 -1
  665. package/dist/core/scene/unitScopes.js +15 -8
  666. package/dist/core/scene/unitScopes.js.map +1 -1
  667. package/dist/core/scene/useScene.js +32 -24
  668. package/dist/core/scene/useScene.js.map +1 -1
  669. package/dist/core/selection/chromeState.js +41 -17
  670. package/dist/core/selection/chromeState.js.map +1 -1
  671. package/dist/core/selection/readOnlySelection.js +39 -24
  672. package/dist/core/selection/readOnlySelection.js.map +1 -1
  673. package/dist/core/selection/selectionTarget.js +14 -3
  674. package/dist/core/selection/selectionTarget.js.map +1 -1
  675. package/dist/core/selection/usePublishSceneSelection.js +25 -18
  676. package/dist/core/selection/usePublishSceneSelection.js.map +1 -1
  677. package/dist/core/selection/useSelection.js +90 -57
  678. package/dist/core/selection/useSelection.js.map +1 -1
  679. package/dist/core/shapeKinds.js +43 -28
  680. package/dist/core/shapeKinds.js.map +1 -1
  681. package/dist/core/stableStringify.js +5 -4
  682. package/dist/core/stableStringify.js.map +1 -1
  683. package/dist/core/stylus/stylus.js +49 -25
  684. package/dist/core/stylus/stylus.js.map +1 -1
  685. package/dist/core/stylus/usePointerStylus.js +61 -34
  686. package/dist/core/stylus/usePointerStylus.js.map +1 -1
  687. package/dist/core/usePaintKinds.js +21 -11
  688. package/dist/core/usePaintKinds.js.map +1 -1
  689. package/dist/core/viewport/clampView.js +31 -15
  690. package/dist/core/viewport/clampView.js.map +1 -1
  691. package/dist/core/viewport/clientToWorld.js +15 -4
  692. package/dist/core/viewport/clientToWorld.js.map +1 -1
  693. package/dist/core/viewport/createVelocityTracker.js +23 -19
  694. package/dist/core/viewport/createVelocityTracker.js.map +1 -1
  695. package/dist/core/viewport/fitToBounds.js +28 -11
  696. package/dist/core/viewport/fitToBounds.js.map +1 -1
  697. package/dist/core/viewport/fitViewToBounds.js +45 -19
  698. package/dist/core/viewport/fitViewToBounds.js.map +1 -1
  699. package/dist/core/viewport/interpolateView.js +40 -20
  700. package/dist/core/viewport/interpolateView.js.map +1 -1
  701. package/dist/core/viewport/parallax.js +89 -56
  702. package/dist/core/viewport/parallax.js.map +1 -1
  703. package/dist/core/viewport/sceneNodeClientRect.js +21 -12
  704. package/dist/core/viewport/sceneNodeClientRect.js.map +1 -1
  705. package/dist/core/viewport/screenSlop.js +40 -17
  706. package/dist/core/viewport/screenSlop.js.map +1 -1
  707. package/dist/core/viewport/useAutoCenter.js +36 -22
  708. package/dist/core/viewport/useAutoCenter.js.map +1 -1
  709. package/dist/core/viewport/useCanvasSize.js +43 -22
  710. package/dist/core/viewport/useCanvasSize.js.map +1 -1
  711. package/dist/core/viewport/useDecayLoop.js +120 -50
  712. package/dist/core/viewport/useDecayLoop.js.map +1 -1
  713. package/dist/core/viewport/useNodeOverlayFrame.js +93 -58
  714. package/dist/core/viewport/useNodeOverlayFrame.js.map +1 -1
  715. package/dist/core/viewport/useVelocityTracker.js +9 -6
  716. package/dist/core/viewport/useVelocityTracker.js.map +1 -1
  717. package/dist/core/viewport/useViewAnimation.js +159 -99
  718. package/dist/core/viewport/useViewAnimation.js.map +1 -1
  719. package/dist/core/viewport/view.js +49 -22
  720. package/dist/core/viewport/view.js.map +1 -1
  721. package/dist/core/viewport/viewTransform.js +8 -6
  722. package/dist/core/viewport/viewTransform.js.map +1 -1
  723. package/dist/core/viewport/viewportWorldRect.js +15 -7
  724. package/dist/core/viewport/viewportWorldRect.js.map +1 -1
  725. package/dist/core/viewport/wheelHandler.js +31 -20
  726. package/dist/core/viewport/wheelHandler.js.map +1 -1
  727. package/dist/core/viewport/zoomAt.js +50 -13
  728. package/dist/core/viewport/zoomAt.js.map +1 -1
  729. package/dist/core/viewport/zoomBounds.js +33 -17
  730. package/dist/core/viewport/zoomBounds.js.map +1 -1
  731. package/dist/cornerHandles-Camw_yeu.d.ts +169 -0
  732. package/dist/debug/createDebugOverlayLayer.js +303 -215
  733. package/dist/debug/createDebugOverlayLayer.js.map +1 -1
  734. package/dist/debug/createDebugSink.js +68 -47
  735. package/dist/debug/createDebugSink.js.map +1 -1
  736. package/dist/debug/defaultTheme.js +16 -4
  737. package/dist/debug/defaultTheme.js.map +1 -1
  738. package/dist/debug/flag.js +3 -2
  739. package/dist/debug/frameStats.js +11 -9
  740. package/dist/debug/frameStats.js.map +1 -1
  741. package/dist/debug/parseDebugFlags.js +25 -17
  742. package/dist/debug/parseDebugFlags.js.map +1 -1
  743. package/dist/debug/useDebugSink.js +52 -33
  744. package/dist/debug/useDebugSink.js.map +1 -1
  745. package/dist/depSchema-Cgfu_G9s.d.ts +3581 -0
  746. package/dist/features/chrome-caps/buildChromeCtx.js +12 -10
  747. package/dist/features/chrome-caps/buildChromeCtx.js.map +1 -1
  748. package/dist/features/chrome-caps/conditions.js +103 -25
  749. package/dist/features/chrome-caps/conditions.js.map +1 -1
  750. package/dist/features/chrome-caps/defaults.js +18 -10
  751. package/dist/features/chrome-caps/defaults.js.map +1 -1
  752. package/dist/features/chrome-caps/index.js +8 -7
  753. package/dist/features/chrome-caps/resolve.js +28 -16
  754. package/dist/features/chrome-caps/resolve.js.map +1 -1
  755. package/dist/features/chrome-caps/useChromeCaps.js +52 -44
  756. package/dist/features/chrome-caps/useChromeCaps.js.map +1 -1
  757. package/dist/features/chrome-caps/useHoverTracking.js +52 -26
  758. package/dist/features/chrome-caps/useHoverTracking.js.map +1 -1
  759. package/dist/features/ingestion/contentHandlers.js +80 -34
  760. package/dist/features/ingestion/contentHandlers.js.map +1 -1
  761. package/dist/features/ingestion/imageHandler.js +49 -29
  762. package/dist/features/ingestion/imageHandler.js.map +1 -1
  763. package/dist/features/ingestion/openFilePicker.js +27 -9
  764. package/dist/features/ingestion/openFilePicker.js.map +1 -1
  765. package/dist/features/ingestion/placement.js +20 -11
  766. package/dist/features/ingestion/placement.js.map +1 -1
  767. package/dist/features/ingestion/registerKitHandlers.js +35 -18
  768. package/dist/features/ingestion/registerKitHandlers.js.map +1 -1
  769. package/dist/features/ingestion/svgHandler.js +60 -34
  770. package/dist/features/ingestion/svgHandler.js.map +1 -1
  771. package/dist/features/ingestion/textHandler.js +37 -16
  772. package/dist/features/ingestion/textHandler.js.map +1 -1
  773. package/dist/features/ingestion/useCanvasIngestion.js +57 -39
  774. package/dist/features/ingestion/useCanvasIngestion.js.map +1 -1
  775. package/dist/features/ingestion/weaselJsonHandler.js +38 -28
  776. package/dist/features/ingestion/weaselJsonHandler.js.map +1 -1
  777. package/dist/features/longPress/longPressFeedback.js +110 -81
  778. package/dist/features/longPress/longPressFeedback.js.map +1 -1
  779. package/dist/features/measure/actionIds.js +22 -0
  780. package/dist/features/measure/actionIds.js.map +1 -0
  781. package/dist/features/measure/measureCommands.js +178 -0
  782. package/dist/features/measure/measureCommands.js.map +1 -0
  783. package/dist/features/measure/measureContribution.js +57 -0
  784. package/dist/features/measure/measureContribution.js.map +1 -0
  785. package/dist/features/measure/measureEdits.js +82 -0
  786. package/dist/features/measure/measureEdits.js.map +1 -0
  787. package/dist/features/measure/measureGestures.js +185 -0
  788. package/dist/features/measure/measureGestures.js.map +1 -0
  789. package/dist/features/measure/measureHit.js +80 -0
  790. package/dist/features/measure/measureHit.js.map +1 -0
  791. package/dist/features/measure/measureLayer.js +86 -0
  792. package/dist/features/measure/measureLayer.js.map +1 -0
  793. package/dist/features/measure/measurement.js +79 -0
  794. package/dist/features/measure/measurement.js.map +1 -0
  795. package/dist/features/measure/measurements.js +41 -0
  796. package/dist/features/measure/measurements.js.map +1 -0
  797. package/dist/features/modes/modeLayers.js +81 -55
  798. package/dist/features/modes/modeLayers.js.map +1 -1
  799. package/dist/features/modes/modeTriggers.js +66 -0
  800. package/dist/features/modes/modeTriggers.js.map +1 -0
  801. package/dist/features/pathEffects/index.js +35 -0
  802. package/dist/features/pathEffects/index.js.map +1 -0
  803. package/dist/features/pathEffects/readSource.js +46 -0
  804. package/dist/features/pathEffects/readSource.js.map +1 -0
  805. package/dist/features/paths/anchorData.js +65 -0
  806. package/dist/features/paths/anchorData.js.map +1 -0
  807. package/dist/features/paths/anchorMarkers.js +137 -0
  808. package/dist/features/paths/anchorMarkers.js.map +1 -0
  809. package/dist/features/paths/editablePath.js +155 -36
  810. package/dist/features/paths/editablePath.js.map +1 -1
  811. package/dist/features/paths/index.js +12 -9
  812. package/dist/features/paths/originProjection.js +16 -9
  813. package/dist/features/paths/originProjection.js.map +1 -1
  814. package/dist/features/paths/pathEditExtension.js +26 -0
  815. package/dist/features/paths/pathEditExtension.js.map +1 -0
  816. package/dist/features/paths/pathEditState.js +107 -26
  817. package/dist/features/paths/pathEditState.js.map +1 -1
  818. package/dist/features/paths/pathEditingOverlayLayer.js +58 -110
  819. package/dist/features/paths/pathEditingOverlayLayer.js.map +1 -1
  820. package/dist/features/paths/pathLayer.js +79 -29
  821. package/dist/features/paths/pathLayer.js.map +1 -1
  822. package/dist/features/paths/pathRepresentation.js +27 -0
  823. package/dist/features/paths/pathRepresentation.js.map +1 -0
  824. package/dist/features/paths/pathSnap/glyphs.js +39 -0
  825. package/dist/features/paths/pathSnap/glyphs.js.map +1 -0
  826. package/dist/features/paths/pathSnap/pathSnapSource.js +82 -0
  827. package/dist/features/paths/pathSnap/pathSnapSource.js.map +1 -0
  828. package/dist/features/paths/pathSnap/sceneIndex.js +78 -0
  829. package/dist/features/paths/pathSnap/sceneIndex.js.map +1 -0
  830. package/dist/features/paths/pathSnap/snapGeometry.js +47 -0
  831. package/dist/features/paths/pathSnap/snapGeometry.js.map +1 -0
  832. package/dist/features/paths/penPreviewLayer.js +135 -102
  833. package/dist/features/paths/penPreviewLayer.js.map +1 -1
  834. package/dist/features/paths/shapeGenerator.js +141 -0
  835. package/dist/features/paths/shapeGenerator.js.map +1 -0
  836. package/dist/features/paths/strokeOutline.js +15 -0
  837. package/dist/features/paths/strokeOutline.js.map +1 -0
  838. package/dist/features/paths/useAnchorFields.js +35 -0
  839. package/dist/features/paths/useAnchorFields.js.map +1 -0
  840. package/dist/features/paths/usePathEdit.js +58 -28
  841. package/dist/features/paths/usePathEdit.js.map +1 -1
  842. package/dist/features/poseRun/usePoseRun.js +111 -44
  843. package/dist/features/poseRun/usePoseRun.js.map +1 -1
  844. package/dist/features/selection/handleCommands.js +116 -0
  845. package/dist/features/selection/handleCommands.js.map +1 -0
  846. package/dist/features/selection/overlay.js +288 -328
  847. package/dist/features/selection/overlay.js.map +1 -1
  848. package/dist/features/selection/selectionPose.js +109 -0
  849. package/dist/features/selection/selectionPose.js.map +1 -0
  850. package/dist/features/snap/angle2d.js +158 -0
  851. package/dist/features/snap/angle2d.js.map +1 -0
  852. package/dist/features/snap/debugCandidates.js +27 -0
  853. package/dist/features/snap/debugCandidates.js.map +1 -0
  854. package/dist/features/snap/gather.js +71 -0
  855. package/dist/features/snap/gather.js.map +1 -0
  856. package/dist/features/snap/inputSubspace.js +46 -0
  857. package/dist/features/snap/inputSubspace.js.map +1 -0
  858. package/dist/features/snap/marks.js +29 -0
  859. package/dist/features/snap/marks.js.map +1 -0
  860. package/dist/features/snap/outcomeStore.js +25 -0
  861. package/dist/features/snap/outcomeStore.js.map +1 -0
  862. package/dist/features/snap/pointSnap.js +48 -0
  863. package/dist/features/snap/pointSnap.js.map +1 -0
  864. package/dist/features/snap/probes2d.js +91 -0
  865. package/dist/features/snap/probes2d.js.map +1 -0
  866. package/dist/features/snap/readoutDraw.js +93 -0
  867. package/dist/features/snap/readoutDraw.js.map +1 -0
  868. package/dist/features/snap/readoutLayer.js +49 -0
  869. package/dist/features/snap/readoutLayer.js.map +1 -0
  870. package/dist/features/snap/registry.js +27 -0
  871. package/dist/features/snap/registry.js.map +1 -0
  872. package/dist/features/snap/resizeBox.js +137 -0
  873. package/dist/features/snap/resizeBox.js.map +1 -0
  874. package/dist/features/snap/roles.js +31 -0
  875. package/dist/features/snap/roles.js.map +1 -0
  876. package/dist/features/snap/rotationSource.js +30 -0
  877. package/dist/features/snap/rotationSource.js.map +1 -0
  878. package/dist/features/snap/sceneReads.js +45 -0
  879. package/dist/features/snap/sceneReads.js.map +1 -0
  880. package/dist/features/snap/sceneSession2d.js +79 -0
  881. package/dist/features/snap/sceneSession2d.js.map +1 -0
  882. package/dist/features/snap/screen.js +23 -0
  883. package/dist/features/snap/screen.js.map +1 -0
  884. package/dist/features/snap/session2d.js +129 -0
  885. package/dist/features/snap/session2d.js.map +1 -0
  886. package/dist/features/snap/spanSnap.js +77 -0
  887. package/dist/features/snap/spanSnap.js.map +1 -0
  888. package/dist/features/snap/stepAngles.js +15 -0
  889. package/dist/features/snap/stepAngles.js.map +1 -0
  890. package/dist/features/text/editingDrawOne.js +32 -0
  891. package/dist/features/text/editingDrawOne.js.map +1 -0
  892. package/dist/features/text/index.js +7 -6
  893. package/dist/features/text/textHitAt.js +51 -0
  894. package/dist/features/text/textHitAt.js.map +1 -0
  895. package/dist/features/text/textLayer.js +21 -27
  896. package/dist/features/text/textLayer.js.map +1 -1
  897. package/dist/features/text/useSceneTextEdit.js +203 -123
  898. package/dist/features/text/useSceneTextEdit.js.map +1 -1
  899. package/dist/features/viewports/viewResolver.js +51 -38
  900. package/dist/features/viewports/viewResolver.js.map +1 -1
  901. package/dist/features/viewports/viewportLayer.js +60 -29
  902. package/dist/features/viewports/viewportLayer.js.map +1 -1
  903. package/dist/iconRegistry/IconRegistryProvider.js +73 -0
  904. package/dist/iconRegistry/IconRegistryProvider.js.map +1 -0
  905. package/dist/iconRegistry/useIconGlyph.js +14 -0
  906. package/dist/iconRegistry/useIconGlyph.js.map +1 -0
  907. package/dist/iconRegistry/useIconVariant.js +29 -0
  908. package/dist/iconRegistry/useIconVariant.js.map +1 -0
  909. package/dist/icons.d.ts +6 -0
  910. package/dist/icons.js +3 -0
  911. package/dist/icons.table.js +13 -0
  912. package/dist/icons.table.js.map +1 -0
  913. package/dist/icons.table.json +556 -0
  914. package/dist/icons2.table.js +9 -0
  915. package/dist/icons2.table.js.map +1 -0
  916. package/dist/index.d.ts +4552 -4992
  917. package/dist/index.js +340 -276
  918. package/dist/input/keyState.js +118 -54
  919. package/dist/input/keyState.js.map +1 -1
  920. package/dist/input/useKeyModifiers.js +13 -7
  921. package/dist/input/useKeyModifiers.js.map +1 -1
  922. package/dist/input/useKeyState.js +23 -16
  923. package/dist/input/useKeyState.js.map +1 -1
  924. package/dist/interactions/actions/align/action.js +76 -45
  925. package/dist/interactions/actions/align/action.js.map +1 -1
  926. package/dist/interactions/actions/align/align.js +86 -48
  927. package/dist/interactions/actions/align/align.js.map +1 -1
  928. package/dist/interactions/actions/booleans/action.js +67 -33
  929. package/dist/interactions/actions/booleans/action.js.map +1 -1
  930. package/dist/interactions/actions/booleans/booleans.js +77 -70
  931. package/dist/interactions/actions/booleans/booleans.js.map +1 -1
  932. package/dist/interactions/actions/booleans/commit.js +49 -0
  933. package/dist/interactions/actions/booleans/commit.js.map +1 -0
  934. package/dist/interactions/actions/booleans/custom.js +48 -0
  935. package/dist/interactions/actions/booleans/custom.js.map +1 -0
  936. package/dist/interactions/actions/booleans/operands.js +43 -32
  937. package/dist/interactions/actions/booleans/operands.js.map +1 -1
  938. package/dist/interactions/actions/booleans/pieces.js +29 -23
  939. package/dist/interactions/actions/booleans/pieces.js.map +1 -1
  940. package/dist/interactions/actions/booleans/placement.js +30 -17
  941. package/dist/interactions/actions/booleans/placement.js.map +1 -1
  942. package/dist/interactions/actions/booleans/useBooleans.js +30 -17
  943. package/dist/interactions/actions/booleans/useBooleans.js.map +1 -1
  944. package/dist/interactions/actions/booleans/useBooleansAdapter.js +8 -5
  945. package/dist/interactions/actions/booleans/useBooleansAdapter.js.map +1 -1
  946. package/dist/interactions/actions/clipboard/action.js +81 -40
  947. package/dist/interactions/actions/clipboard/action.js.map +1 -1
  948. package/dist/interactions/actions/clipboard/clipboardOps.js +100 -72
  949. package/dist/interactions/actions/clipboard/clipboardOps.js.map +1 -1
  950. package/dist/interactions/actions/clipboard/materializePaste.js +38 -19
  951. package/dist/interactions/actions/clipboard/materializePaste.js.map +1 -1
  952. package/dist/interactions/actions/clipboard/wireFormat.js +66 -28
  953. package/dist/interactions/actions/clipboard/wireFormat.js.map +1 -1
  954. package/dist/interactions/actions/clone/action.js +102 -65
  955. package/dist/interactions/actions/clone/action.js.map +1 -1
  956. package/dist/interactions/actions/clone/behaviors.js +55 -38
  957. package/dist/interactions/actions/clone/behaviors.js.map +1 -1
  958. package/dist/interactions/actions/defaultCommitAdapter.js +32 -10
  959. package/dist/interactions/actions/defaultCommitAdapter.js.map +1 -1
  960. package/dist/interactions/actions/defaults/anchorEditing.js +253 -115
  961. package/dist/interactions/actions/defaults/anchorEditing.js.map +1 -1
  962. package/dist/interactions/actions/defaults/anchorFields.js +54 -0
  963. package/dist/interactions/actions/defaults/anchorFields.js.map +1 -0
  964. package/dist/interactions/actions/defaults/anchorHandles.js +46 -0
  965. package/dist/interactions/actions/defaults/anchorHandles.js.map +1 -0
  966. package/dist/interactions/actions/defaults/anchorJoin.js +110 -0
  967. package/dist/interactions/actions/defaults/anchorJoin.js.map +1 -0
  968. package/dist/interactions/actions/defaults/areaSelect.js +56 -40
  969. package/dist/interactions/actions/defaults/areaSelect.js.map +1 -1
  970. package/dist/interactions/actions/defaults/bendSegment.js +82 -0
  971. package/dist/interactions/actions/defaults/bendSegment.js.map +1 -0
  972. package/dist/interactions/actions/defaults/cancelGesture.js +12 -5
  973. package/dist/interactions/actions/defaults/cancelGesture.js.map +1 -1
  974. package/dist/interactions/actions/defaults/clearSelection.js +22 -7
  975. package/dist/interactions/actions/defaults/clearSelection.js.map +1 -1
  976. package/dist/interactions/actions/defaults/contextMenu.js +149 -0
  977. package/dist/interactions/actions/defaults/contextMenu.js.map +1 -0
  978. package/dist/interactions/actions/defaults/copySubtree.js +43 -29
  979. package/dist/interactions/actions/defaults/copySubtree.js.map +1 -1
  980. package/dist/interactions/actions/defaults/createPaintAction.js +79 -54
  981. package/dist/interactions/actions/defaults/createPaintAction.js.map +1 -1
  982. package/dist/interactions/actions/defaults/delete.js +61 -33
  983. package/dist/interactions/actions/defaults/delete.js.map +1 -1
  984. package/dist/interactions/actions/defaults/duplicate.js +65 -22
  985. package/dist/interactions/actions/defaults/duplicate.js.map +1 -1
  986. package/dist/interactions/actions/defaults/enterPathEdit.js +29 -13
  987. package/dist/interactions/actions/defaults/enterPathEdit.js.map +1 -1
  988. package/dist/interactions/actions/defaults/enterTextEdit.js +20 -8
  989. package/dist/interactions/actions/defaults/enterTextEdit.js.map +1 -1
  990. package/dist/interactions/actions/defaults/escape.js +16 -7
  991. package/dist/interactions/actions/defaults/escape.js.map +1 -1
  992. package/dist/interactions/actions/defaults/exitPathEdit.js +6 -6
  993. package/dist/interactions/actions/defaults/exitPathEdit.js.map +1 -1
  994. package/dist/interactions/actions/defaults/group.js +122 -73
  995. package/dist/interactions/actions/defaults/group.js.map +1 -1
  996. package/dist/interactions/actions/defaults/ingest.js +52 -35
  997. package/dist/interactions/actions/defaults/ingest.js.map +1 -1
  998. package/dist/interactions/actions/defaults/insertPathAnchor.js +39 -33
  999. package/dist/interactions/actions/defaults/insertPathAnchor.js.map +1 -1
  1000. package/dist/interactions/actions/defaults/nudge.js +80 -48
  1001. package/dist/interactions/actions/defaults/nudge.js.map +1 -1
  1002. package/dist/interactions/actions/defaults/nudgeSteps.js +17 -12
  1003. package/dist/interactions/actions/defaults/nudgeSteps.js.map +1 -1
  1004. package/dist/interactions/actions/defaults/pathEditMarks.js +60 -0
  1005. package/dist/interactions/actions/defaults/pathEditMarks.js.map +1 -0
  1006. package/dist/interactions/actions/defaults/pathEditTools.js +57 -0
  1007. package/dist/interactions/actions/defaults/pathEditTools.js.map +1 -0
  1008. package/dist/interactions/actions/defaults/pinchZoom.js +54 -38
  1009. package/dist/interactions/actions/defaults/pinchZoom.js.map +1 -1
  1010. package/dist/interactions/actions/defaults/reorder.js +71 -40
  1011. package/dist/interactions/actions/defaults/reorder.js.map +1 -1
  1012. package/dist/interactions/actions/defaults/requiresSelection.js +13 -6
  1013. package/dist/interactions/actions/defaults/requiresSelection.js.map +1 -1
  1014. package/dist/interactions/actions/defaults/segmentUnder.js +30 -0
  1015. package/dist/interactions/actions/defaults/segmentUnder.js.map +1 -0
  1016. package/dist/interactions/actions/defaults/selectAll.js +21 -7
  1017. package/dist/interactions/actions/defaults/selectAll.js.map +1 -1
  1018. package/dist/interactions/actions/defaults/setFill.js +37 -21
  1019. package/dist/interactions/actions/defaults/setFill.js.map +1 -1
  1020. package/dist/interactions/actions/defaults/setFillOpacity.js +19 -10
  1021. package/dist/interactions/actions/defaults/setFillOpacity.js.map +1 -1
  1022. package/dist/interactions/actions/defaults/setStroke.js +46 -25
  1023. package/dist/interactions/actions/defaults/setStroke.js.map +1 -1
  1024. package/dist/interactions/actions/defaults/setStrokeOpacity.js +19 -11
  1025. package/dist/interactions/actions/defaults/setStrokeOpacity.js.map +1 -1
  1026. package/dist/interactions/actions/defaults/slice.js +42 -17
  1027. package/dist/interactions/actions/defaults/slice.js.map +1 -1
  1028. package/dist/interactions/actions/defaults/sliceOps.js +63 -42
  1029. package/dist/interactions/actions/defaults/sliceOps.js.map +1 -1
  1030. package/dist/interactions/actions/defaults/toolActivate.js +34 -16
  1031. package/dist/interactions/actions/defaults/toolActivate.js.map +1 -1
  1032. package/dist/interactions/actions/defaults/toolResetToDefault.js +29 -10
  1033. package/dist/interactions/actions/defaults/toolResetToDefault.js.map +1 -1
  1034. package/dist/interactions/actions/defaults/undoRedo.js +26 -20
  1035. package/dist/interactions/actions/defaults/undoRedo.js.map +1 -1
  1036. package/dist/interactions/actions/defaults/viewportDragPan.js +91 -58
  1037. package/dist/interactions/actions/defaults/viewportDragPan.js.map +1 -1
  1038. package/dist/interactions/actions/defaults/viewportWheelPan.js +42 -23
  1039. package/dist/interactions/actions/defaults/viewportWheelPan.js.map +1 -1
  1040. package/dist/interactions/actions/defaults/viewportZoom.js +142 -91
  1041. package/dist/interactions/actions/defaults/viewportZoom.js.map +1 -1
  1042. package/dist/interactions/actions/distribute/action.js +62 -39
  1043. package/dist/interactions/actions/distribute/action.js.map +1 -1
  1044. package/dist/interactions/actions/distribute/distribute.js +53 -34
  1045. package/dist/interactions/actions/distribute/distribute.js.map +1 -1
  1046. package/dist/interactions/actions/distribute/plan.js +40 -22
  1047. package/dist/interactions/actions/distribute/plan.js.map +1 -1
  1048. package/dist/interactions/actions/drawnBoxes.js +31 -0
  1049. package/dist/interactions/actions/drawnBoxes.js.map +1 -0
  1050. package/dist/interactions/actions/edit-anchors/action.js +254 -75
  1051. package/dist/interactions/actions/edit-anchors/action.js.map +1 -1
  1052. package/dist/interactions/actions/edit-anchors/extensionDrags.js +50 -0
  1053. package/dist/interactions/actions/edit-anchors/extensionDrags.js.map +1 -0
  1054. package/dist/interactions/actions/edit-anchors/geometry.js +74 -47
  1055. package/dist/interactions/actions/edit-anchors/geometry.js.map +1 -1
  1056. package/dist/interactions/actions/edit-anchors/handleDrag.js +101 -0
  1057. package/dist/interactions/actions/edit-anchors/handleDrag.js.map +1 -0
  1058. package/dist/interactions/actions/edit-anchors/handles.js +41 -27
  1059. package/dist/interactions/actions/edit-anchors/handles.js.map +1 -1
  1060. package/dist/interactions/actions/edit-anchors/params.js +12 -0
  1061. package/dist/interactions/actions/edit-anchors/params.js.map +1 -0
  1062. package/dist/interactions/actions/edit-anchors/preview.js +68 -0
  1063. package/dist/interactions/actions/edit-anchors/preview.js.map +1 -0
  1064. package/dist/interactions/actions/edit-anchors/symmetry.js +16 -0
  1065. package/dist/interactions/actions/edit-anchors/symmetry.js.map +1 -0
  1066. package/dist/interactions/actions/flip/action.js +119 -61
  1067. package/dist/interactions/actions/flip/action.js.map +1 -1
  1068. package/dist/interactions/actions/flip/helpers.js +69 -36
  1069. package/dist/interactions/actions/flip/helpers.js.map +1 -1
  1070. package/dist/interactions/actions/geometryProjection.js +17 -12
  1071. package/dist/interactions/actions/geometryProjection.js.map +1 -1
  1072. package/dist/interactions/actions/gestureFrames.js +20 -11
  1073. package/dist/interactions/actions/gestureFrames.js.map +1 -1
  1074. package/dist/interactions/actions/gestureLifecycle.js +93 -48
  1075. package/dist/interactions/actions/gestureLifecycle.js.map +1 -1
  1076. package/dist/interactions/actions/hitSelection.js +6 -4
  1077. package/dist/interactions/actions/hitSelection.js.map +1 -1
  1078. package/dist/interactions/actions/insert/action.js +75 -39
  1079. package/dist/interactions/actions/insert/action.js.map +1 -1
  1080. package/dist/interactions/actions/insert/commit.js +44 -22
  1081. package/dist/interactions/actions/insert/commit.js.map +1 -1
  1082. package/dist/interactions/actions/insert/extras.js +60 -38
  1083. package/dist/interactions/actions/insert/extras.js.map +1 -1
  1084. package/dist/interactions/actions/insert/frame.js +59 -33
  1085. package/dist/interactions/actions/insert/frame.js.map +1 -1
  1086. package/dist/interactions/actions/insert/geometry.js +29 -25
  1087. package/dist/interactions/actions/insert/geometry.js.map +1 -1
  1088. package/dist/interactions/actions/insert/placeAction.js +108 -0
  1089. package/dist/interactions/actions/insert/placeAction.js.map +1 -0
  1090. package/dist/interactions/actions/insert/repositionAction.js +46 -0
  1091. package/dist/interactions/actions/insert/repositionAction.js.map +1 -0
  1092. package/dist/interactions/actions/insert/rotateAction.js +19 -8
  1093. package/dist/interactions/actions/insert/rotateAction.js.map +1 -1
  1094. package/dist/interactions/actions/insert/session.js +57 -41
  1095. package/dist/interactions/actions/insert/session.js.map +1 -1
  1096. package/dist/interactions/actions/insert/shape.js +83 -25
  1097. package/dist/interactions/actions/insert/shape.js.map +1 -1
  1098. package/dist/interactions/actions/lasso-select/action.js +160 -100
  1099. package/dist/interactions/actions/lasso-select/action.js.map +1 -1
  1100. package/dist/interactions/actions/lasso-select/behaviors/selectFromLasso.js +44 -25
  1101. package/dist/interactions/actions/lasso-select/behaviors/selectFromLasso.js.map +1 -1
  1102. package/dist/interactions/actions/move/action.js +87 -48
  1103. package/dist/interactions/actions/move/action.js.map +1 -1
  1104. package/dist/interactions/actions/move/behaviors/layoutDrop.js +56 -36
  1105. package/dist/interactions/actions/move/behaviors/layoutDrop.js.map +1 -1
  1106. package/dist/interactions/actions/move/behaviors/reparentOnDrop.js +20 -10
  1107. package/dist/interactions/actions/move/behaviors/reparentOnDrop.js.map +1 -1
  1108. package/dist/interactions/actions/move/behaviors/snapBackOrDelete.js +40 -24
  1109. package/dist/interactions/actions/move/behaviors/snapBackOrDelete.js.map +1 -1
  1110. package/dist/interactions/actions/move/behaviors/snapToContainer.js +107 -63
  1111. package/dist/interactions/actions/move/behaviors/snapToContainer.js.map +1 -1
  1112. package/dist/interactions/actions/move/capture.js +106 -72
  1113. package/dist/interactions/actions/move/capture.js.map +1 -1
  1114. package/dist/interactions/actions/move/commit/index.js +43 -34
  1115. package/dist/interactions/actions/move/commit/index.js.map +1 -1
  1116. package/dist/interactions/actions/move/commit/layoutDrop.js +43 -32
  1117. package/dist/interactions/actions/move/commit/layoutDrop.js.map +1 -1
  1118. package/dist/interactions/actions/move/commit/layoutRelease.js +97 -77
  1119. package/dist/interactions/actions/move/commit/layoutRelease.js.map +1 -1
  1120. package/dist/interactions/actions/move/commit/rebase.js +16 -13
  1121. package/dist/interactions/actions/move/commit/rebase.js.map +1 -1
  1122. package/dist/interactions/actions/move/commit/reparent.js +83 -57
  1123. package/dist/interactions/actions/move/commit/reparent.js.map +1 -1
  1124. package/dist/interactions/actions/move/delta.js +58 -36
  1125. package/dist/interactions/actions/move/delta.js.map +1 -1
  1126. package/dist/interactions/actions/move/frame.js +73 -48
  1127. package/dist/interactions/actions/move/frame.js.map +1 -1
  1128. package/dist/interactions/actions/move/gestureAdapter.js +30 -20
  1129. package/dist/interactions/actions/move/gestureAdapter.js.map +1 -1
  1130. package/dist/interactions/actions/move/landedDescendants.js +40 -25
  1131. package/dist/interactions/actions/move/landedDescendants.js.map +1 -1
  1132. package/dist/interactions/actions/move/layout/container.js +92 -72
  1133. package/dist/interactions/actions/move/layout/container.js.map +1 -1
  1134. package/dist/interactions/actions/move/layout/dragged.js +61 -39
  1135. package/dist/interactions/actions/move/layout/dragged.js.map +1 -1
  1136. package/dist/interactions/actions/move/layout/dropPass.js +136 -94
  1137. package/dist/interactions/actions/move/layout/dropPass.js.map +1 -1
  1138. package/dist/interactions/actions/move/layout/exits.js +58 -30
  1139. package/dist/interactions/actions/move/layout/exits.js.map +1 -1
  1140. package/dist/interactions/actions/move/layout/glide.js +55 -34
  1141. package/dist/interactions/actions/move/layout/glide.js.map +1 -1
  1142. package/dist/interactions/actions/move/session.js +85 -56
  1143. package/dist/interactions/actions/move/session.js.map +1 -1
  1144. package/dist/interactions/actions/move/translate.js +58 -43
  1145. package/dist/interactions/actions/move/translate.js.map +1 -1
  1146. package/dist/interactions/actions/outlines/createOutlines.js +28 -20
  1147. package/dist/interactions/actions/outlines/createOutlines.js.map +1 -1
  1148. package/dist/interactions/actions/outlines/createOutlinesAction.js +43 -31
  1149. package/dist/interactions/actions/outlines/createOutlinesAction.js.map +1 -1
  1150. package/dist/interactions/actions/outlines/outlineStroke.js +68 -45
  1151. package/dist/interactions/actions/outlines/outlineStroke.js.map +1 -1
  1152. package/dist/interactions/actions/outlines/outlineStrokeAction.js +24 -19
  1153. package/dist/interactions/actions/outlines/outlineStrokeAction.js.map +1 -1
  1154. package/dist/interactions/actions/outlines/replaceWithPaths.js +57 -42
  1155. package/dist/interactions/actions/outlines/replaceWithPaths.js.map +1 -1
  1156. package/dist/interactions/actions/outlines/strokeRegion.js +37 -22
  1157. package/dist/interactions/actions/outlines/strokeRegion.js.map +1 -1
  1158. package/dist/interactions/actions/outlines/useCreateOutlinesAdapter.js +8 -5
  1159. package/dist/interactions/actions/outlines/useCreateOutlinesAdapter.js.map +1 -1
  1160. package/dist/interactions/actions/pathCommands/cutJoin.js +149 -0
  1161. package/dist/interactions/actions/pathCommands/cutJoin.js.map +1 -0
  1162. package/dist/interactions/actions/pathCommands/livePathEdit.js +98 -0
  1163. package/dist/interactions/actions/pathCommands/livePathEdit.js.map +1 -0
  1164. package/dist/interactions/actions/pathCommands/pathNodes.js +108 -0
  1165. package/dist/interactions/actions/pathCommands/pathNodes.js.map +1 -0
  1166. package/dist/interactions/actions/pathCommands/simplifyOffset.js +66 -0
  1167. package/dist/interactions/actions/pathCommands/simplifyOffset.js.map +1 -0
  1168. package/dist/interactions/actions/pathGestureTags.js +29 -0
  1169. package/dist/interactions/actions/pathGestureTags.js.map +1 -0
  1170. package/dist/interactions/actions/planeInput.js +198 -123
  1171. package/dist/interactions/actions/planeInput.js.map +1 -1
  1172. package/dist/interactions/actions/pointerState.js +12 -7
  1173. package/dist/interactions/actions/pointerState.js.map +1 -1
  1174. package/dist/interactions/actions/poseDescriptorDep.js +24 -14
  1175. package/dist/interactions/actions/poseDescriptorDep.js.map +1 -1
  1176. package/dist/interactions/actions/poseFrame.js +45 -28
  1177. package/dist/interactions/actions/poseFrame.js.map +1 -1
  1178. package/dist/interactions/actions/resize/action.js +70 -30
  1179. package/dist/interactions/actions/resize/action.js.map +1 -1
  1180. package/dist/interactions/actions/resize/aspect.js +44 -0
  1181. package/dist/interactions/actions/resize/aspect.js.map +1 -0
  1182. package/dist/interactions/actions/resize/behaviors/clampMinSize.js +38 -13
  1183. package/dist/interactions/actions/resize/behaviors/clampMinSize.js.map +1 -1
  1184. package/dist/interactions/actions/resize/boxFrame.js +15 -11
  1185. package/dist/interactions/actions/resize/boxFrame.js.map +1 -1
  1186. package/dist/interactions/actions/resize/capture.js +105 -62
  1187. package/dist/interactions/actions/resize/capture.js.map +1 -1
  1188. package/dist/interactions/actions/resize/commit.js +75 -56
  1189. package/dist/interactions/actions/resize/commit.js.map +1 -1
  1190. package/dist/interactions/actions/resize/cornerHandles.js +154 -17
  1191. package/dist/interactions/actions/resize/cornerHandles.js.map +1 -1
  1192. package/dist/interactions/actions/resize/frame.js +138 -57
  1193. package/dist/interactions/actions/resize/frame.js.map +1 -1
  1194. package/dist/interactions/actions/resize/minimum.js +35 -0
  1195. package/dist/interactions/actions/resize/minimum.js.map +1 -0
  1196. package/dist/interactions/actions/resize/replay.js +57 -0
  1197. package/dist/interactions/actions/resize/replay.js.map +1 -0
  1198. package/dist/interactions/actions/resize/ruleBounds.js +8 -5
  1199. package/dist/interactions/actions/resize/ruleBounds.js.map +1 -1
  1200. package/dist/interactions/actions/resize/session.js +100 -41
  1201. package/dist/interactions/actions/resize/session.js.map +1 -1
  1202. package/dist/interactions/actions/resolveOverlays.js +48 -32
  1203. package/dist/interactions/actions/resolveOverlays.js.map +1 -1
  1204. package/dist/interactions/actions/resolvePreviews.js +63 -46
  1205. package/dist/interactions/actions/resolvePreviews.js.map +1 -1
  1206. package/dist/interactions/actions/rotate/action.js +71 -30
  1207. package/dist/interactions/actions/rotate/action.js.map +1 -1
  1208. package/dist/interactions/actions/rotate/commit.js +39 -31
  1209. package/dist/interactions/actions/rotate/commit.js.map +1 -1
  1210. package/dist/interactions/actions/rotate/frame.js +75 -47
  1211. package/dist/interactions/actions/rotate/frame.js.map +1 -1
  1212. package/dist/interactions/actions/rotate/geometry.js +36 -24
  1213. package/dist/interactions/actions/rotate/geometry.js.map +1 -1
  1214. package/dist/interactions/actions/rotate/handle.js +28 -15
  1215. package/dist/interactions/actions/rotate/handle.js.map +1 -1
  1216. package/dist/interactions/actions/rotate/replay.js +26 -0
  1217. package/dist/interactions/actions/rotate/replay.js.map +1 -0
  1218. package/dist/interactions/actions/rotate/session.js +122 -73
  1219. package/dist/interactions/actions/rotate/session.js.map +1 -1
  1220. package/dist/interactions/actions/selectionSubtree.js +124 -53
  1221. package/dist/interactions/actions/selectionSubtree.js.map +1 -1
  1222. package/dist/interactions/actions/spatialReference.js +33 -26
  1223. package/dist/interactions/actions/spatialReference.js.map +1 -1
  1224. package/dist/interactions/actions/testUtils.js +53 -0
  1225. package/dist/interactions/actions/testUtils.js.map +1 -0
  1226. package/dist/interactions/actions/transform-again/action.js +78 -0
  1227. package/dist/interactions/actions/transform-again/action.js.map +1 -0
  1228. package/dist/interactions/actions/transform-again/memory.js +46 -0
  1229. package/dist/interactions/actions/transform-again/memory.js.map +1 -0
  1230. package/dist/interactions/actions/useActionSet.js +83 -0
  1231. package/dist/interactions/actions/useActionSet.js.map +1 -0
  1232. package/dist/interactions/actions/useStandardActions.js +23 -147
  1233. package/dist/interactions/actions/useStandardActions.js.map +1 -1
  1234. package/dist/interactions/gestures/dragGesture/dragGesture.js +109 -68
  1235. package/dist/interactions/gestures/dragGesture/dragGesture.js.map +1 -1
  1236. package/dist/interactions/gestures/dragGesture/dragPointOf.js +17 -10
  1237. package/dist/interactions/gestures/dragGesture/dragPointOf.js.map +1 -1
  1238. package/dist/interactions/gestures/dragRadial/dragRadial.js +129 -93
  1239. package/dist/interactions/gestures/dragRadial/dragRadial.js.map +1 -1
  1240. package/dist/interactions/gestures/dragRect/dragRect.js +155 -111
  1241. package/dist/interactions/gestures/dragRect/dragRect.js.map +1 -1
  1242. package/dist/interactions/gestures/handleDrag/handleDrag.js +52 -30
  1243. package/dist/interactions/gestures/handleDrag/handleDrag.js.map +1 -1
  1244. package/dist/interactions/gestures/pointerDrag/pointerDrag.js +168 -97
  1245. package/dist/interactions/gestures/pointerDrag/pointerDrag.js.map +1 -1
  1246. package/dist/interactions/gestures/shared/originProjection.js +32 -25
  1247. package/dist/interactions/gestures/shared/originProjection.js.map +1 -1
  1248. package/dist/interactions/gestures/shared/screenTolerance.js +26 -17
  1249. package/dist/interactions/gestures/shared/screenTolerance.js.map +1 -1
  1250. package/dist/interactions/gestures/thresholdDrag/thresholdDrag.js +39 -21
  1251. package/dist/interactions/gestures/thresholdDrag/thresholdDrag.js.map +1 -1
  1252. package/dist/kitSettingsSchema.js +80 -0
  1253. package/dist/kitSettingsSchema.js.map +1 -0
  1254. package/dist/{math-CYUjoyyU.d.ts → math-CrJULaZI.d.ts} +5 -6
  1255. package/dist/math.d.ts +4 -5
  1256. package/dist/math.js +7 -6
  1257. package/dist/mesh.js +3 -2
  1258. package/dist/move.d.ts +7 -6
  1259. package/dist/move.js +4 -3
  1260. package/dist/{originProjection-PPT88jZv.d.ts → options-p9GZMXbY.d.ts} +4 -27
  1261. package/dist/originProjection-gY0jb4Wb.d.ts +24 -0
  1262. package/dist/patterns-builtin.js +3 -2
  1263. package/dist/{poseDescriptor-Bqk-11Rl.d.ts → poseDescriptor-DN2yfnq_.d.ts} +7 -7
  1264. package/dist/renderer.d.ts +1 -1
  1265. package/dist/renderer.js +3 -2
  1266. package/dist/resize.d.ts +10 -28
  1267. package/dist/resize.js +6 -7
  1268. package/dist/routing.js +3 -2
  1269. package/dist/style.css +88 -1
  1270. package/dist/test-hook/createTestHook.js +23 -20
  1271. package/dist/test-hook/createTestHook.js.map +1 -1
  1272. package/dist/test-hook/install.js +32 -13
  1273. package/dist/test-hook/install.js.map +1 -1
  1274. package/dist/test-hook/useTestHook.js +22 -16
  1275. package/dist/test-hook/useTestHook.js.map +1 -1
  1276. package/dist/test-seams.d.ts +164 -1
  1277. package/dist/test-seams.js +8 -3
  1278. package/dist/tools/builtin/bone/boneActions.js +96 -70
  1279. package/dist/tools/builtin/bone/boneActions.js.map +1 -1
  1280. package/dist/tools/builtin/bone/boneOverlay.js +49 -36
  1281. package/dist/tools/builtin/bone/boneOverlay.js.map +1 -1
  1282. package/dist/tools/builtin/bone/placedRig.js +18 -14
  1283. package/dist/tools/builtin/bone/placedRig.js.map +1 -1
  1284. package/dist/tools/builtin/bone/rigEditState.js +22 -13
  1285. package/dist/tools/builtin/bone/rigEditState.js.map +1 -1
  1286. package/dist/tools/builtin/bone/useBoneTool.js +68 -41
  1287. package/dist/tools/builtin/bone/useBoneTool.js.map +1 -1
  1288. package/dist/tools/builtin/ellipse/useEllipseTool.js +22 -16
  1289. package/dist/tools/builtin/ellipse/useEllipseTool.js.map +1 -1
  1290. package/dist/tools/builtin/eyedropper/useEyedropperTool.js +44 -28
  1291. package/dist/tools/builtin/eyedropper/useEyedropperTool.js.map +1 -1
  1292. package/dist/tools/builtin/hand/dragPanContribution.js +12 -7
  1293. package/dist/tools/builtin/hand/dragPanContribution.js.map +1 -1
  1294. package/dist/tools/builtin/hand/useHandTool.js +21 -13
  1295. package/dist/tools/builtin/hand/useHandTool.js.map +1 -1
  1296. package/dist/tools/builtin/image/useImageTool.js +28 -19
  1297. package/dist/tools/builtin/image/useImageTool.js.map +1 -1
  1298. package/dist/tools/builtin/lasso/useLassoTool.js +48 -36
  1299. package/dist/tools/builtin/lasso/useLassoTool.js.map +1 -1
  1300. package/dist/tools/builtin/line/useLineTool.js +24 -16
  1301. package/dist/tools/builtin/line/useLineTool.js.map +1 -1
  1302. package/dist/tools/builtin/measure/useMeasureTool.js +84 -0
  1303. package/dist/tools/builtin/measure/useMeasureTool.js.map +1 -0
  1304. package/dist/tools/builtin/pen/penHandle.js +60 -0
  1305. package/dist/tools/builtin/pen/penHandle.js.map +1 -0
  1306. package/dist/tools/builtin/pen/usePenTool.js +463 -305
  1307. package/dist/tools/builtin/pen/usePenTool.js.map +1 -1
  1308. package/dist/tools/builtin/pencil/usePencilTool.js +20 -15
  1309. package/dist/tools/builtin/pencil/usePencilTool.js.map +1 -1
  1310. package/dist/tools/builtin/pickTopMostHit.js +51 -34
  1311. package/dist/tools/builtin/pickTopMostHit.js.map +1 -1
  1312. package/dist/tools/builtin/polygon/usePolygonTool.js +45 -26
  1313. package/dist/tools/builtin/polygon/usePolygonTool.js.map +1 -1
  1314. package/dist/tools/builtin/rect/useRectTool.js +24 -15
  1315. package/dist/tools/builtin/rect/useRectTool.js.map +1 -1
  1316. package/dist/tools/builtin/select/adapterPointQuery.js +48 -27
  1317. package/dist/tools/builtin/select/adapterPointQuery.js.map +1 -1
  1318. package/dist/tools/builtin/select/selectionContributions.js +94 -56
  1319. package/dist/tools/builtin/select/selectionContributions.js.map +1 -1
  1320. package/dist/tools/builtin/select/useSelectTool.js +155 -107
  1321. package/dist/tools/builtin/select/useSelectTool.js.map +1 -1
  1322. package/dist/tools/builtin/shared/insertToolOptions.js +5 -4
  1323. package/dist/tools/builtin/shared/insertToolOptions.js.map +1 -1
  1324. package/dist/tools/builtin/shared/pointerFollower.js +15 -8
  1325. package/dist/tools/builtin/shared/pointerFollower.js.map +1 -1
  1326. package/dist/tools/builtin/slice/useSliceTool.js +148 -99
  1327. package/dist/tools/builtin/slice/useSliceTool.js.map +1 -1
  1328. package/dist/tools/builtin/star/useStarTool.js +48 -29
  1329. package/dist/tools/builtin/star/useStarTool.js.map +1 -1
  1330. package/dist/tools/builtin/sticky/stickyNode.js +49 -0
  1331. package/dist/tools/builtin/sticky/stickyNode.js.map +1 -0
  1332. package/dist/tools/builtin/sticky/useStickyTool.js +86 -0
  1333. package/dist/tools/builtin/sticky/useStickyTool.js.map +1 -0
  1334. package/dist/tools/builtin/text/useTextTool.js +61 -36
  1335. package/dist/tools/builtin/text/useTextTool.js.map +1 -1
  1336. package/dist/tools/builtin/weight/useWeightTool.js +66 -42
  1337. package/dist/tools/builtin/weight/useWeightTool.js.map +1 -1
  1338. package/dist/tools/builtin/weight/weightActions.js +93 -65
  1339. package/dist/tools/builtin/weight/weightActions.js.map +1 -1
  1340. package/dist/tools/builtin/weight/weightOverlay.js +47 -30
  1341. package/dist/tools/builtin/weight/weightOverlay.js.map +1 -1
  1342. package/dist/tools/overlayBinding.js +7 -5
  1343. package/dist/tools/overlayBinding.js.map +1 -1
  1344. package/dist/tools/useKeybindings.js +62 -46
  1345. package/dist/tools/useKeybindings.js.map +1 -1
  1346. package/dist/{types-CIKDwlsP.d.ts → types-CHVXGfYm.d.ts} +27 -20
  1347. package/dist/util/color.js +39 -18
  1348. package/dist/util/color.js.map +1 -1
  1349. package/dist/util/paint.js +93 -38
  1350. package/dist/util/paint.js.map +1 -1
  1351. package/dist/version.js +11 -3
  1352. package/dist/version.js.map +1 -1
  1353. package/package.json +35 -23
  1354. package/dist/canvas/SceneCanvas/GestureDispatcherMounter.js +0 -126
  1355. package/dist/canvas/SceneCanvas/GestureDispatcherMounter.js.map +0 -1
  1356. package/dist/canvas/SceneCanvas/StandardActionsRegistrar.js +0 -64
  1357. package/dist/canvas/SceneCanvas/StandardActionsRegistrar.js.map +0 -1
  1358. package/dist/canvas/SceneCanvas/ToolKeybindingsMounter.js +0 -16
  1359. package/dist/canvas/SceneCanvas/ToolKeybindingsMounter.js.map +0 -1
  1360. package/dist/canvas/SceneCanvas/isDev.js +0 -12
  1361. package/dist/canvas/SceneCanvas/isDev.js.map +0 -1
  1362. package/dist/canvas/SceneCanvas/useViewLayerGate.js +0 -20
  1363. package/dist/canvas/SceneCanvas/useViewLayerGate.js.map +0 -1
  1364. package/dist/canvas/surface.module.js +0 -6
  1365. package/dist/canvas/surface.module.js.map +0 -1
  1366. package/dist/canvas/surfaceBox.js +0 -16
  1367. package/dist/canvas/surfaceBox.js.map +0 -1
  1368. package/dist/cornerHandles-BEshc4z3.d.ts +0 -104
  1369. package/dist/icons/ArrowIcon.js +0 -23
  1370. package/dist/icons/ArrowIcon.js.map +0 -1
  1371. package/dist/icons/EllipseIcon.js +0 -21
  1372. package/dist/icons/EllipseIcon.js.map +0 -1
  1373. package/dist/icons/EyedropperIcon.js +0 -49
  1374. package/dist/icons/EyedropperIcon.js.map +0 -1
  1375. package/dist/icons/HandIcon.js +0 -59
  1376. package/dist/icons/HandIcon.js.map +0 -1
  1377. package/dist/icons/ImageIcon.js +0 -34
  1378. package/dist/icons/ImageIcon.js.map +0 -1
  1379. package/dist/icons/LassoIcon.js +0 -22
  1380. package/dist/icons/LassoIcon.js.map +0 -1
  1381. package/dist/icons/LineIcon.js +0 -22
  1382. package/dist/icons/LineIcon.js.map +0 -1
  1383. package/dist/icons/PenIcon.js +0 -36
  1384. package/dist/icons/PenIcon.js.map +0 -1
  1385. package/dist/icons/PencilIcon.js +0 -25
  1386. package/dist/icons/PencilIcon.js.map +0 -1
  1387. package/dist/icons/PolygonIcon.js +0 -19
  1388. package/dist/icons/PolygonIcon.js.map +0 -1
  1389. package/dist/icons/RectIcon.js +0 -37
  1390. package/dist/icons/RectIcon.js.map +0 -1
  1391. package/dist/icons/SelectIcon.js +0 -20
  1392. package/dist/icons/SelectIcon.js.map +0 -1
  1393. package/dist/icons/StarIcon.js +0 -19
  1394. package/dist/icons/StarIcon.js.map +0 -1
  1395. package/dist/icons/TextIcon.js +0 -19
  1396. package/dist/icons/TextIcon.js.map +0 -1
  1397. package/dist/icons/UnknownIcon.js +0 -33
  1398. package/dist/icons/UnknownIcon.js.map +0 -1
  1399. package/dist/icons/_base.js +0 -12
  1400. package/dist/icons/_base.js.map +0 -1
  1401. package/dist/interactions/actions/actionShortcuts.js +0 -32
  1402. package/dist/interactions/actions/actionShortcuts.js.map +0 -1
  1403. package/dist/interactions/actions/defaults/icons/actionGlyphIcons.js +0 -40
  1404. package/dist/interactions/actions/defaults/icons/actionGlyphIcons.js.map +0 -1
  1405. package/dist/interactions/actions/defaults/icons/actionGlyphs.js +0 -10
  1406. package/dist/interactions/actions/defaults/icons/actionGlyphs.js.map +0 -1
  1407. package/dist/interactions/actions/defaults/icons/alignIcons.js +0 -173
  1408. package/dist/interactions/actions/defaults/icons/alignIcons.js.map +0 -1
  1409. package/dist/interactions/actions/defaults/icons/booleanIcons.js +0 -194
  1410. package/dist/interactions/actions/defaults/icons/booleanIcons.js.map +0 -1
  1411. package/dist/interactions/actions/defaults/icons/distributeIcons.js +0 -63
  1412. package/dist/interactions/actions/defaults/icons/distributeIcons.js.map +0 -1
  1413. package/dist/interactions/actions/defaults/icons/editIcons.js +0 -280
  1414. package/dist/interactions/actions/defaults/icons/editIcons.js.map +0 -1
  1415. package/dist/interactions/actions/defaults/icons/outlineIcons.js +0 -91
  1416. package/dist/interactions/actions/defaults/icons/outlineIcons.js.map +0 -1
  1417. package/dist/interactions/actions/resize/behaviors/index.js +0 -8
  1418. package/dist/interactions/actions/resize/behaviors/index.js.map +0 -1
  1419. package/dist/interactions/actions/resize/behaviors/lockAspect.js +0 -24
  1420. package/dist/interactions/actions/resize/behaviors/lockAspect.js.map +0 -1
  1421. package/dist/interactions/actions/resize/pointSnap.js +0 -111
  1422. package/dist/interactions/actions/resize/pointSnap.js.map +0 -1
  1423. package/dist/interactions/actions/rotate/behaviors/index.js +0 -7
  1424. package/dist/interactions/actions/rotate/behaviors/index.js.map +0 -1
  1425. package/dist/interactions/actions/rotate/behaviors/snapRotation.js +0 -12
  1426. package/dist/interactions/actions/rotate/behaviors/snapRotation.js.map +0 -1
  1427. package/dist/interactions/gestures/shared/snap.js +0 -24
  1428. package/dist/interactions/gestures/shared/snap.js.map +0 -1
  1429. package/dist/layout/arrivals.js +0 -33
  1430. package/dist/layout/arrivals.js.map +0 -1
  1431. package/dist/test-seams-D0pyV3pR.d.ts +0 -149
  1432. package/dist/util/constrainTo45.js +0 -17
  1433. package/dist/util/constrainTo45.js.map +0 -1
@@ -1,66 +1,97 @@
1
- import { easeOut as e, resolveEasing as t } from "@weasel-js/geom";
1
+ import { easeOut, resolveEasing } from "@weasel-js/geom";
2
+
2
3
  //#region src/animation/rewind.ts
3
- function n(e) {
4
+ /** A handle that answers for whichever leg of a move is running. */
5
+ function following(current) {
4
6
  return {
5
7
  get id() {
6
- return e().id;
8
+ return current().id;
7
9
  },
8
- cancel: () => e().cancel(),
9
- pause: () => e().pause(),
10
- resume: () => e().resume(),
11
- setTimeScale: (t) => e().setTimeScale(t),
12
- timeScale: () => e().timeScale(),
13
- isPaused: () => e().isPaused()
10
+ cancel: () => current().cancel(),
11
+ pause: () => current().pause(),
12
+ resume: () => current().resume(),
13
+ setTimeScale: (s) => current().setTimeScale(s),
14
+ timeScale: () => current().timeScale(),
15
+ isPaused: () => current().isPaused()
14
16
  };
15
17
  }
16
- function r(e, t) {
17
- let n = e.axes.to(e.committed()), r = e.axes.to(t);
18
- return n.every((e, t) => e === r[t]);
18
+ /** Whether the document holds `pose`, as the target's axes read both. */
19
+ function holds(target, pose) {
20
+ const doc = target.axes.to(target.committed());
21
+ const want = target.axes.to(pose);
22
+ return doc.every((x, i) => x === want[i]);
19
23
  }
20
- function i(i, a, o) {
21
- let s = t(o.easing ?? e), { ms: c } = o, l, u = (e, t, n) => {
22
- let d = e === 0 && t, f = c > 0 ? s(e / c) : 1, p = t ? c - e : e, m = t ? o.to : o.start;
23
- if (!d && (p < 1 || (t ? f >= 1 : f <= 0))) {
24
- a.stop({ commit: !1 }), t && o.onDone?.();
24
+ /**
25
+ * A tween of `target` from `start` to `to` that follows the document when the move is undone
26
+ * and redone mid-flight: once the document holds the pose at its other end, it turns around
27
+ * and travels there along the positions it passed, at the pace it passed them. Any other
28
+ * write still wins at once, as it does for a plain move.
29
+ */
30
+ function rewindingTween(animator, target, o) {
31
+ const ease = resolveEasing(o.easing ?? easeOut);
32
+ const { ms } = o;
33
+ let current;
34
+ /** Travels from `from`, the pose on screen with the move `at` ms along, toward `to` when
35
+ * `forward` and back toward `start` when not. */
36
+ const leg = (at, forward, from) => {
37
+ const first = at === 0 && forward;
38
+ const done = ms > 0 ? ease(at / ms) : 1;
39
+ const span = forward ? ms - at : at;
40
+ const dest = forward ? o.to : o.start;
41
+ if (!first && (span < 1 || (forward ? done >= 1 : done <= 0))) {
42
+ target.stop({ commit: false });
43
+ if (forward) o.onDone?.();
25
44
  return;
26
45
  }
27
- let h = t ? (t) => (s((e + p * t) / c) - f) / (1 - f) : (t) => 1 - s(e * (1 - t) / c) / f, g = l = i.tween({
28
- target: a,
29
- from: n,
30
- to: m,
31
- ms: p,
32
- easing: d ? s : h,
46
+ const easing = forward ? (v) => (ease((at + span * v) / ms) - done) / (1 - done) : (v) => 1 - ease(at * (1 - v) / ms) / done;
47
+ const mine = current = animator.tween({
48
+ target,
49
+ from,
50
+ to: dest,
51
+ ms: span,
52
+ easing: first ? ease : easing,
33
53
  cancelKey: o.cancelKey,
34
- interrupt: !1,
54
+ interrupt: false,
35
55
  interpolate: o.interpolate,
36
- onDone: t ? o.onDone : void 0,
37
- onTick(n) {
38
- if (r(a, m) || !r(a, t ? o.start : o.to)) return;
39
- let s = i.live().find((e) => e.id === g.id)?.elapsed ?? 0, c = e + (t ? 1 : -1) * Math.min(p, s);
40
- a.stop({ commit: !1 }), u(c, !t, n);
56
+ onDone: forward ? o.onDone : void 0,
57
+ onTick(value) {
58
+ if (holds(target, dest) || !holds(target, forward ? o.start : o.to)) return;
59
+ const elapsed = animator.live().find((row) => row.id === mine.id)?.elapsed ?? 0;
60
+ const now = at + (forward ? 1 : -1) * Math.min(span, elapsed);
61
+ target.stop({ commit: false });
62
+ leg(now, !forward, value);
41
63
  }
42
64
  });
43
65
  };
44
- return u(0, !0, o.from), n(() => l);
66
+ leg(0, true, o.from);
67
+ return following(() => current);
45
68
  }
46
- function a(e, t, i) {
47
- let a, o = (n, s) => {
48
- let c = n ? i.to : i.start;
49
- a = e.spring({
50
- target: t,
51
- from: s,
52
- to: c,
53
- ...i.tuning,
54
- cancelKey: i.cancelKey,
55
- onDone: n ? i.onDone : void 0,
56
- onTick(e) {
57
- !r(t, c) && r(t, n ? i.start : i.to) && o(!n, e);
69
+ /**
70
+ * A spring of `target` from `start` to `to` that follows the document as
71
+ * {@link rewindingTween} does: it springs toward the pose at its other end from where it is,
72
+ * at the speed it has.
73
+ */
74
+ function rewindingSpring(animator, target, o) {
75
+ let current;
76
+ const leg = (forward, from) => {
77
+ const dest = forward ? o.to : o.start;
78
+ current = animator.spring({
79
+ target,
80
+ from,
81
+ to: dest,
82
+ ...o.tuning,
83
+ cancelKey: o.cancelKey,
84
+ onDone: forward ? o.onDone : void 0,
85
+ onTick(value) {
86
+ if (holds(target, dest) || !holds(target, forward ? o.start : o.to)) return;
87
+ leg(!forward, value);
58
88
  }
59
89
  });
60
90
  };
61
- return o(!0, i.from), n(() => a);
91
+ leg(true, o.from);
92
+ return following(() => current);
62
93
  }
63
- //#endregion
64
- export { a as rewindingSpring, i as rewindingTween };
65
94
 
95
+ //#endregion
96
+ export { rewindingSpring, rewindingTween };
66
97
  //# sourceMappingURL=rewind.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rewind.js","names":["following","current","s","holds","doc","target","want","pose","x","i","rewindingTween","ease","resolveEasing","easeOut","leg","first","at","forward","done","ms","span","dest","easing","v","mine","animator","elapsed","row","now","value","rewindingSpring","o"],"sources":["../../src/animation/rewind.ts"],"sourcesContent":["import { easeOut, resolveEasing, type EasingSpec } from '@weasel-js/geom';\nimport type { AnimationHandle, Animator, Target, TargetSpringOptions } from '@weasel-js/animator';\n\n/** A move of a pose between the document pose it began at and the one it commits. */\ninterface Ends<TPose> {\n /** The document pose before the move: what an undo of it writes back. */\n start: TPose;\n /** The pose the move commits. */\n to: TPose;\n cancelKey: string;\n /** Called when the move arrives at `to`, never when it arrives back at `start`. */\n onDone?: () => void;\n}\n\n/** What {@link rewindingTween} takes. */\nexport interface RewindingTween<TPose> extends Ends<TPose> {\n /** Where the move appears to start. */\n from: TPose;\n ms: number;\n easing?: EasingSpec;\n interpolate?: (a: TPose, b: TPose, t: number) => TPose;\n}\n\n/** What {@link rewindingSpring} takes. */\nexport interface RewindingSpring<TPose> extends Ends<TPose> {\n from: TPose;\n tuning: Pick<TargetSpringOptions<TPose>, 'preset' | 'stiffness' | 'damping' | 'mass'>;\n}\n\n/** A handle that answers for whichever leg of a move is running. */\nfunction following(current: () => AnimationHandle): AnimationHandle {\n return {\n get id() { return current().id; },\n cancel: () => current().cancel(),\n pause: () => current().pause(),\n resume: () => current().resume(),\n setTimeScale: (s) => current().setTimeScale(s),\n timeScale: () => current().timeScale(),\n isPaused: () => current().isPaused(),\n };\n}\n\n/** Whether the document holds `pose`, as the target's axes read both. */\nfunction holds<TPose>(target: Target<TPose>, pose: TPose): boolean {\n const doc = target.axes.to(target.committed());\n const want = target.axes.to(pose);\n return doc.every((x, i) => x === want[i]);\n}\n\n/**\n * A tween of `target` from `start` to `to` that follows the document when the move is undone\n * and redone mid-flight: once the document holds the pose at its other end, it turns around\n * and travels there along the positions it passed, at the pace it passed them. Any other\n * write still wins at once, as it does for a plain move.\n */\nexport function rewindingTween<TPose>(\n animator: Animator, target: Target<TPose>, o: RewindingTween<TPose>,\n): AnimationHandle {\n const ease = resolveEasing(o.easing ?? easeOut);\n const { ms } = o;\n let current: AnimationHandle;\n\n /** Travels from `from`, the pose on screen with the move `at` ms along, toward `to` when\n * `forward` and back toward `start` when not. */\n const leg = (at: number, forward: boolean, from: TPose): void => {\n const first = at === 0 && forward;\n const done = ms > 0 ? ease(at / ms) : 1;\n const span = forward ? ms - at : at;\n const dest = forward ? o.to : o.start;\n // Nothing of the move lies that way: the pose is at that end already.\n if (!first && (span < 1 || (forward ? done >= 1 : done <= 0))) {\n target.stop({ commit: false });\n if (forward) o.onDone?.();\n return;\n }\n // The share of this leg's travel covered `v` of the way through its time.\n const easing = forward\n ? (v: number) => (ease((at + span * v) / ms) - done) / (1 - done)\n : (v: number) => 1 - ease((at * (1 - v)) / ms) / done;\n const mine: AnimationHandle = current = animator.tween<TPose>({\n target,\n from,\n to: dest,\n ms: span,\n easing: first ? ease : easing,\n cancelKey: o.cancelKey,\n interrupt: false,\n interpolate: o.interpolate,\n onDone: forward ? o.onDone : undefined,\n onTick(value) {\n if (holds(target, dest) || !holds(target, forward ? o.start : o.to)) return;\n const elapsed = animator.live().find((row) => row.id === mine.id)?.elapsed ?? 0;\n const now = at + (forward ? 1 : -1) * Math.min(span, elapsed);\n target.stop({ commit: false });\n leg(now, !forward, value);\n },\n });\n };\n leg(0, true, o.from);\n return following(() => current);\n}\n\n/**\n * A spring of `target` from `start` to `to` that follows the document as\n * {@link rewindingTween} does: it springs toward the pose at its other end from where it is,\n * at the speed it has.\n */\nexport function rewindingSpring<TPose>(\n animator: Animator, target: Target<TPose>, o: RewindingSpring<TPose>,\n): AnimationHandle {\n let current: AnimationHandle;\n const leg = (forward: boolean, from: TPose): void => {\n const dest = forward ? o.to : o.start;\n current = animator.spring<TPose>({\n target,\n from,\n to: dest,\n ...o.tuning,\n // Under the key it interrupts the leg before it, and starts at that one's velocity.\n cancelKey: o.cancelKey,\n onDone: forward ? o.onDone : undefined,\n onTick(value) {\n if (holds(target, dest) || !holds(target, forward ? o.start : o.to)) return;\n leg(!forward, value);\n },\n });\n };\n leg(true, o.from);\n return following(() => current);\n}\n"],"mappings":";;AA8BA,SAASA,EAAU,GAAiD;CAClE,OAAO;EACL,IAAI,KAAK;GAAE,OAAOC,EAAQ,CAAC,CAAC;EAAI;EAChC,cAAcA,EAAQ,CAAC,CAAC,OAAO;EAC/B,aAAaA,EAAQ,CAAC,CAAC,MAAM;EAC7B,cAAcA,EAAQ,CAAC,CAAC,OAAO;EAC/B,eAAe,MAAMA,EAAQ,CAAC,CAAC,aAAaC,CAAC;EAC7C,iBAAiBD,EAAQ,CAAC,CAAC,UAAU;EACrC,gBAAgBA,EAAQ,CAAC,CAAC,SAAS;CACrC;AACF;AAGA,SAASE,EAAa,GAAuB,GAAsB;CACjE,IAAMC,IAAMC,EAAO,KAAK,GAAGA,EAAO,UAAU,CAAC,GACvCC,IAAOD,EAAO,KAAK,GAAGE,CAAI;CAChC,OAAOH,EAAI,OAAO,GAAG,MAAMI,MAAMF,EAAKG,EAAE;AAC1C;AAQA,SAAgBC,EACd,GAAoB,GAAuB,GAC1B;CACjB,IAAMC,IAAOC,EAAc,EAAE,UAAUC,CAAO,GACxC,EAAE,UAAO,GACXZ,GAIEa,KAAO,GAAY,GAAkB,MAAsB;EAC/D,IAAMC,IAAQC,MAAO,KAAKC,GACpBC,IAAOC,IAAK,IAAIR,EAAKK,IAAKG,CAAE,IAAI,GAChCC,IAAOH,IAAUE,IAAKH,IAAKA,GAC3BK,IAAOJ,IAAU,EAAE,KAAK,EAAE;EAEhC,IAAI,CAACF,MAAUK,IAAO,MAAMH,IAAUC,KAAQ,IAAIA,KAAQ,KAAK;GAE7D,AADAb,EAAO,KAAK,EAAE,QAAQ,GAAM,CAAC,GACzBY,KAAS,EAAE,SAAS;GACxB;EACF;EAEA,IAAMK,IAASL,KACV,OAAeN,GAAMK,IAAKI,IAAOG,KAAKJ,CAAE,IAAID,MAAS,IAAIA,MACzD,MAAc,IAAIP,EAAMK,KAAM,IAAIO,KAAMJ,CAAE,IAAID,GAC7CM,IAAwB,IAAUC,EAAS,MAAa;GAC5D;GACA;GACA,IAAIJ;GACJ,IAAID;GACJ,QAAQL,IAAQJ,IAAOW;GACvB,WAAW,EAAE;GACb,WAAW;GACX,aAAa,EAAE;GACf,QAAQL,IAAU,EAAE,SAAS,KAAA;GAC7B,OAAO,GAAO;IACZ,IAAId,EAAME,GAAQgB,CAAI,KAAK,CAAClB,EAAME,GAAQY,IAAU,EAAE,QAAQ,EAAE,EAAE,GAAG;IACrE,IAAMS,IAAUD,EAAS,KAAK,CAAC,CAAC,MAAM,MAAQE,EAAI,OAAOH,EAAK,EAAE,CAAC,EAAE,WAAW,GACxEI,IAAMZ,KAAMC,IAAU,IAAI,MAAM,KAAK,IAAIG,GAAMM,CAAO;IAE5D,AADArB,EAAO,KAAK,EAAE,QAAQ,GAAM,CAAC,GAC7BS,EAAIc,GAAK,CAACX,GAASY,CAAK;GAC1B;EACF,CAAC;CACH;CAEA,OADAf,EAAI,GAAG,IAAM,EAAE,IAAI,GACZd,QAAgBC,CAAO;AAChC;AAOA,SAAgB6B,EACd,GAAoB,GAAuB,GAC1B;CACjB,IAAI7B,GACEa,KAAO,GAAkB,MAAsB;EACnD,IAAMO,IAAOJ,IAAUc,EAAE,KAAKA,EAAE;EAChC,IAAUN,EAAS,OAAc;GAC/B;GACA;GACA,IAAIJ;GACJ,GAAGU,EAAE;GAEL,WAAWA,EAAE;GACb,QAAQd,IAAUc,EAAE,SAAS,KAAA;GAC7B,OAAO,GAAO;IACZ,AAAI,GAAM1B,GAAQgB,CAAI,KAAMlB,EAAME,GAAQY,IAAUc,EAAE,QAAQA,EAAE,EAAE,KAClEjB,EAAI,CAACG,GAASY,CAAK;GACrB;EACF,CAAC;CACH;CAEA,OADAf,EAAI,IAAMiB,EAAE,IAAI,GACT/B,QAAgBC,CAAO;AAChC"}
1
+ {"version":3,"file":"rewind.js","names":[],"sources":["../../src/animation/rewind.ts"],"sourcesContent":["import { easeOut, resolveEasing, type EasingSpec } from '@weasel-js/geom';\nimport type { AnimationHandle, Animator, Target, TargetSpringOptions } from '@weasel-js/animator';\n\n/** A move of a pose between the document pose it began at and the one it commits. */\ninterface Ends<TPose> {\n /** The document pose before the move: what an undo of it writes back. */\n start: TPose;\n /** The pose the move commits. */\n to: TPose;\n cancelKey: string;\n /** Called when the move arrives at `to`, never when it arrives back at `start`. */\n onDone?: () => void;\n}\n\n/** What {@link rewindingTween} takes. */\nexport interface RewindingTween<TPose> extends Ends<TPose> {\n /** Where the move appears to start. */\n from: TPose;\n ms: number;\n easing?: EasingSpec;\n interpolate?: (a: TPose, b: TPose, t: number) => TPose;\n}\n\n/** What {@link rewindingSpring} takes. */\nexport interface RewindingSpring<TPose> extends Ends<TPose> {\n from: TPose;\n tuning: Pick<TargetSpringOptions<TPose>, 'preset' | 'stiffness' | 'damping' | 'mass'>;\n}\n\n/** A handle that answers for whichever leg of a move is running. */\nfunction following(current: () => AnimationHandle): AnimationHandle {\n return {\n get id() { return current().id; },\n cancel: () => current().cancel(),\n pause: () => current().pause(),\n resume: () => current().resume(),\n setTimeScale: (s) => current().setTimeScale(s),\n timeScale: () => current().timeScale(),\n isPaused: () => current().isPaused(),\n };\n}\n\n/** Whether the document holds `pose`, as the target's axes read both. */\nfunction holds<TPose>(target: Target<TPose>, pose: TPose): boolean {\n const doc = target.axes.to(target.committed());\n const want = target.axes.to(pose);\n return doc.every((x, i) => x === want[i]);\n}\n\n/**\n * A tween of `target` from `start` to `to` that follows the document when the move is undone\n * and redone mid-flight: once the document holds the pose at its other end, it turns around\n * and travels there along the positions it passed, at the pace it passed them. Any other\n * write still wins at once, as it does for a plain move.\n */\nexport function rewindingTween<TPose>(\n animator: Animator, target: Target<TPose>, o: RewindingTween<TPose>,\n): AnimationHandle {\n const ease = resolveEasing(o.easing ?? easeOut);\n const { ms } = o;\n let current: AnimationHandle;\n\n /** Travels from `from`, the pose on screen with the move `at` ms along, toward `to` when\n * `forward` and back toward `start` when not. */\n const leg = (at: number, forward: boolean, from: TPose): void => {\n const first = at === 0 && forward;\n const done = ms > 0 ? ease(at / ms) : 1;\n const span = forward ? ms - at : at;\n const dest = forward ? o.to : o.start;\n // Nothing of the move lies that way: the pose is at that end already.\n if (!first && (span < 1 || (forward ? done >= 1 : done <= 0))) {\n target.stop({ commit: false });\n if (forward) o.onDone?.();\n return;\n }\n // The share of this leg's travel covered `v` of the way through its time.\n const easing = forward\n ? (v: number) => (ease((at + span * v) / ms) - done) / (1 - done)\n : (v: number) => 1 - ease((at * (1 - v)) / ms) / done;\n const mine: AnimationHandle = current = animator.tween<TPose>({\n target,\n from,\n to: dest,\n ms: span,\n easing: first ? ease : easing,\n cancelKey: o.cancelKey,\n interrupt: false,\n interpolate: o.interpolate,\n onDone: forward ? o.onDone : undefined,\n onTick(value) {\n if (holds(target, dest) || !holds(target, forward ? o.start : o.to)) return;\n const elapsed = animator.live().find((row) => row.id === mine.id)?.elapsed ?? 0;\n const now = at + (forward ? 1 : -1) * Math.min(span, elapsed);\n target.stop({ commit: false });\n leg(now, !forward, value);\n },\n });\n };\n leg(0, true, o.from);\n return following(() => current);\n}\n\n/**\n * A spring of `target` from `start` to `to` that follows the document as\n * {@link rewindingTween} does: it springs toward the pose at its other end from where it is,\n * at the speed it has.\n */\nexport function rewindingSpring<TPose>(\n animator: Animator, target: Target<TPose>, o: RewindingSpring<TPose>,\n): AnimationHandle {\n let current: AnimationHandle;\n const leg = (forward: boolean, from: TPose): void => {\n const dest = forward ? o.to : o.start;\n current = animator.spring<TPose>({\n target,\n from,\n to: dest,\n ...o.tuning,\n // Under the key it interrupts the leg before it, and starts at that one's velocity.\n cancelKey: o.cancelKey,\n onDone: forward ? o.onDone : undefined,\n onTick(value) {\n if (holds(target, dest) || !holds(target, forward ? o.start : o.to)) return;\n leg(!forward, value);\n },\n });\n };\n leg(true, o.from);\n return following(() => current);\n}\n"],"mappings":";;;;AA8BA,SAAS,UAAU,SAAiD;CAClE,OAAO;EACL,IAAI,KAAK;GAAE,OAAO,QAAQ,CAAC,CAAC;EAAI;EAChC,cAAc,QAAQ,CAAC,CAAC,OAAO;EAC/B,aAAa,QAAQ,CAAC,CAAC,MAAM;EAC7B,cAAc,QAAQ,CAAC,CAAC,OAAO;EAC/B,eAAe,MAAM,QAAQ,CAAC,CAAC,aAAa,CAAC;EAC7C,iBAAiB,QAAQ,CAAC,CAAC,UAAU;EACrC,gBAAgB,QAAQ,CAAC,CAAC,SAAS;CACrC;AACF;;AAGA,SAAS,MAAa,QAAuB,MAAsB;CACjE,MAAM,MAAM,OAAO,KAAK,GAAG,OAAO,UAAU,CAAC;CAC7C,MAAM,OAAO,OAAO,KAAK,GAAG,IAAI;CAChC,OAAO,IAAI,OAAO,GAAG,MAAM,MAAM,KAAK,EAAE;AAC1C;;;;;;;AAQA,SAAgB,eACd,UAAoB,QAAuB,GAC1B;CACjB,MAAM,OAAO,cAAc,EAAE,UAAU,OAAO;CAC9C,MAAM,EAAE,OAAO;CACf,IAAI;;;CAIJ,MAAM,OAAO,IAAY,SAAkB,SAAsB;EAC/D,MAAM,QAAQ,OAAO,KAAK;EAC1B,MAAM,OAAO,KAAK,IAAI,KAAK,KAAK,EAAE,IAAI;EACtC,MAAM,OAAO,UAAU,KAAK,KAAK;EACjC,MAAM,OAAO,UAAU,EAAE,KAAK,EAAE;EAEhC,IAAI,CAAC,UAAU,OAAO,MAAM,UAAU,QAAQ,IAAI,QAAQ,KAAK;GAC7D,OAAO,KAAK,EAAE,QAAQ,MAAM,CAAC;GAC7B,IAAI,SAAS,EAAE,SAAS;GACxB;EACF;EAEA,MAAM,SAAS,WACV,OAAe,MAAM,KAAK,OAAO,KAAK,EAAE,IAAI,SAAS,IAAI,SACzD,MAAc,IAAI,KAAM,MAAM,IAAI,KAAM,EAAE,IAAI;EACnD,MAAM,OAAwB,UAAU,SAAS,MAAa;GAC5D;GACA;GACA,IAAI;GACJ,IAAI;GACJ,QAAQ,QAAQ,OAAO;GACvB,WAAW,EAAE;GACb,WAAW;GACX,aAAa,EAAE;GACf,QAAQ,UAAU,EAAE,SAAS;GAC7B,OAAO,OAAO;IACZ,IAAI,MAAM,QAAQ,IAAI,KAAK,CAAC,MAAM,QAAQ,UAAU,EAAE,QAAQ,EAAE,EAAE,GAAG;IACrE,MAAM,UAAU,SAAS,KAAK,CAAC,CAAC,MAAM,QAAQ,IAAI,OAAO,KAAK,EAAE,CAAC,EAAE,WAAW;IAC9E,MAAM,MAAM,MAAM,UAAU,IAAI,MAAM,KAAK,IAAI,MAAM,OAAO;IAC5D,OAAO,KAAK,EAAE,QAAQ,MAAM,CAAC;IAC7B,IAAI,KAAK,CAAC,SAAS,KAAK;GAC1B;EACF,CAAC;CACH;CACA,IAAI,GAAG,MAAM,EAAE,IAAI;CACnB,OAAO,gBAAgB,OAAO;AAChC;;;;;;AAOA,SAAgB,gBACd,UAAoB,QAAuB,GAC1B;CACjB,IAAI;CACJ,MAAM,OAAO,SAAkB,SAAsB;EACnD,MAAM,OAAO,UAAU,EAAE,KAAK,EAAE;EAChC,UAAU,SAAS,OAAc;GAC/B;GACA;GACA,IAAI;GACJ,GAAG,EAAE;GAEL,WAAW,EAAE;GACb,QAAQ,UAAU,EAAE,SAAS;GAC7B,OAAO,OAAO;IACZ,IAAI,MAAM,QAAQ,IAAI,KAAK,CAAC,MAAM,QAAQ,UAAU,EAAE,QAAQ,EAAE,EAAE,GAAG;IACrE,IAAI,CAAC,SAAS,KAAK;GACrB;EACF,CAAC;CACH;CACA,IAAI,MAAM,EAAE,IAAI;CAChB,OAAO,gBAAgB,OAAO;AAChC"}
@@ -1,106 +1,159 @@
1
- import { AUTO_POSE_DESCRIPTOR as e } from "../../core/geometry/autoPoseDescriptor.js";
2
- import { createRigSeat as t } from "./rigSeat.js";
3
- import { bindSkins as n, dataRestPath as r } from "./skinBinding.js";
4
- import { mat3 as i } from "@weasel-js/geom";
5
- import { resolveSkeleton as a } from "@weasel-js/animator";
1
+ import { AUTO_POSE_DESCRIPTOR } from "../../core/geometry/autoPoseDescriptor.js";
2
+ import { createRigSeat } from "./rigSeat.js";
3
+ import { bindSkins, dataRestPath } from "./skinBinding.js";
4
+ import { mat3 } from "@weasel-js/geom";
5
+ import { resolveSkeleton } from "@weasel-js/animator";
6
+
6
7
  //#region src/animation/rig/bindRig.ts
7
- function o(e) {
8
- return (t, { rest: n, fromRest: r }) => {
9
- let a = e.getBounds(n), o = a.x + a.width / 2, s = a.y + a.height / 2, [c, l] = i.apply(r, o, s), u = e.translate ? e.translate(n, c - o, l - s) : e.remapBounds(n, a, {
10
- ...a,
11
- x: a.x + c - o,
12
- y: a.y + l - s
8
+ /**
9
+ * Carries a node rigidly with its joint: the rest pose's center moves by
10
+ * `fromRest`, and its rotation turns with the rest pose's x-axis. Scale in the
11
+ * joint chain moves positions but not sizes — the pose model holds no shear,
12
+ * and a sized pose under anisotropic scale would need one. Write an `apply`
13
+ * that reads `world` to size nodes from joint scale.
14
+ */
15
+ function rigidRigApply(descriptor) {
16
+ return (_world, { rest, fromRest }) => {
17
+ const b = descriptor.getBounds(rest);
18
+ const cx = b.x + b.width / 2;
19
+ const cy = b.y + b.height / 2;
20
+ const [nx, ny] = mat3.apply(fromRest, cx, cy);
21
+ const moved = descriptor.translate ? descriptor.translate(rest, nx - cx, ny - cy) : descriptor.remapBounds(rest, b, {
22
+ ...b,
23
+ x: b.x + nx - cx,
24
+ y: b.y + ny - cy
13
25
  });
14
- if (!e.withRotation) return u;
15
- let d = e.getRotation?.(n) ?? 0, f = Math.cos(d), p = Math.sin(d);
16
- return e.withRotation(u, Math.atan2(r[1] * f + r[4] * p, r[0] * f + r[3] * p));
26
+ if (!descriptor.withRotation) return moved;
27
+ const r0 = descriptor.getRotation?.(rest) ?? 0;
28
+ const ux = Math.cos(r0);
29
+ const uy = Math.sin(r0);
30
+ return descriptor.withRotation(moved, Math.atan2(fromRest[1] * ux + fromRest[4] * uy, fromRest[0] * ux + fromRest[3] * uy));
17
31
  };
18
32
  }
19
- function s(e) {
20
- let n = t(e.skeleton), { rig: r, binding: i } = c(e, n);
21
- return n.binding = i, r;
33
+ /**
34
+ * Bind a skeleton's joints to scene nodes. Nodes are written in world space
35
+ * and the rig resolves its own hierarchy, so bound nodes are best left
36
+ * unparented, or under containers whose pose does not compose into theirs;
37
+ * the scene's tree stays free to order and group them for drawing.
38
+ */
39
+ function bindRig(options) {
40
+ const seat = createRigSeat(options.skeleton);
41
+ const { rig, binding } = bindRigOn(options, seat);
42
+ seat.binding = binding;
43
+ return rig;
22
44
  }
23
- function c(t, s) {
24
- let { scene: c, skeleton: l } = t, u = t.descriptor ?? e, d = t.apply ?? o(u), f = a(l, {}), p = /* @__PURE__ */ new Map(), m = (e) => {
25
- let t = p.get(e);
26
- if (t) return t;
27
- let n = f.get(e);
28
- if (!n) throw Error(`bindRig: the skeleton has no joint "${e}".`);
29
- if (t = i.invert(n) ?? void 0, !t) throw Error(`bindRig: joint "${e}" is singular at the bind pose.`);
30
- return p.set(e, t), t;
31
- }, h = n(c, t.skins ?? {}, t.restPath ?? r, u);
32
- h.joints.forEach(m);
33
- let g = [];
34
- for (let [e, n] of Object.entries(t.bindings ?? {})) {
35
- m(e);
36
- let r = f.get(e);
37
- for (let i of typeof n == "string" ? [n] : n) {
38
- if (t.skins && i in t.skins) throw Error(`bindRig: node "${i}" is both bound to joint "${e}" and skinned.`);
39
- let n = c.get(i);
40
- if (!n) throw Error(`bindRig: joint "${e}" is bound to node "${i}", which the scene lacks.`);
41
- g.push({
42
- node: i,
43
- joint: e,
45
+ /** {@link bindRig} on a seat the caller keeps. The rig shows the seat's target once its
46
+ * `binding` is the seat's. */
47
+ function bindRigOn(options, seat) {
48
+ const { scene, skeleton } = options;
49
+ const descriptor = options.descriptor ?? AUTO_POSE_DESCRIPTOR;
50
+ const apply = options.apply ?? rigidRigApply(descriptor);
51
+ const restWorlds = resolveSkeleton(skeleton, {});
52
+ const restInverses = /* @__PURE__ */ new Map();
53
+ const restInverseOf = (joint) => {
54
+ let inverse = restInverses.get(joint);
55
+ if (inverse) return inverse;
56
+ const restWorld = restWorlds.get(joint);
57
+ if (!restWorld) throw new Error(`bindRig: the skeleton has no joint "${joint}".`);
58
+ inverse = mat3.invert(restWorld) ?? void 0;
59
+ if (!inverse) throw new Error(`bindRig: joint "${joint}" is singular at the bind pose.`);
60
+ restInverses.set(joint, inverse);
61
+ return inverse;
62
+ };
63
+ const skins = bindSkins(scene, options.skins ?? {}, options.restPath ?? dataRestPath, descriptor);
64
+ skins.joints.forEach(restInverseOf);
65
+ const bound = [];
66
+ for (const [joint, ids] of Object.entries(options.bindings ?? {})) {
67
+ restInverseOf(joint);
68
+ const restWorld = restWorlds.get(joint);
69
+ for (const node of typeof ids === "string" ? [ids] : ids) {
70
+ if (options.skins && node in options.skins) throw new Error(`bindRig: node "${node}" is both bound to joint "${joint}" and skinned.`);
71
+ const n = scene.get(node);
72
+ if (!n) throw new Error(`bindRig: joint "${joint}" is bound to node "${node}", which the scene lacks.`);
73
+ bound.push({
74
+ node,
75
+ joint,
44
76
  rest: n.pose,
45
- restWorld: r,
77
+ restWorld,
46
78
  entry: { pose: n.pose }
47
79
  });
48
80
  }
49
81
  }
50
- let _ = f, v = !1, y = () => {
51
- if (v) {
52
- v = !1;
53
- for (let e of g) c.overrides.clear(e.node);
54
- h.release();
55
- }
56
- }, b = () => {
57
- s.shown = !1, y();
58
- }, x = (e) => {
59
- let t = a(l, e), { root: n } = s;
60
- if (n) for (let [e, r] of t) t.set(e, i.multiply(n, r));
61
- _ = t;
62
- let r = /* @__PURE__ */ new Map(), o = (e) => {
63
- let n = r.get(e);
64
- return n || (n = i.multiply(t.get(e), m(e)), r.set(e, n)), n;
82
+ let world = restWorlds;
83
+ let installed = false;
84
+ const drop = () => {
85
+ if (!installed) return;
86
+ installed = false;
87
+ for (const b of bound) scene.overrides.clear(b.node);
88
+ skins.release();
89
+ };
90
+ const release = () => {
91
+ seat.shown = false;
92
+ drop();
93
+ };
94
+ const show = (pose) => {
95
+ const local = resolveSkeleton(skeleton, pose);
96
+ const { root } = seat;
97
+ if (root) for (const [name, m] of local) local.set(name, mat3.multiply(root, m));
98
+ world = local;
99
+ const fromRest = /* @__PURE__ */ new Map();
100
+ const motionOf = (joint) => {
101
+ let delta = fromRest.get(joint);
102
+ if (!delta) {
103
+ delta = mat3.multiply(local.get(joint), restInverseOf(joint));
104
+ fromRest.set(joint, delta);
105
+ }
106
+ return delta;
65
107
  };
66
- for (let e of g) {
67
- let n = t.get(e.joint);
68
- e.entry.pose = d(n, {
69
- joint: e.joint,
70
- node: e.node,
71
- rest: e.rest,
72
- restWorld: e.restWorld,
73
- fromRest: o(e.joint)
74
- }), v || c.overrides.set(e.node, e.entry);
108
+ for (const b of bound) {
109
+ const w = local.get(b.joint);
110
+ b.entry.pose = apply(w, {
111
+ joint: b.joint,
112
+ node: b.node,
113
+ rest: b.rest,
114
+ restWorld: b.restWorld,
115
+ fromRest: motionOf(b.joint)
116
+ });
117
+ if (!installed) scene.overrides.set(b.node, b.entry);
75
118
  }
76
- h.joints.forEach(o), h.show(r), v = !0, s.shown = !0, c.overrides.commit();
77
- }, { target: S } = s;
119
+ skins.joints.forEach(motionOf);
120
+ skins.show(fromRest);
121
+ installed = true;
122
+ seat.shown = true;
123
+ scene.overrides.commit();
124
+ };
125
+ const { target } = seat;
78
126
  return {
79
127
  rig: {
80
- skeleton: l,
81
- target: S,
82
- pose(e, t) {
83
- s.committed = e, t && (s.root = t), x(S.read());
128
+ skeleton,
129
+ target,
130
+ pose(pose, at) {
131
+ seat.committed = pose;
132
+ if (at) seat.root = at;
133
+ show(target.read());
84
134
  },
85
- place(e) {
86
- s.root = e, x(S.read());
135
+ place(at) {
136
+ seat.root = at;
137
+ show(target.read());
87
138
  },
88
- world: () => _,
89
- bake(e = "Bake rig pose") {
90
- v && (c.batch(e, () => {
91
- for (let e of g) e.entry.pose !== void 0 && c.setPose(e.node, e.entry.pose);
92
- h.write();
93
- }), b());
139
+ world: () => world,
140
+ bake(label = "Bake rig pose") {
141
+ if (!installed) return;
142
+ scene.batch(label, () => {
143
+ for (const b of bound) if (b.entry.pose !== void 0) scene.setPose(b.node, b.entry.pose);
144
+ skins.write();
145
+ });
146
+ release();
94
147
  },
95
- release: b
148
+ release
96
149
  },
97
150
  binding: {
98
- show: x,
99
- drop: y
151
+ show,
152
+ drop
100
153
  }
101
154
  };
102
155
  }
103
- //#endregion
104
- export { s as bindRig, c as bindRigOn, o as rigidRigApply };
105
156
 
157
+ //#endregion
158
+ export { bindRig, bindRigOn, rigidRigApply };
106
159
  //# sourceMappingURL=bindRig.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bindRig.js","names":["rigidRigApply","b","descriptor","rest","cx","cy","nx","ny","mat3","fromRest","moved","r0","ux","uy","bindRig","seat","createRigSeat","options","bindRigOn","binding","rig","AUTO_POSE_DESCRIPTOR","apply","restWorlds","resolveSkeleton","skeleton","restInverses","restInverseOf","inverse","joint","restWorld","skins","bindSkins","scene","dataRestPath","bound","ids","node","world","installed","drop","release","show","local","pose","root","name","m","motionOf","delta","w","at","target","label"],"sources":["../../../src/animation/rig/bindRig.ts"],"sourcesContent":["import type { PoseDescriptor } from '../../core/geometry/poseDescriptor';\nimport type { NodeId, PoseOverride } from '../../core/scene/types';\nimport { AUTO_POSE_DESCRIPTOR } from 'core/geometry/autoPoseDescriptor';\nimport { mat3, type GlMat3 } from '@weasel-js/geom';\nimport type { Target } from '@weasel-js/animator';\nimport { resolveSkeleton } from '@weasel-js/animator';\nimport type { Pose, Skeleton } from '@weasel-js/animator';\nimport type { Skin } from '@weasel-js/animator';\nimport { createRigSeat, type RigBinding, type RigSeat } from './rigSeat';\nimport { bindSkins, dataRestPath, type RestPath, type SkinScene } from './skinBinding';\n\n/** The part of a scene a rig writes to. */\nexport interface RigScene<TPose> extends SkinScene<TPose> {\n batch<T>(label: string, fn: () => T): T;\n}\n\n/** What a `RigApply` knows about the node it is posing. */\nexport interface RigApplyContext<TPose> {\n /** The joint the node rides. */\n joint: string;\n node: NodeId;\n /** The node's document pose when the rig was bound — where it sits at the\n * bind pose. */\n rest: TPose;\n /** The joint's world transform at the bind pose. */\n restWorld: GlMat3;\n /** `world * inverse(restWorld)`: the motion since the bind pose, in world\n * space. Carrying `rest` by it is what welding the node to the joint means. */\n fromRest: GlMat3;\n}\n\n/** Turns a joint's world transform into a pose for one bound node. The only\n * part of a rig that knows the scene's pose shape. */\nexport type RigApply<TPose> = (world: GlMat3, ctx: RigApplyContext<TPose>) => TPose;\n\n/** Options for `bindRig`. */\nexport interface BindRigOptions<TPose> {\n scene: RigScene<TPose>;\n skeleton: Skeleton;\n /** Joint name → the node or nodes that ride it. Each node keeps the offset\n * from its joint that it has at the bind pose. */\n bindings?: Readonly<Record<string, NodeId | readonly NodeId[]>>;\n /** Node id → the weights its path bends by. Where a bound node moves whole with one joint,\n * a skinned node's points each follow their own joints, and the rig shows the bent path\n * through the node's pose override, posed at the path's bounds. */\n skins?: Readonly<Record<NodeId, Skin>>;\n /** Where a skinned node's path is drawn when the rig is bound. Default\n * {@link dataRestPath}: the node's `data.path`, through its pose. */\n restPath?: RestPath<TPose>;\n /** Default: {@link rigidRigApply} over `descriptor`. */\n apply?: RigApply<TPose>;\n /** The descriptor the default `apply` reads and writes poses through.\n * Default `AUTO_POSE_DESCRIPTOR`. */\n descriptor?: PoseDescriptor<TPose>;\n}\n\n/** A skeleton bound to scene nodes, as `bindRig` returns it. */\nexport interface Rig {\n readonly skeleton: Skeleton;\n /**\n * The rig's pose as a value an animator moves. Its committed value starts as `{}`, the bind\n * pose, and each frame the rig is posed with what the target shows. A clip is a\n * `SampledTrack<Pose>` given this as its `target`: clips on one rig crossfade by their\n * `weight`s, weights short of 1 leave the rest to the committed pose, and a `spring` or\n * `tween` from a pose away from the committed one adds on top. `animator.hold` shows a pose made elsewhere the same way, an\n * IK solve included.\n */\n readonly target: Target<Pose>;\n /**\n * Commit `pose` and move every bound node to what the target now shows, which is `pose`\n * unless something is animating the target; a hold on it weighs the new pose in when it is\n * next read, at the animator's next frame or the hold's `touch()`. Writes go through the scene's pose overrides —\n * no history entry, no document write, no version bump — and are committed. `root`, where\n * given, replaces the placement, as {@link Rig.place}.\n */\n pose(pose: Pose, root?: GlMat3): void;\n /** Place the rig in the world by `root`, which may mirror it, and pose it there. It stays\n * until placed again; with no `root`, the rig goes back to where its skeleton puts it. */\n place(root?: GlMat3): void;\n /** The joint world transforms as the rig was last posed, root applied. */\n world(): ReadonlyMap<string, GlMat3>;\n /** Write the current frame into the bound nodes' document poses as one\n * undo entry, and drop the overrides. A skinned node's bent path goes into\n * its `data.path`. Later frames stay relative to the bind-time rest, so\n * baking does not compound. */\n bake(label?: string): void;\n /** Drop the overrides; the nodes show their document poses again until the\n * rig is next posed. */\n release(): void;\n}\n\n/**\n * Carries a node rigidly with its joint: the rest pose's center moves by\n * `fromRest`, and its rotation turns with the rest pose's x-axis. Scale in the\n * joint chain moves positions but not sizes — the pose model holds no shear,\n * and a sized pose under anisotropic scale would need one. Write an `apply`\n * that reads `world` to size nodes from joint scale.\n */\nexport function rigidRigApply<TPose>(descriptor: PoseDescriptor<TPose>): RigApply<TPose> {\n return (_world, { rest, fromRest }) => {\n const b = descriptor.getBounds(rest);\n const cx = b.x + b.width / 2;\n const cy = b.y + b.height / 2;\n const [nx, ny] = mat3.apply(fromRest, cx, cy);\n const moved = descriptor.translate\n ? descriptor.translate(rest, nx - cx, ny - cy)\n : descriptor.remapBounds(rest, b, { ...b, x: b.x + nx - cx, y: b.y + ny - cy });\n if (!descriptor.withRotation) return moved;\n const r0 = descriptor.getRotation?.(rest) ?? 0;\n const ux = Math.cos(r0);\n const uy = Math.sin(r0);\n return descriptor.withRotation(\n moved,\n Math.atan2(fromRest[1] * ux + fromRest[4] * uy, fromRest[0] * ux + fromRest[3] * uy),\n );\n };\n}\n\ninterface Bound<TPose> {\n node: NodeId;\n joint: string;\n rest: TPose;\n restWorld: GlMat3;\n entry: PoseOverride<TPose>;\n}\n\n/**\n * Bind a skeleton's joints to scene nodes. Nodes are written in world space\n * and the rig resolves its own hierarchy, so bound nodes are best left\n * unparented, or under containers whose pose does not compose into theirs;\n * the scene's tree stays free to order and group them for drawing.\n */\nexport function bindRig<TPose>(options: BindRigOptions<TPose>): Rig {\n const seat = createRigSeat(options.skeleton);\n const { rig, binding } = bindRigOn(options, seat);\n seat.binding = binding;\n return rig;\n}\n\n/** {@link bindRig} on a seat the caller keeps. The rig shows the seat's target once its\n * `binding` is the seat's. */\nexport function bindRigOn<TPose>(\n options: BindRigOptions<TPose>,\n seat: RigSeat,\n): { rig: Rig; binding: RigBinding } {\n const { scene, skeleton } = options;\n const descriptor = options.descriptor ?? (AUTO_POSE_DESCRIPTOR as PoseDescriptor<TPose>);\n const apply = options.apply ?? rigidRigApply(descriptor);\n const restWorlds = resolveSkeleton(skeleton, {});\n const restInverses = new Map<string, GlMat3>();\n const restInverseOf = (joint: string): GlMat3 => {\n let inverse = restInverses.get(joint);\n if (inverse) return inverse;\n const restWorld = restWorlds.get(joint);\n if (!restWorld) throw new Error(`bindRig: the skeleton has no joint \"${joint}\".`);\n inverse = mat3.invert(restWorld) ?? undefined;\n if (!inverse) throw new Error(`bindRig: joint \"${joint}\" is singular at the bind pose.`);\n restInverses.set(joint, inverse);\n return inverse;\n };\n\n const skins = bindSkins(scene, options.skins ?? {}, options.restPath ?? dataRestPath, descriptor);\n skins.joints.forEach(restInverseOf);\n\n const bound: Bound<TPose>[] = [];\n for (const [joint, ids] of Object.entries(options.bindings ?? {})) {\n restInverseOf(joint);\n const restWorld = restWorlds.get(joint)!;\n for (const node of typeof ids === 'string' ? [ids] : (ids as readonly NodeId[])) {\n if (options.skins && node in options.skins) {\n throw new Error(`bindRig: node \"${node}\" is both bound to joint \"${joint}\" and skinned.`);\n }\n const n = scene.get(node);\n if (!n) throw new Error(`bindRig: joint \"${joint}\" is bound to node \"${node}\", which the scene lacks.`);\n bound.push({ node, joint, rest: n.pose, restWorld, entry: { pose: n.pose } });\n }\n }\n\n let world: ReadonlyMap<string, GlMat3> = restWorlds;\n let installed = false;\n\n const drop = () => {\n if (!installed) return;\n installed = false;\n for (const b of bound) scene.overrides.clear(b.node);\n skins.release();\n };\n const release = () => {\n seat.shown = false;\n drop();\n };\n\n const show = (pose: Pose): void => {\n const local = resolveSkeleton(skeleton, pose);\n const { root } = seat;\n if (root) for (const [name, m] of local) local.set(name, mat3.multiply(root, m));\n world = local;\n const fromRest = new Map<string, GlMat3>();\n const motionOf = (joint: string): GlMat3 => {\n let delta = fromRest.get(joint);\n if (!delta) {\n delta = mat3.multiply(local.get(joint)!, restInverseOf(joint));\n fromRest.set(joint, delta);\n }\n return delta;\n };\n for (const b of bound) {\n const w = local.get(b.joint)!;\n b.entry.pose = apply(w, { joint: b.joint, node: b.node, rest: b.rest, restWorld: b.restWorld, fromRest: motionOf(b.joint) });\n if (!installed) scene.overrides.set(b.node, b.entry);\n }\n skins.joints.forEach(motionOf);\n skins.show(fromRest);\n installed = true;\n seat.shown = true;\n scene.overrides.commit();\n };\n\n const { target } = seat;\n const rig: Rig = {\n skeleton,\n target,\n pose(pose, at) {\n seat.committed = pose;\n if (at) seat.root = at;\n show(target.read());\n },\n place(at) {\n seat.root = at;\n show(target.read());\n },\n world: () => world,\n bake(label = 'Bake rig pose') {\n if (!installed) return;\n scene.batch(label, () => {\n for (const b of bound) if (b.entry.pose !== undefined) scene.setPose(b.node, b.entry.pose);\n skins.write();\n });\n release();\n },\n release,\n };\n return { rig, binding: { show, drop } };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"bindRig.js","names":[],"sources":["../../../src/animation/rig/bindRig.ts"],"sourcesContent":["import type { PoseDescriptor } from '../../core/geometry/poseDescriptor';\nimport type { NodeId, PoseOverride } from '../../core/scene/types';\nimport { AUTO_POSE_DESCRIPTOR } from 'core/geometry/autoPoseDescriptor';\nimport { mat3, type GlMat3 } from '@weasel-js/geom';\nimport type { Target } from '@weasel-js/animator';\nimport { resolveSkeleton } from '@weasel-js/animator';\nimport type { Pose, Skeleton } from '@weasel-js/animator';\nimport type { Skin } from '@weasel-js/animator';\nimport { createRigSeat, type RigBinding, type RigSeat } from './rigSeat';\nimport { bindSkins, dataRestPath, type RestPath, type SkinScene } from './skinBinding';\n\n/** The part of a scene a rig writes to. */\nexport interface RigScene<TPose> extends SkinScene<TPose> {\n batch<T>(label: string, fn: () => T): T;\n}\n\n/** What a `RigApply` knows about the node it is posing. */\nexport interface RigApplyContext<TPose> {\n /** The joint the node rides. */\n joint: string;\n node: NodeId;\n /** The node's document pose when the rig was bound — where it sits at the\n * bind pose. */\n rest: TPose;\n /** The joint's world transform at the bind pose. */\n restWorld: GlMat3;\n /** `world * inverse(restWorld)`: the motion since the bind pose, in world\n * space. Carrying `rest` by it is what welding the node to the joint means. */\n fromRest: GlMat3;\n}\n\n/** Turns a joint's world transform into a pose for one bound node. The only\n * part of a rig that knows the scene's pose shape. */\nexport type RigApply<TPose> = (world: GlMat3, ctx: RigApplyContext<TPose>) => TPose;\n\n/** Options for `bindRig`. */\nexport interface BindRigOptions<TPose> {\n scene: RigScene<TPose>;\n skeleton: Skeleton;\n /** Joint name → the node or nodes that ride it. Each node keeps the offset\n * from its joint that it has at the bind pose. */\n bindings?: Readonly<Record<string, NodeId | readonly NodeId[]>>;\n /** Node id → the weights its path bends by. Where a bound node moves whole with one joint,\n * a skinned node's points each follow their own joints, and the rig shows the bent path\n * through the node's pose override, posed at the path's bounds. */\n skins?: Readonly<Record<NodeId, Skin>>;\n /** Where a skinned node's path is drawn when the rig is bound. Default\n * {@link dataRestPath}: the node's `data.path`, through its pose. */\n restPath?: RestPath<TPose>;\n /** Default: {@link rigidRigApply} over `descriptor`. */\n apply?: RigApply<TPose>;\n /** The descriptor the default `apply` reads and writes poses through.\n * Default `AUTO_POSE_DESCRIPTOR`. */\n descriptor?: PoseDescriptor<TPose>;\n}\n\n/** A skeleton bound to scene nodes, as `bindRig` returns it. */\nexport interface Rig {\n readonly skeleton: Skeleton;\n /**\n * The rig's pose as a value an animator moves. Its committed value starts as `{}`, the bind\n * pose, and each frame the rig is posed with what the target shows. A clip is a\n * `SampledTrack<Pose>` given this as its `target`: clips on one rig crossfade by their\n * `weight`s, weights short of 1 leave the rest to the committed pose, and a `spring` or\n * `tween` from a pose away from the committed one adds on top. `animator.hold` shows a pose made elsewhere the same way, an\n * IK solve included.\n */\n readonly target: Target<Pose>;\n /**\n * Commit `pose` and move every bound node to what the target now shows, which is `pose`\n * unless something is animating the target; a hold on it weighs the new pose in when it is\n * next read, at the animator's next frame or the hold's `touch()`. Writes go through the scene's pose overrides —\n * no history entry, no document write, no version bump — and are committed. `root`, where\n * given, replaces the placement, as {@link Rig.place}.\n */\n pose(pose: Pose, root?: GlMat3): void;\n /** Place the rig in the world by `root`, which may mirror it, and pose it there. It stays\n * until placed again; with no `root`, the rig goes back to where its skeleton puts it. */\n place(root?: GlMat3): void;\n /** The joint world transforms as the rig was last posed, root applied. */\n world(): ReadonlyMap<string, GlMat3>;\n /** Write the current frame into the bound nodes' document poses as one\n * undo entry, and drop the overrides. A skinned node's bent path goes into\n * its `data.path`. Later frames stay relative to the bind-time rest, so\n * baking does not compound. */\n bake(label?: string): void;\n /** Drop the overrides; the nodes show their document poses again until the\n * rig is next posed. */\n release(): void;\n}\n\n/**\n * Carries a node rigidly with its joint: the rest pose's center moves by\n * `fromRest`, and its rotation turns with the rest pose's x-axis. Scale in the\n * joint chain moves positions but not sizes — the pose model holds no shear,\n * and a sized pose under anisotropic scale would need one. Write an `apply`\n * that reads `world` to size nodes from joint scale.\n */\nexport function rigidRigApply<TPose>(descriptor: PoseDescriptor<TPose>): RigApply<TPose> {\n return (_world, { rest, fromRest }) => {\n const b = descriptor.getBounds(rest);\n const cx = b.x + b.width / 2;\n const cy = b.y + b.height / 2;\n const [nx, ny] = mat3.apply(fromRest, cx, cy);\n const moved = descriptor.translate\n ? descriptor.translate(rest, nx - cx, ny - cy)\n : descriptor.remapBounds(rest, b, { ...b, x: b.x + nx - cx, y: b.y + ny - cy });\n if (!descriptor.withRotation) return moved;\n const r0 = descriptor.getRotation?.(rest) ?? 0;\n const ux = Math.cos(r0);\n const uy = Math.sin(r0);\n return descriptor.withRotation(\n moved,\n Math.atan2(fromRest[1] * ux + fromRest[4] * uy, fromRest[0] * ux + fromRest[3] * uy),\n );\n };\n}\n\ninterface Bound<TPose> {\n node: NodeId;\n joint: string;\n rest: TPose;\n restWorld: GlMat3;\n entry: PoseOverride<TPose>;\n}\n\n/**\n * Bind a skeleton's joints to scene nodes. Nodes are written in world space\n * and the rig resolves its own hierarchy, so bound nodes are best left\n * unparented, or under containers whose pose does not compose into theirs;\n * the scene's tree stays free to order and group them for drawing.\n */\nexport function bindRig<TPose>(options: BindRigOptions<TPose>): Rig {\n const seat = createRigSeat(options.skeleton);\n const { rig, binding } = bindRigOn(options, seat);\n seat.binding = binding;\n return rig;\n}\n\n/** {@link bindRig} on a seat the caller keeps. The rig shows the seat's target once its\n * `binding` is the seat's. */\nexport function bindRigOn<TPose>(\n options: BindRigOptions<TPose>,\n seat: RigSeat,\n): { rig: Rig; binding: RigBinding } {\n const { scene, skeleton } = options;\n const descriptor = options.descriptor ?? (AUTO_POSE_DESCRIPTOR as PoseDescriptor<TPose>);\n const apply = options.apply ?? rigidRigApply(descriptor);\n const restWorlds = resolveSkeleton(skeleton, {});\n const restInverses = new Map<string, GlMat3>();\n const restInverseOf = (joint: string): GlMat3 => {\n let inverse = restInverses.get(joint);\n if (inverse) return inverse;\n const restWorld = restWorlds.get(joint);\n if (!restWorld) throw new Error(`bindRig: the skeleton has no joint \"${joint}\".`);\n inverse = mat3.invert(restWorld) ?? undefined;\n if (!inverse) throw new Error(`bindRig: joint \"${joint}\" is singular at the bind pose.`);\n restInverses.set(joint, inverse);\n return inverse;\n };\n\n const skins = bindSkins(scene, options.skins ?? {}, options.restPath ?? dataRestPath, descriptor);\n skins.joints.forEach(restInverseOf);\n\n const bound: Bound<TPose>[] = [];\n for (const [joint, ids] of Object.entries(options.bindings ?? {})) {\n restInverseOf(joint);\n const restWorld = restWorlds.get(joint)!;\n for (const node of typeof ids === 'string' ? [ids] : (ids as readonly NodeId[])) {\n if (options.skins && node in options.skins) {\n throw new Error(`bindRig: node \"${node}\" is both bound to joint \"${joint}\" and skinned.`);\n }\n const n = scene.get(node);\n if (!n) throw new Error(`bindRig: joint \"${joint}\" is bound to node \"${node}\", which the scene lacks.`);\n bound.push({ node, joint, rest: n.pose, restWorld, entry: { pose: n.pose } });\n }\n }\n\n let world: ReadonlyMap<string, GlMat3> = restWorlds;\n let installed = false;\n\n const drop = () => {\n if (!installed) return;\n installed = false;\n for (const b of bound) scene.overrides.clear(b.node);\n skins.release();\n };\n const release = () => {\n seat.shown = false;\n drop();\n };\n\n const show = (pose: Pose): void => {\n const local = resolveSkeleton(skeleton, pose);\n const { root } = seat;\n if (root) for (const [name, m] of local) local.set(name, mat3.multiply(root, m));\n world = local;\n const fromRest = new Map<string, GlMat3>();\n const motionOf = (joint: string): GlMat3 => {\n let delta = fromRest.get(joint);\n if (!delta) {\n delta = mat3.multiply(local.get(joint)!, restInverseOf(joint));\n fromRest.set(joint, delta);\n }\n return delta;\n };\n for (const b of bound) {\n const w = local.get(b.joint)!;\n b.entry.pose = apply(w, { joint: b.joint, node: b.node, rest: b.rest, restWorld: b.restWorld, fromRest: motionOf(b.joint) });\n if (!installed) scene.overrides.set(b.node, b.entry);\n }\n skins.joints.forEach(motionOf);\n skins.show(fromRest);\n installed = true;\n seat.shown = true;\n scene.overrides.commit();\n };\n\n const { target } = seat;\n const rig: Rig = {\n skeleton,\n target,\n pose(pose, at) {\n seat.committed = pose;\n if (at) seat.root = at;\n show(target.read());\n },\n place(at) {\n seat.root = at;\n show(target.read());\n },\n world: () => world,\n bake(label = 'Bake rig pose') {\n if (!installed) return;\n scene.batch(label, () => {\n for (const b of bound) if (b.entry.pose !== undefined) scene.setPose(b.node, b.entry.pose);\n skins.write();\n });\n release();\n },\n release,\n };\n return { rig, binding: { show, drop } };\n}\n"],"mappings":"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"}