@weasel-js/core 1.9.4 → 1.10.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1191) hide show
  1. package/CHANGELOG.md +918 -0
  2. package/README.md +38 -3
  3. package/dist/WeaselProvider.js +5 -7
  4. package/dist/WeaselProvider.js.map +1 -1
  5. package/dist/affordances/composeAffordanceLayer.js +92 -84
  6. package/dist/affordances/composeAffordanceLayer.js.map +1 -1
  7. package/dist/affordances/cornerResize.js +3 -2
  8. package/dist/affordances/cornerResize.js.map +1 -1
  9. package/dist/affordances/hitAffordanceRegions.js +71 -101
  10. package/dist/affordances/hitAffordanceRegions.js.map +1 -1
  11. package/dist/affordances/pathAnchors.js +50 -28
  12. package/dist/affordances/pathAnchors.js.map +1 -1
  13. package/dist/affordances/rotateCursor.js +12 -0
  14. package/dist/affordances/rotateCursor.js.map +1 -0
  15. package/dist/affordances/rotationHandle.js +44 -46
  16. package/dist/affordances/rotationHandle.js.map +1 -1
  17. package/dist/animation/behaviors/coast.js +21 -0
  18. package/dist/animation/behaviors/coast.js.map +1 -0
  19. package/dist/animation/behaviors/coastByWrite.js +107 -0
  20. package/dist/animation/behaviors/coastByWrite.js.map +1 -0
  21. package/dist/animation/behaviors/coastOnTargets.js +94 -0
  22. package/dist/animation/behaviors/coastOnTargets.js.map +1 -0
  23. package/dist/animation/behaviors/momentum.js +48 -136
  24. package/dist/animation/behaviors/momentum.js.map +1 -1
  25. package/dist/animation/clipTargets.js +12 -0
  26. package/dist/animation/clipTargets.js.map +1 -0
  27. package/dist/animation/index.js +15 -20
  28. package/dist/animation/poseHelpers.js +112 -33
  29. package/dist/animation/poseHelpers.js.map +1 -1
  30. package/dist/animation/poseTarget.js +115 -0
  31. package/dist/animation/poseTarget.js.map +1 -0
  32. package/dist/animation/reflow.js +113 -83
  33. package/dist/animation/reflow.js.map +1 -1
  34. package/dist/animation/rewind.js +66 -0
  35. package/dist/animation/rewind.js.map +1 -0
  36. package/dist/animation/rig/bindRig.js +85 -53
  37. package/dist/animation/rig/bindRig.js.map +1 -1
  38. package/dist/animation/rig/rigNode.js +99 -0
  39. package/dist/animation/rig/rigNode.js.map +1 -0
  40. package/dist/animation/rig/rigSeat.js +59 -0
  41. package/dist/animation/rig/rigSeat.js.map +1 -0
  42. package/dist/animation/rig/skinBinding.js +64 -0
  43. package/dist/animation/rig/skinBinding.js.map +1 -0
  44. package/dist/animation/rig/useRig.js +31 -16
  45. package/dist/animation/rig/useRig.js.map +1 -1
  46. package/dist/animation/wrappers/animateLifecycle.js +8 -7
  47. package/dist/animation/wrappers/animateLifecycle.js.map +1 -1
  48. package/dist/animation/wrappers/animateOnSetPose.js +31 -31
  49. package/dist/animation/wrappers/animateOnSetPose.js.map +1 -1
  50. package/dist/animation/wrappers/instantPose.js.map +1 -1
  51. package/dist/animation/writtenPoseTarget.js +33 -0
  52. package/dist/animation/writtenPoseTarget.js.map +1 -0
  53. package/dist/autoPoseDescriptor-DHg5KqaJ.d.ts +27 -0
  54. package/dist/barrel/canvas.js +32 -0
  55. package/dist/barrel/chrome.js +10 -10
  56. package/dist/barrel/input.js +16 -17
  57. package/dist/barrel/interactions.js +34 -37
  58. package/dist/barrel/paint.js +11 -18
  59. package/dist/barrel/paths.js +13 -19
  60. package/dist/barrel/renderer.js +14 -20
  61. package/dist/barrel/routing.js +54 -47
  62. package/dist/barrel/scene.js +37 -0
  63. package/dist/barrel/text.js +9 -18
  64. package/dist/barrel/viewport.js +44 -51
  65. package/dist/canvas/Canvas.js +270 -475
  66. package/dist/canvas/Canvas.js.map +1 -1
  67. package/dist/canvas/CanvasView.js +168 -190
  68. package/dist/canvas/CanvasView.js.map +1 -1
  69. package/dist/canvas/CursorCoordsHud.js +24 -25
  70. package/dist/canvas/CursorCoordsHud.js.map +1 -1
  71. package/dist/canvas/DrawCanvas.js +39 -56
  72. package/dist/canvas/DrawCanvas.js.map +1 -1
  73. package/dist/canvas/ModalityHud.js.map +1 -1
  74. package/dist/canvas/NodeShape.js +28 -29
  75. package/dist/canvas/NodeShape.js.map +1 -1
  76. package/dist/canvas/PickHud.js.map +1 -1
  77. package/dist/canvas/SceneCanvas/DevHuds.js +40 -0
  78. package/dist/canvas/SceneCanvas/DevHuds.js.map +1 -0
  79. package/dist/canvas/SceneCanvas/GestureDispatcherMounter.js +66 -107
  80. package/dist/canvas/SceneCanvas/GestureDispatcherMounter.js.map +1 -1
  81. package/dist/canvas/SceneCanvas/PointerProviderIfRoot.js +33 -36
  82. package/dist/canvas/SceneCanvas/PointerProviderIfRoot.js.map +1 -1
  83. package/dist/canvas/SceneCanvas/StandardActionsRegistrar.js +38 -50
  84. package/dist/canvas/SceneCanvas/StandardActionsRegistrar.js.map +1 -1
  85. package/dist/canvas/SceneCanvas/ToolKeybindingsMounter.js +3 -3
  86. package/dist/canvas/SceneCanvas/ToolKeybindingsMounter.js.map +1 -1
  87. package/dist/canvas/SceneCanvas/coordTrace.js +37 -1
  88. package/dist/canvas/SceneCanvas/coordTrace.js.map +1 -1
  89. package/dist/canvas/SceneCanvas/defaultNodeProperties.js +319 -270
  90. package/dist/canvas/SceneCanvas/defaultNodeProperties.js.map +1 -1
  91. package/dist/canvas/SceneCanvas/defaultNodeRouting.js +1 -1
  92. package/dist/canvas/SceneCanvas/defaultNodeRouting.js.map +1 -1
  93. package/dist/canvas/SceneCanvas/dispatcherGestureBounds.js.map +1 -1
  94. package/dist/canvas/SceneCanvas/features.js +71 -62
  95. package/dist/canvas/SceneCanvas/features.js.map +1 -1
  96. package/dist/canvas/SceneCanvas/insertPreviewCommands.js +97 -0
  97. package/dist/canvas/SceneCanvas/insertPreviewCommands.js.map +1 -0
  98. package/dist/canvas/SceneCanvas/isDev.js.map +1 -1
  99. package/dist/canvas/SceneCanvas/poseGeometry.js +33 -37
  100. package/dist/canvas/SceneCanvas/poseGeometry.js.map +1 -1
  101. package/dist/canvas/SceneCanvas/props.js +15 -14
  102. package/dist/canvas/SceneCanvas/props.js.map +1 -1
  103. package/dist/canvas/SceneCanvas/scenePointQuery.js +50 -0
  104. package/dist/canvas/SceneCanvas/scenePointQuery.js.map +1 -0
  105. package/dist/canvas/SceneCanvas/shapeGeneratorProperties.js +52 -0
  106. package/dist/canvas/SceneCanvas/shapeGeneratorProperties.js.map +1 -0
  107. package/dist/canvas/SceneCanvas/toolRegistry.js +23 -0
  108. package/dist/canvas/SceneCanvas/toolRegistry.js.map +1 -0
  109. package/dist/canvas/SceneCanvas/useActionTunings.js +17 -0
  110. package/dist/canvas/SceneCanvas/useActionTunings.js.map +1 -0
  111. package/dist/canvas/SceneCanvas/useActionsPropResolver.js +6 -1
  112. package/dist/canvas/SceneCanvas/useActionsPropResolver.js.map +1 -1
  113. package/dist/canvas/SceneCanvas/useBuiltinShapeTools.js.map +1 -1
  114. package/dist/canvas/SceneCanvas/useBuiltinTools.js +21 -0
  115. package/dist/canvas/SceneCanvas/useBuiltinTools.js.map +1 -0
  116. package/dist/canvas/SceneCanvas/useCanvasCamera.js +46 -0
  117. package/dist/canvas/SceneCanvas/useCanvasCamera.js.map +1 -0
  118. package/dist/canvas/SceneCanvas/useCanvasDispatcher.js +20 -0
  119. package/dist/canvas/SceneCanvas/useCanvasDispatcher.js.map +1 -0
  120. package/dist/canvas/SceneCanvas/useCanvasSelection.js +16 -0
  121. package/dist/canvas/SceneCanvas/useCanvasSelection.js.map +1 -0
  122. package/dist/canvas/SceneCanvas/useCanvasTools.js +67 -0
  123. package/dist/canvas/SceneCanvas/useCanvasTools.js.map +1 -0
  124. package/dist/canvas/SceneCanvas/useDispatcherOverlayLayer.js +49 -113
  125. package/dist/canvas/SceneCanvas/useDispatcherOverlayLayer.js.map +1 -1
  126. package/dist/canvas/SceneCanvas/useHeldModifiers.js +20 -0
  127. package/dist/canvas/SceneCanvas/useHeldModifiers.js.map +1 -0
  128. package/dist/canvas/SceneCanvas/useNodeAtPoint.js +26 -0
  129. package/dist/canvas/SceneCanvas/useNodeAtPoint.js.map +1 -0
  130. package/dist/canvas/SceneCanvas/useNodeKinds.js +26 -0
  131. package/dist/canvas/SceneCanvas/useNodeKinds.js.map +1 -0
  132. package/dist/canvas/SceneCanvas/usePreviewGhostLayer.js +51 -41
  133. package/dist/canvas/SceneCanvas/usePreviewGhostLayer.js.map +1 -1
  134. package/dist/canvas/SceneCanvas/useSceneCanvasHandle.js +47 -0
  135. package/dist/canvas/SceneCanvas/useSceneCanvasHandle.js.map +1 -0
  136. package/dist/canvas/SceneCanvas/useSceneCanvasLayers.js +66 -0
  137. package/dist/canvas/SceneCanvas/useSceneCanvasLayers.js.map +1 -0
  138. package/dist/canvas/SceneCanvas/useSceneChrome.js +59 -0
  139. package/dist/canvas/SceneCanvas/useSceneChrome.js.map +1 -0
  140. package/dist/canvas/SceneCanvas/useSceneRedrawSources.js +23 -0
  141. package/dist/canvas/SceneCanvas/useSceneRedrawSources.js.map +1 -0
  142. package/dist/canvas/SceneCanvas/useSceneSelectTool.js +65 -101
  143. package/dist/canvas/SceneCanvas/useSceneSelectTool.js.map +1 -1
  144. package/dist/canvas/SceneCanvas/useSceneSlotLayers.js +37 -0
  145. package/dist/canvas/SceneCanvas/useSceneSlotLayers.js.map +1 -0
  146. package/dist/canvas/SceneCanvas/useSelectionOverlayLayer.js +38 -0
  147. package/dist/canvas/SceneCanvas/useSelectionOverlayLayer.js.map +1 -0
  148. package/dist/canvas/SceneCanvas/useViewLayerGate.js +20 -0
  149. package/dist/canvas/SceneCanvas/useViewLayerGate.js.map +1 -0
  150. package/dist/canvas/SceneCanvas/useViewportActions.js +9 -1
  151. package/dist/canvas/SceneCanvas/useViewportActions.js.map +1 -1
  152. package/dist/canvas/SceneCanvas/worldPointAt.js +8 -0
  153. package/dist/canvas/SceneCanvas/worldPointAt.js.map +1 -0
  154. package/dist/canvas/SceneCanvas.js +301 -708
  155. package/dist/canvas/SceneCanvas.js.map +1 -1
  156. package/dist/canvas/SceneViewCanvas.js +41 -47
  157. package/dist/canvas/SceneViewCanvas.js.map +1 -1
  158. package/dist/canvas/SurfaceCanvas.js +40 -0
  159. package/dist/canvas/SurfaceCanvas.js.map +1 -0
  160. package/dist/canvas/adapterDerivedPath.js +26 -0
  161. package/dist/canvas/adapterDerivedPath.js.map +1 -0
  162. package/dist/canvas/adapterPickSource.js +34 -0
  163. package/dist/canvas/adapterPickSource.js.map +1 -0
  164. package/dist/canvas/affordanceAt.js +12 -2
  165. package/dist/canvas/affordanceAt.js.map +1 -1
  166. package/dist/canvas/buildSceneLayer.js +81 -61
  167. package/dist/canvas/buildSceneLayer.js.map +1 -1
  168. package/dist/canvas/buildSceneTree.js +56 -34
  169. package/dist/canvas/buildSceneTree.js.map +1 -1
  170. package/dist/canvas/canvasRenderer.js +40 -44
  171. package/dist/canvas/canvasRenderer.js.map +1 -1
  172. package/dist/canvas/colorOverrides.js.map +1 -1
  173. package/dist/canvas/copiesAbove.js +27 -0
  174. package/dist/canvas/copiesAbove.js.map +1 -0
  175. package/dist/canvas/defaultDrawOne.js +25 -24
  176. package/dist/canvas/defaultDrawOne.js.map +1 -1
  177. package/dist/canvas/deps/areaSelect.js +4 -4
  178. package/dist/canvas/deps/areaSelect.js.map +1 -1
  179. package/dist/canvas/deps/debug.js.map +1 -1
  180. package/dist/canvas/deps/editAnchors.js +47 -71
  181. package/dist/canvas/deps/editAnchors.js.map +1 -1
  182. package/dist/canvas/deps/geometryProjection.js.map +1 -1
  183. package/dist/canvas/deps/hitTestArea.js +45 -25
  184. package/dist/canvas/deps/hitTestArea.js.map +1 -1
  185. package/dist/canvas/deps/insert.js +149 -104
  186. package/dist/canvas/deps/insert.js.map +1 -1
  187. package/dist/canvas/deps/lassoSelect.js +5 -5
  188. package/dist/canvas/deps/lassoSelect.js.map +1 -1
  189. package/dist/canvas/deps/layout.js +9 -15
  190. package/dist/canvas/deps/layout.js.map +1 -1
  191. package/dist/canvas/deps/poseDescriptor.js +1 -1
  192. package/dist/canvas/deps/poseDescriptor.js.map +1 -1
  193. package/dist/canvas/deps/resizePolicy.js.map +1 -1
  194. package/dist/canvas/deps/slice.js +44 -45
  195. package/dist/canvas/deps/slice.js.map +1 -1
  196. package/dist/canvas/deps/textEdit.js +8 -8
  197. package/dist/canvas/deps/textEdit.js.map +1 -1
  198. package/dist/canvas/deps/view.js.map +1 -1
  199. package/dist/canvas/derivedPath.js +69 -43
  200. package/dist/canvas/derivedPath.js.map +1 -1
  201. package/dist/canvas/drawEnvelope.js +8 -4
  202. package/dist/canvas/drawEnvelope.js.map +1 -1
  203. package/dist/canvas/getNodeAtPoint.js +2 -6
  204. package/dist/canvas/getNodeAtPoint.js.map +1 -1
  205. package/dist/canvas/hud.module.js.map +1 -1
  206. package/dist/canvas/insertPreviewExtent.js +33 -31
  207. package/dist/canvas/insertPreviewExtent.js.map +1 -1
  208. package/dist/canvas/layerOrder.js.map +1 -1
  209. package/dist/canvas/layerSlots.js +6 -1
  210. package/dist/canvas/layerSlots.js.map +1 -1
  211. package/dist/canvas/nodeShapes/derivedPainter.js +12 -12
  212. package/dist/canvas/nodeShapes/derivedPainter.js.map +1 -1
  213. package/dist/canvas/nodeShapes/imagePainter.js +10 -10
  214. package/dist/canvas/nodeShapes/imagePainter.js.map +1 -1
  215. package/dist/canvas/nodeShapes/memo.js.map +1 -1
  216. package/dist/canvas/nodeShapes/nodePaint.js +34 -23
  217. package/dist/canvas/nodeShapes/nodePaint.js.map +1 -1
  218. package/dist/canvas/nodeShapes/pathPainter.js +23 -22
  219. package/dist/canvas/nodeShapes/pathPainter.js.map +1 -1
  220. package/dist/canvas/nodeShapes/poseBox.js +6 -6
  221. package/dist/canvas/nodeShapes/poseBox.js.map +1 -1
  222. package/dist/canvas/nodeShapes/rectFallbackPainter.js +8 -8
  223. package/dist/canvas/nodeShapes/rectFallbackPainter.js.map +1 -1
  224. package/dist/canvas/nodeShapes/shapePainter.js +16 -16
  225. package/dist/canvas/nodeShapes/shapePainter.js.map +1 -1
  226. package/dist/canvas/nodeShapes/textPainter.js +1 -1
  227. package/dist/canvas/nodeShapes/textPainter.js.map +1 -1
  228. package/dist/canvas/overChildren.js +29 -0
  229. package/dist/canvas/overChildren.js.map +1 -0
  230. package/dist/canvas/overlayRoleStrokes.js.map +1 -1
  231. package/dist/canvas/paintCull.js +6 -8
  232. package/dist/canvas/paintCull.js.map +1 -1
  233. package/dist/{features/cursor → canvas}/paintedCursorLayer.js +2 -2
  234. package/dist/canvas/paintedCursorLayer.js.map +1 -0
  235. package/dist/canvas/pickReach.js +23 -0
  236. package/dist/canvas/pickReach.js.map +1 -0
  237. package/dist/canvas/pickWalk.js +43 -70
  238. package/dist/canvas/pickWalk.js.map +1 -1
  239. package/dist/canvas/planeClips.js +18 -19
  240. package/dist/canvas/planeClips.js.map +1 -1
  241. package/dist/canvas/poseCascade.js +41 -0
  242. package/dist/canvas/poseCascade.js.map +1 -0
  243. package/dist/canvas/poseRotation.js +1 -3
  244. package/dist/canvas/poseRotation.js.map +1 -1
  245. package/dist/canvas/rasterReadback.js +22 -0
  246. package/dist/canvas/rasterReadback.js.map +1 -0
  247. package/dist/canvas/renderDebugSnapshot.js +12 -12
  248. package/dist/canvas/renderDebugSnapshot.js.map +1 -1
  249. package/dist/canvas/renderNeeds.js +3 -3
  250. package/dist/canvas/renderNeeds.js.map +1 -1
  251. package/dist/canvas/renderSceneToPixels.js +64 -83
  252. package/dist/canvas/renderSceneToPixels.js.map +1 -1
  253. package/dist/canvas/sceneAdapter.js +59 -144
  254. package/dist/canvas/sceneAdapter.js.map +1 -1
  255. package/dist/canvas/sceneClipboard.js +1 -1
  256. package/dist/canvas/sceneClipboard.js.map +1 -1
  257. package/dist/canvas/sceneLayerPaint.js +4 -4
  258. package/dist/canvas/sceneLayerPaint.js.map +1 -1
  259. package/dist/canvas/sceneSlotWiring.js +10 -9
  260. package/dist/canvas/sceneSlotWiring.js.map +1 -1
  261. package/dist/canvas/sceneViewRender.js +37 -42
  262. package/dist/canvas/sceneViewRender.js.map +1 -1
  263. package/dist/canvas/slopsDebugLayer.js +4 -4
  264. package/dist/canvas/slopsDebugLayer.js.map +1 -1
  265. package/dist/canvas/useCanvasRenderer.js +23 -11
  266. package/dist/canvas/useCanvasRenderer.js.map +1 -1
  267. package/dist/canvas/useCanvasSurface.js +31 -0
  268. package/dist/canvas/useCanvasSurface.js.map +1 -0
  269. package/dist/canvas/useCanvasView.js +51 -44
  270. package/dist/canvas/useCanvasView.js.map +1 -1
  271. package/dist/canvas/useFrameLoop.js +11 -12
  272. package/dist/canvas/useFrameLoop.js.map +1 -1
  273. package/dist/canvas/useHostAnchor.js +35 -33
  274. package/dist/canvas/useHostAnchor.js.map +1 -1
  275. package/dist/canvas/useLateContentRedraw.js +8 -8
  276. package/dist/canvas/useLateContentRedraw.js.map +1 -1
  277. package/dist/canvas/useSceneAdapter.js +22 -0
  278. package/dist/canvas/useSceneAdapter.js.map +1 -0
  279. package/dist/canvas/useSceneLayerList.js +4 -14
  280. package/dist/canvas/useSceneLayerList.js.map +1 -1
  281. package/dist/canvas/useSurfaceInput.js +39 -0
  282. package/dist/canvas/useSurfaceInput.js.map +1 -0
  283. package/dist/canvas/useToolCursor.js +29 -0
  284. package/dist/canvas/useToolCursor.js.map +1 -0
  285. package/dist/canvas/useViewHelpers.js +46 -85
  286. package/dist/canvas/useViewHelpers.js.map +1 -1
  287. package/dist/canvas/viewInputs.js.map +1 -1
  288. package/dist/canvas/viewRegistry.js +40 -34
  289. package/dist/canvas/viewRegistry.js.map +1 -1
  290. package/dist/canvas/watchElementMove.js +43 -0
  291. package/dist/canvas/watchElementMove.js.map +1 -0
  292. package/dist/canvas/wrapNodeOutput.js +7 -2
  293. package/dist/canvas/wrapNodeOutput.js.map +1 -1
  294. package/dist/clipboard.d.ts +7 -14
  295. package/dist/{types-B4iJRHC3.d.ts → clone-C0eADtS0.d.ts} +129 -84
  296. package/dist/clone.d.ts +4 -8
  297. package/dist/clone.js +0 -2
  298. package/dist/core/device/targets.js.map +1 -1
  299. package/dist/core/device/useDeviceProfile.js +13 -13
  300. package/dist/core/device/useDeviceProfile.js.map +1 -1
  301. package/dist/{interactions/actions/resize → core/geometry}/autoPoseDescriptor.js +8 -7
  302. package/dist/core/geometry/autoPoseDescriptor.js.map +1 -0
  303. package/dist/core/geometry/pathPoseDescriptor.js +88 -0
  304. package/dist/core/geometry/pathPoseDescriptor.js.map +1 -0
  305. package/dist/core/geometry/poseDescriptor.js +102 -29
  306. package/dist/core/geometry/poseDescriptor.js.map +1 -1
  307. package/dist/core/geometry/regionHit.js +35 -37
  308. package/dist/core/geometry/regionHit.js.map +1 -1
  309. package/dist/core/geometry/targetFrame.js +94 -0
  310. package/dist/core/geometry/targetFrame.js.map +1 -0
  311. package/dist/core/geometry/unionBounds.js +4 -5
  312. package/dist/core/geometry/unionBounds.js.map +1 -1
  313. package/dist/core/layers/backgroundFill.js +31 -0
  314. package/dist/core/layers/backgroundFill.js.map +1 -0
  315. package/dist/{features/groups → core/layers}/children.js +2 -4
  316. package/dist/core/layers/children.js.map +1 -0
  317. package/dist/{features/focus → core/layers}/gateLayer.js +2 -2
  318. package/dist/core/layers/gateLayer.js.map +1 -0
  319. package/dist/core/layers/layerGroup.js +40 -0
  320. package/dist/core/layers/layerGroup.js.map +1 -0
  321. package/dist/core/layers/render.js +50 -76
  322. package/dist/core/layers/render.js.map +1 -1
  323. package/dist/core/ops/create.js +2 -2
  324. package/dist/core/ops/create.js.map +1 -1
  325. package/dist/core/ops/createHistory.js +9 -9
  326. package/dist/core/ops/createHistory.js.map +1 -1
  327. package/dist/core/ops/delete.js +19 -23
  328. package/dist/core/ops/delete.js.map +1 -1
  329. package/dist/core/ops/reorder/index.js +3 -7
  330. package/dist/core/ops/reorder/index.js.map +1 -1
  331. package/dist/core/ops/reorder/setChildOrder.js +2 -4
  332. package/dist/core/ops/reorder/setChildOrder.js.map +1 -1
  333. package/dist/core/ops/reparent.js +0 -1
  334. package/dist/core/ops/reparent.js.map +1 -1
  335. package/dist/core/ops/slot.js +3 -6
  336. package/dist/core/ops/slot.js.map +1 -1
  337. package/dist/core/pages/fitViewToPage.js +15 -0
  338. package/dist/core/pages/fitViewToPage.js.map +1 -0
  339. package/dist/core/pages/pages.js +65 -0
  340. package/dist/core/pages/pages.js.map +1 -0
  341. package/dist/core/pages/pagesLayer.js +27 -0
  342. package/dist/core/pages/pagesLayer.js.map +1 -0
  343. package/dist/core/paint/meshKind.js +16 -0
  344. package/dist/core/paint/meshKind.js.map +1 -0
  345. package/dist/{features/meshPaint/lazyKind.js → core/paint/meshKindLazy.js} +104 -93
  346. package/dist/core/paint/meshKindLazy.js.map +1 -0
  347. package/dist/core/paint/paintKindEntry.js +8 -0
  348. package/dist/core/paint/paintKindEntry.js.map +1 -0
  349. package/dist/core/paint/paintKinds.js +144 -0
  350. package/dist/core/paint/paintKinds.js.map +1 -0
  351. package/dist/core/paint/registerMesh.js +7 -0
  352. package/dist/core/paint/registerMesh.js.map +1 -0
  353. package/dist/core/scene/NodeProperties.js.map +1 -1
  354. package/dist/core/scene/NodeRouting.js.map +1 -1
  355. package/dist/core/scene/arrivalWindow.js +65 -64
  356. package/dist/core/scene/arrivalWindow.js.map +1 -1
  357. package/dist/core/scene/boundOps.js +40 -0
  358. package/dist/core/scene/boundOps.js.map +1 -0
  359. package/dist/core/scene/composeFrame.js +9 -6
  360. package/dist/core/scene/composeFrame.js.map +1 -1
  361. package/dist/core/scene/composePose.js +105 -0
  362. package/dist/core/scene/composePose.js.map +1 -0
  363. package/dist/core/scene/depMemo.js +31 -6
  364. package/dist/core/scene/depMemo.js.map +1 -1
  365. package/dist/core/scene/derivedPath.js +19 -20
  366. package/dist/core/scene/derivedPath.js.map +1 -1
  367. package/dist/core/scene/editMode.js +26 -0
  368. package/dist/core/scene/editMode.js.map +1 -0
  369. package/dist/core/scene/effectivePose.js +42 -39
  370. package/dist/core/scene/effectivePose.js.map +1 -1
  371. package/dist/core/scene/fieldEdits.js +98 -0
  372. package/dist/core/scene/fieldEdits.js.map +1 -0
  373. package/dist/core/scene/historyFacade.js +122 -70
  374. package/dist/core/scene/historyFacade.js.map +1 -1
  375. package/dist/core/scene/historyForm.js +6 -0
  376. package/dist/core/scene/historyForm.js.map +1 -0
  377. package/dist/core/scene/kitOps.js +83 -71
  378. package/dist/core/scene/kitOps.js.map +1 -1
  379. package/dist/core/scene/kitRegistry.js.map +1 -1
  380. package/dist/core/scene/layerStack.js +105 -12
  381. package/dist/core/scene/layerStack.js.map +1 -1
  382. package/dist/core/scene/layoutPass.js +58 -59
  383. package/dist/core/scene/layoutPass.js.map +1 -1
  384. package/dist/{features/groups → core/scene}/nestedHit.js +3 -3
  385. package/dist/core/scene/nestedHit.js.map +1 -0
  386. package/dist/core/scene/nodeFnFields.js +16 -9
  387. package/dist/core/scene/nodeFnFields.js.map +1 -1
  388. package/dist/core/scene/nodeMemo.js.map +1 -1
  389. package/dist/core/scene/nodeStore.js +72 -71
  390. package/dist/core/scene/nodeStore.js.map +1 -1
  391. package/dist/core/scene/notifier.js +37 -0
  392. package/dist/core/scene/notifier.js.map +1 -0
  393. package/dist/core/scene/opTable.js +50 -0
  394. package/dist/core/scene/opTable.js.map +1 -0
  395. package/dist/core/scene/outerOps.js +67 -0
  396. package/dist/core/scene/outerOps.js.map +1 -0
  397. package/dist/core/scene/poseHold.js +39 -0
  398. package/dist/core/scene/poseHold.js.map +1 -0
  399. package/dist/core/scene/poseOverrides.js +44 -36
  400. package/dist/core/scene/poseOverrides.js.map +1 -1
  401. package/dist/core/scene/poseSnapshot.js.map +1 -1
  402. package/dist/core/scene/reconcileSpecs.js +4 -3
  403. package/dist/core/scene/reconcileSpecs.js.map +1 -1
  404. package/dist/core/scene/recorder.js +86 -0
  405. package/dist/core/scene/recorder.js.map +1 -0
  406. package/dist/core/scene/renderOrder.js.map +1 -1
  407. package/dist/core/scene/scene.js +81 -690
  408. package/dist/core/scene/scene.js.map +1 -1
  409. package/dist/core/scene/sceneEdits.js +58 -0
  410. package/dist/core/scene/sceneEdits.js.map +1 -0
  411. package/dist/core/scene/sceneMutators.js +49 -0
  412. package/dist/core/scene/sceneMutators.js.map +1 -0
  413. package/dist/core/scene/scenePoseAdapter.js +16 -0
  414. package/dist/core/scene/scenePoseAdapter.js.map +1 -0
  415. package/dist/core/scene/sceneRecording.js +91 -0
  416. package/dist/core/scene/sceneRecording.js.map +1 -0
  417. package/dist/core/scene/sceneSelection.js +28 -0
  418. package/dist/core/scene/sceneSelection.js.map +1 -0
  419. package/dist/core/scene/sceneState.js +49 -0
  420. package/dist/core/scene/sceneState.js.map +1 -0
  421. package/dist/core/scene/serialization.js +8 -5
  422. package/dist/core/scene/serialization.js.map +1 -1
  423. package/dist/core/scene/staleReplay.js +51 -0
  424. package/dist/core/scene/staleReplay.js.map +1 -0
  425. package/dist/core/scene/statedFields.js +9 -0
  426. package/dist/core/scene/statedFields.js.map +1 -0
  427. package/dist/core/scene/treeEdits.js +127 -0
  428. package/dist/core/scene/treeEdits.js.map +1 -0
  429. package/dist/core/scene/treeReads.js +26 -0
  430. package/dist/core/scene/treeReads.js.map +1 -0
  431. package/dist/core/scene/types.js.map +1 -1
  432. package/dist/{features/groups → core/scene}/unionOfChildren.js +3 -3
  433. package/dist/core/scene/unionOfChildren.js.map +1 -0
  434. package/dist/core/scene/unitScopes.js +13 -0
  435. package/dist/core/scene/unitScopes.js.map +1 -0
  436. package/dist/core/scene/useScene.js.map +1 -1
  437. package/dist/core/selection/readOnlySelection.js +32 -0
  438. package/dist/core/selection/readOnlySelection.js.map +1 -0
  439. package/dist/core/selection/usePublishSceneSelection.js +26 -0
  440. package/dist/core/selection/usePublishSceneSelection.js.map +1 -0
  441. package/dist/core/selection/useSelection.js +34 -25
  442. package/dist/core/selection/useSelection.js.map +1 -1
  443. package/dist/core/shapeKinds.js.map +1 -1
  444. package/dist/core/stylus/stylus.js.map +1 -1
  445. package/dist/core/stylus/usePointerStylus.js.map +1 -1
  446. package/dist/core/usePaintKinds.js +1 -1
  447. package/dist/core/usePaintKinds.js.map +1 -1
  448. package/dist/core/viewport/clientToWorld.js.map +1 -1
  449. package/dist/core/viewport/fitViewToBounds.js.map +1 -1
  450. package/dist/core/viewport/parallax.js.map +1 -1
  451. package/dist/core/viewport/screenSlop.js +11 -11
  452. package/dist/core/viewport/screenSlop.js.map +1 -1
  453. package/dist/core/viewport/useCanvasSize.js.map +1 -1
  454. package/dist/core/viewport/useDecayLoop.js +31 -33
  455. package/dist/core/viewport/useDecayLoop.js.map +1 -1
  456. package/dist/core/viewport/useNodeOverlayFrame.js +84 -0
  457. package/dist/core/viewport/useNodeOverlayFrame.js.map +1 -0
  458. package/dist/core/viewport/useViewAnimation.js +113 -53
  459. package/dist/core/viewport/useViewAnimation.js.map +1 -1
  460. package/dist/core/viewport/view.js +14 -11
  461. package/dist/core/viewport/view.js.map +1 -1
  462. package/dist/core/viewport/wheelHandler.js.map +1 -1
  463. package/dist/core/viewport/zoomAt.js +11 -2
  464. package/dist/core/viewport/zoomAt.js.map +1 -1
  465. package/dist/{cornerHandles-CtCb8a3G.d.ts → cornerHandles-BSKbyuvQ.d.ts} +11 -24
  466. package/dist/debug/createDebugOverlayLayer.js +100 -100
  467. package/dist/debug/createDebugOverlayLayer.js.map +1 -1
  468. package/dist/debug/createDebugSink.js.map +1 -1
  469. package/dist/debug/frameStats.js.map +1 -1
  470. package/dist/debug/useDebugSink.js +52 -0
  471. package/dist/debug/useDebugSink.js.map +1 -0
  472. package/dist/features/chrome-caps/buildChromeCtx.js.map +1 -1
  473. package/dist/features/chrome-caps/conditions.js.map +1 -1
  474. package/dist/features/chrome-caps/defaults.js.map +1 -1
  475. package/dist/features/chrome-caps/resolve.js.map +1 -1
  476. package/dist/features/chrome-caps/useChromeCaps.js +54 -0
  477. package/dist/features/chrome-caps/useChromeCaps.js.map +1 -0
  478. package/dist/features/chrome-caps/useHoverTracking.js.map +1 -1
  479. package/dist/features/ingestion/contentHandlers.js +25 -19
  480. package/dist/features/ingestion/contentHandlers.js.map +1 -1
  481. package/dist/features/ingestion/imageHandler.js +21 -24
  482. package/dist/features/ingestion/imageHandler.js.map +1 -1
  483. package/dist/features/ingestion/openFilePicker.js.map +1 -1
  484. package/dist/features/ingestion/placement.js +16 -0
  485. package/dist/features/ingestion/placement.js.map +1 -0
  486. package/dist/features/ingestion/svgHandler.js +5 -0
  487. package/dist/features/ingestion/svgHandler.js.map +1 -1
  488. package/dist/features/ingestion/textHandler.js +28 -0
  489. package/dist/features/ingestion/textHandler.js.map +1 -0
  490. package/dist/features/ingestion/useCanvasIngestion.js +48 -0
  491. package/dist/features/ingestion/useCanvasIngestion.js.map +1 -0
  492. package/dist/features/ingestion/weaselJsonHandler.js +5 -0
  493. package/dist/features/ingestion/weaselJsonHandler.js.map +1 -1
  494. package/dist/features/longPress/longPressFeedback.js.map +1 -1
  495. package/dist/features/modes/modeLayers.js +7 -7
  496. package/dist/features/modes/modeLayers.js.map +1 -1
  497. package/dist/features/paths/editablePath.js +63 -0
  498. package/dist/features/paths/editablePath.js.map +1 -0
  499. package/dist/features/paths/index.js +9 -16
  500. package/dist/features/paths/pathEditState.js +41 -0
  501. package/dist/features/paths/pathEditState.js.map +1 -0
  502. package/dist/features/paths/pathEditingOverlayLayer.js +36 -38
  503. package/dist/features/paths/pathEditingOverlayLayer.js.map +1 -1
  504. package/dist/features/paths/pathLayer.js +3 -2
  505. package/dist/features/paths/pathLayer.js.map +1 -1
  506. package/dist/features/paths/penPreviewLayer.js +86 -88
  507. package/dist/features/paths/penPreviewLayer.js.map +1 -1
  508. package/dist/features/paths/shapeGenerator.js +89 -0
  509. package/dist/features/paths/shapeGenerator.js.map +1 -0
  510. package/dist/features/paths/usePathEdit.js +34 -0
  511. package/dist/features/paths/usePathEdit.js.map +1 -0
  512. package/dist/features/poseRun/usePoseRun.js +44 -57
  513. package/dist/features/poseRun/usePoseRun.js.map +1 -1
  514. package/dist/features/selection/overlay.js +170 -178
  515. package/dist/features/selection/overlay.js.map +1 -1
  516. package/dist/features/text/index.js +6 -0
  517. package/dist/features/text/textLayer.js +1 -1
  518. package/dist/features/text/textLayer.js.map +1 -1
  519. package/dist/features/text/useSceneTextEdit.js +119 -88
  520. package/dist/features/text/useSceneTextEdit.js.map +1 -1
  521. package/dist/features/viewports/viewResolver.js +28 -24
  522. package/dist/features/viewports/viewResolver.js.map +1 -1
  523. package/dist/features/viewports/viewportLayer.js +25 -36
  524. package/dist/features/viewports/viewportLayer.js.map +1 -1
  525. package/dist/icons/SliceIcon.js +24 -0
  526. package/dist/icons/SliceIcon.js.map +1 -0
  527. package/dist/index.d.ts +5200 -8777
  528. package/dist/index.js +284 -320
  529. package/dist/input/keyState.js +14 -14
  530. package/dist/interactions/actions/actionShortcuts.js.map +1 -1
  531. package/dist/interactions/actions/{defaults/align.js → align/action.js} +15 -16
  532. package/dist/interactions/actions/align/action.js.map +1 -0
  533. package/dist/interactions/actions/align/align.js +24 -24
  534. package/dist/interactions/actions/align/align.js.map +1 -1
  535. package/dist/interactions/actions/booleans/action.js +65 -0
  536. package/dist/interactions/actions/booleans/action.js.map +1 -0
  537. package/dist/interactions/actions/booleans/booleans.js +74 -83
  538. package/dist/interactions/actions/booleans/booleans.js.map +1 -1
  539. package/dist/interactions/actions/booleans/operands.js +40 -0
  540. package/dist/interactions/actions/booleans/operands.js.map +1 -0
  541. package/dist/interactions/actions/booleans/pieces.js +45 -0
  542. package/dist/interactions/actions/booleans/pieces.js.map +1 -0
  543. package/dist/interactions/actions/booleans/placement.js +24 -0
  544. package/dist/interactions/actions/booleans/placement.js.map +1 -0
  545. package/dist/interactions/actions/booleans/useBooleans.js +11 -9
  546. package/dist/interactions/actions/booleans/useBooleans.js.map +1 -1
  547. package/dist/interactions/actions/booleans/useBooleansAdapter.js.map +1 -1
  548. package/dist/interactions/actions/{defaults/clipboard.js → clipboard/action.js} +19 -19
  549. package/dist/interactions/actions/clipboard/action.js.map +1 -0
  550. package/dist/interactions/actions/clipboard/clipboardOps.js +15 -15
  551. package/dist/interactions/actions/clipboard/clipboardOps.js.map +1 -1
  552. package/dist/interactions/actions/clipboard/wireFormat.js.map +1 -1
  553. package/dist/interactions/actions/clone/action.js +103 -0
  554. package/dist/interactions/actions/clone/action.js.map +1 -0
  555. package/dist/interactions/actions/clone/behaviors.js +52 -0
  556. package/dist/interactions/actions/clone/behaviors.js.map +1 -0
  557. package/dist/interactions/actions/defaultCommitAdapter.js +10 -37
  558. package/dist/interactions/actions/defaultCommitAdapter.js.map +1 -1
  559. package/dist/interactions/actions/defaults/anchorEditing.js +69 -74
  560. package/dist/interactions/actions/defaults/anchorEditing.js.map +1 -1
  561. package/dist/interactions/actions/defaults/anchorHandles.js +42 -0
  562. package/dist/interactions/actions/defaults/anchorHandles.js.map +1 -0
  563. package/dist/interactions/actions/defaults/anchorJoin.js +92 -0
  564. package/dist/interactions/actions/defaults/anchorJoin.js.map +1 -0
  565. package/dist/interactions/actions/defaults/areaSelect.js.map +1 -1
  566. package/dist/interactions/actions/defaults/bendSegment.js +46 -0
  567. package/dist/interactions/actions/defaults/bendSegment.js.map +1 -0
  568. package/dist/interactions/actions/defaults/cancelGesture.js.map +1 -1
  569. package/dist/interactions/actions/defaults/clearSelection.js.map +1 -1
  570. package/dist/interactions/actions/defaults/copySubtree.js +1 -1
  571. package/dist/interactions/actions/defaults/copySubtree.js.map +1 -1
  572. package/dist/interactions/actions/defaults/createPaintAction.js.map +1 -1
  573. package/dist/interactions/actions/defaults/delete.js.map +1 -1
  574. package/dist/interactions/actions/defaults/duplicate.js +36 -21
  575. package/dist/interactions/actions/defaults/duplicate.js.map +1 -1
  576. package/dist/interactions/actions/defaults/enterPathEdit.js +19 -7
  577. package/dist/interactions/actions/defaults/enterPathEdit.js.map +1 -1
  578. package/dist/interactions/actions/defaults/enterTextEdit.js.map +1 -1
  579. package/dist/interactions/actions/defaults/group.js +35 -40
  580. package/dist/interactions/actions/defaults/group.js.map +1 -1
  581. package/dist/interactions/actions/defaults/icons/anchorIcons.js +75 -0
  582. package/dist/interactions/actions/defaults/icons/anchorIcons.js.map +1 -0
  583. package/dist/interactions/actions/defaults/icons/booleanIcons.js +24 -1
  584. package/dist/interactions/actions/defaults/icons/booleanIcons.js.map +1 -1
  585. package/dist/interactions/actions/defaults/icons/editIcons.js +35 -8
  586. package/dist/interactions/actions/defaults/icons/editIcons.js.map +1 -1
  587. package/dist/interactions/actions/defaults/icons/outlineIcons.js +39 -1
  588. package/dist/interactions/actions/defaults/icons/outlineIcons.js.map +1 -1
  589. package/dist/interactions/actions/defaults/ingest.js +19 -15
  590. package/dist/interactions/actions/defaults/ingest.js.map +1 -1
  591. package/dist/interactions/actions/defaults/insertPathAnchor.js +18 -34
  592. package/dist/interactions/actions/defaults/insertPathAnchor.js.map +1 -1
  593. package/dist/interactions/actions/defaults/nudge.js +43 -39
  594. package/dist/interactions/actions/defaults/nudge.js.map +1 -1
  595. package/dist/interactions/actions/defaults/pinchZoom.js +29 -29
  596. package/dist/interactions/actions/defaults/pinchZoom.js.map +1 -1
  597. package/dist/interactions/actions/defaults/requiresSelection.js.map +1 -1
  598. package/dist/interactions/actions/defaults/segmentUnder.js +22 -0
  599. package/dist/interactions/actions/defaults/segmentUnder.js.map +1 -0
  600. package/dist/interactions/actions/defaults/setFill.js +9 -3
  601. package/dist/interactions/actions/defaults/setFill.js.map +1 -1
  602. package/dist/interactions/actions/defaults/setFillOpacity.js +4 -1
  603. package/dist/interactions/actions/defaults/setFillOpacity.js.map +1 -1
  604. package/dist/interactions/actions/defaults/setStroke.js.map +1 -1
  605. package/dist/interactions/actions/defaults/sliceOps.js +20 -22
  606. package/dist/interactions/actions/defaults/sliceOps.js.map +1 -1
  607. package/dist/interactions/actions/defaults/toolActivate.js.map +1 -1
  608. package/dist/interactions/actions/defaults/toolResetToDefault.js.map +1 -1
  609. package/dist/interactions/actions/defaults/viewportDragPan.js +1 -1
  610. package/dist/interactions/actions/defaults/viewportDragPan.js.map +1 -1
  611. package/dist/interactions/actions/defaults/viewportWheelPan.js.map +1 -1
  612. package/dist/interactions/actions/defaults/viewportZoom.js +82 -79
  613. package/dist/interactions/actions/defaults/viewportZoom.js.map +1 -1
  614. package/dist/interactions/actions/{defaults/distribute.js → distribute/action.js} +18 -19
  615. package/dist/interactions/actions/distribute/action.js.map +1 -0
  616. package/dist/interactions/actions/distribute/distribute.js +15 -15
  617. package/dist/interactions/actions/distribute/distribute.js.map +1 -1
  618. package/dist/interactions/actions/edit-anchors/action.js +101 -0
  619. package/dist/interactions/actions/edit-anchors/action.js.map +1 -0
  620. package/dist/interactions/actions/edit-anchors/geometry.js +2 -4
  621. package/dist/interactions/actions/edit-anchors/geometry.js.map +1 -1
  622. package/dist/interactions/actions/edit-anchors/preview.js +26 -0
  623. package/dist/interactions/actions/edit-anchors/preview.js.map +1 -0
  624. package/dist/interactions/actions/edit-anchors/symmetry.js +11 -0
  625. package/dist/interactions/actions/edit-anchors/symmetry.js.map +1 -0
  626. package/dist/interactions/actions/flip/action.js +124 -0
  627. package/dist/interactions/actions/flip/action.js.map +1 -0
  628. package/dist/interactions/actions/flip/helpers.js +1 -1
  629. package/dist/interactions/actions/flip/helpers.js.map +1 -1
  630. package/dist/interactions/actions/geometryProjection.js.map +1 -1
  631. package/dist/interactions/actions/gestureFrames.js +18 -0
  632. package/dist/interactions/actions/gestureFrames.js.map +1 -0
  633. package/dist/interactions/actions/gestureLifecycle.js +47 -20
  634. package/dist/interactions/actions/gestureLifecycle.js.map +1 -1
  635. package/dist/interactions/actions/insert/action.js +79 -0
  636. package/dist/interactions/actions/insert/action.js.map +1 -0
  637. package/dist/interactions/actions/insert/commit.js +28 -0
  638. package/dist/interactions/actions/insert/commit.js.map +1 -0
  639. package/dist/interactions/actions/insert/extras.js +65 -0
  640. package/dist/interactions/actions/insert/extras.js.map +1 -0
  641. package/dist/interactions/actions/insert/frame.js +55 -0
  642. package/dist/interactions/actions/insert/frame.js.map +1 -0
  643. package/dist/interactions/actions/insert/geometry.js +35 -0
  644. package/dist/interactions/actions/insert/geometry.js.map +1 -0
  645. package/dist/interactions/actions/insert/repositionAction.js +31 -0
  646. package/dist/interactions/actions/insert/repositionAction.js.map +1 -0
  647. package/dist/interactions/actions/insert/rotateAction.js +21 -0
  648. package/dist/interactions/actions/insert/rotateAction.js.map +1 -0
  649. package/dist/interactions/actions/insert/session.js +59 -0
  650. package/dist/interactions/actions/insert/session.js.map +1 -0
  651. package/dist/interactions/actions/insert/shape.js +34 -0
  652. package/dist/interactions/actions/insert/shape.js.map +1 -0
  653. package/dist/interactions/actions/lasso-select/action.js +143 -0
  654. package/dist/interactions/actions/lasso-select/action.js.map +1 -0
  655. package/dist/interactions/actions/move/action.js +91 -0
  656. package/dist/interactions/actions/move/action.js.map +1 -0
  657. package/dist/interactions/actions/move/behaviors/layoutDrop.js +51 -0
  658. package/dist/interactions/actions/move/behaviors/layoutDrop.js.map +1 -0
  659. package/dist/interactions/actions/move/behaviors/reparentOnDrop.js +15 -0
  660. package/dist/interactions/actions/move/behaviors/reparentOnDrop.js.map +1 -0
  661. package/dist/interactions/actions/move/behaviors/snapToContainer.js +35 -28
  662. package/dist/interactions/actions/move/behaviors/snapToContainer.js.map +1 -1
  663. package/dist/interactions/actions/move/capture.js +108 -0
  664. package/dist/interactions/actions/move/capture.js.map +1 -0
  665. package/dist/interactions/actions/move/commit/index.js +41 -0
  666. package/dist/interactions/actions/move/commit/index.js.map +1 -0
  667. package/dist/interactions/actions/move/commit/layoutDrop.js +44 -0
  668. package/dist/interactions/actions/move/commit/layoutDrop.js.map +1 -0
  669. package/dist/interactions/actions/move/commit/layoutRelease.js +100 -0
  670. package/dist/interactions/actions/move/commit/layoutRelease.js.map +1 -0
  671. package/dist/interactions/actions/move/commit/rebase.js +18 -0
  672. package/dist/interactions/actions/move/commit/rebase.js.map +1 -0
  673. package/dist/interactions/actions/move/commit/reparent.js +65 -0
  674. package/dist/interactions/actions/move/commit/reparent.js.map +1 -0
  675. package/dist/interactions/actions/move/delta.js +51 -0
  676. package/dist/interactions/actions/move/delta.js.map +1 -0
  677. package/dist/interactions/actions/move/frame.js +47 -0
  678. package/dist/interactions/actions/move/frame.js.map +1 -0
  679. package/dist/interactions/actions/move/gestureAdapter.js +15 -40
  680. package/dist/interactions/actions/move/gestureAdapter.js.map +1 -1
  681. package/dist/interactions/actions/move/landedDescendants.js +8 -8
  682. package/dist/interactions/actions/move/layout/container.js +94 -0
  683. package/dist/interactions/actions/move/layout/container.js.map +1 -0
  684. package/dist/interactions/actions/move/layout/dragged.js +58 -0
  685. package/dist/interactions/actions/move/layout/dragged.js.map +1 -0
  686. package/dist/interactions/actions/move/layout/dropPass.js +122 -0
  687. package/dist/interactions/actions/move/layout/dropPass.js.map +1 -0
  688. package/dist/interactions/actions/move/layout/exits.js +38 -0
  689. package/dist/interactions/actions/move/layout/exits.js.map +1 -0
  690. package/dist/interactions/actions/move/layout/glide.js +48 -0
  691. package/dist/interactions/actions/move/layout/glide.js.map +1 -0
  692. package/dist/interactions/actions/move/session.js +63 -0
  693. package/dist/interactions/actions/move/session.js.map +1 -0
  694. package/dist/interactions/actions/move/translate.js +61 -0
  695. package/dist/interactions/actions/move/translate.js.map +1 -0
  696. package/dist/interactions/actions/outlines/createOutlines.js +17 -64
  697. package/dist/interactions/actions/outlines/createOutlines.js.map +1 -1
  698. package/dist/interactions/actions/outlines/createOutlinesAction.js +51 -0
  699. package/dist/interactions/actions/outlines/createOutlinesAction.js.map +1 -0
  700. package/dist/interactions/actions/outlines/outlineStroke.js +72 -0
  701. package/dist/interactions/actions/outlines/outlineStroke.js.map +1 -0
  702. package/dist/interactions/actions/outlines/outlineStrokeAction.js +37 -0
  703. package/dist/interactions/actions/outlines/outlineStrokeAction.js.map +1 -0
  704. package/dist/interactions/actions/outlines/replaceWithPaths.js +54 -0
  705. package/dist/interactions/actions/outlines/replaceWithPaths.js.map +1 -0
  706. package/dist/interactions/actions/outlines/strokeRegion.js +27 -0
  707. package/dist/interactions/actions/outlines/strokeRegion.js.map +1 -0
  708. package/dist/interactions/actions/pathCommands/cutJoin.js +102 -0
  709. package/dist/interactions/actions/pathCommands/cutJoin.js.map +1 -0
  710. package/dist/interactions/actions/pathCommands/livePathEdit.js +64 -0
  711. package/dist/interactions/actions/pathCommands/livePathEdit.js.map +1 -0
  712. package/dist/interactions/actions/pathCommands/pathNodes.js +99 -0
  713. package/dist/interactions/actions/pathCommands/pathNodes.js.map +1 -0
  714. package/dist/interactions/actions/pathCommands/simplifyOffset.js +42 -0
  715. package/dist/interactions/actions/pathCommands/simplifyOffset.js.map +1 -0
  716. package/dist/interactions/actions/planeInput.js.map +1 -1
  717. package/dist/interactions/actions/pointerState.js +12 -0
  718. package/dist/interactions/actions/pointerState.js.map +1 -0
  719. package/dist/interactions/actions/poseDescriptorDep.js +1 -1
  720. package/dist/interactions/actions/poseDescriptorDep.js.map +1 -1
  721. package/dist/interactions/actions/poseFrame.js +26 -26
  722. package/dist/interactions/actions/poseFrame.js.map +1 -1
  723. package/dist/interactions/actions/resize/action.js +66 -0
  724. package/dist/interactions/actions/resize/action.js.map +1 -0
  725. package/dist/interactions/actions/resize/behaviors/lockAspect.js.map +1 -1
  726. package/dist/interactions/actions/resize/boxFrame.js +16 -0
  727. package/dist/interactions/actions/resize/boxFrame.js.map +1 -0
  728. package/dist/interactions/actions/resize/capture.js +85 -0
  729. package/dist/interactions/actions/resize/capture.js.map +1 -0
  730. package/dist/interactions/actions/resize/commit.js +69 -0
  731. package/dist/interactions/actions/resize/commit.js.map +1 -0
  732. package/dist/interactions/actions/resize/frame.js +88 -0
  733. package/dist/interactions/actions/resize/frame.js.map +1 -0
  734. package/dist/interactions/actions/resize/pointSnap.js +111 -0
  735. package/dist/interactions/actions/resize/pointSnap.js.map +1 -0
  736. package/dist/interactions/actions/resize/replay.js +47 -0
  737. package/dist/interactions/actions/resize/replay.js.map +1 -0
  738. package/dist/interactions/actions/resize/ruleBounds.js +9 -0
  739. package/dist/interactions/actions/resize/ruleBounds.js.map +1 -0
  740. package/dist/interactions/actions/resize/session.js +63 -0
  741. package/dist/interactions/actions/resize/session.js.map +1 -0
  742. package/dist/interactions/actions/resolveOverlays.js +2 -1
  743. package/dist/interactions/actions/resolveOverlays.js.map +1 -1
  744. package/dist/interactions/actions/resolvePreviews.js.map +1 -1
  745. package/dist/interactions/actions/rotate/action.js +71 -0
  746. package/dist/interactions/actions/rotate/action.js.map +1 -0
  747. package/dist/interactions/actions/rotate/behaviors/index.js +7 -0
  748. package/dist/interactions/actions/rotate/behaviors/index.js.map +1 -0
  749. package/dist/interactions/actions/rotate/behaviors/snapRotation.js +12 -0
  750. package/dist/interactions/actions/rotate/behaviors/snapRotation.js.map +1 -0
  751. package/dist/interactions/actions/rotate/commit.js +40 -0
  752. package/dist/interactions/actions/rotate/commit.js.map +1 -0
  753. package/dist/interactions/actions/rotate/frame.js +65 -0
  754. package/dist/interactions/actions/rotate/frame.js.map +1 -0
  755. package/dist/interactions/actions/rotate/handle.js +12 -12
  756. package/dist/interactions/actions/rotate/handle.js.map +1 -1
  757. package/dist/interactions/actions/rotate/replay.js +22 -0
  758. package/dist/interactions/actions/rotate/replay.js.map +1 -0
  759. package/dist/interactions/actions/rotate/session.js +102 -0
  760. package/dist/interactions/actions/rotate/session.js.map +1 -0
  761. package/dist/interactions/actions/spatialReference.js.map +1 -1
  762. package/dist/interactions/actions/transform-again/action.js +63 -0
  763. package/dist/interactions/actions/transform-again/action.js.map +1 -0
  764. package/dist/interactions/actions/transform-again/memory.js +35 -0
  765. package/dist/interactions/actions/transform-again/memory.js.map +1 -0
  766. package/dist/interactions/actions/useStandardActions.js +84 -61
  767. package/dist/interactions/actions/useStandardActions.js.map +1 -1
  768. package/dist/interactions/gestures/pointerDrag/pointerDrag.js +61 -42
  769. package/dist/interactions/gestures/pointerDrag/pointerDrag.js.map +1 -1
  770. package/dist/interactions/gestures/shared/originProjection.js +1 -1
  771. package/dist/interactions/gestures/shared/originProjection.js.map +1 -1
  772. package/dist/interactions/gestures/shared/screenTolerance.js +8 -2
  773. package/dist/interactions/gestures/shared/screenTolerance.js.map +1 -1
  774. package/dist/interactions/gestures/shared/snap.js.map +1 -1
  775. package/dist/math-CYUjoyyU.d.ts +33 -0
  776. package/dist/math.d.ts +5 -2
  777. package/dist/math.js +6 -6
  778. package/dist/mesh.d.ts +4 -268
  779. package/dist/mesh.js +3 -7
  780. package/dist/move.d.ts +6 -4
  781. package/dist/{originProjection-gHnOup4e.d.ts → originProjection-CoNVpITV.d.ts} +1 -1
  782. package/dist/patterns-builtin.d.ts +1 -118
  783. package/dist/patterns-builtin.js +2 -3
  784. package/dist/poseDescriptor-Bqk-11Rl.d.ts +73 -0
  785. package/dist/renderer.d.ts +1 -92
  786. package/dist/renderer.js +2 -19
  787. package/dist/resize.d.ts +11 -22
  788. package/dist/resize.js +1 -1
  789. package/dist/style.css +1 -1
  790. package/dist/test-hook/install.js.map +1 -1
  791. package/dist/test-hook/useTestHook.js +22 -0
  792. package/dist/test-hook/useTestHook.js.map +1 -0
  793. package/dist/test-seams-D0pyV3pR.d.ts +149 -0
  794. package/dist/test-seams.d.ts +4 -4
  795. package/dist/test-seams.js +2 -2
  796. package/dist/tools/builtin/bone/boneActions.js +130 -0
  797. package/dist/tools/builtin/bone/boneActions.js.map +1 -0
  798. package/dist/tools/builtin/bone/boneOverlay.js +58 -0
  799. package/dist/tools/builtin/bone/boneOverlay.js.map +1 -0
  800. package/dist/tools/builtin/bone/placedRig.js +24 -0
  801. package/dist/tools/builtin/bone/placedRig.js.map +1 -0
  802. package/dist/tools/builtin/bone/rigEditState.js +21 -0
  803. package/dist/tools/builtin/bone/rigEditState.js.map +1 -0
  804. package/dist/tools/builtin/bone/useBoneTool.js +98 -0
  805. package/dist/tools/builtin/bone/useBoneTool.js.map +1 -0
  806. package/dist/tools/builtin/ellipse/useEllipseTool.js +16 -15
  807. package/dist/tools/builtin/ellipse/useEllipseTool.js.map +1 -1
  808. package/dist/tools/builtin/eyedropper/useEyedropperTool.js.map +1 -1
  809. package/dist/tools/builtin/hand/useHandTool.js.map +1 -1
  810. package/dist/tools/builtin/image/useImageTool.js.map +1 -1
  811. package/dist/tools/builtin/lasso/useLassoTool.js.map +1 -1
  812. package/dist/tools/builtin/line/useLineTool.js +16 -15
  813. package/dist/tools/builtin/line/useLineTool.js.map +1 -1
  814. package/dist/tools/builtin/pen/usePenTool.js +162 -164
  815. package/dist/tools/builtin/pen/usePenTool.js.map +1 -1
  816. package/dist/tools/builtin/pencil/usePencilTool.js.map +1 -1
  817. package/dist/tools/builtin/pickTopMostHit.js +11 -14
  818. package/dist/tools/builtin/pickTopMostHit.js.map +1 -1
  819. package/dist/tools/builtin/polygon/usePolygonTool.js +17 -15
  820. package/dist/tools/builtin/polygon/usePolygonTool.js.map +1 -1
  821. package/dist/tools/builtin/rect/useRectTool.js +15 -14
  822. package/dist/tools/builtin/rect/useRectTool.js.map +1 -1
  823. package/dist/tools/builtin/select/adapterPointQuery.js +40 -0
  824. package/dist/tools/builtin/select/adapterPointQuery.js.map +1 -0
  825. package/dist/tools/builtin/select/selectionContributions.js +5 -5
  826. package/dist/tools/builtin/select/selectionContributions.js.map +1 -1
  827. package/dist/tools/builtin/select/useSelectTool.js +44 -71
  828. package/dist/tools/builtin/select/useSelectTool.js.map +1 -1
  829. package/dist/tools/builtin/shared/pointerFollower.js.map +1 -1
  830. package/dist/tools/builtin/slice/useSliceTool.js +69 -72
  831. package/dist/tools/builtin/slice/useSliceTool.js.map +1 -1
  832. package/dist/tools/builtin/star/useStarTool.js +18 -16
  833. package/dist/tools/builtin/star/useStarTool.js.map +1 -1
  834. package/dist/tools/builtin/text/useTextTool.js +10 -2
  835. package/dist/tools/builtin/text/useTextTool.js.map +1 -1
  836. package/dist/tools/builtin/weight/useWeightTool.js +77 -0
  837. package/dist/tools/builtin/weight/useWeightTool.js.map +1 -0
  838. package/dist/tools/builtin/weight/weightActions.js +112 -0
  839. package/dist/tools/builtin/weight/weightActions.js.map +1 -0
  840. package/dist/tools/builtin/weight/weightOverlay.js +61 -0
  841. package/dist/tools/builtin/weight/weightOverlay.js.map +1 -0
  842. package/dist/tools/overlayBinding.js.map +1 -1
  843. package/dist/tools/useKeybindings.js +20 -14
  844. package/dist/tools/useKeybindings.js.map +1 -1
  845. package/dist/{types-k-5Oqh-U.d.ts → types-DBbbCy0i.d.ts} +103 -176
  846. package/dist/util/paint.js +1 -1
  847. package/dist/util/paint.js.map +1 -1
  848. package/dist/version.js +1 -1
  849. package/package.json +26 -21
  850. package/dist/animation/colorHelpers.js +0 -135
  851. package/dist/animation/colorHelpers.js.map +0 -1
  852. package/dist/animation/colorRegistry.js +0 -37
  853. package/dist/animation/colorRegistry.js.map +0 -1
  854. package/dist/animation/engine/axes.js +0 -36
  855. package/dist/animation/engine/axes.js.map +0 -1
  856. package/dist/animation/engine/codec.js +0 -170
  857. package/dist/animation/engine/codec.js.map +0 -1
  858. package/dist/animation/engine/integrator.js +0 -12
  859. package/dist/animation/engine/integrator.js.map +0 -1
  860. package/dist/animation/loop.js +0 -60
  861. package/dist/animation/loop.js.map +0 -1
  862. package/dist/animation/observe.js +0 -23
  863. package/dist/animation/observe.js.map +0 -1
  864. package/dist/animation/rig/blendPoses.js +0 -43
  865. package/dist/animation/rig/blendPoses.js.map +0 -1
  866. package/dist/animation/rig/mirrorPose.js +0 -19
  867. package/dist/animation/rig/mirrorPose.js.map +0 -1
  868. package/dist/animation/rig/resolveSkeleton.js +0 -33
  869. package/dist/animation/rig/resolveSkeleton.js.map +0 -1
  870. package/dist/animation/rig/solveIk.js +0 -103
  871. package/dist/animation/rig/solveIk.js.map +0 -1
  872. package/dist/animation/rig/types.js +0 -12
  873. package/dist/animation/rig/types.js.map +0 -1
  874. package/dist/animation/slew.js +0 -27
  875. package/dist/animation/slew.js.map +0 -1
  876. package/dist/animation/stagger.js +0 -146
  877. package/dist/animation/stagger.js.map +0 -1
  878. package/dist/animation/timeline/booking.js +0 -114
  879. package/dist/animation/timeline/booking.js.map +0 -1
  880. package/dist/animation/timeline/createTimeline.js +0 -125
  881. package/dist/animation/timeline/createTimeline.js.map +0 -1
  882. package/dist/animation/timeline/sampleTrack.js +0 -79
  883. package/dist/animation/timeline/sampleTrack.js.map +0 -1
  884. package/dist/animation/useAnimator.js +0 -388
  885. package/dist/animation/useAnimator.js.map +0 -1
  886. package/dist/autoPoseDescriptor-Ct7yqivU.d.ts +0 -108
  887. package/dist/builtins-DPcdghtB.d.ts +0 -1223
  888. package/dist/canvas/MinimapCanvas.js +0 -140
  889. package/dist/canvas/MinimapCanvas.js.map +0 -1
  890. package/dist/canvas/deps/poseComposition.js +0 -11
  891. package/dist/canvas/deps/poseComposition.js.map +0 -1
  892. package/dist/canvas/minimapMath.js +0 -82
  893. package/dist/canvas/minimapMath.js.map +0 -1
  894. package/dist/canvas/toolPreview.js +0 -39
  895. package/dist/canvas/toolPreview.js.map +0 -1
  896. package/dist/core/adapters/arrayAdapter.js +0 -94
  897. package/dist/core/adapters/arrayAdapter.js.map +0 -1
  898. package/dist/core/adapters/useArrayAdapter.js +0 -13
  899. package/dist/core/adapters/useArrayAdapter.js.map +0 -1
  900. package/dist/core/fillInPoseFrame.js +0 -102
  901. package/dist/core/fillInPoseFrame.js.map +0 -1
  902. package/dist/core/geometry/poseFrame.js +0 -44
  903. package/dist/core/geometry/poseFrame.js.map +0 -1
  904. package/dist/core/geometry/poseRotation.js +0 -58
  905. package/dist/core/geometry/poseRotation.js.map +0 -1
  906. package/dist/core/gradient.js +0 -136
  907. package/dist/core/gradient.js.map +0 -1
  908. package/dist/core/markerInset.js +0 -24
  909. package/dist/core/markerInset.js.map +0 -1
  910. package/dist/core/mixed.js +0 -6
  911. package/dist/core/mixed.js.map +0 -1
  912. package/dist/core/paintKinds.js +0 -156
  913. package/dist/core/paintKinds.js.map +0 -1
  914. package/dist/core/scene/pickability.js +0 -6
  915. package/dist/core/scene/pickability.js.map +0 -1
  916. package/dist/core/strokeMarkerShapes.js +0 -139
  917. package/dist/core/strokeMarkerShapes.js.map +0 -1
  918. package/dist/core/strokeMarkers.js +0 -28
  919. package/dist/core/strokeMarkers.js.map +0 -1
  920. package/dist/core/viewport/meanScale.js +0 -8
  921. package/dist/core/viewport/meanScale.js.map +0 -1
  922. package/dist/core/viewport/pxExtent.js +0 -42
  923. package/dist/core/viewport/pxExtent.js.map +0 -1
  924. package/dist/features/cursor/paintedCursorLayer.js.map +0 -1
  925. package/dist/features/focus/gateLayer.js.map +0 -1
  926. package/dist/features/focus/useCanvasFocus.js +0 -29
  927. package/dist/features/focus/useCanvasFocus.js.map +0 -1
  928. package/dist/features/groups/children.js.map +0 -1
  929. package/dist/features/groups/composePose.js +0 -67
  930. package/dist/features/groups/composePose.js.map +0 -1
  931. package/dist/features/groups/nestedHit.js.map +0 -1
  932. package/dist/features/groups/unionOfChildren.js.map +0 -1
  933. package/dist/features/images/imageCache.js +0 -104
  934. package/dist/features/images/imageCache.js.map +0 -1
  935. package/dist/features/ingestion/index.js +0 -8
  936. package/dist/features/meshPaint/bake.js +0 -79
  937. package/dist/features/meshPaint/bake.js.map +0 -1
  938. package/dist/features/meshPaint/bakeCache.js +0 -59
  939. package/dist/features/meshPaint/bakeCache.js.map +0 -1
  940. package/dist/features/meshPaint/handles.js +0 -86
  941. package/dist/features/meshPaint/handles.js.map +0 -1
  942. package/dist/features/meshPaint/lazyKind.js.map +0 -1
  943. package/dist/features/meshPaint/meshPaint.js +0 -239
  944. package/dist/features/meshPaint/meshPaint.js.map +0 -1
  945. package/dist/features/meshPaint/meshShader.js +0 -6
  946. package/dist/features/meshPaint/meshShader.js.map +0 -1
  947. package/dist/features/meshPaint/register.js +0 -7
  948. package/dist/features/meshPaint/register.js.map +0 -1
  949. package/dist/features/meshPaint/surface.js +0 -110
  950. package/dist/features/meshPaint/surface.js.map +0 -1
  951. package/dist/features/minimap/actions.js +0 -53
  952. package/dist/features/minimap/actions.js.map +0 -1
  953. package/dist/features/minimap/createMinimapContribution.js +0 -96
  954. package/dist/features/minimap/createMinimapContribution.js.map +0 -1
  955. package/dist/features/minimap/layers.js +0 -85
  956. package/dist/features/minimap/layers.js.map +0 -1
  957. package/dist/features/overlays/useNodeOverlayFrame.js +0 -103
  958. package/dist/features/overlays/useNodeOverlayFrame.js.map +0 -1
  959. package/dist/features/parallax/createParallaxLayer.js +0 -26
  960. package/dist/features/parallax/createParallaxLayer.js.map +0 -1
  961. package/dist/features/parallax/createParallaxPlane.js +0 -22
  962. package/dist/features/parallax/createParallaxPlane.js.map +0 -1
  963. package/dist/features/paths/anchorEdits.js +0 -167
  964. package/dist/features/paths/anchorEdits.js.map +0 -1
  965. package/dist/features/paths/anchors.js +0 -159
  966. package/dist/features/paths/anchors.js.map +0 -1
  967. package/dist/features/paths/booleans.js +0 -2
  968. package/dist/features/paths/markerCommands.js +0 -149
  969. package/dist/features/paths/markerCommands.js.map +0 -1
  970. package/dist/features/paths/markerSites.js +0 -59
  971. package/dist/features/paths/markerSites.js.map +0 -1
  972. package/dist/features/paths/markers.js +0 -95
  973. package/dist/features/paths/markers.js.map +0 -1
  974. package/dist/features/paths/nearestAnchor.js +0 -36
  975. package/dist/features/paths/nearestAnchor.js.map +0 -1
  976. package/dist/features/paths/pathInWorld.js +0 -41
  977. package/dist/features/paths/pathInWorld.js.map +0 -1
  978. package/dist/features/paths/poseDescriptor.js +0 -39
  979. package/dist/features/paths/poseDescriptor.js.map +0 -1
  980. package/dist/features/paths/strokeToPath.js +0 -40
  981. package/dist/features/paths/strokeToPath.js.map +0 -1
  982. package/dist/features/paths/tessellate/dash.js +0 -52
  983. package/dist/features/paths/tessellate/dash.js.map +0 -1
  984. package/dist/features/paths/tessellate/insets.js +0 -32
  985. package/dist/features/paths/tessellate/insets.js.map +0 -1
  986. package/dist/features/paths/tessellate/metric.js +0 -72
  987. package/dist/features/paths/tessellate/metric.js.map +0 -1
  988. package/dist/features/paths/tessellate/stroke.js +0 -170
  989. package/dist/features/paths/tessellate/stroke.js.map +0 -1
  990. package/dist/features/paths/tessellate/vertexWidths.js +0 -32
  991. package/dist/features/paths/tessellate/vertexWidths.js.map +0 -1
  992. package/dist/features/patterns/commandPaint.js +0 -18
  993. package/dist/features/patterns/commandPaint.js.map +0 -1
  994. package/dist/features/patterns/index.js +0 -11
  995. package/dist/features/patterns/index.js.map +0 -1
  996. package/dist/features/patterns/patterns-builtin.js +0 -38
  997. package/dist/features/patterns/patterns-builtin.js.map +0 -1
  998. package/dist/features/patterns/rasterizeTile.js +0 -17
  999. package/dist/features/patterns/rasterizeTile.js.map +0 -1
  1000. package/dist/features/patterns/resolveSpec.js +0 -65
  1001. package/dist/features/patterns/resolveSpec.js.map +0 -1
  1002. package/dist/features/patterns/tileGeometry.js +0 -158
  1003. package/dist/features/patterns/tileGeometry.js.map +0 -1
  1004. package/dist/features/pointer/PointerContext.js +0 -45
  1005. package/dist/features/pointer/PointerContext.js.map +0 -1
  1006. package/dist/features/selection/SelectionContext.js +0 -51
  1007. package/dist/features/selection/SelectionContext.js.map +0 -1
  1008. package/dist/features/simulation/createSimulation.js +0 -61
  1009. package/dist/features/simulation/createSimulation.js.map +0 -1
  1010. package/dist/features/simulation/types.js +0 -6
  1011. package/dist/features/simulation/types.js.map +0 -1
  1012. package/dist/features/simulation/useSimulation.js +0 -74
  1013. package/dist/features/simulation/useSimulation.js.map +0 -1
  1014. package/dist/features/text/domOffsets.js +0 -82
  1015. package/dist/features/text/domOffsets.js.map +0 -1
  1016. package/dist/features/text/domRuns.js +0 -230
  1017. package/dist/features/text/domRuns.js.map +0 -1
  1018. package/dist/features/text/fitTextPose.js +0 -38
  1019. package/dist/features/text/fitTextPose.js.map +0 -1
  1020. package/dist/features/text/hitTest.js +0 -48
  1021. package/dist/features/text/hitTest.js.map +0 -1
  1022. package/dist/features/text/isTextData.js +0 -8
  1023. package/dist/features/text/isTextData.js.map +0 -1
  1024. package/dist/features/text/overlayDirection.js +0 -15
  1025. package/dist/features/text/overlayDirection.js.map +0 -1
  1026. package/dist/features/text/renderLabel.js +0 -14
  1027. package/dist/features/text/renderLabel.js.map +0 -1
  1028. package/dist/features/text/runs/effectiveRangeStyle.js +0 -66
  1029. package/dist/features/text/runs/effectiveRangeStyle.js.map +0 -1
  1030. package/dist/features/text/runs/flagRange.js +0 -53
  1031. package/dist/features/text/runs/flagRange.js.map +0 -1
  1032. package/dist/features/text/runs/rangeStyle.js +0 -133
  1033. package/dist/features/text/runs/rangeStyle.js.map +0 -1
  1034. package/dist/features/text/textCommand.js +0 -60
  1035. package/dist/features/text/textCommand.js.map +0 -1
  1036. package/dist/features/text/textToPath.js +0 -181
  1037. package/dist/features/text/textToPath.js.map +0 -1
  1038. package/dist/features/text/useTextEdit.js +0 -491
  1039. package/dist/features/text/useTextEdit.js.map +0 -1
  1040. package/dist/features/tiling/createTiledLayer.js +0 -65
  1041. package/dist/features/tiling/createTiledLayer.js.map +0 -1
  1042. package/dist/features/tiling/tiledProject.js +0 -14
  1043. package/dist/features/tiling/tiledProject.js.map +0 -1
  1044. package/dist/interactions/actions/clone/behaviors/cloneByAltDrag.js +0 -26
  1045. package/dist/interactions/actions/clone/behaviors/cloneByAltDrag.js.map +0 -1
  1046. package/dist/interactions/actions/defaults/align.js.map +0 -1
  1047. package/dist/interactions/actions/defaults/booleans.js +0 -52
  1048. package/dist/interactions/actions/defaults/booleans.js.map +0 -1
  1049. package/dist/interactions/actions/defaults/clipboard.js.map +0 -1
  1050. package/dist/interactions/actions/defaults/clone.js +0 -91
  1051. package/dist/interactions/actions/defaults/clone.js.map +0 -1
  1052. package/dist/interactions/actions/defaults/createOutlines.js +0 -47
  1053. package/dist/interactions/actions/defaults/createOutlines.js.map +0 -1
  1054. package/dist/interactions/actions/defaults/distribute.js.map +0 -1
  1055. package/dist/interactions/actions/defaults/editAnchors.js +0 -100
  1056. package/dist/interactions/actions/defaults/editAnchors.js.map +0 -1
  1057. package/dist/interactions/actions/defaults/flip.js +0 -125
  1058. package/dist/interactions/actions/defaults/flip.js.map +0 -1
  1059. package/dist/interactions/actions/defaults/insert.js +0 -287
  1060. package/dist/interactions/actions/defaults/insert.js.map +0 -1
  1061. package/dist/interactions/actions/defaults/lassoSelect.js +0 -153
  1062. package/dist/interactions/actions/defaults/lassoSelect.js.map +0 -1
  1063. package/dist/interactions/actions/defaults/move.js +0 -778
  1064. package/dist/interactions/actions/defaults/move.js.map +0 -1
  1065. package/dist/interactions/actions/defaults/resize.js +0 -341
  1066. package/dist/interactions/actions/defaults/resize.js.map +0 -1
  1067. package/dist/interactions/actions/defaults/rotate.js +0 -185
  1068. package/dist/interactions/actions/defaults/rotate.js.map +0 -1
  1069. package/dist/interactions/actions/previewOverrides.js +0 -25
  1070. package/dist/interactions/actions/previewOverrides.js.map +0 -1
  1071. package/dist/interactions/actions/resize/autoPoseDescriptor.js.map +0 -1
  1072. package/dist/layout/arrivals.js +0 -36
  1073. package/dist/layout/arrivals.js.map +0 -1
  1074. package/dist/math-J-ACHyEg.d.ts +0 -159
  1075. package/dist/registerProgram-T9S_PfAX.d.ts +0 -208
  1076. package/dist/renderer/DrawCommand.js +0 -6
  1077. package/dist/renderer/DrawCommand.js.map +0 -1
  1078. package/dist/renderer/WeaselRenderer.js +0 -333
  1079. package/dist/renderer/WeaselRenderer.js.map +0 -1
  1080. package/dist/renderer/batchClip.js +0 -46
  1081. package/dist/renderer/batchClip.js.map +0 -1
  1082. package/dist/renderer/cache/GLImageCache.js +0 -74
  1083. package/dist/renderer/cache/GLImageCache.js.map +0 -1
  1084. package/dist/renderer/cache/GLMeshCache.js +0 -102
  1085. package/dist/renderer/cache/GLMeshCache.js.map +0 -1
  1086. package/dist/renderer/cache/GLTextureCache.js +0 -68
  1087. package/dist/renderer/cache/GLTextureCache.js.map +0 -1
  1088. package/dist/renderer/cache/GradientRampAtlas.js +0 -82
  1089. package/dist/renderer/cache/GradientRampAtlas.js.map +0 -1
  1090. package/dist/renderer/cache/cache.js +0 -13
  1091. package/dist/renderer/cache/cache.js.map +0 -1
  1092. package/dist/renderer/cache/markerCommandCache.js +0 -63
  1093. package/dist/renderer/cache/markerCommandCache.js.map +0 -1
  1094. package/dist/renderer/cache/outlineMeshCache.js +0 -15
  1095. package/dist/renderer/cache/outlineMeshCache.js.map +0 -1
  1096. package/dist/renderer/cache/outlineStrokeMeshCache.js +0 -36
  1097. package/dist/renderer/cache/outlineStrokeMeshCache.js.map +0 -1
  1098. package/dist/renderer/cache/strokeMeshCache.js +0 -55
  1099. package/dist/renderer/cache/strokeMeshCache.js.map +0 -1
  1100. package/dist/renderer/cullDrawCommands.js +0 -90
  1101. package/dist/renderer/cullDrawCommands.js.map +0 -1
  1102. package/dist/renderer/draw/batch.js +0 -133
  1103. package/dist/renderer/draw/batch.js.map +0 -1
  1104. package/dist/renderer/draw/clip.js +0 -89
  1105. package/dist/renderer/draw/clip.js.map +0 -1
  1106. package/dist/renderer/draw/customShader.js +0 -230
  1107. package/dist/renderer/draw/customShader.js.map +0 -1
  1108. package/dist/renderer/draw/drawTriangles.js +0 -8
  1109. package/dist/renderer/draw/drawTriangles.js.map +0 -1
  1110. package/dist/renderer/draw/effects.js +0 -28
  1111. package/dist/renderer/draw/effects.js.map +0 -1
  1112. package/dist/renderer/draw/flushBatch.js +0 -35
  1113. package/dist/renderer/draw/flushBatch.js.map +0 -1
  1114. package/dist/renderer/draw/gradient.js +0 -90
  1115. package/dist/renderer/draw/gradient.js.map +0 -1
  1116. package/dist/renderer/draw/image.js +0 -38
  1117. package/dist/renderer/draw/image.js.map +0 -1
  1118. package/dist/renderer/draw/mesh.js +0 -16
  1119. package/dist/renderer/draw/mesh.js.map +0 -1
  1120. package/dist/renderer/draw/paintBind.js +0 -70
  1121. package/dist/renderer/draw/paintBind.js.map +0 -1
  1122. package/dist/renderer/draw/pathPaint.js +0 -142
  1123. package/dist/renderer/draw/pathPaint.js.map +0 -1
  1124. package/dist/renderer/draw/scratchPass.js +0 -83
  1125. package/dist/renderer/draw/scratchPass.js.map +0 -1
  1126. package/dist/renderer/draw/stencil.js +0 -28
  1127. package/dist/renderer/draw/stencil.js.map +0 -1
  1128. package/dist/renderer/draw/text.js +0 -167
  1129. package/dist/renderer/draw/text.js.map +0 -1
  1130. package/dist/renderer/draw/uniforms.js +0 -77
  1131. package/dist/renderer/draw/uniforms.js.map +0 -1
  1132. package/dist/renderer/draw.js +0 -79
  1133. package/dist/renderer/draw.js.map +0 -1
  1134. package/dist/renderer/drawBatch.js +0 -198
  1135. package/dist/renderer/drawBatch.js.map +0 -1
  1136. package/dist/renderer/effects/EffectTargets.js +0 -48
  1137. package/dist/renderer/effects/EffectTargets.js.map +0 -1
  1138. package/dist/renderer/effects/builtins.js +0 -31
  1139. package/dist/renderer/effects/builtins.js.map +0 -1
  1140. package/dist/renderer/effects/composite.js +0 -11
  1141. package/dist/renderer/effects/composite.js.map +0 -1
  1142. package/dist/renderer/effects/effectPrelude.js +0 -10
  1143. package/dist/renderer/effects/effectPrelude.js.map +0 -1
  1144. package/dist/renderer/effects/types.js +0 -10
  1145. package/dist/renderer/effects/types.js.map +0 -1
  1146. package/dist/renderer/glyphOutlineMesh.js +0 -67
  1147. package/dist/renderer/glyphOutlineMesh.js.map +0 -1
  1148. package/dist/renderer/index.js +0 -20
  1149. package/dist/renderer/math/color.js +0 -321
  1150. package/dist/renderer/math/color.js.map +0 -1
  1151. package/dist/renderer/math/mat3.js +0 -80
  1152. package/dist/renderer/math/mat3.js.map +0 -1
  1153. package/dist/renderer/math/patternSpace.js +0 -22
  1154. package/dist/renderer/math/patternSpace.js.map +0 -1
  1155. package/dist/renderer/math/viewToMat3.js +0 -19
  1156. package/dist/renderer/math/viewToMat3.js.map +0 -1
  1157. package/dist/renderer/paintResources.js +0 -18
  1158. package/dist/renderer/paintResources.js.map +0 -1
  1159. package/dist/renderer/paintScratch.js +0 -37
  1160. package/dist/renderer/paintScratch.js.map +0 -1
  1161. package/dist/renderer/shaders/ShaderProgram.js +0 -74
  1162. package/dist/renderer/shaders/ShaderProgram.js.map +0 -1
  1163. package/dist/renderer/shaders/batchFill.js +0 -119
  1164. package/dist/renderer/shaders/batchFill.js.map +0 -1
  1165. package/dist/renderer/shaders/customPrelude.js +0 -34
  1166. package/dist/renderer/shaders/customPrelude.js.map +0 -1
  1167. package/dist/renderer/shaders/extractUniformNames.js +0 -184
  1168. package/dist/renderer/shaders/extractUniformNames.js.map +0 -1
  1169. package/dist/renderer/shaders/glyphPaint.js +0 -61
  1170. package/dist/renderer/shaders/glyphPaint.js.map +0 -1
  1171. package/dist/renderer/shaders/gradFill.js +0 -31
  1172. package/dist/renderer/shaders/gradFill.js.map +0 -1
  1173. package/dist/renderer/shaders/pathFill.js +0 -14
  1174. package/dist/renderer/shaders/pathFill.js.map +0 -1
  1175. package/dist/renderer/shaders/patternFill.js +0 -25
  1176. package/dist/renderer/shaders/patternFill.js.map +0 -1
  1177. package/dist/renderer/shaders/registerProgram.js +0 -18
  1178. package/dist/renderer/shaders/registerProgram.js.map +0 -1
  1179. package/dist/renderer/spriteSheet.js +0 -14
  1180. package/dist/renderer/spriteSheet.js.map +0 -1
  1181. package/dist/renderer/state/GroupState.js +0 -77
  1182. package/dist/renderer/state/GroupState.js.map +0 -1
  1183. package/dist/renderer/strokeLengths.js +0 -50
  1184. package/dist/renderer/strokeLengths.js.map +0 -1
  1185. package/dist/renderer/syntheticItalic.js +0 -6
  1186. package/dist/renderer/syntheticItalic.js.map +0 -1
  1187. package/dist/renderer/textures/registerTexture.js +0 -34
  1188. package/dist/renderer/textures/registerTexture.js.map +0 -1
  1189. package/dist/scheduling/useVisibleRaf.js +0 -69
  1190. package/dist/scheduling/useVisibleRaf.js.map +0 -1
  1191. package/dist/test-seams-DM2B87-g.d.ts +0 -356
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.js","names":["captureOrigins","originPoses","origins","visual","id","ids","node","scene","g","descriptorOf","world","carryPose","poseFrame","invertPlane","planeOf","view","b","visualBoundsViaDescriptor","buildGestureContext","o","ctx","pointerStateOf","readers","sceneGestureFrames","moveGestureAdapter","selectionMethods","captureTurn","nodeDescriptors","poseDescriptorOf","poseDescriptor","scenePoseFrame","union","unionAABB","pivot","beginRotate","selection","params","resolveParams","opts","behaviors","DEFAULT_ROTATE_BEHAVIORS","shapeSources","captured","\"pivot\"","turn","gestureReaders","gestureCtx","readGestureLifecycle"],"sources":["../../../../src/interactions/actions/rotate/session.ts"],"sourcesContent":["import type { BindingOpts, InvocationCtx } from '@weasel-js/routing';\nimport { pointerStateOf } from '../pointerState';\nimport { sceneGestureFrames } from '../gestureFrames';\nimport { resolveParams } from '@weasel-js/routing';\nimport { unionAABB } from 'core/geometry/unionBounds';\nimport type { Op } from 'core/ops/types';\nimport type { NodeId, Scene } from 'core/scene/types';\nimport type { SelectionApi } from 'core/selection/useSelection';\nimport type { Bounds } from 'core/viewport/fitViewToBounds';\nimport { gestureReaders, type GestureReaders } from '../../gestures/shared/screenTolerance';\nimport type { GestureContext, RotateBehavior } from '../../gestures/types';\nimport { readGestureLifecycle, type GestureLifecycle } from '../gestureLifecycle';\nimport { DEFAULT_ROTATE_BEHAVIORS } from './behaviors';\nimport { moveGestureAdapter } from '../move/gestureAdapter';\nimport { carryPose, invertPlane, planeOf } from '../planeInput';\nimport { nodeDescriptors, poseDescriptorOf } from '../poseDescriptorDep';\nimport { scenePoseFrame, type PoseFrame } from '../poseFrame';\nimport { visualBoundsViaDescriptor, type PoseDescriptor } from '../resize/geometry';\nimport { shapeSources } from '../selectionSubtree';\n\n/** One rotated node as the press found it, in the plane the pointer's angle\n * is read in. */\nexport interface TurnOrigin {\n readonly world: unknown;\n /** Center of `world`'s bounds. */\n readonly center: { x: number; y: number };\n readonly rotation: number;\n}\n\n/** What a turn by some delta is computed from. */\nexport interface Turn {\n readonly origins: ReadonlyMap<NodeId, TurnOrigin>;\n /** The point the pointer orbits: the center of what the selection draws. */\n readonly pivot: { x: number; y: number };\n /** Orbit each node's center around `pivot`, for a multi-selection. Off,\n * each node turns about its own center. */\n readonly useUnionPivot: boolean;\n readonly descriptorOf: (id: NodeId) => PoseDescriptor<unknown>;\n}\n\n/** What a rotate captured at press. Nothing here changes during the drag. */\nexport interface RotateSession {\n readonly scene: Scene<unknown, string, unknown>;\n readonly ids: readonly NodeId[];\n readonly turn: Turn;\n /** World reads and local writes over the scene's composition strategy. */\n readonly poseFrame: PoseFrame<unknown>;\n readonly view: unknown;\n /** Each rotated node's pose as stored: the `from` of its op. */\n readonly originPoses: ReadonlyMap<NodeId, unknown>;\n /** Pointer angle around the pivot at press. */\n readonly startPointerAngle: number;\n readonly behaviors: readonly RotateBehavior<unknown>[];\n /** Reused across the drag; behaviors mutate its `scratch`. */\n readonly gestureCtx: GestureContext<unknown>;\n readonly applyOps?: (ops: Op[], label: string) => void;\n readonly selectionMethods: SelectionApi['adapterMethods'] | undefined;\n readonly lifecycle: GestureLifecycle;\n}\n\n/** What one `onMove` produced. Replaced, not mutated, by the next. */\nexport interface RotateFrame {\n /** Radians turned since press, as the behaviors shaped it. */\n readonly delta: number;\n /** Stored-frame pose of every rotated id; empty at a zero delta. */\n readonly previews: Map<NodeId, unknown>;\n}\n\nfunction captureOrigins(\n view: unknown,\n scene: Scene<unknown, string, unknown>,\n ids: readonly NodeId[],\n descriptorOf: (id: NodeId) => PoseDescriptor<unknown>,\n poseFrame: PoseFrame<unknown>,\n): { originPoses: Map<NodeId, unknown>; origins: Map<NodeId, TurnOrigin>; visual: Bounds[] } {\n const originPoses = new Map<NodeId, unknown>();\n const origins = new Map<NodeId, TurnOrigin>();\n const visual: Bounds[] = [];\n for (const id of ids) {\n const node = scene.get(id);\n if (!node) continue;\n const g = descriptorOf(id);\n if (!g.withRotation || g.supportsRotation?.(node.pose) === false) continue;\n originPoses.set(id, node.pose);\n // The pivot is a world point, so every measurement the gesture orbits\n // is taken from the world pose, not the stored one — carried into the\n // plane the edit is measured in, where the pointer's angle is read.\n const world = carryPose(g, poseFrame.world(id), invertPlane(planeOf(view, node.layer)));\n const b = g.getBounds(world);\n origins.set(id, {\n world,\n center: { x: b.x + b.width / 2, y: b.y + b.height / 2 },\n rotation: g.getRotation?.(world) ?? 0,\n });\n visual.push(visualBoundsViaDescriptor(world, g));\n }\n return { originPoses, origins, visual };\n}\n\nfunction buildGestureContext(\n ctx: InvocationCtx,\n scene: Scene<unknown, string, unknown>,\n origins: ReadonlyMap<NodeId, TurnOrigin>,\n readers: GestureReaders,\n selectionMethods: SelectionApi['adapterMethods'],\n): GestureContext<unknown> {\n return {\n draggedIds: [...origins.keys()] as string[],\n origin: new Map([...origins].map(([id, o]) => [id as string, o.world])),\n current: new Map([...origins].map(([id, o]) => [id as string, o.world])),\n snap: null,\n modifiers: { ...ctx.modifiers },\n pointer: pointerStateOf(ctx.world, ctx),\n view: readers.view(),\n plane: readers.plane(),\n frames: sceneGestureFrames(scene, ctx.deps.view),\n adapter: moveGestureAdapter(scene, undefined, selectionMethods) as unknown as GestureContext<unknown>['adapter'],\n scratch: {},\n };\n}\n\n/** What turning `ids` (already resolved to shape sources) is computed from,\n * with each one's pose as stored. Null when none of them can turn. */\nexport function captureTurn(\n scene: Scene<unknown, string, unknown>,\n ids: readonly NodeId[],\n view: unknown,\n poseDescriptor: Parameters<typeof poseDescriptorOf>[0],\n pivot: 'union' | 'each',\n): { turn: Turn; originPoses: Map<NodeId, unknown>; poseFrame: PoseFrame<unknown> } | null {\n const descriptorOf = nodeDescriptors(scene, poseDescriptorOf(poseDescriptor));\n // The pivot the pointer orbits is a world point, so every pose the\n // gesture turns is a world pose. Each turned result is stored back in\n // the node's own parent frame at preview and commit alike.\n const poseFrame = scenePoseFrame(scene);\n const { originPoses, origins, visual } = captureOrigins(view, scene, ids, descriptorOf, poseFrame);\n if (originPoses.size === 0) return null;\n const union = unionAABB(visual)!;\n return {\n turn: {\n origins,\n pivot: { x: union.x + union.width / 2, y: union.y + union.height / 2 },\n useUnionPivot: ids.length > 1 && pivot !== 'each',\n descriptorOf,\n },\n originPoses,\n poseFrame,\n };\n}\n\n/** Capture a rotate at press. Null when nothing selected can turn. Runs each\n * behavior's `onStart`. */\nexport function beginRotate(\n ctx: InvocationCtx,\n opts: BindingOpts | undefined,\n): { session: RotateSession; readers: GestureReaders } | null {\n const selection = ctx.deps.selection;\n const scene = ctx.deps.scene;\n const params = resolveParams(opts?.params);\n const behaviors = (opts?.behaviors ?? DEFAULT_ROTATE_BEHAVIORS) as readonly RotateBehavior<unknown>[];\n\n if (!selection || !scene) return null;\n\n // A group whose pose derives from its children turns by turning them.\n const ids = shapeSources(scene, selection.get()) as NodeId[];\n if (ids.length === 0) return null;\n\n const captured = captureTurn(\n scene, ids, ctx.deps.view, ctx.deps.poseDescriptor, params?.['pivot'] === 'each' ? 'each' : 'union',\n );\n if (!captured) return null;\n const { turn, originPoses, poseFrame } = captured;\n const { origins, pivot } = turn;\n const readers = gestureReaders(ctx.deps);\n const gestureCtx = buildGestureContext(ctx, scene, origins, readers, selection.adapterMethods);\n for (const b of behaviors) b.onStart?.(gestureCtx);\n\n const session: RotateSession = {\n scene,\n ids,\n turn,\n poseFrame,\n view: ctx.deps.view,\n originPoses,\n startPointerAngle: Math.atan2(ctx.world.y - pivot.y, ctx.world.x - pivot.x),\n behaviors,\n gestureCtx,\n applyOps: ctx.deps.applyOps,\n selectionMethods: selection.adapterMethods,\n lifecycle: readGestureLifecycle(params, 'Rotate', behaviors),\n };\n return { session, readers };\n}\n"],"mappings":";;;;;;;;;;;;;;AAoEA,SAASA,EACP,GACA,GACA,GACA,GACA,GAC2F;CAC3F,IAAMC,oBAAc,IAAI,IAAqB,GACvCC,oBAAU,IAAI,IAAwB,GACtCC,IAAmB,CAAC;CAC1B,KAAK,IAAMC,KAAMC,GAAK;EACpB,IAAMC,IAAOC,EAAM,IAAIH,CAAE;EACzB,IAAI,CAACE,GAAM;EACX,IAAME,IAAIC,EAAaL,CAAE;EACzB,IAAI,CAACI,EAAE,gBAAgBA,EAAE,mBAAmBF,EAAK,IAAI,MAAM,IAAO;EAClE,EAAY,IAAIF,GAAIE,EAAK,IAAI;EAI7B,IAAMI,IAAQC,EAAUH,GAAGI,EAAU,MAAMR,CAAE,GAAGS,EAAYC,EAAQC,GAAMT,EAAK,KAAK,CAAC,CAAC,GAChFU,IAAIR,EAAE,UAAUE,CAAK;EAM3B,AALAR,EAAQ,IAAIE,GAAI;GACd;GACA,QAAQ;IAAE,GAAGY,EAAE,IAAIA,EAAE,QAAQ;IAAG,GAAGA,EAAE,IAAIA,EAAE,SAAS;GAAE;GACtD,UAAUR,EAAE,cAAcE,CAAK,KAAK;EACtC,CAAC,GACDP,EAAO,KAAKc,EAA0BP,GAAOF,CAAC,CAAC;CACjD;CACA,OAAO;EAAE;EAAa;EAAS;CAAO;AACxC;AAEA,SAASU,EACP,GACA,GACA,GACA,GACA,GACyB;CACzB,OAAO;EACL,YAAY,CAAC,GAAGhB,EAAQ,KAAK,CAAC;EAC9B,QAAQ,IAAI,IAAI,CAAC,GAAGA,CAAO,CAAC,CAAC,KAAK,CAACE,GAAIe,OAAO,CAACf,GAAce,EAAE,KAAK,CAAC,CAAC;EACtE,SAAS,IAAI,IAAI,CAAC,GAAGjB,CAAO,CAAC,CAAC,KAAK,CAACE,GAAIe,OAAO,CAACf,GAAce,EAAE,KAAK,CAAC,CAAC;EACvE,MAAM;EACN,WAAW,EAAE,GAAGC,EAAI,UAAU;EAC9B,SAASC,EAAeD,EAAI,OAAOA,CAAG;EACtC,MAAME,EAAQ,KAAK;EACnB,OAAOA,EAAQ,MAAM;EACrB,QAAQC,EAAmBhB,GAAOa,EAAI,KAAK,IAAI;EAC/C,SAASI,EAAmBjB,GAAO,KAAA,GAAWkB,CAAgB;EAC9D,SAAS,CAAC;CACZ;AACF;AAIA,SAAgBC,EACd,GACA,GACA,GACA,GACA,GACyF;CACzF,IAAMjB,IAAekB,EAAgBpB,GAAOqB,EAAiBC,CAAc,CAAC,GAItEjB,IAAYkB,EAAevB,CAAK,GAChC,EAAE,gBAAa,YAAS,cAAWP,EAAee,GAAMR,GAAOF,GAAKI,GAAcG,CAAS;CACjG,IAAIX,EAAY,SAAS,GAAG,OAAO;CACnC,IAAM8B,IAAQC,EAAU7B,CAAM;CAC9B,OAAO;EACL,MAAM;GACJ;GACA,OAAO;IAAE,GAAG4B,EAAM,IAAIA,EAAM,QAAQ;IAAG,GAAGA,EAAM,IAAIA,EAAM,SAAS;GAAE;GACrE,eAAe1B,EAAI,SAAS,KAAK4B,MAAU;GAC3C;EACF;EACA;EACA;CACF;AACF;AAIA,SAAgBC,EACd,GACA,GAC4D;CAC5D,IAAMC,IAAYf,EAAI,KAAK,WACrBb,IAAQa,EAAI,KAAK,OACjBgB,IAASC,EAAcC,GAAM,MAAM,GACnCC,IAAaD,GAAM,aAAaE;CAEtC,IAAI,CAACL,KAAa,CAAC5B,GAAO,OAAO;CAGjC,IAAMF,IAAMoC,EAAalC,GAAO4B,EAAU,IAAI,CAAC;CAC/C,IAAI9B,EAAI,WAAW,GAAG,OAAO;CAE7B,IAAMqC,IAAWhB,EACfnB,GAAOF,GAAKe,EAAI,KAAK,MAAMA,EAAI,KAAK,gBAAgBgB,GAASO,UAAa,SAAS,SAAS,OAC9F;CACA,IAAI,CAACD,GAAU,OAAO;CACtB,IAAM,EAAE,SAAM,gBAAa,iBAAcA,GACnC,EAAE,YAAS,aAAUE,GACrBtB,IAAUuB,EAAezB,EAAI,IAAI,GACjC0B,IAAa5B,EAAoBE,GAAKb,GAAOL,GAASoB,GAASa,EAAU,cAAc;CAC7F,KAAK,IAAMnB,KAAKuB,GAAW,EAAE,UAAUO,CAAU;CAgBjD,OAAO;EAAE,SAAA;GAbP;GACA;GACA;GACA;GACA,MAAM1B,EAAI,KAAK;GACf;GACA,mBAAmB,KAAK,MAAMA,EAAI,MAAM,IAAIa,EAAM,GAAGb,EAAI,MAAM,IAAIa,EAAM,CAAC;GAC1E;GACA;GACA,UAAUb,EAAI,KAAK;GACnB,kBAAkBe,EAAU;GAC5B,WAAWY,EAAqBX,GAAQ,UAAUG,CAAS;EAEpD;EAAS;CAAQ;AAC5B"}
@@ -1 +1 @@
1
- {"version":3,"file":"spatialReference.js","names":["resolveSpatialReference","ref","p","src","r","actionReferenceSources","params","pointer","scene","id","visualBoundsViaDescriptor","frame","geom"],"sources":["../../../src/interactions/actions/spatialReference.ts"],"sourcesContent":["import type { NodeId, Scene } from 'core/scene/types';\nimport type { Bounds } from 'core/viewport/fitViewToBounds';\nimport type { PointerContextValue } from 'features/pointer/PointerContext';\nimport type { PoseDescriptor } from './resize/geometry';\nimport { visualBoundsViaDescriptor } from './resize/geometry';\nimport type { PoseFrame } from './poseFrame';\n\n/**\n * @experimental\n * A world-space place a selection transform lines up against — what align\n * aligns to, what flip mirrors about — other than the selection itself:\n *\n * - `'pointer'` — where the pointer is: the click's world point when a click\n * invoked the action, otherwise the latest position in the `pointer` dep.\n * - `{ x, y, width?, height? }` — a world point, or a world rect when it has\n * extent.\n * - `{ node }` — that node's visual bounds (a key object; it does not move).\n */\nexport type SpatialReference =\n | 'pointer'\n | { x: number; y: number; width?: number; height?: number }\n | { node: NodeId };\n\n/** @experimental Where `resolveSpatialReference` reads a reference's inputs. */\nexport interface SpatialReferenceSources {\n /** The pointer's world position, or `null` when it is over no canvas. */\n pointer(): { x: number; y: number } | null;\n /** A node's world visual bounds, or `null` when it is not in the scene. */\n nodeBounds(id: NodeId): Bounds | null;\n}\n\n/**\n * @experimental\n * The world bounds `ref` names — a point comes back as a zero-size rect — or\n * `null` when it names nothing right now (no pointer, a missing node, a\n * malformed value).\n */\nexport function resolveSpatialReference(\n ref: SpatialReference | unknown,\n src: SpatialReferenceSources,\n): Bounds | null {\n if (ref === 'pointer') {\n const p = src.pointer();\n return p ? { x: p.x, y: p.y, width: 0, height: 0 } : null;\n }\n if (typeof ref !== 'object' || ref === null) return null;\n if ('node' in ref) return src.nodeBounds((ref as { node: NodeId }).node);\n const r = ref as { x?: unknown; y?: unknown; width?: unknown; height?: unknown };\n if (typeof r.x !== 'number' || typeof r.y !== 'number') return null;\n return {\n x: r.x,\n y: r.y,\n width: typeof r.width === 'number' ? r.width : 0,\n height: typeof r.height === 'number' ? r.height : 0,\n };\n}\n\n/** The sources an immediate action resolves a reference from. A click's\n * `worldX`/`worldY` params outrank the `pointer` dep. */\nexport function actionReferenceSources(\n params: Record<string, unknown> | undefined,\n pointer: PointerContextValue | undefined,\n scene: Scene<unknown, string, unknown>,\n frame: PoseFrame<unknown>,\n geom: PoseDescriptor<unknown>,\n): SpatialReferenceSources {\n return {\n pointer: () => {\n if (typeof params?.worldX === 'number' && typeof params.worldY === 'number') {\n return { x: params.worldX, y: params.worldY };\n }\n const p = pointer?.get();\n return p ? { x: p.worldX, y: p.worldY } : null;\n },\n nodeBounds: (id) => (scene.get(id) === undefined\n ? null\n : visualBoundsViaDescriptor(frame.world(id), geom)),\n };\n}\n"],"mappings":";;AAqCA,SAAgBA,EACd,GACA,GACe;CACf,IAAIC,MAAQ,WAAW;EACrB,IAAMC,IAAIC,EAAI,QAAQ;EACtB,OAAOD,IAAI;GAAE,GAAGA,EAAE;GAAG,GAAGA,EAAE;GAAG,OAAO;GAAG,QAAQ;EAAE,IAAI;CACvD;CACA,IAAI,OAAOD,KAAQ,aAAYA,GAAc,OAAO;CACpD,IAAI,UAAUA,GAAK,OAAOE,EAAI,WAAYF,EAAyB,IAAI;CACvE,IAAMG,IAAIH;CAEV,OADI,OAAOG,EAAE,KAAM,YAAY,OAAOA,EAAE,KAAM,WAAiB,OACxD;EACL,GAAGA,EAAE;EACL,GAAGA,EAAE;EACL,OAAO,OAAOA,EAAE,SAAU,WAAWA,EAAE,QAAQ;EAC/C,QAAQ,OAAOA,EAAE,UAAW,WAAWA,EAAE,SAAS;CACpD;AACF;AAIA,SAAgBC,EACd,GACA,GACA,GACA,GACA,GACyB;CACzB,OAAO;EACL,eAAe;GACb,IAAI,OAAOC,GAAQ,UAAW,YAAY,OAAOA,EAAO,UAAW,UACjE,OAAO;IAAE,GAAGA,EAAO;IAAQ,GAAGA,EAAO;GAAO;GAE9C,IAAMJ,IAAIK,GAAS,IAAI;GACvB,OAAOL,IAAI;IAAE,GAAGA,EAAE;IAAQ,GAAGA,EAAE;GAAO,IAAI;EAC5C;EACA,aAAa,MAAQM,EAAM,IAAIC,CAAE,MAAM,KAAA,IACnC,OACAC,EAA0BC,EAAM,MAAMF,CAAE,GAAGG,CAAI;CACrD;AACF"}
1
+ {"version":3,"file":"spatialReference.js","names":["resolveSpatialReference","ref","p","src","r","actionReferenceSources","params","pointer","scene","id","visualBoundsViaDescriptor","frame","geom"],"sources":["../../../src/interactions/actions/spatialReference.ts"],"sourcesContent":["import type { NodeId, Scene } from 'core/scene/types';\nimport type { Bounds } from 'core/viewport/fitViewToBounds';\nimport type { PointerContextValue } from '@weasel-js/routing/react';\nimport type { PoseDescriptor } from './resize/geometry';\nimport { visualBoundsViaDescriptor } from './resize/geometry';\nimport type { PoseFrame } from './poseFrame';\n\n/**\n * @experimental\n * A world-space place a selection transform lines up against — what align\n * aligns to, what flip mirrors about — other than the selection itself:\n *\n * - `'pointer'` — where the pointer is: the click's world point when a click\n * invoked the action, otherwise the latest position in the `pointer` dep.\n * - `{ x, y, width?, height? }` — a world point, or a world rect when it has\n * extent.\n * - `{ node }` — that node's visual bounds (a key object; it does not move).\n */\nexport type SpatialReference =\n | 'pointer'\n | { x: number; y: number; width?: number; height?: number }\n | { node: NodeId };\n\n/** @experimental Where `resolveSpatialReference` reads a reference's inputs. */\nexport interface SpatialReferenceSources {\n /** The pointer's world position, or `null` when it is over no canvas. */\n pointer(): { x: number; y: number } | null;\n /** A node's world visual bounds, or `null` when it is not in the scene. */\n nodeBounds(id: NodeId): Bounds | null;\n}\n\n/**\n * @experimental\n * The world bounds `ref` names — a point comes back as a zero-size rect — or\n * `null` when it names nothing right now (no pointer, a missing node, a\n * malformed value).\n */\nexport function resolveSpatialReference(\n ref: SpatialReference | unknown,\n src: SpatialReferenceSources,\n): Bounds | null {\n if (ref === 'pointer') {\n const p = src.pointer();\n return p ? { x: p.x, y: p.y, width: 0, height: 0 } : null;\n }\n if (typeof ref !== 'object' || ref === null) return null;\n if ('node' in ref) return src.nodeBounds((ref as { node: NodeId }).node);\n const r = ref as { x?: unknown; y?: unknown; width?: unknown; height?: unknown };\n if (typeof r.x !== 'number' || typeof r.y !== 'number') return null;\n return {\n x: r.x,\n y: r.y,\n width: typeof r.width === 'number' ? r.width : 0,\n height: typeof r.height === 'number' ? r.height : 0,\n };\n}\n\n/** The sources an immediate action resolves a reference from. A click's\n * `worldX`/`worldY` params outrank the `pointer` dep. */\nexport function actionReferenceSources(\n params: Record<string, unknown> | undefined,\n pointer: PointerContextValue | undefined,\n scene: Scene<unknown, string, unknown>,\n frame: PoseFrame<unknown>,\n geom: PoseDescriptor<unknown>,\n): SpatialReferenceSources {\n return {\n pointer: () => {\n if (typeof params?.worldX === 'number' && typeof params.worldY === 'number') {\n return { x: params.worldX, y: params.worldY };\n }\n const p = pointer?.get();\n return p ? { x: p.worldX, y: p.worldY } : null;\n },\n nodeBounds: (id) => (scene.get(id) === undefined\n ? null\n : visualBoundsViaDescriptor(frame.world(id), geom)),\n };\n}\n"],"mappings":";;AAqCA,SAAgBA,EACd,GACA,GACe;CACf,IAAIC,MAAQ,WAAW;EACrB,IAAMC,IAAIC,EAAI,QAAQ;EACtB,OAAOD,IAAI;GAAE,GAAGA,EAAE;GAAG,GAAGA,EAAE;GAAG,OAAO;GAAG,QAAQ;EAAE,IAAI;CACvD;CACA,IAAI,OAAOD,KAAQ,aAAYA,GAAc,OAAO;CACpD,IAAI,UAAUA,GAAK,OAAOE,EAAI,WAAYF,EAAyB,IAAI;CACvE,IAAMG,IAAIH;CAEV,OADI,OAAOG,EAAE,KAAM,YAAY,OAAOA,EAAE,KAAM,WAAiB,OACxD;EACL,GAAGA,EAAE;EACL,GAAGA,EAAE;EACL,OAAO,OAAOA,EAAE,SAAU,WAAWA,EAAE,QAAQ;EAC/C,QAAQ,OAAOA,EAAE,UAAW,WAAWA,EAAE,SAAS;CACpD;AACF;AAIA,SAAgBC,EACd,GACA,GACA,GACA,GACA,GACyB;CACzB,OAAO;EACL,eAAe;GACb,IAAI,OAAOC,GAAQ,UAAW,YAAY,OAAOA,EAAO,UAAW,UACjE,OAAO;IAAE,GAAGA,EAAO;IAAQ,GAAGA,EAAO;GAAO;GAE9C,IAAMJ,IAAIK,GAAS,IAAI;GACvB,OAAOL,IAAI;IAAE,GAAGA,EAAE;IAAQ,GAAGA,EAAE;GAAO,IAAI;EAC5C;EACA,aAAa,MAAQM,EAAM,IAAIC,CAAE,MAAM,KAAA,IACnC,OACAC,EAA0BC,EAAM,MAAMF,CAAE,GAAGG,CAAI;CACrD;AACF"}
@@ -0,0 +1,63 @@
1
+ import { poseDescriptorOf as e } from "../poseDescriptorDep.js";
2
+ import { defaultCommitAdapter as t } from "../defaultCommitAdapter.js";
3
+ import { lastTransform as n, recordTransform as r } from "./memory.js";
4
+ import { resizeSelectionOps as i } from "../resize/replay.js";
5
+ import { TransformAgainIcon as a } from "../defaults/icons/editIcons.js";
6
+ import { requiresSelection as o } from "../defaults/requiresSelection.js";
7
+ import { DUPLICATE_OFFSET as s, duplicateSelection as c } from "../defaults/duplicate.js";
8
+ import { translateSelection as l } from "../defaults/nudge.js";
9
+ import { rotateSelectionOps as u } from "../rotate/replay.js";
10
+ import { createElement as d } from "react";
11
+ //#region src/interactions/actions/transform-again/action.ts
12
+ var f = "Transform Again", p = {
13
+ kind: "duplicate",
14
+ dx: s,
15
+ dy: s
16
+ };
17
+ function m(e, n, r) {
18
+ return r.length !== 0 && (e.applyOps ? e.applyOps(r, f) : n.applyBatch(r, f, t(n, e.selection?.adapterMethods)), !0);
19
+ }
20
+ function h(t, n, r) {
21
+ let a = t.selection, o = a.get();
22
+ switch (r.kind) {
23
+ case "duplicate": return c(t, r.dx, r.dy, f);
24
+ case "translate": return l(a, n, r.dx, r.dy, t.applyOps, t.geometryProjection, e(t.poseDescriptor), f) ? o : null;
25
+ case "rotate": return m(t, n, u(n, o, t.view, t.poseDescriptor, r.angle, r.pivot, f)) ? o : null;
26
+ case "scale": return m(t, n, i(n, o, r.anchor, r.to, t, f)) ? o : null;
27
+ }
28
+ }
29
+ var g = {
30
+ id: "transformAgain",
31
+ label: f,
32
+ icon: d(a),
33
+ group: "edit",
34
+ defaultBinding: {
35
+ kind: "key",
36
+ key: "d",
37
+ mods: { mod: !0 }
38
+ },
39
+ eligible: { capability: "transforms-selection" },
40
+ requires: [
41
+ "scene",
42
+ "selection",
43
+ "applyOps",
44
+ "poseDescriptor",
45
+ "geometryProjection",
46
+ "resizePolicy",
47
+ "view"
48
+ ],
49
+ invoker: {
50
+ timing: "immediate",
51
+ run: (e) => {
52
+ let t = e.scene;
53
+ if (!t || !e.selection || e.selection.get().length === 0) return;
54
+ let i = n(t) ?? p, a = h(e, t, i);
55
+ a && r(t, i, a);
56
+ }
57
+ },
58
+ enabled: o
59
+ };
60
+ //#endregion
61
+ export { g as transformAgainAction };
62
+
63
+ //# sourceMappingURL=action.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action.js","names":["LABEL","FIRST","DUPLICATE_OFFSET","commit","ops","deps","scene","defaultCommitAdapter","replay","selection","selected","t","duplicateSelection","translateSelection","poseDescriptorOf","rotateSelectionOps","resizeSelectionOps","transformAgainAction","createElement","TransformAgainIcon","lastTransform","subject","recordTransform","requiresSelection"],"sources":["../../../../src/interactions/actions/transform-again/action.ts"],"sourcesContent":["import type { Action, ActionDeps } from '@weasel-js/routing';\nimport type { Op } from 'core/ops/types';\nimport type { Scene } from 'core/scene/types';\nimport { createElement } from 'react';\nimport { defaultCommitAdapter } from '../defaultCommitAdapter';\nimport { DUPLICATE_OFFSET, duplicateSelection } from '../defaults/duplicate';\nimport { TransformAgainIcon } from '../defaults/icons/editIcons';\nimport { translateSelection } from '../defaults/nudge';\nimport { requiresSelection } from '../defaults/requiresSelection';\nimport { poseDescriptorOf } from '../poseDescriptorDep';\nimport { resizeSelectionOps } from '../resize/replay';\nimport { rotateSelectionOps } from '../rotate/replay';\nimport { lastTransform, recordTransform, type RepeatableTransform } from './memory';\n\nconst LABEL = 'Transform Again';\n\n/** With nothing recorded yet, a repeat is a plain duplicate. */\nconst FIRST: RepeatableTransform = { kind: 'duplicate', dx: DUPLICATE_OFFSET, dy: DUPLICATE_OFFSET };\n\nfunction commit(deps: ActionDeps, scene: Scene<unknown, string, unknown>, ops: Op[]): boolean {\n if (ops.length === 0) return false;\n if (deps.applyOps) deps.applyOps(ops, LABEL);\n else scene.applyBatch(ops, LABEL, defaultCommitAdapter(scene, deps.selection?.adapterMethods));\n return true;\n}\n\n/** Apply `t` to the selection as one undo entry. Returns the ids selected\n * afterwards, or null when nothing changed. */\nfunction replay(deps: ActionDeps, scene: Scene<unknown, string, unknown>, t: RepeatableTransform): readonly string[] | null {\n const selection = deps.selection!;\n const selected = selection.get() as string[];\n switch (t.kind) {\n case 'duplicate':\n return duplicateSelection(deps, t.dx, t.dy, LABEL);\n case 'translate':\n return translateSelection(\n selection, scene, t.dx, t.dy, deps.applyOps, deps.geometryProjection,\n poseDescriptorOf(deps.poseDescriptor), LABEL,\n ) ? selected : null;\n case 'rotate':\n return commit(deps, scene, rotateSelectionOps(\n scene, selected, deps.view, deps.poseDescriptor, t.angle, t.pivot, LABEL,\n )) ? selected : null;\n case 'scale':\n return commit(deps, scene, resizeSelectionOps(scene, selected, t.anchor, t.to, deps, LABEL)) ? selected : null;\n }\n}\n\n/**\n * @experimental\n * Repeat the last move, rotate, resize, nudge, duplicate, or Alt-drag clone on\n * the current selection, as one undo entry. A repeated duplicate copies the\n * selection — the last copies — again by the same offset, so pressing it over\n * and over makes a step-and-repeat; moving the copies between a duplicate and\n * its repeat changes that offset. With nothing to repeat it duplicates.\n */\nexport const transformAgainAction: Action & { requires: string[] } = {\n id: 'transformAgain',\n label: LABEL,\n icon: createElement(TransformAgainIcon),\n group: 'edit',\n defaultBinding: { kind: 'key', key: 'd', mods: { mod: true } },\n eligible: { capability: 'transforms-selection' },\n requires: [\n 'scene', 'selection', 'applyOps', 'poseDescriptor', 'geometryProjection', 'resizePolicy', 'view',\n ],\n invoker: {\n timing: 'immediate',\n run: (deps) => {\n const scene = deps.scene;\n if (!scene || !deps.selection || deps.selection.get().length === 0) return;\n const t = lastTransform(scene) ?? FIRST;\n const subject = replay(deps, scene, t);\n if (subject) recordTransform(scene, t, subject);\n },\n },\n enabled: requiresSelection,\n};\n"],"mappings":";;;;;;;;;;;AAcA,IAAMA,IAAQ,mBAGRC,IAA6B;CAAE,MAAM;CAAa,IAAIC;CAAkB,IAAIA;AAAiB;AAEnG,SAASC,EAAO,GAAkB,GAAwC,GAAoB;CAI5F,OAHIC,EAAI,WAAW,MACfC,EAAK,WAAUA,EAAK,SAASD,GAAKJ,CAAK,IACtCM,EAAM,WAAWF,GAAKJ,GAAOO,EAAqBD,GAAOD,EAAK,WAAW,cAAc,CAAC,GACtF;AACT;AAIA,SAASG,EAAO,GAAkB,GAAwC,GAAkD;CAC1H,IAAMC,IAAYJ,EAAK,WACjBK,IAAWD,EAAU,IAAI;CAC/B,QAAQE,EAAE,MAAV;EACE,KAAK,aACH,OAAOC,EAAmBP,GAAMM,EAAE,IAAIA,EAAE,IAAIX,CAAK;EACnD,KAAK,aACH,OAAOa,EACLJ,GAAWH,GAAOK,EAAE,IAAIA,EAAE,IAAIN,EAAK,UAAUA,EAAK,oBAClDS,EAAiBT,EAAK,cAAc,GAAGL,CACzC,IAAIU,IAAW;EACjB,KAAK,UACH,OAAOP,EAAOE,GAAMC,GAAOS,EACzBT,GAAOI,GAAUL,EAAK,MAAMA,EAAK,gBAAgBM,EAAE,OAAOA,EAAE,OAAOX,CACrE,CAAC,IAAIU,IAAW;EAClB,KAAK,SACH,OAAOP,EAAOE,GAAMC,GAAOU,EAAmBV,GAAOI,GAAUC,EAAE,QAAQA,EAAE,IAAIN,GAAML,CAAK,CAAC,IAAIU,IAAW;CAC9G;AACF;AAUA,IAAaO,IAAwD;CACnE,IAAI;CACJ,OAAOjB;CACP,MAAMkB,EAAcC,CAAkB;CACtC,OAAO;CACP,gBAAgB;EAAE,MAAM;EAAO,KAAK;EAAK,MAAM,EAAE,KAAK,GAAK;CAAE;CAC7D,UAAU,EAAE,YAAY,uBAAuB;CAC/C,UAAU;EACR;EAAS;EAAa;EAAY;EAAkB;EAAsB;EAAgB;CAC5F;CACA,SAAS;EACP,QAAQ;EACR,MAAM,MAAS;GACb,IAAMb,IAAQD,EAAK;GACnB,IAAI,CAACC,KAAS,CAACD,EAAK,aAAaA,EAAK,UAAU,IAAI,CAAC,CAAC,WAAW,GAAG;GACpE,IAAMM,IAAIS,EAAcd,CAAK,KAAKL,GAC5BoB,IAAUb,EAAOH,GAAMC,GAAOK,CAAC;GACrC,AAAIU,KAASC,EAAgBhB,GAAOK,GAAGU,CAAO;EAChD;CACF;CACA,SAASE;AACX"}
@@ -0,0 +1,35 @@
1
+ //#region src/interactions/actions/transform-again/memory.ts
2
+ var e = /* @__PURE__ */ new WeakMap();
3
+ function t(e, t) {
4
+ if (e.length !== t.length) return !1;
5
+ let n = new Set(e);
6
+ return t.every((e) => n.has(e));
7
+ }
8
+ function n(t) {
9
+ return e.get(t)?.transform;
10
+ }
11
+ function r(n, r, i) {
12
+ let a = e.get(n);
13
+ if (r.kind === "translate" && a?.transform.kind === "duplicate" && t(a.subject, i)) {
14
+ e.set(n, {
15
+ transform: {
16
+ kind: "duplicate",
17
+ dx: a.transform.dx + r.dx,
18
+ dy: a.transform.dy + r.dy
19
+ },
20
+ subject: [...i]
21
+ });
22
+ return;
23
+ }
24
+ e.set(n, {
25
+ transform: r,
26
+ subject: [...i]
27
+ });
28
+ }
29
+ function i(t) {
30
+ e.delete(t);
31
+ }
32
+ //#endregion
33
+ export { i as forgetTransform, n as lastTransform, r as recordTransform };
34
+
35
+ //# sourceMappingURL=memory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.js","names":["LAST","sameIds","a","b","set","id","lastTransform","scene","recordTransform","prev","transform","subject","forgetTransform"],"sources":["../../../../src/interactions/actions/transform-again/memory.ts"],"sourcesContent":["import type { ResizeAnchor } from '@weasel-js/routing';\nimport type { Bounds } from 'core/viewport/fitViewToBounds';\n\n/**\n * @experimental\n * A transform the selection underwent, kept relative so it can be applied to\n * whatever is selected next.\n *\n * - `translate`: a world offset.\n * - `rotate`: radians about the selection's center, or about each node's own\n * center (`pivot: 'each'`).\n * - `scale`: the box the selection was resized to, in units of the box it\n * started as (`{ x: 0, y: 0, width: 1, height: 1 }` is no change), and the\n * anchor the resize held fixed.\n * - `duplicate`: copy the selection, offset by `(dx, dy)`, and select the copies.\n */\nexport type RepeatableTransform =\n | { readonly kind: 'translate'; readonly dx: number; readonly dy: number }\n | { readonly kind: 'rotate'; readonly angle: number; readonly pivot: 'union' | 'each' }\n | { readonly kind: 'scale'; readonly to: Bounds; readonly anchor: ResizeAnchor }\n | { readonly kind: 'duplicate'; readonly dx: number; readonly dy: number };\n\ninterface Entry {\n readonly transform: RepeatableTransform;\n /** The ids selected once it landed. */\n readonly subject: readonly string[];\n}\n\nconst LAST = new WeakMap<object, Entry>();\n\nfunction sameIds(a: readonly string[], b: readonly string[]): boolean {\n if (a.length !== b.length) return false;\n const set = new Set(a);\n return b.every((id) => set.has(id));\n}\n\n/**\n * @experimental\n * The last transform recorded against `scene`, which `transformAgain` repeats.\n */\nexport function lastTransform(scene: object): RepeatableTransform | undefined {\n return LAST.get(scene)?.transform;\n}\n\n/**\n * @experimental\n * Remember `transform` as the last one `scene` underwent, `subject` being the\n * ids selected once it landed. A translate of exactly the copies a\n * `duplicate` just made folds into it, so the copies' offset from their\n * sources is what repeats: duplicate, drag the copy, and each repeat steps\n * one more copy along.\n */\nexport function recordTransform(\n scene: object,\n transform: RepeatableTransform,\n subject: readonly string[],\n): void {\n const prev = LAST.get(scene);\n if (\n transform.kind === 'translate'\n && prev?.transform.kind === 'duplicate'\n && sameIds(prev.subject, subject)\n ) {\n LAST.set(scene, {\n transform: { kind: 'duplicate', dx: prev.transform.dx + transform.dx, dy: prev.transform.dy + transform.dy },\n subject: [...subject],\n });\n return;\n }\n LAST.set(scene, { transform, subject: [...subject] });\n}\n\n/** @experimental Drop what `scene` remembers, so `transformAgain` has nothing to repeat. */\nexport function forgetTransform(scene: object): void {\n LAST.delete(scene);\n}\n"],"mappings":";AA4BA,IAAMA,oBAAO,IAAI,QAAuB;AAExC,SAASC,EAAQ,GAAsB,GAA+B;CACpE,IAAIC,EAAE,WAAWC,EAAE,QAAQ,OAAO;CAClC,IAAMC,IAAM,IAAI,IAAIF,CAAC;CACrB,OAAOC,EAAE,OAAO,MAAOC,EAAI,IAAIC,CAAE,CAAC;AACpC;AAMA,SAAgBC,EAAc,GAAgD;CAC5E,OAAON,EAAK,IAAIO,CAAK,CAAC,EAAE;AAC1B;AAUA,SAAgBC,EACd,GACA,GACA,GACM;CACN,IAAMC,IAAOT,EAAK,IAAIO,CAAK;CAC3B,IACEG,EAAU,SAAS,eAChBD,GAAM,UAAU,SAAS,eACzBR,EAAQQ,EAAK,SAASE,CAAO,GAChC;EACA,EAAK,IAAIJ,GAAO;GACd,WAAW;IAAE,MAAM;IAAa,IAAIE,EAAK,UAAU,KAAKC,EAAU;IAAI,IAAID,EAAK,UAAU,KAAKC,EAAU;GAAG;GAC3G,SAAS,CAAC,GAAGC,CAAO;EACtB,CAAC;EACD;CACF;CACA,EAAK,IAAIJ,GAAO;EAAE;EAAW,SAAS,CAAC,GAAGI,CAAO;CAAE,CAAC;AACtD;AAGA,SAAgBC,EAAgB,GAAqB;CACnD,EAAK,OAAOL,CAAK;AACnB"}
@@ -1,113 +1,136 @@
1
- import { moveAction as e } from "./defaults/move.js";
2
- import { resizeAction as t } from "./defaults/resize.js";
3
- import { rotateAction as n } from "./defaults/rotate.js";
1
+ import { moveAction as e } from "./move/action.js";
2
+ import { resizeAction as t } from "./resize/action.js";
3
+ import { rotateAction as n } from "./rotate/action.js";
4
4
  import { areaSelectAction as r } from "./defaults/areaSelect.js";
5
- import { insertAction as i, insertRotateAction as a } from "./defaults/insert.js";
5
+ import { insertAction as i } from "./insert/action.js";
6
+ import { insertRepositionAction as a } from "./insert/repositionAction.js";
6
7
  import { clearSelectionAction as o } from "./defaults/clearSelection.js";
7
- import { cloneAction as ee } from "./defaults/clone.js";
8
+ import { cloneAction as ee } from "./clone/action.js";
8
9
  import { viewportDragPanAction as te } from "./defaults/viewportDragPan.js";
9
- import { editAnchorsAction as ne } from "./defaults/editAnchors.js";
10
- import { lassoSelectAction as re } from "./defaults/lassoSelect.js";
10
+ import { editAnchorsAction as ne } from "./edit-anchors/action.js";
11
+ import { lassoSelectAction as re } from "./lasso-select/action.js";
11
12
  import { pinchZoomAction as s } from "./defaults/pinchZoom.js";
12
13
  import { deleteAction as c } from "./defaults/delete.js";
13
14
  import { ingestAction as l } from "./defaults/ingest.js";
14
- import { clipboardCopyAction as u, clipboardCutAction as d, clipboardPasteAction as f, clipboardPasteEventAction as p } from "./defaults/clipboard.js";
15
+ import { clipboardCopyAction as u, clipboardCutAction as d, clipboardPasteAction as f, clipboardPasteEventAction as p } from "./clipboard/action.js";
15
16
  import { enterTextEditAction as m } from "./defaults/enterTextEdit.js";
16
17
  import { escapeAction as h } from "./defaults/escape.js";
17
18
  import { cancelGestureAction as g } from "./defaults/cancelGesture.js";
18
19
  import { selectAllAction as _ } from "./defaults/selectAll.js";
19
20
  import { duplicateAction as v } from "./defaults/duplicate.js";
20
- import { groupAction as y, ungroupAction as b } from "./defaults/group.js";
21
- import { redoAction as x, undoAction as S } from "./defaults/undoRedo.js";
22
- import { flipAction as C } from "./defaults/flip.js";
23
- import { nudgeDownAction as w, nudgeLeftAction as T, nudgeRightAction as E, nudgeUpAction as D } from "./defaults/nudge.js";
24
- import { reorderBackwardAction as O, reorderForwardAction as k } from "./defaults/reorder.js";
25
- import { alignBottomAction as A, alignCenterXAction as j, alignCenterYAction as M, alignLeftAction as N, alignRightAction as P, alignTopAction as ie } from "./defaults/align.js";
26
- import { distributeHorizontalAction as F, distributeVerticalAction as I } from "./defaults/distribute.js";
27
- import { pathfinderCropAction as L, pathfinderDivideAction as R, pathfinderExcludeAction as z, pathfinderIntersectAction as B, pathfinderSubtractAction as V, pathfinderUnionAction as H } from "./defaults/booleans.js";
28
- import { createOutlinesAction as U } from "./defaults/createOutlines.js";
29
- import { enterPathEditAction as W } from "./defaults/enterPathEdit.js";
30
- import { exitPathEditAction as G } from "./defaults/exitPathEdit.js";
31
- import { insertPathAnchorAction as K } from "./defaults/insertPathAnchor.js";
32
- import { cutPathAtAnchorAction as q, deleteAnchorsAction as J, marqueeAnchorsAction as Y, nudgeAnchorsDownAction as ae, nudgeAnchorsLeftAction as oe, nudgeAnchorsRightAction as se, nudgeAnchorsUpAction as ce, selectAnchorAction as le } from "./defaults/anchorEditing.js";
33
- import { setFillAction as ue } from "./defaults/setFill.js";
34
- import { setStrokeAction as de } from "./defaults/setStroke.js";
35
- import { setFillOpacityAction as fe } from "./defaults/setFillOpacity.js";
36
- import { setStrokeOpacityAction as pe } from "./defaults/setStrokeOpacity.js";
37
- import { useEffect as X } from "react";
38
- import { useLatest as Z } from "@weasel-js/react";
21
+ import { nudgeDownAction as y, nudgeLeftAction as b, nudgeRightAction as x, nudgeUpAction as S } from "./defaults/nudge.js";
22
+ import { transformAgainAction as C } from "./transform-again/action.js";
23
+ import { groupAction as w, ungroupAction as T } from "./defaults/group.js";
24
+ import { redoAction as E, undoAction as D } from "./defaults/undoRedo.js";
25
+ import { flipAction as O } from "./flip/action.js";
26
+ import { reorderBackwardAction as k, reorderForwardAction as A } from "./defaults/reorder.js";
27
+ import { alignBottomAction as j, alignCenterXAction as M, alignCenterYAction as N, alignLeftAction as P, alignRightAction as F, alignTopAction as I } from "./align/action.js";
28
+ import { distributeHorizontalAction as L, distributeVerticalAction as R } from "./distribute/action.js";
29
+ import { pathfinderCropAction as z, pathfinderDivideAction as B, pathfinderExcludeAction as V, pathfinderIntersectAction as H, pathfinderMergeAction as U, pathfinderSubtractAction as W, pathfinderTrimAction as G, pathfinderUnionAction as K } from "./booleans/action.js";
30
+ import { createOutlinesAction as ie } from "./outlines/createOutlinesAction.js";
31
+ import { outlineStrokeAction as q } from "./outlines/outlineStrokeAction.js";
32
+ import { insertRotateAction as J } from "./insert/rotateAction.js";
33
+ import { enterPathEditAction as Y } from "./defaults/enterPathEdit.js";
34
+ import { exitPathEditAction as ae } from "./defaults/exitPathEdit.js";
35
+ import { insertPathAnchorAction as oe } from "./defaults/insertPathAnchor.js";
36
+ import { bendSegmentAction as se } from "./defaults/bendSegment.js";
37
+ import { cutPathAtAnchorAction as ce, deleteAnchorsAction as le, marqueeAnchorsAction as ue, nudgeAnchorsDownAction as de, nudgeAnchorsLeftAction as fe, nudgeAnchorsRightAction as pe, nudgeAnchorsUpAction as me, selectAnchorAction as he } from "./defaults/anchorEditing.js";
38
+ import { makeHandlesSymmetricAction as ge, retractHandlesAction as _e } from "./defaults/anchorHandles.js";
39
+ import { averageAnchorsAction as ve, joinAnchorsAction as ye } from "./defaults/anchorJoin.js";
40
+ import { offsetPathAction as be, simplifyPathAction as xe } from "./pathCommands/simplifyOffset.js";
41
+ import { joinPathsAction as Se, snipAtCrossingsAction as Ce } from "./pathCommands/cutJoin.js";
42
+ import { setFillAction as X } from "./defaults/setFill.js";
43
+ import { setStrokeAction as we } from "./defaults/setStroke.js";
44
+ import { setFillOpacityAction as Te } from "./defaults/setFillOpacity.js";
45
+ import { setStrokeOpacityAction as Ee } from "./defaults/setStrokeOpacity.js";
46
+ import { useEffect as Z } from "react";
47
+ import { useLatest as Q } from "@weasel-js/react";
39
48
  import "@weasel-js/routing";
40
- import { useActionsRegistry as me, useOptionalActiveToolContext as Q, useOptionalDepRegistry as he } from "@weasel-js/routing/react";
49
+ import { useActionsRegistry as De, useOptionalActiveToolContext as Oe, useOptionalDepRegistry as ke } from "@weasel-js/routing/react";
41
50
  //#region src/interactions/actions/useStandardActions.ts
42
51
  var $ = [
43
52
  h,
44
53
  g,
45
54
  _,
46
55
  v,
47
- c,
48
- y,
49
- b,
50
- S,
51
- x,
52
56
  C,
53
- D,
57
+ me,
58
+ de,
59
+ fe,
60
+ pe,
61
+ le,
62
+ c,
54
63
  w,
55
64
  T,
65
+ D,
56
66
  E,
57
- k,
58
67
  O,
59
- N,
60
- j,
68
+ S,
69
+ y,
70
+ b,
71
+ x,
72
+ A,
73
+ k,
61
74
  P,
62
- ie,
63
75
  M,
64
- A,
65
76
  F,
66
77
  I,
78
+ N,
79
+ j,
80
+ L,
81
+ R,
82
+ K,
83
+ W,
67
84
  H,
68
85
  V,
69
86
  B,
70
87
  z,
71
- R,
72
- L,
88
+ G,
73
89
  U,
90
+ ie,
91
+ q,
74
92
  e,
75
93
  t,
76
94
  n,
77
95
  r,
78
96
  i,
97
+ J,
79
98
  a,
80
99
  ee,
81
100
  ne,
82
- W,
83
- G,
84
- K,
85
- ce,
101
+ Y,
86
102
  ae,
87
103
  oe,
88
104
  se,
89
- J,
90
- q,
91
- Y,
92
- le,
105
+ ce,
106
+ _e,
107
+ ge,
108
+ ve,
109
+ ye,
110
+ xe,
111
+ be,
112
+ Ce,
113
+ Se,
114
+ ue,
115
+ he,
93
116
  re,
94
117
  s,
95
118
  te,
96
119
  o,
97
120
  m,
98
- ue,
99
- de,
100
- fe,
101
- pe,
121
+ X,
122
+ we,
123
+ Te,
124
+ Ee,
102
125
  l,
103
126
  d,
104
127
  u,
105
128
  f,
106
129
  p
107
- ], ge = $.map((e) => e.id), _e = { "clipboard.pasteEvent": "ingest" };
108
- function ve(e) {
109
- let t = Z(e), n = Q(), r = Z(n), i = he();
110
- X(() => {
130
+ ], Ae = $.map((e) => e.id), je = { "clipboard.pasteEvent": "ingest" };
131
+ function Me(e) {
132
+ let t = Q(e), n = Oe(), r = Q(n), i = ke();
133
+ Z(() => {
111
134
  if (!i) return;
112
135
  let e = [];
113
136
  for (let n of [
@@ -124,11 +147,11 @@ function ve(e) {
124
147
  t,
125
148
  r
126
149
  ]);
127
- let a = me(), o = e.exclude ? [...e.exclude].join("\0") : "";
128
- X(() => {
150
+ let a = De(), o = e.exclude ? [...e.exclude].join("\0") : "";
151
+ Z(() => {
129
152
  if (!a || !i) return;
130
153
  let e = new Set(o ? o.split("\0") : []), t = $.filter((t) => !e.has(t.id)).filter((t) => {
131
- let n = _e[t.id];
154
+ let n = je[t.id];
132
155
  return n === void 0 || e.has(n);
133
156
  }).map((e) => a.register(e));
134
157
  return () => {
@@ -141,6 +164,6 @@ function ve(e) {
141
164
  ]);
142
165
  }
143
166
  //#endregion
144
- export { ge as KIT_STANDARD_ACTION_IDS, ve as useStandardActions };
167
+ export { Ae as KIT_STANDARD_ACTION_IDS, Me as useStandardActions };
145
168
 
146
169
  //# sourceMappingURL=useStandardActions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useStandardActions.js","names":["KIT_STANDARD_DESCRIPTORS","escapeAction","cancelGestureAction","selectAllAction","duplicateAction","deleteAction","groupAction","ungroupAction","undoAction","redoAction","flipAction","nudgeUpAction","nudgeDownAction","nudgeLeftAction","nudgeRightAction","reorderForwardAction","reorderBackwardAction","alignLeftAction","alignCenterXAction","alignRightAction","alignTopAction","alignCenterYAction","alignBottomAction","distributeHorizontalAction","distributeVerticalAction","pathfinderUnionAction","pathfinderSubtractAction","pathfinderIntersectAction","pathfinderExcludeAction","pathfinderDivideAction","pathfinderCropAction","createOutlinesAction","moveAction","resizeAction","rotateAction","areaSelectAction","insertAction","insertRotateAction","cloneAction","editAnchorsAction","enterPathEditAction","exitPathEditAction","insertPathAnchorAction","nudgeAnchorsUpAction","nudgeAnchorsDownAction","nudgeAnchorsLeftAction","nudgeAnchorsRightAction","deleteAnchorsAction","cutPathAtAnchorAction","marqueeAnchorsAction","selectAnchorAction","lassoSelectAction","pinchZoomAction","viewportDragPanAction","clearSelectionAction","enterTextEditAction","setFillAction","setStrokeAction","setFillOpacityAction","setStrokeOpacityAction","ingestAction","clipboardCutAction","clipboardCopyAction","clipboardPasteAction","clipboardPasteEventAction","KIT_STANDARD_ACTION_IDS","a","YIELDS_TO","useStandardActions","optsRef","useLatest","opts","activeToolCtx","useOptionalActiveToolContext","activeToolCtxRef","depReg","useOptionalDepRegistry","unregisters","key","u","reg","useActionsRegistry","excludeKey","excluded","over"],"sources":["../../../src/interactions/actions/useStandardActions.ts"],"sourcesContent":["/**\n * @experimental\n * `useStandardActions` — register the kit-standard action descriptors into the\n * nearest `<ActionsProvider>` and publish dep sources into the nearest\n * `<DepRegistryProvider>`.\n *\n * Instead of calling closure-style factories, this hook registers each dep as\n * a live source and each kit-standard descriptor's `invoker` directly.\n *\n * Falls back silently to a no-op when no `<ActionsProvider>` or\n * `<DepRegistryProvider>` is in scope.\n */\nimport { useEffect } from 'react';\nimport type { Action } from '@weasel-js/routing';\nimport { useActionsRegistry } from '@weasel-js/routing/react';\nimport { useLatest } from '@weasel-js/react';\nimport { type DepName, type DepSchema } from '@weasel-js/routing';\nimport { useOptionalDepRegistry } from '@weasel-js/routing/react';\n// Reaches depSchema.ts so tsup's per-entry dts compiler resolves `DepSchema['selection']`\n// here; `tsc --noEmit` happens to pick it up via test files, tsup does not. It MUST be\n// `import type` — a bare `import './depSchema'` makes esbuild emit a runtime import that it\n// then drops under the package's `sideEffects: false`, warning on every build.\nimport type {} from './depSchema';\nimport { useOptionalActiveToolContext } from '@weasel-js/routing/react';\n\nimport { escapeAction } from './defaults/escape';\nimport { cancelGestureAction } from './defaults/cancelGesture';\nimport { selectAllAction } from './defaults/selectAll';\nimport { deleteAction } from './defaults/delete';\nimport { duplicateAction } from './defaults/duplicate';\nimport { groupAction, ungroupAction } from './defaults/group';\nimport { undoAction, redoAction } from './defaults/undoRedo';\nimport { flipAction } from './defaults/flip';\nimport {\n nudgeUpAction, nudgeDownAction, nudgeLeftAction, nudgeRightAction,\n} from './defaults/nudge';\nimport { reorderForwardAction, reorderBackwardAction } from './defaults/reorder';\nimport {\n alignLeftAction, alignRightAction, alignTopAction, alignBottomAction,\n alignCenterXAction, alignCenterYAction,\n} from './defaults/align';\nimport {\n distributeHorizontalAction, distributeVerticalAction,\n} from './defaults/distribute';\nimport {\n pathfinderUnionAction, pathfinderSubtractAction, pathfinderIntersectAction,\n pathfinderExcludeAction, pathfinderDivideAction, pathfinderCropAction,\n} from './defaults/booleans';\nimport { createOutlinesAction } from './defaults/createOutlines';\nimport { moveAction } from './defaults/move';\nimport { resizeAction } from './defaults/resize';\nimport { rotateAction } from './defaults/rotate';\nimport { areaSelectAction } from './defaults/areaSelect';\nimport { insertAction, insertRotateAction } from './defaults/insert';\nimport { clearSelectionAction } from './defaults/clearSelection';\nimport { cloneAction } from './defaults/clone';\nimport { editAnchorsAction } from './defaults/editAnchors';\nimport { enterPathEditAction } from './defaults/enterPathEdit';\nimport { exitPathEditAction } from './defaults/exitPathEdit';\nimport { insertPathAnchorAction } from './defaults/insertPathAnchor';\nimport {\n nudgeAnchorsUpAction,\n nudgeAnchorsDownAction,\n nudgeAnchorsLeftAction,\n nudgeAnchorsRightAction,\n deleteAnchorsAction,\n cutPathAtAnchorAction,\n marqueeAnchorsAction,\n selectAnchorAction,\n} from './defaults/anchorEditing';\nimport { lassoSelectAction } from './defaults/lassoSelect';\nimport { pinchZoomAction } from './defaults/pinchZoom';\nimport { viewportDragPanAction } from './defaults/viewportDragPan';\nimport { enterTextEditAction } from './defaults/enterTextEdit';\nimport { setFillAction } from './defaults/setFill';\nimport { setStrokeAction } from './defaults/setStroke';\nimport { setFillOpacityAction } from './defaults/setFillOpacity';\nimport { setStrokeOpacityAction } from './defaults/setStrokeOpacity';\nimport { ingestAction } from './defaults/ingest';\nimport {\n clipboardCopyAction, clipboardCutAction, clipboardPasteAction, clipboardPasteEventAction,\n} from './defaults/clipboard';\n\n// viewportWheelPanAction / viewportZoomAction are NOT in KIT_STANDARD_DESCRIPTORS.\n// They are wired conditionally by SceneCanvas via `useViewportActions`\n// based on the `viewport.pan` / `viewport.zoom` flags.\n\n/** @experimental */\nexport interface UseStandardActionsOptions {\n /** Kit selection state — ids of currently selected nodes. */\n selection?: DepSchema['selection'];\n /** Current viewport — camera position + scale. */\n view?: DepSchema['view'];\n /** Scene tree — structural reads + undoable mutations. */\n scene?: DepSchema['scene'];\n /** Undo/redo history bound to the current scene. */\n history?: DepSchema['history'];\n /** Currently active tool id + hotkey-hold stack. */\n activeTool?: DepSchema['activeTool'];\n /**\n * Ids of kit-standard actions to leave unregistered, so a consumer can bind\n * its own. Ids that name no kit action are ignored;\n * `KIT_STANDARD_ACTION_IDS` is the full list.\n */\n exclude?: Iterable<string>;\n}\n\n/**\n * The ordered list of all kit-standard action descriptors. Each descriptor\n * carries an `invoker` that reads from the dep registry at dispatch time.\n *\n * `viewport.pan` and `viewport.zoom` are NOT in this list — they're registered\n * conditionally by SceneCanvas's `useViewportActions` based on the\n * `viewport.pan` / `viewport.zoom` flags. See `src/canvas/SceneCanvas/useViewportActions.ts`.\n */\nconst KIT_STANDARD_DESCRIPTORS: Action[] = [\n escapeAction,\n cancelGestureAction,\n selectAllAction,\n duplicateAction,\n deleteAction,\n groupAction,\n ungroupAction,\n undoAction,\n redoAction,\n flipAction,\n nudgeUpAction,\n nudgeDownAction,\n nudgeLeftAction,\n nudgeRightAction,\n reorderForwardAction,\n reorderBackwardAction,\n alignLeftAction,\n alignCenterXAction,\n alignRightAction,\n alignTopAction,\n alignCenterYAction,\n alignBottomAction,\n distributeHorizontalAction,\n distributeVerticalAction,\n pathfinderUnionAction,\n pathfinderSubtractAction,\n pathfinderIntersectAction,\n pathfinderExcludeAction,\n pathfinderDivideAction,\n pathfinderCropAction,\n createOutlinesAction,\n moveAction,\n resizeAction,\n rotateAction,\n areaSelectAction,\n insertAction,\n insertRotateAction,\n cloneAction,\n editAnchorsAction,\n enterPathEditAction,\n exitPathEditAction,\n insertPathAnchorAction,\n nudgeAnchorsUpAction,\n nudgeAnchorsDownAction,\n nudgeAnchorsLeftAction,\n nudgeAnchorsRightAction,\n deleteAnchorsAction,\n cutPathAtAnchorAction,\n marqueeAnchorsAction,\n selectAnchorAction,\n lassoSelectAction,\n pinchZoomAction,\n viewportDragPanAction,\n clearSelectionAction,\n enterTextEditAction,\n setFillAction,\n setStrokeAction,\n setFillOpacityAction,\n setStrokeOpacityAction,\n ingestAction,\n clipboardCutAction,\n clipboardCopyAction,\n clipboardPasteAction,\n clipboardPasteEventAction,\n];\n\n/** Every id `useStandardActions` can register, in registration order. It\n * holds `clipboard.pasteEvent` back unless `ingest` is excluded. */\nexport const KIT_STANDARD_ACTION_IDS: readonly string[] =\n KIT_STANDARD_DESCRIPTORS.map((a) => a.id);\n\n/**\n * Kit-standard actions that stay unregistered while another one is\n * registered, because that one binds the same gesture and does everything\n * this one does: both answering it would act twice. Keyed by the action that\n * yields.\n */\nconst YIELDS_TO: Readonly<Record<string, string>> = {\n 'clipboard.pasteEvent': 'ingest',\n};\n\n/**\n * @experimental\n * Register each kit-standard dep source and action descriptor into the\n * surrounding providers.\n *\n * **Provider requirements:** both `<ActionsProvider>` and\n * `<DepRegistryProvider>` must be in scope (typically provided by\n * `<SceneCanvas>`). The hook falls back silently to a no-op when either\n * provider is absent.\n *\n * **Dep registration:** each non-undefined option is published as a live source\n * in the dep registry under its canonical name (`selection`, `scene`, …). The\n * source thunk reads the latest option value at invocation time via a ref, so\n * consumers don't have to memoize their dep objects.\n */\nexport function useStandardActions(opts: UseStandardActionsOptions): void {\n // --- Stabilize opts via ref ---\n const optsRef = useLatest(opts);\n\n // --- activeTool fallback: read from context when not supplied in opts ---\n // Falls back to null when no <ActiveToolContextProvider> is in scope\n // (preserves silent-no-op contract for consumers that mount without SceneCanvas).\n const activeToolCtx = useOptionalActiveToolContext();\n const activeToolCtxRef = useLatest(activeToolCtx);\n\n // --- Dep source registration ---\n // Must be unconditional (rules of hooks). Each effect only registers when a\n // provider is present (depReg !== null guard is inside the effect body).\n const depReg = useOptionalDepRegistry();\n\n useEffect(() => {\n if (!depReg) return;\n const unregisters: Array<() => void> = [];\n const keys = ['selection', 'view', 'scene', 'history'] as const;\n for (const key of keys) {\n unregisters.push(\n depReg.register(key as DepName, () => optsRef.current[key] as DepSchema[DepName]),\n );\n }\n // activeTool: prefer the explicit opt; fall back to the context value so\n // SceneCanvas doesn't need to thread it through StandardActionsRegistrar.\n unregisters.push(\n depReg.register('activeTool' as DepName, () =>\n (optsRef.current.activeTool ?? activeToolCtxRef.current) as DepSchema[DepName],\n ),\n );\n return () => { for (const u of unregisters) u(); };\n }, [depReg, optsRef, activeToolCtxRef]);\n\n // --- Action descriptor registration with legacy run bridge ---\n const reg = useActionsRegistry();\n\n // Joined so a fresh array of the same ids does not re-register every render.\n const excludeKey = opts.exclude ? [...opts.exclude].join('\\u0000') : '';\n\n useEffect(() => {\n if (!reg || !depReg) return;\n // `withLegacyRunBridge` is gone. Kit-standard descriptors\n // register their `invoker` directly. `registry.trigger(id)` reads from the\n // dep registry to build deps when calling `invoker.run` (so ActionBar /\n // palette callers still work without a per-action `run` thunk).\n const excluded = new Set(excludeKey ? excludeKey.split('\\u0000') : []);\n const unregisters = KIT_STANDARD_DESCRIPTORS\n .filter((a) => !excluded.has(a.id))\n .filter((a) => {\n const over = YIELDS_TO[a.id];\n return over === undefined || excluded.has(over);\n })\n .map((a) => reg.register(a));\n return () => { for (const u of unregisters) u(); };\n }, [reg, depReg, excludeKey]);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmHA,IAAMA,IAAqC;CACzCC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;AACF,GAIaC,KACXjE,EAAyB,KAAK,MAAMkE,EAAE,EAAE,GAQpCC,KAA8C,EAClD,wBAAwB,SAC1B;AAiBA,SAAgBC,GAAmB,GAAuC;CAExE,IAAMC,IAAUC,EAAUC,CAAI,GAKxBC,IAAgBC,EAA6B,GAC7CC,IAAmBJ,EAAUE,CAAa,GAK1CG,IAASC,GAAuB;CAEtC,QAAgB;EACd,IAAI,CAACD,GAAQ;EACb,IAAME,IAAiC,CAAC;EAExC,KAAK,IAAMC,KAAO;GADJ;GAAa;GAAQ;GAAS;EAC1B,GAChB,EAAY,KACVH,EAAO,SAASG,SAAsBT,EAAQ,QAAQS,EAA0B,CAClF;EASF,OALAD,EAAY,KACVF,EAAO,SAAS,oBACbN,EAAQ,QAAQ,cAAcK,EAAiB,OAClD,CACF,SACa;GAAE,KAAK,IAAMK,KAAKF,GAAa,EAAE;EAAG;CACnD,GAAG;EAACF;EAAQN;EAASK;CAAgB,CAAC;CAGtC,IAAMM,IAAMC,GAAmB,GAGzBC,IAAaX,EAAK,UAAU,CAAC,GAAGA,EAAK,OAAO,CAAC,CAAC,KAAK,IAAQ,IAAI;CAErE,QAAgB;EACd,IAAI,CAACS,KAAO,CAACL,GAAQ;EAKrB,IAAMQ,IAAW,IAAI,IAAID,IAAaA,EAAW,MAAM,IAAQ,IAAI,CAAC,CAAC,GAC/DL,IAAc7E,EACjB,QAAQ,MAAM,CAACmF,EAAS,IAAIjB,EAAE,EAAE,CAAC,CAAC,CAClC,QAAQ,MAAM;GACb,IAAMkB,IAAOjB,GAAUD,EAAE;GACzB,OAAOkB,MAAS,KAAA,KAAaD,EAAS,IAAIC,CAAI;EAChD,CAAC,CAAC,CACD,KAAK,MAAMJ,EAAI,SAASd,CAAC,CAAC;EAC7B,aAAa;GAAE,KAAK,IAAMa,KAAKF,GAAa,EAAE;EAAG;CACnD,GAAG;EAACG;EAAKL;EAAQO;CAAU,CAAC;AAC9B"}
1
+ {"version":3,"file":"useStandardActions.js","names":["KIT_STANDARD_DESCRIPTORS","escapeAction","cancelGestureAction","selectAllAction","duplicateAction","transformAgainAction","nudgeAnchorsUpAction","nudgeAnchorsDownAction","nudgeAnchorsLeftAction","nudgeAnchorsRightAction","deleteAnchorsAction","deleteAction","groupAction","ungroupAction","undoAction","redoAction","flipAction","nudgeUpAction","nudgeDownAction","nudgeLeftAction","nudgeRightAction","reorderForwardAction","reorderBackwardAction","alignLeftAction","alignCenterXAction","alignRightAction","alignTopAction","alignCenterYAction","alignBottomAction","distributeHorizontalAction","distributeVerticalAction","pathfinderUnionAction","pathfinderSubtractAction","pathfinderIntersectAction","pathfinderExcludeAction","pathfinderDivideAction","pathfinderCropAction","pathfinderTrimAction","pathfinderMergeAction","createOutlinesAction","outlineStrokeAction","moveAction","resizeAction","rotateAction","areaSelectAction","insertAction","insertRotateAction","insertRepositionAction","cloneAction","editAnchorsAction","enterPathEditAction","exitPathEditAction","insertPathAnchorAction","bendSegmentAction","cutPathAtAnchorAction","retractHandlesAction","makeHandlesSymmetricAction","averageAnchorsAction","joinAnchorsAction","simplifyPathAction","offsetPathAction","snipAtCrossingsAction","joinPathsAction","marqueeAnchorsAction","selectAnchorAction","lassoSelectAction","pinchZoomAction","viewportDragPanAction","clearSelectionAction","enterTextEditAction","setFillAction","setStrokeAction","setFillOpacityAction","setStrokeOpacityAction","ingestAction","clipboardCutAction","clipboardCopyAction","clipboardPasteAction","clipboardPasteEventAction","KIT_STANDARD_ACTION_IDS","a","YIELDS_TO","useStandardActions","optsRef","useLatest","opts","activeToolCtx","useOptionalActiveToolContext","activeToolCtxRef","depReg","useOptionalDepRegistry","unregisters","key","u","reg","useActionsRegistry","excludeKey","excluded","over"],"sources":["../../../src/interactions/actions/useStandardActions.ts"],"sourcesContent":["/**\n * @experimental\n * `useStandardActions` — register the kit-standard action descriptors into the\n * nearest `<ActionsProvider>` and publish dep sources into the nearest\n * `<DepRegistryProvider>`. Falls back silently to a no-op when either is\n * not in scope.\n */\nimport { useEffect } from 'react';\nimport type { Action } from '@weasel-js/routing';\nimport { useActionsRegistry } from '@weasel-js/routing/react';\nimport { useLatest } from '@weasel-js/react';\nimport { type DepName, type DepSchema } from '@weasel-js/routing';\nimport { useOptionalDepRegistry } from '@weasel-js/routing/react';\n// Reaches depSchema.ts so tsup's per-entry dts compiler resolves `DepSchema['selection']`\n// here; `tsc --noEmit` happens to pick it up via test files, tsup does not. It MUST be\n// `import type` — a bare `import './depSchema'` makes esbuild emit a runtime import that it\n// then drops under the package's `sideEffects: false`, warning on every build.\nimport type {} from './depSchema';\nimport { useOptionalActiveToolContext } from '@weasel-js/routing/react';\n\nimport { escapeAction } from './defaults/escape';\nimport { cancelGestureAction } from './defaults/cancelGesture';\nimport { selectAllAction } from './defaults/selectAll';\nimport { deleteAction } from './defaults/delete';\nimport { duplicateAction } from './defaults/duplicate';\nimport { transformAgainAction } from './transform-again/action';\nimport { groupAction, ungroupAction } from './defaults/group';\nimport { undoAction, redoAction } from './defaults/undoRedo';\nimport { flipAction } from './flip/action';\nimport {\n nudgeUpAction, nudgeDownAction, nudgeLeftAction, nudgeRightAction,\n} from './defaults/nudge';\nimport { reorderForwardAction, reorderBackwardAction } from './defaults/reorder';\nimport {\n alignLeftAction, alignRightAction, alignTopAction, alignBottomAction,\n alignCenterXAction, alignCenterYAction,\n} from './align/action';\nimport {\n distributeHorizontalAction, distributeVerticalAction,\n} from './distribute/action';\nimport {\n pathfinderUnionAction, pathfinderSubtractAction, pathfinderIntersectAction,\n pathfinderExcludeAction, pathfinderDivideAction, pathfinderCropAction,\n pathfinderTrimAction, pathfinderMergeAction,\n} from './booleans/action';\nimport { createOutlinesAction } from './outlines/createOutlinesAction';\nimport { outlineStrokeAction } from './outlines/outlineStrokeAction';\nimport { moveAction } from './move/action';\nimport { resizeAction } from './resize/action';\nimport { rotateAction } from './rotate/action';\nimport { areaSelectAction } from './defaults/areaSelect';\nimport { insertAction } from './insert/action';\nimport { insertRotateAction } from './insert/rotateAction';\nimport { insertRepositionAction } from './insert/repositionAction';\nimport { clearSelectionAction } from './defaults/clearSelection';\nimport { cloneAction } from './clone/action';\nimport { editAnchorsAction } from './edit-anchors/action';\nimport { enterPathEditAction } from './defaults/enterPathEdit';\nimport { exitPathEditAction } from './defaults/exitPathEdit';\nimport { insertPathAnchorAction } from './defaults/insertPathAnchor';\nimport { bendSegmentAction } from './defaults/bendSegment';\nimport { makeHandlesSymmetricAction, retractHandlesAction } from './defaults/anchorHandles';\nimport { averageAnchorsAction, joinAnchorsAction } from './defaults/anchorJoin';\nimport {\n joinPathsAction, offsetPathAction, simplifyPathAction, snipAtCrossingsAction,\n} from './pathCommands';\nimport {\n nudgeAnchorsUpAction,\n nudgeAnchorsDownAction,\n nudgeAnchorsLeftAction,\n nudgeAnchorsRightAction,\n deleteAnchorsAction,\n cutPathAtAnchorAction,\n marqueeAnchorsAction,\n selectAnchorAction,\n} from './defaults/anchorEditing';\nimport { lassoSelectAction } from './lasso-select/action';\nimport { pinchZoomAction } from './defaults/pinchZoom';\nimport { viewportDragPanAction } from './defaults/viewportDragPan';\nimport { enterTextEditAction } from './defaults/enterTextEdit';\nimport { setFillAction } from './defaults/setFill';\nimport { setStrokeAction } from './defaults/setStroke';\nimport { setFillOpacityAction } from './defaults/setFillOpacity';\nimport { setStrokeOpacityAction } from './defaults/setStrokeOpacity';\nimport { ingestAction } from './defaults/ingest';\nimport {\n clipboardCopyAction, clipboardCutAction, clipboardPasteAction, clipboardPasteEventAction,\n} from './clipboard/action';\n\n/** @experimental */\nexport interface UseStandardActionsOptions {\n /** Kit selection state — ids of currently selected nodes. */\n selection?: DepSchema['selection'];\n /** Current viewport — camera position + scale. */\n view?: DepSchema['view'];\n /** Scene tree — structural reads + undoable mutations. */\n scene?: DepSchema['scene'];\n /** Undo/redo history bound to the current scene. */\n history?: DepSchema['history'];\n /** Currently active tool id + hotkey-hold stack. */\n activeTool?: DepSchema['activeTool'];\n /**\n * Ids of kit-standard actions to leave unregistered, so a consumer can bind\n * its own. Ids that name no kit action are ignored;\n * `KIT_STANDARD_ACTION_IDS` is the full list.\n */\n exclude?: Iterable<string>;\n}\n\n/**\n * The ordered list of all kit-standard action descriptors. `viewport.pan`\n * and `viewport.zoom` are NOT in this list — they're registered conditionally\n * by SceneCanvas's `useViewportActions` based on the `viewport.pan` /\n * `viewport.zoom` flags.\n */\nconst KIT_STANDARD_DESCRIPTORS: Action[] = [\n escapeAction,\n cancelGestureAction,\n selectAllAction,\n duplicateAction,\n transformAgainAction,\n // Ahead of their node-level twins: with no mode registry nothing filters\n // by capability, so a keystroke goes to the first of these that is enabled.\n nudgeAnchorsUpAction,\n nudgeAnchorsDownAction,\n nudgeAnchorsLeftAction,\n nudgeAnchorsRightAction,\n deleteAnchorsAction,\n deleteAction,\n groupAction,\n ungroupAction,\n undoAction,\n redoAction,\n flipAction,\n nudgeUpAction,\n nudgeDownAction,\n nudgeLeftAction,\n nudgeRightAction,\n reorderForwardAction,\n reorderBackwardAction,\n alignLeftAction,\n alignCenterXAction,\n alignRightAction,\n alignTopAction,\n alignCenterYAction,\n alignBottomAction,\n distributeHorizontalAction,\n distributeVerticalAction,\n pathfinderUnionAction,\n pathfinderSubtractAction,\n pathfinderIntersectAction,\n pathfinderExcludeAction,\n pathfinderDivideAction,\n pathfinderCropAction,\n pathfinderTrimAction,\n pathfinderMergeAction,\n createOutlinesAction,\n outlineStrokeAction,\n moveAction,\n resizeAction,\n rotateAction,\n areaSelectAction,\n insertAction,\n insertRotateAction,\n insertRepositionAction,\n cloneAction,\n editAnchorsAction,\n enterPathEditAction,\n exitPathEditAction,\n insertPathAnchorAction,\n bendSegmentAction,\n cutPathAtAnchorAction,\n retractHandlesAction,\n makeHandlesSymmetricAction,\n averageAnchorsAction,\n joinAnchorsAction,\n simplifyPathAction,\n offsetPathAction,\n snipAtCrossingsAction,\n joinPathsAction,\n marqueeAnchorsAction,\n selectAnchorAction,\n lassoSelectAction,\n pinchZoomAction,\n viewportDragPanAction,\n clearSelectionAction,\n enterTextEditAction,\n setFillAction,\n setStrokeAction,\n setFillOpacityAction,\n setStrokeOpacityAction,\n ingestAction,\n clipboardCutAction,\n clipboardCopyAction,\n clipboardPasteAction,\n clipboardPasteEventAction,\n];\n\n/** Every id `useStandardActions` can register, in registration order. It\n * holds `clipboard.pasteEvent` back unless `ingest` is excluded. */\nexport const KIT_STANDARD_ACTION_IDS: readonly string[] =\n KIT_STANDARD_DESCRIPTORS.map((a) => a.id);\n\n/**\n * Kit-standard actions that stay unregistered while another one is\n * registered, because that one binds the same gesture and does everything\n * this one does: both answering it would act twice. Keyed by the action that\n * yields.\n */\nconst YIELDS_TO: Readonly<Record<string, string>> = {\n 'clipboard.pasteEvent': 'ingest',\n};\n\n/**\n * @experimental\n * Register each kit-standard dep source and action descriptor into the\n * surrounding `<ActionsProvider>` and `<DepRegistryProvider>` (typically\n * provided by `<SceneCanvas>`); a silent no-op when either is absent.\n *\n * Each option is published as a live source in the dep registry under its\n * canonical name (`selection`, `scene`, …). The source reads the latest\n * option value at invocation time, so consumers don't have to memoize their\n * dep objects.\n */\nexport function useStandardActions(opts: UseStandardActionsOptions): void {\n // --- Stabilize opts via ref ---\n const optsRef = useLatest(opts);\n\n // --- activeTool fallback: read from context when not supplied in opts ---\n const activeToolCtx = useOptionalActiveToolContext();\n const activeToolCtxRef = useLatest(activeToolCtx);\n\n // --- Dep source registration ---\n const depReg = useOptionalDepRegistry();\n\n useEffect(() => {\n if (!depReg) return;\n const unregisters: Array<() => void> = [];\n const keys = ['selection', 'view', 'scene', 'history'] as const;\n for (const key of keys) {\n unregisters.push(\n depReg.register(key as DepName, () => optsRef.current[key] as DepSchema[DepName]),\n );\n }\n // activeTool: prefer the explicit opt; fall back to the context value so\n // SceneCanvas doesn't need to thread it through StandardActionsRegistrar.\n unregisters.push(\n depReg.register('activeTool' as DepName, () =>\n (optsRef.current.activeTool ?? activeToolCtxRef.current) as DepSchema[DepName],\n ),\n );\n return () => { for (const u of unregisters) u(); };\n }, [depReg, optsRef, activeToolCtxRef]);\n\n // --- Action descriptor registration ---\n const reg = useActionsRegistry();\n\n // Joined so a fresh array of the same ids does not re-register every render.\n const excludeKey = opts.exclude ? [...opts.exclude].join('\\u0000') : '';\n\n useEffect(() => {\n if (!reg || !depReg) return;\n const excluded = new Set(excludeKey ? excludeKey.split('\\u0000') : []);\n const unregisters = KIT_STANDARD_DESCRIPTORS\n .filter((a) => !excluded.has(a.id))\n .filter((a) => {\n const over = YIELDS_TO[a.id];\n return over === undefined || excluded.has(over);\n })\n .map((a) => reg.register(a));\n return () => { for (const u of unregisters) u(); };\n }, [reg, depReg, excludeKey]);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmHA,IAAMA,IAAqC;CACzCC;CACAC;CACAC;CACAC;CACAC;CAGAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;AACF,GAIaC,KACX/E,EAAyB,KAAK,MAAMgF,EAAE,EAAE,GAQpCC,KAA8C,EAClD,wBAAwB,SAC1B;AAaA,SAAgBC,GAAmB,GAAuC;CAExE,IAAMC,IAAUC,EAAUC,CAAI,GAGxBC,IAAgBC,GAA6B,GAC7CC,IAAmBJ,EAAUE,CAAa,GAG1CG,IAASC,GAAuB;CAEtC,QAAgB;EACd,IAAI,CAACD,GAAQ;EACb,IAAME,IAAiC,CAAC;EAExC,KAAK,IAAMC,KAAO;GADJ;GAAa;GAAQ;GAAS;EAC1B,GAChB,EAAY,KACVH,EAAO,SAASG,SAAsBT,EAAQ,QAAQS,EAA0B,CAClF;EASF,OALAD,EAAY,KACVF,EAAO,SAAS,oBACbN,EAAQ,QAAQ,cAAcK,EAAiB,OAClD,CACF,SACa;GAAE,KAAK,IAAMK,KAAKF,GAAa,EAAE;EAAG;CACnD,GAAG;EAACF;EAAQN;EAASK;CAAgB,CAAC;CAGtC,IAAMM,IAAMC,GAAmB,GAGzBC,IAAaX,EAAK,UAAU,CAAC,GAAGA,EAAK,OAAO,CAAC,CAAC,KAAK,IAAQ,IAAI;CAErE,QAAgB;EACd,IAAI,CAACS,KAAO,CAACL,GAAQ;EACrB,IAAMQ,IAAW,IAAI,IAAID,IAAaA,EAAW,MAAM,IAAQ,IAAI,CAAC,CAAC,GAC/DL,IAAc3F,EACjB,QAAQ,MAAM,CAACiG,EAAS,IAAIjB,EAAE,EAAE,CAAC,CAAC,CAClC,QAAQ,MAAM;GACb,IAAMkB,IAAOjB,GAAUD,EAAE;GACzB,OAAOkB,MAAS,KAAA,KAAaD,EAAS,IAAIC,CAAI;EAChD,CAAC,CAAC,CACD,KAAK,MAAMJ,EAAI,SAASd,CAAC,CAAC;EAC7B,aAAa;GAAE,KAAK,IAAMa,KAAKF,GAAa,EAAE;EAAG;CACnD,GAAG;EAACG;EAAKL;EAAQO;CAAU,CAAC;AAC9B"}