@weasel-js/core 1.9.3 → 1.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1139) hide show
  1. package/CHANGELOG.md +1106 -0
  2. package/README.md +7 -5
  3. package/dist/WeaselProvider.js +5 -7
  4. package/dist/WeaselProvider.js.map +1 -1
  5. package/dist/affordances/composeAffordanceLayer.js +91 -93
  6. package/dist/affordances/composeAffordanceLayer.js.map +1 -1
  7. package/dist/affordances/cornerResize.js +27 -18
  8. package/dist/affordances/cornerResize.js.map +1 -1
  9. package/dist/affordances/hitAffordanceRegions.js +65 -104
  10. package/dist/affordances/hitAffordanceRegions.js.map +1 -1
  11. package/dist/affordances/pathAnchors.js.map +1 -1
  12. package/dist/affordances/rotationHandle.js +22 -21
  13. package/dist/affordances/rotationHandle.js.map +1 -1
  14. package/dist/animation/behaviors/coast.js +21 -0
  15. package/dist/animation/behaviors/coast.js.map +1 -0
  16. package/dist/animation/behaviors/coastByWrite.js +107 -0
  17. package/dist/animation/behaviors/coastByWrite.js.map +1 -0
  18. package/dist/animation/behaviors/coastOnTargets.js +94 -0
  19. package/dist/animation/behaviors/coastOnTargets.js.map +1 -0
  20. package/dist/animation/behaviors/momentum.js +38 -88
  21. package/dist/animation/behaviors/momentum.js.map +1 -1
  22. package/dist/animation/clipTargets.js +12 -0
  23. package/dist/animation/clipTargets.js.map +1 -0
  24. package/dist/animation/index.js +15 -20
  25. package/dist/animation/poseHelpers.js +112 -33
  26. package/dist/animation/poseHelpers.js.map +1 -1
  27. package/dist/animation/poseTarget.js +115 -0
  28. package/dist/animation/poseTarget.js.map +1 -0
  29. package/dist/animation/reflow.js +113 -83
  30. package/dist/animation/reflow.js.map +1 -1
  31. package/dist/animation/rewind.js +66 -0
  32. package/dist/animation/rewind.js.map +1 -0
  33. package/dist/animation/rig/bindRig.js +85 -53
  34. package/dist/animation/rig/bindRig.js.map +1 -1
  35. package/dist/animation/rig/rigNode.js +93 -0
  36. package/dist/animation/rig/rigNode.js.map +1 -0
  37. package/dist/animation/rig/rigSeat.js +26 -0
  38. package/dist/animation/rig/rigSeat.js.map +1 -0
  39. package/dist/animation/rig/skinBinding.js +56 -0
  40. package/dist/animation/rig/skinBinding.js.map +1 -0
  41. package/dist/animation/rig/useRig.js +31 -16
  42. package/dist/animation/rig/useRig.js.map +1 -1
  43. package/dist/animation/wrappers/animateLifecycle.js +32 -24
  44. package/dist/animation/wrappers/animateLifecycle.js.map +1 -1
  45. package/dist/animation/wrappers/animateOnSetPose.js +31 -29
  46. package/dist/animation/wrappers/animateOnSetPose.js.map +1 -1
  47. package/dist/animation/wrappers/instantPose.js +13 -0
  48. package/dist/animation/wrappers/instantPose.js.map +1 -0
  49. package/dist/animation/writtenPoseTarget.js +33 -0
  50. package/dist/animation/writtenPoseTarget.js.map +1 -0
  51. package/dist/{autoPoseDescriptor-vCdt55xm.d.ts → autoPoseDescriptor-DHg5KqaJ.d.ts} +1 -1
  52. package/dist/barrel/canvas.js +31 -0
  53. package/dist/barrel/chrome.js +16 -0
  54. package/dist/barrel/input.js +18 -0
  55. package/dist/barrel/interactions.js +38 -0
  56. package/dist/barrel/paint.js +11 -0
  57. package/dist/barrel/paths.js +12 -0
  58. package/dist/barrel/renderer.js +14 -0
  59. package/dist/barrel/routing.js +57 -0
  60. package/dist/barrel/scene.js +37 -0
  61. package/dist/barrel/text.js +9 -0
  62. package/dist/barrel/viewport.js +42 -0
  63. package/dist/canvas/Canvas.js +280 -559
  64. package/dist/canvas/Canvas.js.map +1 -1
  65. package/dist/canvas/CanvasView.js +147 -167
  66. package/dist/canvas/CanvasView.js.map +1 -1
  67. package/dist/canvas/CursorCoordsHud.js +53 -49
  68. package/dist/canvas/CursorCoordsHud.js.map +1 -1
  69. package/dist/canvas/DrawCanvas.js +40 -51
  70. package/dist/canvas/DrawCanvas.js.map +1 -1
  71. package/dist/canvas/ModalityHud.js.map +1 -1
  72. package/dist/canvas/NodeShape.js +55 -374
  73. package/dist/canvas/NodeShape.js.map +1 -1
  74. package/dist/canvas/PickHud.js +50 -47
  75. package/dist/canvas/PickHud.js.map +1 -1
  76. package/dist/canvas/SceneCanvas/DevHuds.js +40 -0
  77. package/dist/canvas/SceneCanvas/DevHuds.js.map +1 -0
  78. package/dist/canvas/SceneCanvas/GestureDispatcherMounter.js +126 -0
  79. package/dist/canvas/SceneCanvas/GestureDispatcherMounter.js.map +1 -0
  80. package/dist/canvas/SceneCanvas/PointerProviderIfRoot.js +27 -31
  81. package/dist/canvas/SceneCanvas/PointerProviderIfRoot.js.map +1 -1
  82. package/dist/canvas/SceneCanvas/StandardActionsRegistrar.js +64 -0
  83. package/dist/canvas/SceneCanvas/StandardActionsRegistrar.js.map +1 -0
  84. package/dist/canvas/SceneCanvas/ToolKeybindingsMounter.js +16 -0
  85. package/dist/canvas/SceneCanvas/ToolKeybindingsMounter.js.map +1 -0
  86. package/dist/canvas/SceneCanvas/coordTrace.js +46 -0
  87. package/dist/canvas/SceneCanvas/coordTrace.js.map +1 -0
  88. package/dist/canvas/SceneCanvas/defaultNodeProperties.js +138 -85
  89. package/dist/canvas/SceneCanvas/defaultNodeProperties.js.map +1 -1
  90. package/dist/canvas/SceneCanvas/defaultNodeRouting.js +9 -8
  91. package/dist/canvas/SceneCanvas/defaultNodeRouting.js.map +1 -1
  92. package/dist/canvas/SceneCanvas/dispatcherGestureBounds.js.map +1 -1
  93. package/dist/canvas/SceneCanvas/features.js +74 -43
  94. package/dist/canvas/SceneCanvas/features.js.map +1 -1
  95. package/dist/canvas/SceneCanvas/isDev.js +12 -0
  96. package/dist/canvas/SceneCanvas/isDev.js.map +1 -0
  97. package/dist/canvas/SceneCanvas/poseGeometry.js +31 -34
  98. package/dist/canvas/SceneCanvas/poseGeometry.js.map +1 -1
  99. package/dist/canvas/SceneCanvas/poseRegistrars.js +13 -0
  100. package/dist/canvas/SceneCanvas/poseRegistrars.js.map +1 -0
  101. package/dist/canvas/SceneCanvas/props.js +39 -0
  102. package/dist/canvas/SceneCanvas/props.js.map +1 -0
  103. package/dist/canvas/SceneCanvas/toolRegistry.js +23 -0
  104. package/dist/canvas/SceneCanvas/toolRegistry.js.map +1 -0
  105. package/dist/canvas/SceneCanvas/useActionsPropResolver.js +6 -1
  106. package/dist/canvas/SceneCanvas/useActionsPropResolver.js.map +1 -1
  107. package/dist/canvas/SceneCanvas/useBuiltinShapeTools.js +21 -62
  108. package/dist/canvas/SceneCanvas/useBuiltinShapeTools.js.map +1 -1
  109. package/dist/canvas/SceneCanvas/useBuiltinTools.js +21 -0
  110. package/dist/canvas/SceneCanvas/useBuiltinTools.js.map +1 -0
  111. package/dist/canvas/SceneCanvas/useCanvasCamera.js +38 -0
  112. package/dist/canvas/SceneCanvas/useCanvasCamera.js.map +1 -0
  113. package/dist/canvas/SceneCanvas/useCanvasDispatcher.js +20 -0
  114. package/dist/canvas/SceneCanvas/useCanvasDispatcher.js.map +1 -0
  115. package/dist/canvas/SceneCanvas/useCanvasSelection.js +16 -0
  116. package/dist/canvas/SceneCanvas/useCanvasSelection.js.map +1 -0
  117. package/dist/canvas/SceneCanvas/useCanvasTools.js +67 -0
  118. package/dist/canvas/SceneCanvas/useCanvasTools.js.map +1 -0
  119. package/dist/canvas/SceneCanvas/useDispatcherOverlayLayer.js +29 -29
  120. package/dist/canvas/SceneCanvas/useDispatcherOverlayLayer.js.map +1 -1
  121. package/dist/canvas/SceneCanvas/useHeldModifiers.js +20 -0
  122. package/dist/canvas/SceneCanvas/useHeldModifiers.js.map +1 -0
  123. package/dist/canvas/SceneCanvas/useNodeAtPoint.js +26 -0
  124. package/dist/canvas/SceneCanvas/useNodeAtPoint.js.map +1 -0
  125. package/dist/canvas/SceneCanvas/useNodeKinds.js +26 -0
  126. package/dist/canvas/SceneCanvas/useNodeKinds.js.map +1 -0
  127. package/dist/canvas/SceneCanvas/usePreviewGhostLayer.js +48 -48
  128. package/dist/canvas/SceneCanvas/usePreviewGhostLayer.js.map +1 -1
  129. package/dist/canvas/SceneCanvas/useSceneCanvasHandle.js +47 -0
  130. package/dist/canvas/SceneCanvas/useSceneCanvasHandle.js.map +1 -0
  131. package/dist/canvas/SceneCanvas/useSceneCanvasLayers.js +66 -0
  132. package/dist/canvas/SceneCanvas/useSceneCanvasLayers.js.map +1 -0
  133. package/dist/canvas/SceneCanvas/useSceneChrome.js +59 -0
  134. package/dist/canvas/SceneCanvas/useSceneChrome.js.map +1 -0
  135. package/dist/canvas/SceneCanvas/useSceneRedrawSources.js +23 -0
  136. package/dist/canvas/SceneCanvas/useSceneRedrawSources.js.map +1 -0
  137. package/dist/canvas/SceneCanvas/useSceneSelectTool.js +74 -78
  138. package/dist/canvas/SceneCanvas/useSceneSelectTool.js.map +1 -1
  139. package/dist/canvas/SceneCanvas/useSceneSlotLayers.js +37 -0
  140. package/dist/canvas/SceneCanvas/useSceneSlotLayers.js.map +1 -0
  141. package/dist/canvas/SceneCanvas/useSelectionOverlayLayer.js +38 -0
  142. package/dist/canvas/SceneCanvas/useSelectionOverlayLayer.js.map +1 -0
  143. package/dist/canvas/SceneCanvas/useViewLayerGate.js +20 -0
  144. package/dist/canvas/SceneCanvas/useViewLayerGate.js.map +1 -0
  145. package/dist/canvas/SceneCanvas/useViewportActions.js +9 -1
  146. package/dist/canvas/SceneCanvas/useViewportActions.js.map +1 -1
  147. package/dist/canvas/SceneCanvas/worldPointAt.js +9 -0
  148. package/dist/canvas/SceneCanvas/worldPointAt.js.map +1 -0
  149. package/dist/canvas/SceneCanvas.js +311 -969
  150. package/dist/canvas/SceneCanvas.js.map +1 -1
  151. package/dist/canvas/SceneViewCanvas.js +42 -46
  152. package/dist/canvas/SceneViewCanvas.js.map +1 -1
  153. package/dist/canvas/adapterDerivedPath.js +26 -0
  154. package/dist/canvas/adapterDerivedPath.js.map +1 -0
  155. package/dist/canvas/affordanceAt.js +11 -1
  156. package/dist/canvas/affordanceAt.js.map +1 -1
  157. package/dist/canvas/buildSceneLayer.js +111 -0
  158. package/dist/canvas/buildSceneLayer.js.map +1 -0
  159. package/dist/canvas/buildSceneTree.js +16 -19
  160. package/dist/canvas/buildSceneTree.js.map +1 -1
  161. package/dist/canvas/canvasRenderer.js +67 -55
  162. package/dist/canvas/canvasRenderer.js.map +1 -1
  163. package/dist/canvas/colorOverrides.js.map +1 -1
  164. package/dist/canvas/defaultDrawOne.js +12 -12
  165. package/dist/canvas/defaultDrawOne.js.map +1 -1
  166. package/dist/canvas/deps/areaSelect.js +4 -4
  167. package/dist/canvas/deps/areaSelect.js.map +1 -1
  168. package/dist/canvas/deps/changes.js +13 -0
  169. package/dist/canvas/deps/changes.js.map +1 -0
  170. package/dist/canvas/deps/debug.js.map +1 -1
  171. package/dist/canvas/deps/editAnchors.js +38 -57
  172. package/dist/canvas/deps/editAnchors.js.map +1 -1
  173. package/dist/canvas/deps/geometryProjection.js.map +1 -1
  174. package/dist/canvas/deps/hitTestArea.js +31 -26
  175. package/dist/canvas/deps/hitTestArea.js.map +1 -1
  176. package/dist/canvas/deps/insert.js +130 -91
  177. package/dist/canvas/deps/insert.js.map +1 -1
  178. package/dist/canvas/deps/lassoSelect.js +5 -5
  179. package/dist/canvas/deps/lassoSelect.js.map +1 -1
  180. package/dist/canvas/deps/poseDescriptor.js +1 -1
  181. package/dist/canvas/deps/poseDescriptor.js.map +1 -1
  182. package/dist/canvas/deps/resizePolicy.js.map +1 -1
  183. package/dist/canvas/deps/slice.js +26 -26
  184. package/dist/canvas/deps/slice.js.map +1 -1
  185. package/dist/canvas/deps/textEdit.js +6 -5
  186. package/dist/canvas/deps/textEdit.js.map +1 -1
  187. package/dist/canvas/deps/view.js.map +1 -1
  188. package/dist/canvas/derivedPath.js +47 -22
  189. package/dist/canvas/derivedPath.js.map +1 -1
  190. package/dist/canvas/drawEnvelope.js +8 -4
  191. package/dist/canvas/drawEnvelope.js.map +1 -1
  192. package/dist/canvas/getNodeAtPoint.js +4 -8
  193. package/dist/canvas/getNodeAtPoint.js.map +1 -1
  194. package/dist/canvas/hud.module.js +1 -1
  195. package/dist/canvas/hud.module.js.map +1 -1
  196. package/dist/canvas/insertPreviewExtent.js.map +1 -1
  197. package/dist/canvas/kitRequirements.js +2 -2
  198. package/dist/canvas/kitRequirements.js.map +1 -1
  199. package/dist/canvas/layerOrder.js +13 -6
  200. package/dist/canvas/layerOrder.js.map +1 -1
  201. package/dist/canvas/layerSlots.js +6 -1
  202. package/dist/canvas/layerSlots.js.map +1 -1
  203. package/dist/canvas/nodeShapes/derivedPainter.js +34 -0
  204. package/dist/canvas/nodeShapes/derivedPainter.js.map +1 -0
  205. package/dist/canvas/nodeShapes/imagePainter.js +87 -0
  206. package/dist/canvas/nodeShapes/imagePainter.js.map +1 -0
  207. package/dist/canvas/nodeShapes/memo.js +9 -0
  208. package/dist/canvas/nodeShapes/memo.js.map +1 -0
  209. package/dist/canvas/nodeShapes/nodePaint.js +68 -0
  210. package/dist/canvas/nodeShapes/nodePaint.js.map +1 -0
  211. package/dist/canvas/nodeShapes/pathPainter.js +39 -0
  212. package/dist/canvas/nodeShapes/pathPainter.js.map +1 -0
  213. package/dist/canvas/nodeShapes/poseBox.js +20 -0
  214. package/dist/canvas/nodeShapes/poseBox.js.map +1 -0
  215. package/dist/canvas/nodeShapes/rectFallbackPainter.js +38 -0
  216. package/dist/canvas/nodeShapes/rectFallbackPainter.js.map +1 -0
  217. package/dist/canvas/nodeShapes/shapePainter.js +72 -0
  218. package/dist/canvas/nodeShapes/shapePainter.js.map +1 -0
  219. package/dist/canvas/nodeShapes/textPainter.js +55 -0
  220. package/dist/canvas/nodeShapes/textPainter.js.map +1 -0
  221. package/dist/canvas/overlayRoleStrokes.js.map +1 -1
  222. package/dist/canvas/paintCull.js +11 -14
  223. package/dist/canvas/paintCull.js.map +1 -1
  224. package/dist/{features/cursor → canvas}/paintedCursorLayer.js +2 -2
  225. package/dist/canvas/paintedCursorLayer.js.map +1 -0
  226. package/dist/canvas/pickWalk.js +59 -68
  227. package/dist/canvas/pickWalk.js.map +1 -1
  228. package/dist/canvas/planeClips.js +18 -19
  229. package/dist/canvas/planeClips.js.map +1 -1
  230. package/dist/canvas/poseCascade.js +41 -0
  231. package/dist/canvas/poseCascade.js.map +1 -0
  232. package/dist/canvas/poseRotation.js +9 -23
  233. package/dist/canvas/poseRotation.js.map +1 -1
  234. package/dist/canvas/rasterReadback.js +22 -0
  235. package/dist/canvas/rasterReadback.js.map +1 -0
  236. package/dist/canvas/renderDebugSnapshot.js +11 -11
  237. package/dist/canvas/renderDebugSnapshot.js.map +1 -1
  238. package/dist/canvas/renderNeeds.js +3 -3
  239. package/dist/canvas/renderNeeds.js.map +1 -1
  240. package/dist/canvas/renderSceneToPixels.js +64 -81
  241. package/dist/canvas/renderSceneToPixels.js.map +1 -1
  242. package/dist/canvas/sceneAdapter.js +68 -214
  243. package/dist/canvas/sceneAdapter.js.map +1 -1
  244. package/dist/canvas/sceneClipboard.js +112 -0
  245. package/dist/canvas/sceneClipboard.js.map +1 -0
  246. package/dist/canvas/sceneLayerPaint.js +4 -4
  247. package/dist/canvas/sceneLayerPaint.js.map +1 -1
  248. package/dist/canvas/sceneSlotWiring.js.map +1 -1
  249. package/dist/canvas/sceneViewRender.js +39 -39
  250. package/dist/canvas/sceneViewRender.js.map +1 -1
  251. package/dist/canvas/slopsDebugLayer.js +4 -4
  252. package/dist/canvas/slopsDebugLayer.js.map +1 -1
  253. package/dist/canvas/surface.module.js +6 -0
  254. package/dist/canvas/surface.module.js.map +1 -0
  255. package/dist/canvas/surfaceBox.js +16 -0
  256. package/dist/canvas/surfaceBox.js.map +1 -0
  257. package/dist/canvas/useCanvasRenderer.js +26 -6
  258. package/dist/canvas/useCanvasRenderer.js.map +1 -1
  259. package/dist/canvas/useCanvasSurface.js +31 -0
  260. package/dist/canvas/useCanvasSurface.js.map +1 -0
  261. package/dist/canvas/useCanvasView.js +67 -0
  262. package/dist/canvas/useCanvasView.js.map +1 -0
  263. package/dist/canvas/useFrameLoop.js +39 -31
  264. package/dist/canvas/useFrameLoop.js.map +1 -1
  265. package/dist/canvas/useHostAnchor.js +35 -33
  266. package/dist/canvas/useHostAnchor.js.map +1 -1
  267. package/dist/canvas/useLateContentRedraw.js +8 -8
  268. package/dist/canvas/useLateContentRedraw.js.map +1 -1
  269. package/dist/canvas/useSceneLayerList.js +11 -0
  270. package/dist/canvas/useSceneLayerList.js.map +1 -0
  271. package/dist/canvas/useSurfaceInput.js +42 -0
  272. package/dist/canvas/useSurfaceInput.js.map +1 -0
  273. package/dist/canvas/useToolCursor.js +29 -0
  274. package/dist/canvas/useToolCursor.js.map +1 -0
  275. package/dist/canvas/useViewHelpers.js +46 -85
  276. package/dist/canvas/useViewHelpers.js.map +1 -1
  277. package/dist/canvas/viewInputs.js.map +1 -1
  278. package/dist/canvas/viewRegistry.js +25 -27
  279. package/dist/canvas/viewRegistry.js.map +1 -1
  280. package/dist/canvas/watchElementMove.js +43 -0
  281. package/dist/canvas/watchElementMove.js.map +1 -0
  282. package/dist/canvas/wrapNodeOutput.js.map +1 -1
  283. package/dist/clipboard.d.ts +16 -19
  284. package/dist/{types-B_9g6hMM.d.ts → clone-2a5hVbBd.d.ts} +123 -74
  285. package/dist/clone.d.ts +4 -7
  286. package/dist/clone.js +0 -2
  287. package/dist/core/device/index.js +5 -4
  288. package/dist/core/device/targets.js.map +1 -1
  289. package/dist/core/device/useDeviceProfile.js +38 -44
  290. package/dist/core/device/useDeviceProfile.js.map +1 -1
  291. package/dist/core/device/watchDevicePixelRatio.js +17 -0
  292. package/dist/core/device/watchDevicePixelRatio.js.map +1 -0
  293. package/dist/{interactions/actions/resize → core/geometry}/autoPoseDescriptor.js +8 -7
  294. package/dist/core/geometry/autoPoseDescriptor.js.map +1 -0
  295. package/dist/core/geometry/pathPoseDescriptor.js +88 -0
  296. package/dist/core/geometry/pathPoseDescriptor.js.map +1 -0
  297. package/dist/core/geometry/poseDescriptor.js +68 -19
  298. package/dist/core/geometry/poseDescriptor.js.map +1 -1
  299. package/dist/core/geometry/regionHit.js +31 -34
  300. package/dist/core/geometry/regionHit.js.map +1 -1
  301. package/dist/core/geometry/targetFrame.js +94 -0
  302. package/dist/core/geometry/targetFrame.js.map +1 -0
  303. package/dist/core/geometry/unionBounds.js +30 -29
  304. package/dist/core/geometry/unionBounds.js.map +1 -1
  305. package/dist/core/isPlainObject.js +2 -11
  306. package/dist/core/layers/backgroundFill.js +31 -0
  307. package/dist/core/layers/backgroundFill.js.map +1 -0
  308. package/dist/{features/groups → core/layers}/children.js +1 -1
  309. package/dist/core/layers/children.js.map +1 -0
  310. package/dist/core/layers/gateLayer.js +13 -0
  311. package/dist/core/layers/gateLayer.js.map +1 -0
  312. package/dist/core/layers/layerGroup.js +40 -0
  313. package/dist/core/layers/layerGroup.js.map +1 -0
  314. package/dist/core/layers/render.js +50 -76
  315. package/dist/core/layers/render.js.map +1 -1
  316. package/dist/core/ops/arrange.js +1 -0
  317. package/dist/core/ops/arrange.js.map +1 -1
  318. package/dist/core/ops/create.js +10 -5
  319. package/dist/core/ops/create.js.map +1 -1
  320. package/dist/core/ops/createHistory.js +9 -9
  321. package/dist/core/ops/createHistory.js.map +1 -1
  322. package/dist/core/ops/delete.js +12 -24
  323. package/dist/core/ops/delete.js.map +1 -1
  324. package/dist/core/ops/reorder/index.js +43 -40
  325. package/dist/core/ops/reorder/index.js.map +1 -1
  326. package/dist/core/ops/reorder/setChildOrder.js +34 -0
  327. package/dist/core/ops/reorder/setChildOrder.js.map +1 -0
  328. package/dist/core/paint/meshKind.js +16 -0
  329. package/dist/core/paint/meshKind.js.map +1 -0
  330. package/dist/{features/meshPaint/lazyKind.js → core/paint/meshKindLazy.js} +282 -105
  331. package/dist/core/paint/meshKindLazy.js.map +1 -0
  332. package/dist/core/paint/paintKindEntry.js +8 -0
  333. package/dist/core/paint/paintKindEntry.js.map +1 -0
  334. package/dist/core/paint/paintKinds.js +144 -0
  335. package/dist/core/paint/paintKinds.js.map +1 -0
  336. package/dist/core/paint/registerMesh.js +7 -0
  337. package/dist/core/paint/registerMesh.js.map +1 -0
  338. package/dist/core/scene/NodeProperties.js.map +1 -1
  339. package/dist/core/scene/NodeRouting.js.map +1 -1
  340. package/dist/core/scene/appliedLog.js +37 -0
  341. package/dist/core/scene/appliedLog.js.map +1 -0
  342. package/dist/core/scene/arrivalWindow.js +102 -0
  343. package/dist/core/scene/arrivalWindow.js.map +1 -0
  344. package/dist/core/scene/boundOps.js +40 -0
  345. package/dist/core/scene/boundOps.js.map +1 -0
  346. package/dist/core/scene/composeFrame.js +9 -6
  347. package/dist/core/scene/composeFrame.js.map +1 -1
  348. package/dist/{features/groups → core/scene}/composePose.js +18 -18
  349. package/dist/core/scene/composePose.js.map +1 -0
  350. package/dist/core/scene/depMemo.js +31 -6
  351. package/dist/core/scene/depMemo.js.map +1 -1
  352. package/dist/core/scene/derivedPath.js +19 -20
  353. package/dist/core/scene/derivedPath.js.map +1 -1
  354. package/dist/core/scene/editMode.js +26 -0
  355. package/dist/core/scene/editMode.js.map +1 -0
  356. package/dist/core/scene/effectivePose.js +38 -39
  357. package/dist/core/scene/effectivePose.js.map +1 -1
  358. package/dist/core/scene/fieldEdits.js +98 -0
  359. package/dist/core/scene/fieldEdits.js.map +1 -0
  360. package/dist/core/scene/historyFacade.js +130 -0
  361. package/dist/core/scene/historyFacade.js.map +1 -0
  362. package/dist/core/scene/historyForm.js +6 -0
  363. package/dist/core/scene/historyForm.js.map +1 -0
  364. package/dist/core/scene/kitOps.js +185 -0
  365. package/dist/core/scene/kitOps.js.map +1 -0
  366. package/dist/core/scene/kitRegistry.js.map +1 -1
  367. package/dist/core/scene/layerStack.js +131 -0
  368. package/dist/core/scene/layerStack.js.map +1 -0
  369. package/dist/core/scene/layoutPass.js +58 -59
  370. package/dist/core/scene/layoutPass.js.map +1 -1
  371. package/dist/core/scene/lockGuard.js +37 -0
  372. package/dist/core/scene/lockGuard.js.map +1 -0
  373. package/dist/{features/groups → core/scene}/nestedHit.js +3 -3
  374. package/dist/core/scene/nestedHit.js.map +1 -0
  375. package/dist/core/scene/nodeFnFields.js +10 -11
  376. package/dist/core/scene/nodeFnFields.js.map +1 -1
  377. package/dist/core/scene/nodeMemo.js +45 -19
  378. package/dist/core/scene/nodeMemo.js.map +1 -1
  379. package/dist/core/scene/nodeStore.js +127 -0
  380. package/dist/core/scene/nodeStore.js.map +1 -0
  381. package/dist/core/scene/notifier.js +37 -0
  382. package/dist/core/scene/notifier.js.map +1 -0
  383. package/dist/core/scene/opTable.js +50 -0
  384. package/dist/core/scene/opTable.js.map +1 -0
  385. package/dist/core/scene/outerOps.js +66 -0
  386. package/dist/core/scene/outerOps.js.map +1 -0
  387. package/dist/core/scene/poseFeed.js +38 -38
  388. package/dist/core/scene/poseFeed.js.map +1 -1
  389. package/dist/core/scene/poseHold.js +39 -0
  390. package/dist/core/scene/poseHold.js.map +1 -0
  391. package/dist/core/scene/poseOverrides.js +44 -40
  392. package/dist/core/scene/poseOverrides.js.map +1 -1
  393. package/dist/core/scene/poseSnapshot.js.map +1 -1
  394. package/dist/core/scene/reconcileSpecs.js +3 -2
  395. package/dist/core/scene/reconcileSpecs.js.map +1 -1
  396. package/dist/core/scene/recorder.js +86 -0
  397. package/dist/core/scene/recorder.js.map +1 -0
  398. package/dist/core/scene/renderOrder.js +84 -0
  399. package/dist/core/scene/renderOrder.js.map +1 -0
  400. package/dist/core/scene/scene.js +80 -1266
  401. package/dist/core/scene/scene.js.map +1 -1
  402. package/dist/core/scene/sceneEdits.js +58 -0
  403. package/dist/core/scene/sceneEdits.js.map +1 -0
  404. package/dist/core/scene/sceneMutators.js +49 -0
  405. package/dist/core/scene/sceneMutators.js.map +1 -0
  406. package/dist/core/scene/scenePoseAdapter.js +16 -0
  407. package/dist/core/scene/scenePoseAdapter.js.map +1 -0
  408. package/dist/core/scene/sceneRecording.js +90 -0
  409. package/dist/core/scene/sceneRecording.js.map +1 -0
  410. package/dist/core/scene/sceneSelection.js +28 -0
  411. package/dist/core/scene/sceneSelection.js.map +1 -0
  412. package/dist/core/scene/sceneState.js +49 -0
  413. package/dist/core/scene/sceneState.js.map +1 -0
  414. package/dist/core/scene/serialization.js +71 -0
  415. package/dist/core/scene/serialization.js.map +1 -0
  416. package/dist/core/scene/staleReplay.js +51 -0
  417. package/dist/core/scene/staleReplay.js.map +1 -0
  418. package/dist/core/scene/statedFields.js +9 -0
  419. package/dist/core/scene/statedFields.js.map +1 -0
  420. package/dist/core/scene/treeEdits.js +127 -0
  421. package/dist/core/scene/treeEdits.js.map +1 -0
  422. package/dist/core/scene/treeOrder.js +13 -0
  423. package/dist/core/scene/treeOrder.js.map +1 -0
  424. package/dist/core/scene/treeReads.js +26 -0
  425. package/dist/core/scene/treeReads.js.map +1 -0
  426. package/dist/core/scene/types.js.map +1 -1
  427. package/dist/{features/groups → core/scene}/unionOfChildren.js +3 -3
  428. package/dist/core/scene/unionOfChildren.js.map +1 -0
  429. package/dist/core/scene/unitScopes.js +13 -0
  430. package/dist/core/scene/unitScopes.js.map +1 -0
  431. package/dist/core/scene/useScene.js.map +1 -1
  432. package/dist/core/selection/readOnlySelection.js +32 -0
  433. package/dist/core/selection/readOnlySelection.js.map +1 -0
  434. package/dist/core/selection/usePublishSceneSelection.js +26 -0
  435. package/dist/core/selection/usePublishSceneSelection.js.map +1 -0
  436. package/dist/core/selection/useSelection.js +34 -25
  437. package/dist/core/selection/useSelection.js.map +1 -1
  438. package/dist/core/shapeKinds.js.map +1 -1
  439. package/dist/core/stylus/stylus.js.map +1 -1
  440. package/dist/core/stylus/usePointerStylus.js.map +1 -1
  441. package/dist/core/usePaintKinds.js +1 -1
  442. package/dist/core/usePaintKinds.js.map +1 -1
  443. package/dist/core/viewport/clientToWorld.js.map +1 -1
  444. package/dist/core/viewport/fitViewToBounds.js.map +1 -1
  445. package/dist/core/viewport/parallax.js.map +1 -1
  446. package/dist/core/viewport/screenSlop.js +11 -11
  447. package/dist/core/viewport/screenSlop.js.map +1 -1
  448. package/dist/core/viewport/useCanvasSize.js.map +1 -1
  449. package/dist/core/viewport/useDecayLoop.js +8 -8
  450. package/dist/core/viewport/useDecayLoop.js.map +1 -1
  451. package/dist/core/viewport/useNodeOverlayFrame.js +84 -0
  452. package/dist/core/viewport/useNodeOverlayFrame.js.map +1 -0
  453. package/dist/core/viewport/useViewAnimation.js +102 -43
  454. package/dist/core/viewport/useViewAnimation.js.map +1 -1
  455. package/dist/core/viewport/view.js +9 -9
  456. package/dist/core/viewport/view.js.map +1 -1
  457. package/dist/core/viewport/wheelHandler.js.map +1 -1
  458. package/dist/core/viewport/zoomBounds.js +10 -8
  459. package/dist/core/viewport/zoomBounds.js.map +1 -1
  460. package/dist/{cornerHandles-BCrDp_mH.d.ts → cornerHandles-BEshc4z3.d.ts} +11 -24
  461. package/dist/debug/createDebugOverlayLayer.js +97 -97
  462. package/dist/debug/createDebugOverlayLayer.js.map +1 -1
  463. package/dist/debug/createDebugSink.js.map +1 -1
  464. package/dist/debug/flag.js +2 -41
  465. package/dist/debug/frameStats.js.map +1 -1
  466. package/dist/debug/useDebugSink.js +52 -0
  467. package/dist/debug/useDebugSink.js.map +1 -0
  468. package/dist/features/chrome-caps/buildChromeCtx.js.map +1 -1
  469. package/dist/features/chrome-caps/conditions.js.map +1 -1
  470. package/dist/features/chrome-caps/defaults.js.map +1 -1
  471. package/dist/features/chrome-caps/resolve.js.map +1 -1
  472. package/dist/features/chrome-caps/useChromeCaps.js +54 -0
  473. package/dist/features/chrome-caps/useChromeCaps.js.map +1 -0
  474. package/dist/features/chrome-caps/useHoverTracking.js +22 -17
  475. package/dist/features/chrome-caps/useHoverTracking.js.map +1 -1
  476. package/dist/features/ingestion/contentHandlers.js +28 -19
  477. package/dist/features/ingestion/contentHandlers.js.map +1 -1
  478. package/dist/features/ingestion/imageHandler.js +21 -24
  479. package/dist/features/ingestion/imageHandler.js.map +1 -1
  480. package/dist/features/ingestion/openFilePicker.js.map +1 -1
  481. package/dist/features/ingestion/placement.js +16 -0
  482. package/dist/features/ingestion/placement.js.map +1 -0
  483. package/dist/features/ingestion/registerKitHandlers.js +7 -7
  484. package/dist/features/ingestion/svgHandler.js +5 -0
  485. package/dist/features/ingestion/svgHandler.js.map +1 -1
  486. package/dist/features/ingestion/textHandler.js +28 -0
  487. package/dist/features/ingestion/textHandler.js.map +1 -0
  488. package/dist/features/ingestion/useCanvasIngestion.js +48 -0
  489. package/dist/features/ingestion/useCanvasIngestion.js.map +1 -0
  490. package/dist/features/ingestion/weaselJsonHandler.js +22 -14
  491. package/dist/features/ingestion/weaselJsonHandler.js.map +1 -1
  492. package/dist/features/longPress/longPressFeedback.js.map +1 -1
  493. package/dist/features/modes/modeLayers.js +7 -7
  494. package/dist/features/modes/modeLayers.js.map +1 -1
  495. package/dist/features/paths/editablePath.js +47 -0
  496. package/dist/features/paths/editablePath.js.map +1 -0
  497. package/dist/features/paths/index.js +9 -14
  498. package/dist/features/paths/pathEditState.js +41 -0
  499. package/dist/features/paths/pathEditState.js.map +1 -0
  500. package/dist/features/paths/pathEditingOverlayLayer.js +36 -38
  501. package/dist/features/paths/pathEditingOverlayLayer.js.map +1 -1
  502. package/dist/features/paths/pathLayer.js +3 -2
  503. package/dist/features/paths/pathLayer.js.map +1 -1
  504. package/dist/features/paths/penPreviewLayer.js +86 -88
  505. package/dist/features/paths/penPreviewLayer.js.map +1 -1
  506. package/dist/features/paths/usePathEdit.js +34 -0
  507. package/dist/features/paths/usePathEdit.js.map +1 -0
  508. package/dist/features/poseRun/usePoseRun.js +44 -52
  509. package/dist/features/poseRun/usePoseRun.js.map +1 -1
  510. package/dist/features/selection/overlay.js +171 -179
  511. package/dist/features/selection/overlay.js.map +1 -1
  512. package/dist/features/text/index.js +6 -0
  513. package/dist/features/text/textLayer.js +1 -1
  514. package/dist/features/text/textLayer.js.map +1 -1
  515. package/dist/features/text/useSceneTextEdit.js +100 -93
  516. package/dist/features/text/useSceneTextEdit.js.map +1 -1
  517. package/dist/features/viewports/viewportLayer.js +25 -36
  518. package/dist/features/viewports/viewportLayer.js.map +1 -1
  519. package/dist/index.d.ts +8473 -9141
  520. package/dist/index.js +269 -307
  521. package/dist/input/keyState.js +38 -39
  522. package/dist/input/keyState.js.map +1 -1
  523. package/dist/input/useKeyModifiers.js +11 -0
  524. package/dist/input/useKeyModifiers.js.map +1 -0
  525. package/dist/interactions/actions/actionShortcuts.js.map +1 -1
  526. package/dist/interactions/actions/{defaults/align.js → align/action.js} +18 -20
  527. package/dist/interactions/actions/align/action.js.map +1 -0
  528. package/dist/interactions/actions/align/align.js +20 -20
  529. package/dist/interactions/actions/align/align.js.map +1 -1
  530. package/dist/interactions/actions/booleans/action.js +65 -0
  531. package/dist/interactions/actions/booleans/action.js.map +1 -0
  532. package/dist/interactions/actions/booleans/booleans.js +69 -78
  533. package/dist/interactions/actions/booleans/booleans.js.map +1 -1
  534. package/dist/interactions/actions/booleans/operands.js +40 -0
  535. package/dist/interactions/actions/booleans/operands.js.map +1 -0
  536. package/dist/interactions/actions/booleans/pieces.js +45 -0
  537. package/dist/interactions/actions/booleans/pieces.js.map +1 -0
  538. package/dist/interactions/actions/booleans/placement.js +24 -0
  539. package/dist/interactions/actions/booleans/placement.js.map +1 -0
  540. package/dist/interactions/actions/booleans/useBooleans.js +11 -9
  541. package/dist/interactions/actions/booleans/useBooleans.js.map +1 -1
  542. package/dist/interactions/actions/booleans/useBooleansAdapter.js.map +1 -1
  543. package/dist/interactions/actions/{defaults/clipboard.js → clipboard/action.js} +31 -15
  544. package/dist/interactions/actions/clipboard/action.js.map +1 -0
  545. package/dist/interactions/actions/clipboard/clipboardOps.js +44 -42
  546. package/dist/interactions/actions/clipboard/clipboardOps.js.map +1 -1
  547. package/dist/interactions/actions/clipboard/materializePaste.js +10 -7
  548. package/dist/interactions/actions/clipboard/materializePaste.js.map +1 -1
  549. package/dist/interactions/actions/clipboard/wireFormat.js.map +1 -1
  550. package/dist/interactions/actions/clone/action.js +98 -0
  551. package/dist/interactions/actions/clone/action.js.map +1 -0
  552. package/dist/interactions/actions/clone/behaviors.js +52 -0
  553. package/dist/interactions/actions/clone/behaviors.js.map +1 -0
  554. package/dist/interactions/actions/defaultCommitAdapter.js +7 -32
  555. package/dist/interactions/actions/defaultCommitAdapter.js.map +1 -1
  556. package/dist/interactions/actions/defaults/anchorEditing.js +60 -84
  557. package/dist/interactions/actions/defaults/anchorEditing.js.map +1 -1
  558. package/dist/interactions/actions/defaults/areaSelect.js +35 -38
  559. package/dist/interactions/actions/defaults/areaSelect.js.map +1 -1
  560. package/dist/interactions/actions/defaults/cancelGesture.js.map +1 -1
  561. package/dist/interactions/actions/defaults/clearSelection.js.map +1 -1
  562. package/dist/interactions/actions/defaults/copySubtree.js +40 -0
  563. package/dist/interactions/actions/defaults/copySubtree.js.map +1 -0
  564. package/dist/interactions/actions/defaults/createPaintAction.js.map +1 -1
  565. package/dist/interactions/actions/defaults/delete.js.map +1 -1
  566. package/dist/interactions/actions/defaults/duplicate.js +13 -53
  567. package/dist/interactions/actions/defaults/duplicate.js.map +1 -1
  568. package/dist/interactions/actions/defaults/enterTextEdit.js.map +1 -1
  569. package/dist/interactions/actions/defaults/group.js +40 -50
  570. package/dist/interactions/actions/defaults/group.js.map +1 -1
  571. package/dist/interactions/actions/defaults/icons/booleanIcons.js +24 -1
  572. package/dist/interactions/actions/defaults/icons/booleanIcons.js.map +1 -1
  573. package/dist/interactions/actions/defaults/icons/outlineIcons.js +39 -1
  574. package/dist/interactions/actions/defaults/icons/outlineIcons.js.map +1 -1
  575. package/dist/interactions/actions/defaults/ingest.js +44 -38
  576. package/dist/interactions/actions/defaults/ingest.js.map +1 -1
  577. package/dist/interactions/actions/defaults/insertPathAnchor.js +11 -12
  578. package/dist/interactions/actions/defaults/insertPathAnchor.js.map +1 -1
  579. package/dist/interactions/actions/defaults/nudge.js +40 -69
  580. package/dist/interactions/actions/defaults/nudge.js.map +1 -1
  581. package/dist/interactions/actions/defaults/nudgeSteps.js +37 -0
  582. package/dist/interactions/actions/defaults/nudgeSteps.js.map +1 -0
  583. package/dist/interactions/actions/defaults/pinchZoom.js.map +1 -1
  584. package/dist/interactions/actions/defaults/reorder.js +2 -0
  585. package/dist/interactions/actions/defaults/reorder.js.map +1 -1
  586. package/dist/interactions/actions/defaults/requiresSelection.js.map +1 -1
  587. package/dist/interactions/actions/defaults/setFill.js +14 -8
  588. package/dist/interactions/actions/defaults/setFill.js.map +1 -1
  589. package/dist/interactions/actions/defaults/setFillOpacity.js +7 -4
  590. package/dist/interactions/actions/defaults/setFillOpacity.js.map +1 -1
  591. package/dist/interactions/actions/defaults/setStroke.js +12 -12
  592. package/dist/interactions/actions/defaults/setStroke.js.map +1 -1
  593. package/dist/interactions/actions/defaults/setStrokeOpacity.js +6 -6
  594. package/dist/interactions/actions/defaults/sliceOps.js +8 -10
  595. package/dist/interactions/actions/defaults/sliceOps.js.map +1 -1
  596. package/dist/interactions/actions/defaults/toolActivate.js.map +1 -1
  597. package/dist/interactions/actions/defaults/toolResetToDefault.js.map +1 -1
  598. package/dist/interactions/actions/defaults/viewportDragPan.js +37 -26
  599. package/dist/interactions/actions/defaults/viewportDragPan.js.map +1 -1
  600. package/dist/interactions/actions/defaults/viewportWheelPan.js.map +1 -1
  601. package/dist/interactions/actions/defaults/viewportZoom.js.map +1 -1
  602. package/dist/interactions/actions/distribute/action.js +66 -0
  603. package/dist/interactions/actions/distribute/action.js.map +1 -0
  604. package/dist/interactions/actions/distribute/distribute.js +11 -11
  605. package/dist/interactions/actions/distribute/distribute.js.map +1 -1
  606. package/dist/interactions/actions/{defaults/editAnchors.js → edit-anchors/action.js} +7 -9
  607. package/dist/interactions/actions/edit-anchors/action.js.map +1 -0
  608. package/dist/interactions/actions/edit-anchors/geometry.js +30 -27
  609. package/dist/interactions/actions/edit-anchors/geometry.js.map +1 -1
  610. package/dist/interactions/actions/flip/action.js +124 -0
  611. package/dist/interactions/actions/flip/action.js.map +1 -0
  612. package/dist/interactions/actions/flip/helpers.js +30 -17
  613. package/dist/interactions/actions/flip/helpers.js.map +1 -1
  614. package/dist/interactions/actions/gestureFrames.js +18 -0
  615. package/dist/interactions/actions/gestureFrames.js.map +1 -0
  616. package/dist/interactions/actions/gestureLifecycle.js +47 -20
  617. package/dist/interactions/actions/gestureLifecycle.js.map +1 -1
  618. package/dist/interactions/actions/hitSelection.js +8 -0
  619. package/dist/interactions/actions/hitSelection.js.map +1 -0
  620. package/dist/interactions/actions/insert/action.js +72 -0
  621. package/dist/interactions/actions/insert/action.js.map +1 -0
  622. package/dist/interactions/actions/insert/commit.js +28 -0
  623. package/dist/interactions/actions/insert/commit.js.map +1 -0
  624. package/dist/interactions/actions/insert/extras.js +65 -0
  625. package/dist/interactions/actions/insert/extras.js.map +1 -0
  626. package/dist/interactions/actions/insert/frame.js +48 -0
  627. package/dist/interactions/actions/insert/frame.js.map +1 -0
  628. package/dist/interactions/actions/insert/geometry.js +35 -0
  629. package/dist/interactions/actions/insert/geometry.js.map +1 -0
  630. package/dist/interactions/actions/insert/rotateAction.js +21 -0
  631. package/dist/interactions/actions/insert/rotateAction.js.map +1 -0
  632. package/dist/interactions/actions/insert/session.js +59 -0
  633. package/dist/interactions/actions/insert/session.js.map +1 -0
  634. package/dist/interactions/actions/insert/shape.js +34 -0
  635. package/dist/interactions/actions/insert/shape.js.map +1 -0
  636. package/dist/interactions/actions/lasso-select/action.js +143 -0
  637. package/dist/interactions/actions/lasso-select/action.js.map +1 -0
  638. package/dist/interactions/actions/lasso-select/behaviors/selectFromLasso.js +14 -18
  639. package/dist/interactions/actions/lasso-select/behaviors/selectFromLasso.js.map +1 -1
  640. package/dist/interactions/actions/move/action.js +87 -0
  641. package/dist/interactions/actions/move/action.js.map +1 -0
  642. package/dist/interactions/actions/move/behaviors/layoutDrop.js +51 -0
  643. package/dist/interactions/actions/move/behaviors/layoutDrop.js.map +1 -0
  644. package/dist/interactions/actions/move/behaviors/reparentOnDrop.js +15 -0
  645. package/dist/interactions/actions/move/behaviors/reparentOnDrop.js.map +1 -0
  646. package/dist/interactions/actions/move/behaviors/snapBackOrDelete.js +5 -5
  647. package/dist/interactions/actions/move/behaviors/snapBackOrDelete.js.map +1 -1
  648. package/dist/interactions/actions/move/behaviors/snapToContainer.js +39 -27
  649. package/dist/interactions/actions/move/behaviors/snapToContainer.js.map +1 -1
  650. package/dist/interactions/actions/move/capture.js +99 -0
  651. package/dist/interactions/actions/move/capture.js.map +1 -0
  652. package/dist/interactions/actions/move/commit/index.js +41 -0
  653. package/dist/interactions/actions/move/commit/index.js.map +1 -0
  654. package/dist/interactions/actions/move/commit/layoutDrop.js +44 -0
  655. package/dist/interactions/actions/move/commit/layoutDrop.js.map +1 -0
  656. package/dist/interactions/actions/move/commit/layoutRelease.js +100 -0
  657. package/dist/interactions/actions/move/commit/layoutRelease.js.map +1 -0
  658. package/dist/interactions/actions/move/commit/rebase.js +18 -0
  659. package/dist/interactions/actions/move/commit/rebase.js.map +1 -0
  660. package/dist/interactions/actions/move/commit/reparent.js +65 -0
  661. package/dist/interactions/actions/move/commit/reparent.js.map +1 -0
  662. package/dist/interactions/actions/move/delta.js +51 -0
  663. package/dist/interactions/actions/move/delta.js.map +1 -0
  664. package/dist/interactions/actions/move/frame.js +59 -0
  665. package/dist/interactions/actions/move/frame.js.map +1 -0
  666. package/dist/interactions/actions/move/gestureAdapter.js +22 -30
  667. package/dist/interactions/actions/move/gestureAdapter.js.map +1 -1
  668. package/dist/interactions/actions/move/landedDescendants.js +33 -0
  669. package/dist/interactions/actions/move/landedDescendants.js.map +1 -0
  670. package/dist/interactions/actions/move/layout/container.js +94 -0
  671. package/dist/interactions/actions/move/layout/container.js.map +1 -0
  672. package/dist/interactions/actions/move/layout/dragged.js +58 -0
  673. package/dist/interactions/actions/move/layout/dragged.js.map +1 -0
  674. package/dist/interactions/actions/move/layout/dropPass.js +122 -0
  675. package/dist/interactions/actions/move/layout/dropPass.js.map +1 -0
  676. package/dist/interactions/actions/move/layout/exits.js +38 -0
  677. package/dist/interactions/actions/move/layout/exits.js.map +1 -0
  678. package/dist/interactions/actions/move/layout/glide.js +48 -0
  679. package/dist/interactions/actions/move/layout/glide.js.map +1 -0
  680. package/dist/interactions/actions/move/session.js +63 -0
  681. package/dist/interactions/actions/move/session.js.map +1 -0
  682. package/dist/interactions/actions/move/translate.js +61 -0
  683. package/dist/interactions/actions/move/translate.js.map +1 -0
  684. package/dist/interactions/actions/outlines/createOutlines.js +16 -63
  685. package/dist/interactions/actions/outlines/createOutlines.js.map +1 -1
  686. package/dist/interactions/actions/outlines/createOutlinesAction.js +51 -0
  687. package/dist/interactions/actions/outlines/createOutlinesAction.js.map +1 -0
  688. package/dist/interactions/actions/outlines/outlineStroke.js +72 -0
  689. package/dist/interactions/actions/outlines/outlineStroke.js.map +1 -0
  690. package/dist/interactions/actions/outlines/outlineStrokeAction.js +37 -0
  691. package/dist/interactions/actions/outlines/outlineStrokeAction.js.map +1 -0
  692. package/dist/interactions/actions/outlines/replaceWithPaths.js +54 -0
  693. package/dist/interactions/actions/outlines/replaceWithPaths.js.map +1 -0
  694. package/dist/interactions/actions/outlines/strokeRegion.js +27 -0
  695. package/dist/interactions/actions/outlines/strokeRegion.js.map +1 -0
  696. package/dist/interactions/actions/planeInput.js.map +1 -1
  697. package/dist/interactions/actions/pointerState.js +12 -0
  698. package/dist/interactions/actions/pointerState.js.map +1 -0
  699. package/dist/interactions/actions/poseDescriptorDep.js +16 -4
  700. package/dist/interactions/actions/poseDescriptorDep.js.map +1 -1
  701. package/dist/interactions/actions/poseFrame.js +25 -20
  702. package/dist/interactions/actions/poseFrame.js.map +1 -1
  703. package/dist/interactions/actions/resize/action.js +55 -0
  704. package/dist/interactions/actions/resize/action.js.map +1 -0
  705. package/dist/interactions/actions/resize/behaviors/lockAspect.js.map +1 -1
  706. package/dist/interactions/actions/resize/boxFrame.js +16 -0
  707. package/dist/interactions/actions/resize/boxFrame.js.map +1 -0
  708. package/dist/interactions/actions/resize/capture.js +85 -0
  709. package/dist/interactions/actions/resize/capture.js.map +1 -0
  710. package/dist/interactions/actions/resize/commit.js +69 -0
  711. package/dist/interactions/actions/resize/commit.js.map +1 -0
  712. package/dist/interactions/actions/resize/frame.js +74 -0
  713. package/dist/interactions/actions/resize/frame.js.map +1 -0
  714. package/dist/interactions/actions/resize/pointSnap.js +111 -0
  715. package/dist/interactions/actions/resize/pointSnap.js.map +1 -0
  716. package/dist/interactions/actions/resize/ruleBounds.js +9 -0
  717. package/dist/interactions/actions/resize/ruleBounds.js.map +1 -0
  718. package/dist/interactions/actions/resize/session.js +49 -0
  719. package/dist/interactions/actions/resize/session.js.map +1 -0
  720. package/dist/interactions/actions/resolveOverlays.js.map +1 -1
  721. package/dist/interactions/actions/resolvePreviews.js.map +1 -1
  722. package/dist/interactions/actions/rotate/action.js +56 -0
  723. package/dist/interactions/actions/rotate/action.js.map +1 -0
  724. package/dist/interactions/actions/rotate/behaviors/index.js +7 -0
  725. package/dist/interactions/actions/rotate/behaviors/index.js.map +1 -0
  726. package/dist/interactions/actions/rotate/behaviors/snapRotation.js +12 -0
  727. package/dist/interactions/actions/rotate/behaviors/snapRotation.js.map +1 -0
  728. package/dist/interactions/actions/rotate/commit.js +40 -0
  729. package/dist/interactions/actions/rotate/commit.js.map +1 -0
  730. package/dist/interactions/actions/rotate/frame.js +65 -0
  731. package/dist/interactions/actions/rotate/frame.js.map +1 -0
  732. package/dist/interactions/actions/rotate/handle.js +12 -12
  733. package/dist/interactions/actions/rotate/handle.js.map +1 -1
  734. package/dist/interactions/actions/rotate/session.js +92 -0
  735. package/dist/interactions/actions/rotate/session.js.map +1 -0
  736. package/dist/interactions/actions/selectionSubtree.js +69 -0
  737. package/dist/interactions/actions/selectionSubtree.js.map +1 -0
  738. package/dist/interactions/actions/spatialReference.js.map +1 -1
  739. package/dist/interactions/actions/useStandardActions.js +87 -78
  740. package/dist/interactions/actions/useStandardActions.js.map +1 -1
  741. package/dist/interactions/gestures/dragGesture/dragGesture.js +4 -7
  742. package/dist/interactions/gestures/dragGesture/dragGesture.js.map +1 -1
  743. package/dist/interactions/gestures/dragGesture/dragPointOf.js +23 -0
  744. package/dist/interactions/gestures/dragGesture/dragPointOf.js.map +1 -0
  745. package/dist/interactions/gestures/handleDrag/handleDrag.js +21 -26
  746. package/dist/interactions/gestures/handleDrag/handleDrag.js.map +1 -1
  747. package/dist/interactions/gestures/pointerDrag/pointerDrag.js +62 -41
  748. package/dist/interactions/gestures/pointerDrag/pointerDrag.js.map +1 -1
  749. package/dist/interactions/gestures/shared/originProjection.js +1 -1
  750. package/dist/interactions/gestures/shared/originProjection.js.map +1 -1
  751. package/dist/interactions/gestures/shared/screenTolerance.js +8 -2
  752. package/dist/interactions/gestures/shared/screenTolerance.js.map +1 -1
  753. package/dist/interactions/gestures/shared/snap.js.map +1 -1
  754. package/dist/interactions/gestures/thresholdDrag/thresholdDrag.js +8 -4
  755. package/dist/interactions/gestures/thresholdDrag/thresholdDrag.js.map +1 -1
  756. package/dist/layout/arrivals.js +20 -23
  757. package/dist/layout/arrivals.js.map +1 -1
  758. package/dist/math-CYUjoyyU.d.ts +33 -0
  759. package/dist/math.d.ts +5 -3
  760. package/dist/math.js +6 -6
  761. package/dist/mesh.d.ts +4 -268
  762. package/dist/mesh.js +3 -7
  763. package/dist/move.d.ts +14 -11
  764. package/dist/{originProjection-DEklpDc_.d.ts → originProjection-PPT88jZv.d.ts} +1 -1
  765. package/dist/patterns-builtin.d.ts +1 -118
  766. package/dist/patterns-builtin.js +2 -3
  767. package/dist/{poseDescriptor-D-OH-tu5.d.ts → poseDescriptor-Bqk-11Rl.d.ts} +26 -36
  768. package/dist/renderer.d.ts +1 -91
  769. package/dist/renderer.js +2 -18
  770. package/dist/resize.d.ts +10 -22
  771. package/dist/resize.js +6 -6
  772. package/dist/style.css +1 -1
  773. package/dist/test-hook/install.js +12 -6
  774. package/dist/test-hook/install.js.map +1 -1
  775. package/dist/test-hook/useTestHook.js +22 -0
  776. package/dist/test-hook/useTestHook.js.map +1 -0
  777. package/dist/test-seams-D0pyV3pR.d.ts +149 -0
  778. package/dist/test-seams.d.ts +4 -4
  779. package/dist/test-seams.js +2 -2
  780. package/dist/tools/builtin/bone/boneActions.js +130 -0
  781. package/dist/tools/builtin/bone/boneActions.js.map +1 -0
  782. package/dist/tools/builtin/bone/boneOverlay.js +58 -0
  783. package/dist/tools/builtin/bone/boneOverlay.js.map +1 -0
  784. package/dist/tools/builtin/bone/placedRig.js +24 -0
  785. package/dist/tools/builtin/bone/placedRig.js.map +1 -0
  786. package/dist/tools/builtin/bone/rigEditState.js +21 -0
  787. package/dist/tools/builtin/bone/rigEditState.js.map +1 -0
  788. package/dist/tools/builtin/bone/useBoneTool.js +98 -0
  789. package/dist/tools/builtin/bone/useBoneTool.js.map +1 -0
  790. package/dist/tools/builtin/ellipse/useEllipseTool.js +1 -0
  791. package/dist/tools/builtin/ellipse/useEllipseTool.js.map +1 -1
  792. package/dist/tools/builtin/eyedropper/useEyedropperTool.js.map +1 -1
  793. package/dist/tools/builtin/hand/useHandTool.js +1 -0
  794. package/dist/tools/builtin/hand/useHandTool.js.map +1 -1
  795. package/dist/tools/builtin/image/useImageTool.js.map +1 -1
  796. package/dist/tools/builtin/lasso/useLassoTool.js +11 -11
  797. package/dist/tools/builtin/lasso/useLassoTool.js.map +1 -1
  798. package/dist/tools/builtin/line/useLineTool.js +1 -0
  799. package/dist/tools/builtin/line/useLineTool.js.map +1 -1
  800. package/dist/tools/builtin/pen/usePenTool.js +198 -150
  801. package/dist/tools/builtin/pen/usePenTool.js.map +1 -1
  802. package/dist/tools/builtin/pencil/usePencilTool.js +1 -0
  803. package/dist/tools/builtin/pencil/usePencilTool.js.map +1 -1
  804. package/dist/tools/builtin/pickTopMostHit.js.map +1 -1
  805. package/dist/tools/builtin/polygon/usePolygonTool.js +13 -8
  806. package/dist/tools/builtin/polygon/usePolygonTool.js.map +1 -1
  807. package/dist/tools/builtin/rect/useRectTool.js +1 -0
  808. package/dist/tools/builtin/rect/useRectTool.js.map +1 -1
  809. package/dist/tools/builtin/select/adapterPointQuery.js +36 -0
  810. package/dist/tools/builtin/select/adapterPointQuery.js.map +1 -0
  811. package/dist/tools/builtin/select/selectionContributions.js +25 -24
  812. package/dist/tools/builtin/select/selectionContributions.js.map +1 -1
  813. package/dist/tools/builtin/select/useSelectTool.js +42 -67
  814. package/dist/tools/builtin/select/useSelectTool.js.map +1 -1
  815. package/dist/tools/builtin/shared/pointerFollower.js +17 -0
  816. package/dist/tools/builtin/shared/pointerFollower.js.map +1 -0
  817. package/dist/tools/builtin/slice/useSliceTool.js +72 -82
  818. package/dist/tools/builtin/slice/useSliceTool.js.map +1 -1
  819. package/dist/tools/builtin/star/useStarTool.js +22 -16
  820. package/dist/tools/builtin/star/useStarTool.js.map +1 -1
  821. package/dist/tools/builtin/text/useTextTool.js +9 -0
  822. package/dist/tools/builtin/text/useTextTool.js.map +1 -1
  823. package/dist/tools/builtin/weight/useWeightTool.js +77 -0
  824. package/dist/tools/builtin/weight/useWeightTool.js.map +1 -0
  825. package/dist/tools/builtin/weight/weightActions.js +112 -0
  826. package/dist/tools/builtin/weight/weightActions.js.map +1 -0
  827. package/dist/tools/builtin/weight/weightOverlay.js +61 -0
  828. package/dist/tools/builtin/weight/weightOverlay.js.map +1 -0
  829. package/dist/tools/overlayBinding.js.map +1 -1
  830. package/dist/tools/useKeybindings.js +12 -22
  831. package/dist/tools/useKeybindings.js.map +1 -1
  832. package/dist/{types-A37hYkeR.d.ts → types-CIKDwlsP.d.ts} +113 -169
  833. package/dist/util/color.js +3 -3
  834. package/dist/util/color.js.map +1 -1
  835. package/dist/util/paint.js +1 -1
  836. package/dist/util/paint.js.map +1 -1
  837. package/dist/version.js +1 -1
  838. package/package.json +28 -21
  839. package/dist/animation/colorHelpers.js +0 -135
  840. package/dist/animation/colorHelpers.js.map +0 -1
  841. package/dist/animation/colorRegistry.js +0 -37
  842. package/dist/animation/colorRegistry.js.map +0 -1
  843. package/dist/animation/engine/axes.js +0 -36
  844. package/dist/animation/engine/axes.js.map +0 -1
  845. package/dist/animation/engine/codec.js +0 -170
  846. package/dist/animation/engine/codec.js.map +0 -1
  847. package/dist/animation/engine/integrator.js +0 -12
  848. package/dist/animation/engine/integrator.js.map +0 -1
  849. package/dist/animation/loop.js +0 -62
  850. package/dist/animation/loop.js.map +0 -1
  851. package/dist/animation/observe.js +0 -23
  852. package/dist/animation/observe.js.map +0 -1
  853. package/dist/animation/rig/blendPoses.js +0 -43
  854. package/dist/animation/rig/blendPoses.js.map +0 -1
  855. package/dist/animation/rig/mirrorPose.js +0 -19
  856. package/dist/animation/rig/mirrorPose.js.map +0 -1
  857. package/dist/animation/rig/resolveSkeleton.js +0 -33
  858. package/dist/animation/rig/resolveSkeleton.js.map +0 -1
  859. package/dist/animation/rig/solveIk.js +0 -103
  860. package/dist/animation/rig/solveIk.js.map +0 -1
  861. package/dist/animation/rig/types.js +0 -12
  862. package/dist/animation/rig/types.js.map +0 -1
  863. package/dist/animation/slew.js +0 -27
  864. package/dist/animation/slew.js.map +0 -1
  865. package/dist/animation/stagger.js +0 -138
  866. package/dist/animation/stagger.js.map +0 -1
  867. package/dist/animation/timeline/booking.js +0 -106
  868. package/dist/animation/timeline/booking.js.map +0 -1
  869. package/dist/animation/timeline/createTimeline.js +0 -116
  870. package/dist/animation/timeline/createTimeline.js.map +0 -1
  871. package/dist/animation/timeline/sampleTrack.js +0 -71
  872. package/dist/animation/timeline/sampleTrack.js.map +0 -1
  873. package/dist/animation/useAnimator.js +0 -378
  874. package/dist/animation/useAnimator.js.map +0 -1
  875. package/dist/builtins-C-VgUlWI.d.ts +0 -4514
  876. package/dist/canvas/MinimapCanvas.js +0 -139
  877. package/dist/canvas/MinimapCanvas.js.map +0 -1
  878. package/dist/canvas/deps/poseComposition.js +0 -11
  879. package/dist/canvas/deps/poseComposition.js.map +0 -1
  880. package/dist/canvas/minimapMath.js +0 -80
  881. package/dist/canvas/minimapMath.js.map +0 -1
  882. package/dist/canvas/toolPreview.js +0 -39
  883. package/dist/canvas/toolPreview.js.map +0 -1
  884. package/dist/core/adapters/arrayAdapter.js +0 -85
  885. package/dist/core/adapters/arrayAdapter.js.map +0 -1
  886. package/dist/core/adapters/useArrayAdapter.js +0 -13
  887. package/dist/core/adapters/useArrayAdapter.js.map +0 -1
  888. package/dist/core/fillInPoseFrame.js +0 -102
  889. package/dist/core/fillInPoseFrame.js.map +0 -1
  890. package/dist/core/geometry/poseRotation.js +0 -58
  891. package/dist/core/geometry/poseRotation.js.map +0 -1
  892. package/dist/core/gradient.js +0 -136
  893. package/dist/core/gradient.js.map +0 -1
  894. package/dist/core/isPlainObject.js.map +0 -1
  895. package/dist/core/markerInset.js +0 -24
  896. package/dist/core/markerInset.js.map +0 -1
  897. package/dist/core/mixed.js +0 -6
  898. package/dist/core/mixed.js.map +0 -1
  899. package/dist/core/paintKinds.js +0 -156
  900. package/dist/core/paintKinds.js.map +0 -1
  901. package/dist/core/strokeMarkerShapes.js +0 -139
  902. package/dist/core/strokeMarkerShapes.js.map +0 -1
  903. package/dist/core/strokeMarkers.js +0 -28
  904. package/dist/core/strokeMarkers.js.map +0 -1
  905. package/dist/core/viewport/meanScale.js +0 -8
  906. package/dist/core/viewport/meanScale.js.map +0 -1
  907. package/dist/core/viewport/pxExtent.js +0 -42
  908. package/dist/core/viewport/pxExtent.js.map +0 -1
  909. package/dist/debug/flag.js.map +0 -1
  910. package/dist/features/cursor/paintedCursorLayer.js.map +0 -1
  911. package/dist/features/focus/gateLayer.js +0 -14
  912. package/dist/features/focus/gateLayer.js.map +0 -1
  913. package/dist/features/focus/useCanvasFocus.js +0 -29
  914. package/dist/features/focus/useCanvasFocus.js.map +0 -1
  915. package/dist/features/groups/children.js.map +0 -1
  916. package/dist/features/groups/composePose.js.map +0 -1
  917. package/dist/features/groups/nestedHit.js.map +0 -1
  918. package/dist/features/groups/unionOfChildren.js.map +0 -1
  919. package/dist/features/images/imageCache.js +0 -94
  920. package/dist/features/images/imageCache.js.map +0 -1
  921. package/dist/features/ingestion/index.js +0 -8
  922. package/dist/features/meshPaint/bake.js +0 -79
  923. package/dist/features/meshPaint/bake.js.map +0 -1
  924. package/dist/features/meshPaint/bakeCache.js +0 -59
  925. package/dist/features/meshPaint/bakeCache.js.map +0 -1
  926. package/dist/features/meshPaint/handles.js +0 -86
  927. package/dist/features/meshPaint/handles.js.map +0 -1
  928. package/dist/features/meshPaint/lazyKind.js.map +0 -1
  929. package/dist/features/meshPaint/meshPaint.js +0 -236
  930. package/dist/features/meshPaint/meshPaint.js.map +0 -1
  931. package/dist/features/meshPaint/meshShader.js +0 -6
  932. package/dist/features/meshPaint/meshShader.js.map +0 -1
  933. package/dist/features/meshPaint/register.js +0 -7
  934. package/dist/features/meshPaint/register.js.map +0 -1
  935. package/dist/features/meshPaint/surface.js +0 -110
  936. package/dist/features/meshPaint/surface.js.map +0 -1
  937. package/dist/features/minimap/actions.js +0 -53
  938. package/dist/features/minimap/actions.js.map +0 -1
  939. package/dist/features/minimap/createMinimapContribution.js +0 -96
  940. package/dist/features/minimap/createMinimapContribution.js.map +0 -1
  941. package/dist/features/minimap/layers.js +0 -103
  942. package/dist/features/minimap/layers.js.map +0 -1
  943. package/dist/features/overlays/useNodeOverlayFrame.js +0 -103
  944. package/dist/features/overlays/useNodeOverlayFrame.js.map +0 -1
  945. package/dist/features/parallax/createParallaxLayer.js +0 -26
  946. package/dist/features/parallax/createParallaxLayer.js.map +0 -1
  947. package/dist/features/parallax/createParallaxPlane.js +0 -26
  948. package/dist/features/parallax/createParallaxPlane.js.map +0 -1
  949. package/dist/features/paths/anchorEdits.js +0 -156
  950. package/dist/features/paths/anchorEdits.js.map +0 -1
  951. package/dist/features/paths/anchors.js +0 -154
  952. package/dist/features/paths/anchors.js.map +0 -1
  953. package/dist/features/paths/booleans.js +0 -2
  954. package/dist/features/paths/markerCommands.js +0 -148
  955. package/dist/features/paths/markerCommands.js.map +0 -1
  956. package/dist/features/paths/markerSites.js +0 -59
  957. package/dist/features/paths/markerSites.js.map +0 -1
  958. package/dist/features/paths/markers.js +0 -95
  959. package/dist/features/paths/markers.js.map +0 -1
  960. package/dist/features/paths/nearestAnchor.js +0 -36
  961. package/dist/features/paths/nearestAnchor.js.map +0 -1
  962. package/dist/features/paths/pathInWorld.js +0 -41
  963. package/dist/features/paths/pathInWorld.js.map +0 -1
  964. package/dist/features/paths/poseDescriptor.js +0 -39
  965. package/dist/features/paths/poseDescriptor.js.map +0 -1
  966. package/dist/features/paths/tessellate/dash.js +0 -52
  967. package/dist/features/paths/tessellate/dash.js.map +0 -1
  968. package/dist/features/paths/tessellate/insets.js +0 -32
  969. package/dist/features/paths/tessellate/insets.js.map +0 -1
  970. package/dist/features/paths/tessellate/metric.js +0 -72
  971. package/dist/features/paths/tessellate/metric.js.map +0 -1
  972. package/dist/features/paths/tessellate/stroke.js +0 -170
  973. package/dist/features/paths/tessellate/stroke.js.map +0 -1
  974. package/dist/features/paths/tessellate/vertexWidths.js +0 -32
  975. package/dist/features/paths/tessellate/vertexWidths.js.map +0 -1
  976. package/dist/features/patterns/index.js +0 -23
  977. package/dist/features/patterns/index.js.map +0 -1
  978. package/dist/features/patterns/patterns-builtin.js +0 -38
  979. package/dist/features/patterns/patterns-builtin.js.map +0 -1
  980. package/dist/features/patterns/resolveSpec.js +0 -57
  981. package/dist/features/patterns/resolveSpec.js.map +0 -1
  982. package/dist/features/patterns/tileGeometry.js +0 -158
  983. package/dist/features/patterns/tileGeometry.js.map +0 -1
  984. package/dist/features/pointer/PointerContext.js +0 -45
  985. package/dist/features/pointer/PointerContext.js.map +0 -1
  986. package/dist/features/selection/SelectionContext.js +0 -46
  987. package/dist/features/selection/SelectionContext.js.map +0 -1
  988. package/dist/features/simulation/createSimulation.js +0 -61
  989. package/dist/features/simulation/createSimulation.js.map +0 -1
  990. package/dist/features/simulation/types.js +0 -6
  991. package/dist/features/simulation/types.js.map +0 -1
  992. package/dist/features/simulation/useSimulation.js +0 -74
  993. package/dist/features/simulation/useSimulation.js.map +0 -1
  994. package/dist/features/text/domRuns.js +0 -258
  995. package/dist/features/text/domRuns.js.map +0 -1
  996. package/dist/features/text/fitTextPose.js +0 -38
  997. package/dist/features/text/fitTextPose.js.map +0 -1
  998. package/dist/features/text/hitTest.js +0 -45
  999. package/dist/features/text/hitTest.js.map +0 -1
  1000. package/dist/features/text/renderLabel.js +0 -14
  1001. package/dist/features/text/renderLabel.js.map +0 -1
  1002. package/dist/features/text/runs/effectiveRangeStyle.js +0 -66
  1003. package/dist/features/text/runs/effectiveRangeStyle.js.map +0 -1
  1004. package/dist/features/text/runs/flagRange.js +0 -53
  1005. package/dist/features/text/runs/flagRange.js.map +0 -1
  1006. package/dist/features/text/runs/rangeStyle.js +0 -135
  1007. package/dist/features/text/runs/rangeStyle.js.map +0 -1
  1008. package/dist/features/text/textCommand.js +0 -59
  1009. package/dist/features/text/textCommand.js.map +0 -1
  1010. package/dist/features/text/textToPath.js +0 -181
  1011. package/dist/features/text/textToPath.js.map +0 -1
  1012. package/dist/features/text/useTextEdit.js +0 -467
  1013. package/dist/features/text/useTextEdit.js.map +0 -1
  1014. package/dist/features/tiling/createTiledLayer.js +0 -63
  1015. package/dist/features/tiling/createTiledLayer.js.map +0 -1
  1016. package/dist/features/tiling/tiledProject.js +0 -14
  1017. package/dist/features/tiling/tiledProject.js.map +0 -1
  1018. package/dist/interactions/actions/clone/behaviors/cloneByAltDrag.js +0 -26
  1019. package/dist/interactions/actions/clone/behaviors/cloneByAltDrag.js.map +0 -1
  1020. package/dist/interactions/actions/defaults/align.js.map +0 -1
  1021. package/dist/interactions/actions/defaults/booleans.js +0 -52
  1022. package/dist/interactions/actions/defaults/booleans.js.map +0 -1
  1023. package/dist/interactions/actions/defaults/clipboard.js.map +0 -1
  1024. package/dist/interactions/actions/defaults/clone.js +0 -107
  1025. package/dist/interactions/actions/defaults/clone.js.map +0 -1
  1026. package/dist/interactions/actions/defaults/createOutlines.js +0 -47
  1027. package/dist/interactions/actions/defaults/createOutlines.js.map +0 -1
  1028. package/dist/interactions/actions/defaults/distribute.js +0 -66
  1029. package/dist/interactions/actions/defaults/distribute.js.map +0 -1
  1030. package/dist/interactions/actions/defaults/editAnchors.js.map +0 -1
  1031. package/dist/interactions/actions/defaults/flip.js +0 -119
  1032. package/dist/interactions/actions/defaults/flip.js.map +0 -1
  1033. package/dist/interactions/actions/defaults/freshNodeId.js +0 -10
  1034. package/dist/interactions/actions/defaults/freshNodeId.js.map +0 -1
  1035. package/dist/interactions/actions/defaults/insert.js +0 -288
  1036. package/dist/interactions/actions/defaults/insert.js.map +0 -1
  1037. package/dist/interactions/actions/defaults/lassoSelect.js +0 -156
  1038. package/dist/interactions/actions/defaults/lassoSelect.js.map +0 -1
  1039. package/dist/interactions/actions/defaults/move.js +0 -760
  1040. package/dist/interactions/actions/defaults/move.js.map +0 -1
  1041. package/dist/interactions/actions/defaults/resize.js +0 -335
  1042. package/dist/interactions/actions/defaults/resize.js.map +0 -1
  1043. package/dist/interactions/actions/defaults/rotate.js +0 -184
  1044. package/dist/interactions/actions/defaults/rotate.js.map +0 -1
  1045. package/dist/interactions/actions/previewOverrides.js +0 -25
  1046. package/dist/interactions/actions/previewOverrides.js.map +0 -1
  1047. package/dist/interactions/actions/resize/autoPoseDescriptor.js.map +0 -1
  1048. package/dist/math-Drrw4ewZ.d.ts +0 -160
  1049. package/dist/registerProgram-BMZRDgrh.d.ts +0 -197
  1050. package/dist/renderer/DrawCommand.js +0 -6
  1051. package/dist/renderer/DrawCommand.js.map +0 -1
  1052. package/dist/renderer/WeaselRenderer.js +0 -331
  1053. package/dist/renderer/WeaselRenderer.js.map +0 -1
  1054. package/dist/renderer/batchClip.js +0 -46
  1055. package/dist/renderer/batchClip.js.map +0 -1
  1056. package/dist/renderer/cache/GLImageCache.js +0 -64
  1057. package/dist/renderer/cache/GLImageCache.js.map +0 -1
  1058. package/dist/renderer/cache/GLMeshCache.js +0 -102
  1059. package/dist/renderer/cache/GLMeshCache.js.map +0 -1
  1060. package/dist/renderer/cache/GLTextureCache.js +0 -51
  1061. package/dist/renderer/cache/GLTextureCache.js.map +0 -1
  1062. package/dist/renderer/cache/GradientRampAtlas.js +0 -82
  1063. package/dist/renderer/cache/GradientRampAtlas.js.map +0 -1
  1064. package/dist/renderer/cache/cache.js +0 -13
  1065. package/dist/renderer/cache/cache.js.map +0 -1
  1066. package/dist/renderer/cache/markerCommandCache.js +0 -63
  1067. package/dist/renderer/cache/markerCommandCache.js.map +0 -1
  1068. package/dist/renderer/cache/outlineMeshCache.js +0 -15
  1069. package/dist/renderer/cache/outlineMeshCache.js.map +0 -1
  1070. package/dist/renderer/cache/outlineStrokeMeshCache.js +0 -36
  1071. package/dist/renderer/cache/outlineStrokeMeshCache.js.map +0 -1
  1072. package/dist/renderer/cache/strokeMeshCache.js +0 -55
  1073. package/dist/renderer/cache/strokeMeshCache.js.map +0 -1
  1074. package/dist/renderer/cullDrawCommands.js +0 -90
  1075. package/dist/renderer/cullDrawCommands.js.map +0 -1
  1076. package/dist/renderer/draw.js +0 -1135
  1077. package/dist/renderer/draw.js.map +0 -1
  1078. package/dist/renderer/drawBatch.js +0 -198
  1079. package/dist/renderer/drawBatch.js.map +0 -1
  1080. package/dist/renderer/effects/EffectTargets.js +0 -45
  1081. package/dist/renderer/effects/EffectTargets.js.map +0 -1
  1082. package/dist/renderer/effects/builtins.js +0 -31
  1083. package/dist/renderer/effects/builtins.js.map +0 -1
  1084. package/dist/renderer/effects/composite.js +0 -9
  1085. package/dist/renderer/effects/composite.js.map +0 -1
  1086. package/dist/renderer/effects/effectPrelude.js +0 -10
  1087. package/dist/renderer/effects/effectPrelude.js.map +0 -1
  1088. package/dist/renderer/effects/types.js +0 -10
  1089. package/dist/renderer/effects/types.js.map +0 -1
  1090. package/dist/renderer/glyphOutlineMesh.js +0 -67
  1091. package/dist/renderer/glyphOutlineMesh.js.map +0 -1
  1092. package/dist/renderer/index.js +0 -19
  1093. package/dist/renderer/math/color.js +0 -341
  1094. package/dist/renderer/math/color.js.map +0 -1
  1095. package/dist/renderer/math/mat3.js +0 -76
  1096. package/dist/renderer/math/mat3.js.map +0 -1
  1097. package/dist/renderer/math/patternSpace.js +0 -22
  1098. package/dist/renderer/math/patternSpace.js.map +0 -1
  1099. package/dist/renderer/math/viewToMat3.js +0 -19
  1100. package/dist/renderer/math/viewToMat3.js.map +0 -1
  1101. package/dist/renderer/paintResources.js +0 -18
  1102. package/dist/renderer/paintResources.js.map +0 -1
  1103. package/dist/renderer/paintScratch.js +0 -37
  1104. package/dist/renderer/paintScratch.js.map +0 -1
  1105. package/dist/renderer/shaders/ShaderProgram.js +0 -74
  1106. package/dist/renderer/shaders/ShaderProgram.js.map +0 -1
  1107. package/dist/renderer/shaders/batchFill.js +0 -119
  1108. package/dist/renderer/shaders/batchFill.js.map +0 -1
  1109. package/dist/renderer/shaders/customPrelude.js +0 -34
  1110. package/dist/renderer/shaders/customPrelude.js.map +0 -1
  1111. package/dist/renderer/shaders/extractUniformNames.js +0 -184
  1112. package/dist/renderer/shaders/extractUniformNames.js.map +0 -1
  1113. package/dist/renderer/shaders/glyphPaint.js +0 -61
  1114. package/dist/renderer/shaders/glyphPaint.js.map +0 -1
  1115. package/dist/renderer/shaders/gradFill.js +0 -30
  1116. package/dist/renderer/shaders/gradFill.js.map +0 -1
  1117. package/dist/renderer/shaders/imageFill.js +0 -14
  1118. package/dist/renderer/shaders/imageFill.js.map +0 -1
  1119. package/dist/renderer/shaders/pathFill.js +0 -13
  1120. package/dist/renderer/shaders/pathFill.js.map +0 -1
  1121. package/dist/renderer/shaders/patternFill.js +0 -24
  1122. package/dist/renderer/shaders/patternFill.js.map +0 -1
  1123. package/dist/renderer/shaders/registerProgram.js +0 -18
  1124. package/dist/renderer/shaders/registerProgram.js.map +0 -1
  1125. package/dist/renderer/spriteSheet.js +0 -14
  1126. package/dist/renderer/spriteSheet.js.map +0 -1
  1127. package/dist/renderer/state/GroupState.js +0 -77
  1128. package/dist/renderer/state/GroupState.js.map +0 -1
  1129. package/dist/renderer/strokeLengths.js +0 -50
  1130. package/dist/renderer/strokeLengths.js.map +0 -1
  1131. package/dist/renderer/syntheticItalic.js +0 -6
  1132. package/dist/renderer/syntheticItalic.js.map +0 -1
  1133. package/dist/renderer/textures/registerTexture.js +0 -14
  1134. package/dist/renderer/textures/registerTexture.js.map +0 -1
  1135. package/dist/scheduling/useVisibleRaf.js +0 -69
  1136. package/dist/scheduling/useVisibleRaf.js.map +0 -1
  1137. package/dist/test-seams-CuIxe0xY.d.ts +0 -356
  1138. package/dist/tools/prefs.js +0 -62
  1139. package/dist/tools/prefs.js.map +0 -1
@@ -1,119 +0,0 @@
1
- import { createTransformOp as e } from "../../../core/ops/transform.js";
2
- import { geometryDataOp as t } from "../geometryProjection.js";
3
- import { unionAABB as n } from "../../../core/geometry/unionBounds.js";
4
- import { visualBoundsViaDescriptor as r } from "../../../core/geometry/poseDescriptor.js";
5
- import { poseDescriptorOf as i } from "../poseDescriptorDep.js";
6
- import { defaultCommitAdapter as a } from "../defaultCommitAdapter.js";
7
- import { scenePoseFrame as o } from "../poseFrame.js";
8
- import { FlipXIcon as s, FlipYIcon as c } from "./icons/editIcons.js";
9
- import { requiresSelection as l } from "./requiresSelection.js";
10
- import { flipPoseAboutBounds as u, flipPoseViaDescriptor as d } from "../flip/helpers.js";
11
- import { actionReferenceSources as f, resolveSpatialReference as p } from "../spatialReference.js";
12
- import { multiply as m, rotate as h, translate as g } from "@weasel-js/geom";
13
- import { createElement as _ } from "react";
14
- //#region src/interactions/actions/defaults/flip.ts
15
- function v(e, t, n, r) {
16
- let i = t.local(n, {
17
- x: r.x + r.width / 2,
18
- y: r.y + r.height / 2,
19
- width: 0,
20
- height: 0,
21
- rotation: 0
22
- }), a = i.rotation ?? 0, o = e === "x" ? [
23
- -1,
24
- 0,
25
- 0,
26
- 1,
27
- 0,
28
- 0
29
- ] : [
30
- 1,
31
- 0,
32
- 0,
33
- -1,
34
- 0,
35
- 0
36
- ], s = m(m(h(a), o), h(-a));
37
- return m(g(i.x, i.y), m(s, g(-i.x, -i.y)));
38
- }
39
- function y(i, s, c, l, m, h, g, _, y, b) {
40
- let x = i.get();
41
- if (x.length === 0) return;
42
- let S = o(s, _), C = /* @__PURE__ */ new Map();
43
- for (let e of x) s.get(e) !== void 0 && C.set(e, S.world(e));
44
- let w = null;
45
- if (l === "union") w = n([...C.values()].map((e) => r(e, g)));
46
- else if (l !== "each" && (w = p(l, f(y, b, s, S, g)), w === null)) return;
47
- let T = [];
48
- for (let n of x) {
49
- let r = s.get(n);
50
- if (!r) continue;
51
- let i = C.get(n), a = w ? u(i, c, g, w) : d(i, c, g);
52
- T.push(e({
53
- id: n,
54
- from: r.pose,
55
- to: S.local(n, a),
56
- label: "Flip"
57
- }));
58
- let o = w ?? g.getBounds(i), l = t(h, {
59
- id: n,
60
- data: r.data,
61
- pose: r.pose
62
- }, v(c, S, n, o), "Flip");
63
- l && T.push(l);
64
- }
65
- T.length !== 0 && (m ? m(T, "Flip") : s.applyBatch(T, "Flip", a(s, i.adapterMethods)));
66
- }
67
- var b = {
68
- id: "flip",
69
- label: "Flip",
70
- group: "flip",
71
- variants: [{
72
- key: "x",
73
- label: "Flip Horizontal",
74
- icon: _(s),
75
- params: { axis: "x" }
76
- }, {
77
- key: "y",
78
- label: "Flip Vertical",
79
- icon: _(c),
80
- params: { axis: "y" }
81
- }],
82
- defaultBinding: [{
83
- spec: {
84
- kind: "key",
85
- key: ["h", "H"],
86
- mods: { shift: !0 }
87
- },
88
- opts: { params: { axis: "x" } }
89
- }, {
90
- spec: {
91
- kind: "key",
92
- key: ["v", "V"],
93
- mods: { shift: !0 }
94
- },
95
- opts: { params: { axis: "y" } }
96
- }],
97
- eligible: { capability: "transforms-selection" },
98
- requires: [
99
- "selection",
100
- "scene",
101
- "applyOps",
102
- "geometryProjection",
103
- "poseDescriptor",
104
- "poseComposition",
105
- "pointer"
106
- ],
107
- invoker: {
108
- timing: "immediate",
109
- run: (e, t) => {
110
- let n = t?.axis ?? "x", r = t?.pivot ?? "each", a = e.selection, o = e.scene, s = e.applyOps, c = e.geometryProjection;
111
- a && o && y(a, o, n, r, s, c, i(e.poseDescriptor), e.poseComposition, t, e.pointer);
112
- }
113
- },
114
- enabled: l
115
- };
116
- //#endregion
117
- export { b as flipAction };
118
-
119
- //# sourceMappingURL=flip.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"flip.js","names":["localMirror","at","frame","id","pivotWorld","theta","mirror","axis","turned","multiply","rotate","translate","flipSelection","ids","selection","scenePoseFrame","scene","poseComposition","worlds","sharedPivot","pivot","unionAABB","visualBoundsViaDescriptor","p","geom","resolveSpatialReference","actionReferenceSources","params","pointer","ops","node","world","flipped","flipPoseAboutBounds","flipPoseViaDescriptor","createTransformOp","g","dataOp","geometryDataOp","geometryProjection","applyOps","defaultCommitAdapter","flipAction","createElement","FlipXIcon","FlipYIcon","deps","poseDescriptorOf","requiresSelection"],"sources":["../../../../src/interactions/actions/defaults/flip.ts"],"sourcesContent":["import type { Scene } from 'core/scene/types';\nimport { createElement } from 'react';\nimport { FlipXIcon, FlipYIcon } from './icons/editIcons';\nimport type { Op } from 'core/ops/types';\nimport { multiply, rotate, translate, type Mat3 } from '@weasel-js/geom';\nimport { createTransformOp } from 'core/ops/transform';\nimport type { PoseDescriptor } from '../resize/geometry';\nimport { poseDescriptorOf } from '../poseDescriptorDep';\nimport {\n flipPoseAboutBounds,\n flipPoseViaDescriptor,\n type FlipAxis,\n type FlipPivot,\n} from '../flip/helpers';\nimport { unionAABB } from 'core/geometry/unionBounds';\nimport { visualBoundsViaDescriptor } from '../align/align';\nimport { scenePoseFrame, type PoseFrame } from '../poseFrame';\nimport { actionReferenceSources, resolveSpatialReference } from '../spatialReference';\nimport type { PointerContextValue } from 'features/pointer/PointerContext';\nimport type { RectPose } from 'core/scene/types';\nimport type { Action } from '@weasel-js/routing';\nimport { defaultCommitAdapter } from '../defaultCommitAdapter';\nimport { requiresSelection } from './requiresSelection';\nimport type { SelectionApi } from 'core/selection/useSelection';\nimport { geometryDataOp, type GeometryProjection } from '../geometryProjection';\n\n/**\n * The world mirror about `axis` through the center of `pivotWorld`, written in\n * the frame `id` stores its data in. `geometryProjection.transform` is given\n * the affine the node's own pose underwent, and data-held geometry is local —\n * so a world mirror has to be conjugated by the frame or an asymmetric shape\n * reflects across the wrong line while its pose lands correctly.\n *\n * The frame's turn comes back as the rotation on a rebased zero-size pose at\n * the pivot point, so no composition strategy has to expose one.\n */\nfunction localMirror(\n axis: FlipAxis,\n frame: PoseFrame<unknown>,\n id: Parameters<PoseFrame<unknown>['local']>[0],\n pivotWorld: { x: number; y: number; width: number; height: number },\n): Mat3 {\n const at = frame.local(id, {\n x: pivotWorld.x + pivotWorld.width / 2,\n y: pivotWorld.y + pivotWorld.height / 2,\n width: 0,\n height: 0,\n rotation: 0,\n }) as RectPose;\n const theta = at.rotation ?? 0;\n const mirror: Mat3 = axis === 'x' ? [-1, 0, 0, 1, 0, 0] : [1, 0, 0, -1, 0, 0];\n const turned = multiply(multiply(rotate(theta), mirror), rotate(-theta));\n return multiply(translate(at.x, at.y), multiply(turned, translate(-at.x, -at.y)));\n}\n\n/**\n * Flip the current selection in `scene` along `axis`, using the\n * `poseDescriptor` dep. Called from `flipAction.invoker.run`.\n *\n * Builds one `createTransformOp` per selected node (from = pre-flip pose,\n * to = flipped pose) and routes the batch through the consumer commit hook.\n * Mirrors `moveAction`/`nudge`'s `commitOps` helper: when `deps.applyOps` is\n * present the ops route through the consumer's history (one undo entry there);\n * otherwise they apply straight to the scene's own history via\n * `scene.applyBatch` + `defaultCommitAdapter`. Either way the whole flip is a\n * single batch → one undo entry, preserving the old `scene.batch('Flip', …)`\n * semantics exactly.\n *\n * Pivot: `'each'` (per-item own AABB) unless the caller passes `'union'`,\n * which mirrors every pose about the selection's *visual* union AABB — the\n * rotated ink extents — so items swap sides as well as reflect, or a\n * `SpatialReference`, which mirrors about the center of what it names. A rotated\n * member's own mirrored position needs no expansion: `axisAlignedBounds`\n * keeps the stored box's centre, so mirroring either box lands the same place.\n */\nfunction flipSelection(\n selection: SelectionApi,\n scene: Scene<unknown, string, unknown>,\n axis: FlipAxis,\n pivot: FlipPivot,\n applyOps: ((ops: Op[], label: string) => void) | undefined,\n geometryProjection: GeometryProjection | undefined,\n geom: PoseDescriptor<unknown>,\n poseComposition: unknown,\n params: Record<string, unknown> | undefined,\n pointer: PointerContextValue | undefined,\n): void {\n const ids = selection.get();\n if (ids.length === 0) return;\n const frame = scenePoseFrame(scene, poseComposition);\n\n const worlds = new Map<string, unknown>();\n for (const id of ids) {\n if (scene.get(id) !== undefined) worlds.set(id as string, frame.world(id));\n }\n let sharedPivot: ReturnType<typeof unionAABB> = null;\n if (pivot === 'union') {\n sharedPivot = unionAABB([...worlds.values()].map((p) => visualBoundsViaDescriptor(p, geom)));\n } else if (pivot !== 'each') {\n sharedPivot = resolveSpatialReference(pivot, actionReferenceSources(params, pointer, scene, frame, geom));\n if (sharedPivot === null) return;\n }\n\n // Read poses BEFORE building ops so each op's `from` is the pre-flip value\n // (the same value the old direct mutation captured implicitly).\n const ops: Op[] = [];\n for (const id of ids) {\n const node = scene.get(id);\n if (!node) continue;\n const world = worlds.get(id as string)!;\n const flipped = sharedPivot\n ? flipPoseAboutBounds(world, axis, geom, sharedPivot)\n : flipPoseViaDescriptor(world, axis, geom);\n ops.push(createTransformOp<unknown>({\n id: id as string,\n from: node.pose,\n to: frame.local(id, flipped),\n label: 'Flip',\n }));\n // Mirror the data-held geometry about the SAME pivot the pose flip uses,\n // so a wired geometryProjection reflects the contents in lock-step with\n // the frame. A pose-only flip of a bare-AABB pose is identity, so this\n // data op is the only way an asymmetric shape actually mirrors.\n const g = sharedPivot ?? geom.getBounds(world);\n const dataOp = geometryDataOp(\n geometryProjection,\n { id: id as string, data: node.data, pose: node.pose },\n localMirror(axis, frame, id, g),\n 'Flip',\n );\n if (dataOp) ops.push(dataOp);\n }\n if (ops.length === 0) return;\n\n if (applyOps) applyOps(ops, 'Flip');\n else scene.applyBatch(ops, 'Flip', defaultCommitAdapter(scene, selection.adapterMethods));\n}\n\n/**\n * @experimental\n * Static descriptor for the unified `flip` Action.\n *\n * Collapses the old `flip.horizontal` and `flip.vertical` pair into one action\n * with two parametric gesture bindings. The axis (`'x'` | `'y'`) is carried in\n * `opts.params.axis` and forwarded to `invoker.run` by the dispatcher, as is\n * the optional `opts.params.pivot` (a `FlipPivot`, default `'each'`).\n *\n * Requires dep-schema entries: `selection`, `scene`.\n */\nexport const flipAction: Action & { requires: string[] } = {\n id: 'flip',\n label: 'Flip',\n group: 'flip',\n variants: [\n { key: 'x', label: 'Flip Horizontal', icon: createElement(FlipXIcon), params: { axis: 'x' } },\n { key: 'y', label: 'Flip Vertical', icon: createElement(FlipYIcon), params: { axis: 'y' } },\n ],\n defaultBinding: [\n { spec: { kind: 'key', key: ['h', 'H'], mods: { shift: true } }, opts: { params: { axis: 'x' } } },\n { spec: { kind: 'key', key: ['v', 'V'], mods: { shift: true } }, opts: { params: { axis: 'y' } } },\n ],\n eligible: { capability: 'transforms-selection' },\n requires: ['selection', 'scene', 'applyOps', 'geometryProjection', 'poseDescriptor', 'poseComposition', 'pointer'],\n invoker: {\n timing: 'immediate',\n run: (deps, params) => {\n const axis = (params?.axis as FlipAxis | undefined) ?? 'x';\n const pivot = (params?.pivot as FlipPivot | undefined) ?? 'each';\n const selection = deps.selection;\n const scene = deps.scene;\n const applyOps = deps.applyOps;\n const geometryProjection = deps.geometryProjection;\n if (!selection || !scene) return;\n flipSelection(\n selection, scene, axis, pivot, applyOps, geometryProjection,\n poseDescriptorOf(deps.poseDescriptor), deps.poseComposition,\n params, deps.pointer,\n );\n },\n },\n enabled: requiresSelection,\n};\n"],"mappings":"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"}
@@ -1,10 +0,0 @@
1
- import { asNodeId as e } from "../../../core/scene/types.js";
2
- //#region src/interactions/actions/defaults/freshNodeId.ts
3
- var t = 0;
4
- function n() {
5
- return e(`n${(t++).toString(36)}-${Math.random().toString(36).slice(2, 8)}`);
6
- }
7
- //#endregion
8
- export { n as freshNodeId };
9
-
10
- //# sourceMappingURL=freshNodeId.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"freshNodeId.js","names":["counter","freshNodeId","asNodeId"],"sources":["../../../../src/interactions/actions/defaults/freshNodeId.ts"],"sourcesContent":["import type { NodeId } from 'core/scene/types';\nimport { asNodeId } from 'core/scene/types';\n\nlet counter = 0;\n\n/**\n * Mint a fresh `NodeId` for a node an action materializes itself.\n *\n * Actions that build `createInsertOp` ops can't let the scene generate the id\n * the way `scene.add(spec)` does — the op carries a whole node, so the id has\n * to exist before the op does. Mirrors the scene's own `n{counter}-{random}`\n * scheme, which `core/scene/scene.ts` keeps module-private.\n */\nexport function freshNodeId(): NodeId {\n return asNodeId(`n${(counter++).toString(36)}-${Math.random().toString(36).slice(2, 8)}`);\n}\n"],"mappings":";;AAGA,IAAIA,IAAU;AAUd,SAAgBC,IAAsB;CACpC,OAAOC,EAAS,KAAK,IAAA,CAAW,SAAS,EAAE,EAAE,GAAG,KAAK,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG;AAC1F"}
@@ -1,288 +0,0 @@
1
- import { gesturePlaneReader as e, gestureViewReader as t } from "../../gestures/shared/screenTolerance.js";
2
- import { commitGestureOps as n, readGestureLifecycle as r, reduceBehaviorEnd as i, runBehaviorCancel as a } from "../gestureLifecycle.js";
3
- import { inPlane as o, insertLayer as s } from "../planeInput.js";
4
- import { defaultCommitAdapter as c } from "../defaultCommitAdapter.js";
5
- import { shapeKindInfo as l } from "../../../core/shapeKinds.js";
6
- import { resolveParams as u } from "@weasel-js/routing";
7
- //#region src/interactions/actions/defaults/insert.ts
8
- var d = null;
9
- function f(e, t) {
10
- let n = e === "center" ? "center" : "corner";
11
- return t ? n === "center" ? "corner" : "center" : n;
12
- }
13
- function p(e, t, n, r, i) {
14
- if (i === "center") {
15
- let i = Math.abs(n - e), a = Math.abs(r - t);
16
- return {
17
- x: e - i,
18
- y: t - a,
19
- width: i * 2,
20
- height: a * 2
21
- };
22
- }
23
- return {
24
- x: Math.min(e, n),
25
- y: Math.min(t, r),
26
- width: Math.abs(n - e),
27
- height: Math.abs(r - t)
28
- };
29
- }
30
- function m(e, t) {
31
- let n = t.x - e.x, r = t.y - e.y, i = Math.hypot(n, r);
32
- if (i === 0) return t;
33
- let a = Math.PI / 12, o = Math.round(Math.atan2(r, n) / a) * a;
34
- return {
35
- x: e.x + i * Math.cos(o),
36
- y: e.y + i * Math.sin(o)
37
- };
38
- }
39
- var h = "gesture";
40
- function g(e, t) {
41
- let n = u(e.opts?.params), r = n?.kind ?? "rect", i = e.gestureCtx, a = i.origin.get(h), o = {
42
- x: e.currentX,
43
- y: e.currentY
44
- };
45
- if (r === "line" && e.shiftHeld && (o = m({
46
- x: e.startX,
47
- y: e.startY
48
- }, o)), o = e.snap(o), e.behaviors.length > 0) {
49
- i.modifiers = { ...t }, i.pointer = {
50
- worldX: e.currentX,
51
- worldY: e.currentY,
52
- clientX: 0,
53
- clientY: 0
54
- }, i.view = e.readView(), i.plane = e.readPlane(), i.current.set(h, o);
55
- let r = f(n?.originMode, e.altHeld);
56
- for (let t of e.behaviors) {
57
- let e = p(a.x, a.y, o.x, o.y, r), n = t.onMove?.(i, {
58
- start: a,
59
- current: o,
60
- bounds: e,
61
- pose: e
62
- });
63
- n && (n.start && (a = n.start), n.current && (o = n.current));
64
- }
65
- i.current.set(h, o);
66
- }
67
- e.shaped = {
68
- start: a,
69
- current: o
70
- };
71
- }
72
- function _(e, t, n) {
73
- let { start: r } = e.shaped, { current: i } = e.shaped;
74
- return t === "line" && n === "center" && (r = {
75
- x: r.x - (i.x - r.x),
76
- y: r.y - (i.y - r.y)
77
- }), {
78
- startX: r.x,
79
- startY: r.y,
80
- currentX: i.x,
81
- currentY: i.y
82
- };
83
- }
84
- function v(e, t, n, r, i, a) {
85
- let o = e?.kind ?? "rect";
86
- switch (o) {
87
- case "rect":
88
- case "ellipse": return { kind: o };
89
- case "line": return {
90
- kind: "line",
91
- a: {
92
- x: t,
93
- y: n
94
- },
95
- b: {
96
- x: r,
97
- y: i
98
- }
99
- };
100
- case "polygon": {
101
- let a = Number(e?.sides ?? 6), o = r === t && i === n ? 0 : Math.atan2(i - n, r - t), s = {
102
- kind: "polygon",
103
- sides: a,
104
- rotation: e?.rotation === void 0 ? o : Number(e.rotation)
105
- };
106
- if (e?.originMode === "center") {
107
- let e = r - t, a = i - n;
108
- s.center = {
109
- x: t,
110
- y: n
111
- }, s.radius = Math.hypot(e, a);
112
- } else e?.center !== void 0 && (s.center = e.center), e?.radius !== void 0 && (s.radius = e.radius);
113
- return s;
114
- }
115
- case "star": {
116
- let a = Number(e?.points ?? 5), o = Number(e?.innerRadiusRatio ?? .5), s = r === t && i === n ? 0 : Math.atan2(i - n, r - t), c = {
117
- kind: "star",
118
- points: a,
119
- innerRadiusRatio: o,
120
- rotation: e?.rotation === void 0 ? s : Number(e.rotation)
121
- };
122
- if (e?.originMode === "center") {
123
- let e = r - t, a = i - n;
124
- c.center = {
125
- x: t,
126
- y: n
127
- }, c.outerRadius = Math.hypot(e, a);
128
- } else e?.center !== void 0 && (c.center = e.center), e?.outerRadius !== void 0 && (c.outerRadius = e.outerRadius);
129
- return c;
130
- }
131
- case "pencil": return {
132
- kind: "pencil",
133
- samples: e?.samples ?? a ?? []
134
- };
135
- default: return {
136
- ...e ?? {},
137
- kind: o
138
- };
139
- }
140
- }
141
- var y = o({
142
- id: "insert",
143
- label: "Insert",
144
- group: "insert",
145
- eligible: { capability: "creates-shapes" },
146
- requires: [
147
- "insert",
148
- "selection",
149
- "snap",
150
- "textEdit",
151
- "scene",
152
- "applyOps",
153
- "view"
154
- ],
155
- invoker: {
156
- timing: "ongoing",
157
- start(o, s) {
158
- let m = o.deps.insert;
159
- if (!m) return {};
160
- let y = o.deps.selection;
161
- y && y.get().length > 0 && y.clear();
162
- let S = o.deps.snap, C = S ? (e) => S.point(e) : (e) => e, w = s?.behaviors ?? [], T = t(o.deps), E = e(o.deps), D = C({
163
- x: o.world.x,
164
- y: o.world.y
165
- }), O = {
166
- draggedIds: [h],
167
- origin: /* @__PURE__ */ new Map([[h, D]]),
168
- current: /* @__PURE__ */ new Map([[h, D]]),
169
- snap: null,
170
- modifiers: { ...o.modifiers },
171
- pointer: {
172
- worldX: o.world.x,
173
- worldY: o.world.y,
174
- clientX: 0,
175
- clientY: 0
176
- },
177
- view: T(),
178
- plane: E(),
179
- adapter: void 0,
180
- scratch: {}
181
- };
182
- for (let e of w) e.onStart?.(O);
183
- let k = O.origin.get(h), A = {
184
- dep: m,
185
- textEdit: o.deps.textEdit,
186
- snap: C,
187
- opts: s,
188
- behaviors: w,
189
- gestureCtx: O,
190
- readView: T,
191
- readPlane: E,
192
- shaped: {
193
- start: k,
194
- current: k
195
- },
196
- scene: o.deps.scene,
197
- applyOps: o.deps.applyOps,
198
- selection: y,
199
- startX: o.world.x,
200
- startY: o.world.y,
201
- currentX: o.world.x,
202
- currentY: o.world.y,
203
- points: o.drag?.points ?? null,
204
- altHeld: o.modifiers.alt,
205
- shiftHeld: o.modifiers.shift,
206
- open: !0,
207
- userRotation: 0
208
- };
209
- return d = A, {
210
- kind: "insert",
211
- onMove(e) {
212
- A.currentX = e.world.x, A.currentY = e.world.y, A.shiftHeld = e.modifiers.shift, A.altHeld = e.modifiers.alt, e.drag?.points && (A.points = e.drag.points), g(A, e.modifiers);
213
- },
214
- overlay() {
215
- if (!A.open) return null;
216
- let e = u(A.opts?.params), t = e?.kind ?? "rect";
217
- if (!l(t)?.insertPreview) return null;
218
- let n = f(e?.originMode, A.altHeld), r = _(A, t, n), i = p(r.startX, r.startY, r.currentX, r.currentY, n), a = v({
219
- ...e ?? {},
220
- originMode: n
221
- }, r.startX, r.startY, r.currentX, r.currentY, A.points);
222
- return x(a, A.userRotation), {
223
- kind: "insertPreview",
224
- shape: a.kind,
225
- bounds: i,
226
- extras: a,
227
- anchorPoint: {
228
- x: r.startX,
229
- y: r.startY
230
- }
231
- };
232
- },
233
- onEnd(e, t) {
234
- if (A.open = !1, d === A && (d = null), t === "cancel") {
235
- a(A.behaviors, A.gestureCtx);
236
- return;
237
- }
238
- let { dep: o, opts: s } = A, l = e.drag?.points ?? A.points, m = u(s?.params);
239
- if (A.behaviors.length > 0) {
240
- let e = i(A.behaviors, A.gestureCtx);
241
- if (e === null) return;
242
- if (e !== void 0) {
243
- A.scene && n({
244
- scene: A.scene,
245
- applyOps: A.applyOps,
246
- adapter: c(A.scene, A.selection?.adapterMethods)
247
- }, r(m, "Insert", A.behaviors), e);
248
- return;
249
- }
250
- }
251
- let h = m?.kind ?? "rect", g = f(m?.originMode, A.altHeld), { startX: y, startY: S, currentX: C, currentY: w } = _(A, h, g), T = p(y, S, C, w, g), E = v({
252
- ...m ?? {},
253
- originMode: g
254
- }, y, S, C, w, l);
255
- if (x(E, A.userRotation), !b(T, E.kind)) return;
256
- let D = o.commit(T, E);
257
- D !== null && E.kind === "text" && A.textEdit?.startEdit(String(D), { caret: 0 });
258
- }
259
- };
260
- }
261
- },
262
- enabled: () => !0
263
- }, s);
264
- function b(e, t) {
265
- return t === "pencil" ? !0 : t === "line" ? e.width !== 0 || e.height !== 0 : e.width !== 0 && e.height !== 0;
266
- }
267
- function x(e, t) {
268
- t !== 0 && (e.kind === "star" || e.kind === "polygon") && (e.rotation += t);
269
- }
270
- var S = Math.PI / 720, C = {
271
- id: "insert.adjustRotation",
272
- label: "Insert — rotate",
273
- group: "insert",
274
- eligible: { capability: "creates-shapes" },
275
- invoker: {
276
- timing: "immediate",
277
- run: (e, t) => {
278
- let n = d;
279
- if (!n || !n.open) return;
280
- let r = t?.deltaY ?? 0;
281
- r !== 0 && (n.userRotation += r * S);
282
- }
283
- }
284
- };
285
- //#endregion
286
- export { y as insertAction, C as insertRotateAction };
287
-
288
- //# sourceMappingURL=insert.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"insert.js","names":["liveInsertScratch","effectiveOriginMode","nominal","paramsOrigin","altHeld","computeBounds","originMode","dx","currentX","startX","dy","currentY","startY","snapTo15Degrees","end","start","len","step","snapped","GESTURE_KEY","shapeEndpoints","resolved","resolveParams","scratch","kind","\"kind\"","gctx","current","modifiers","mode","\"originMode\"","b","bounds","r","resolveEndpoints","buildExtras","params","sides","\"sides\"","dragAngle","extras","\"rotation\"","\"center\"","\"radius\"","pts","\"points\"","ir","\"innerRadiusRatio\"","\"outerRadius\"","\"samples\"","points","insertAction","inPlane","dep","ctx","selection","snapDep","snap","p","behaviors","opts","readView","gestureViewReader","readPlane","gesturePlaneReader","origin","gestureCtx","startPoint","moveCtx","shapeKindInfo","effectiveExtras","applyUserRotation","reason","d","o","endCtx","reduceBehaviorEnd","commitGestureOps","defaultCommitAdapter","readGestureLifecycle","isCommittableExtent","id","insertLayer","userRotation","ROTATION_SENSITIVITY","insertRotateAction","deltaY"],"sources":["../../../../src/interactions/actions/defaults/insert.ts"],"sourcesContent":["/**\n * `insertAction` — ongoing Action descriptor for drag-to-insert.\n *\n * ## Status: REAL\n *\n * Implements the drag-rect insert logic from `useInsert`:\n * - `start`: validates the `insert` dep and records the drag start point.\n * - `onMove`: tracks the live drag bounds (no scene writes).\n * - `onEnd('commit')`: derives final bounds from drag.start + drag.current;\n * calls `deps.insert.commit(bounds, kind)` to materialise the new node.\n * `kind` comes from `opts.params.kind` (set by the active tool's binding).\n * - `onEnd('cancel')`: no-op.\n *\n * ## Dependencies\n *\n * Requires `insert` dep from DepSchema:\n * `{ commit(bounds, kind): NodeId | null }`\n *\n * `<SceneCanvas>` / `<StandardActionsRegistrar>` should source this dep by\n * delegating to the scene's `add()` with a sensible default data payload for\n * the given `kind`. Override per-consumer for custom node factories.\n *\n * ## Modifiers and snapping\n *\n * Grid snapping comes from the optional `snap` dep, applied to the drag's\n * start and current point (never to freehand pencil samples). The `line`\n * kind additionally honors Shift (constrain to 15°) and reads Alt/center as\n * \"mirror the start around the pointer\" rather than \"grow a symmetric AABB\".\n * Behaviors from the binding's `opts.behaviors` (`InsertBehavior[]` — e.g.\n * `@weasel-js/guides`' `snapToGrid` and `alignInsertBehavior`) run over the two\n * points after those, the way `moveAction` runs its own: `onStart` on the\n * start point, `onMove` on each frame's proposal, `onEnd` on release, where\n * the first answer wins (`null` aborts, `Op[]` commits in place of the\n * insert). `shapeEndpoints` folds them each pump event and `resolveEndpoints`\n * reads the result, so the live preview and the committed node can't\n * disagree.\n *\n * ## What this does NOT wire (vs `useInsert`)\n *\n * - `pointInsert` fallback for click / sub-threshold drags — not wired; a\n * sub-threshold drag produces no insert.\n * - `clickOnly` mode — not applicable to the descriptor model.\n *\n * ## Live preview\n *\n * Insert produces a brand-new node that has no scene id until commit, so\n * the preview-ghost layer (`usePreviewGhostLayer`, keyed by node id) can't\n * paint a silhouette for it. Instead, the action exposes its in-flight\n * geometry via the `overlay()` surface with `kind: 'insertPreview'`. The\n * canvas's `useDispatcherOverlayLayer` rebuilds the shape using the same\n * path builders the commit-time factory uses (`rectPath`, `ellipsePath`,\n * `linePath`, `regularPolygonPath`, `starPath`, polyline / `polygonFromPoints`),\n * so the preview is geometry-faithful to the eventual node.\n *\n * Consumer-defined insert kinds (kinds the kit doesn't know how to draw)\n * skip the preview but still commit normally on release.\n *\n * ## Relationship to `useInsert`\n *\n * `useInsert` calls `adapter.commitInsert(bounds)` which returns a node and\n * dispatches a `createInsertOp`. This descriptor delegates to `deps.insert.commit`\n * which encapsulates both factory + op dispatch in one call. This keeps the\n * dep contract thin and avoids importing `createInsertOp` into the descriptor.\n */\n\nimport type { Action } from '@weasel-js/routing';\nimport type { InvocationCtx, OngoingHandle, BindingOpts, OngoingOverlay, DragSample } from '@weasel-js/routing';\nimport { resolveParams } from '@weasel-js/routing';\nimport type { InsertDep, InsertExtras } from '../depSchema';\nimport type { Op } from 'core/ops/types';\nimport type { Scene } from 'core/scene/types';\nimport type { GestureContext, InsertBehavior, InsertPoint } from '../../gestures/types';\nimport { gesturePlaneReader, gestureViewReader } from '../../gestures/shared/screenTolerance';\nimport type { View } from 'core/viewport/view';\nimport { commitGestureOps, readGestureLifecycle, reduceBehaviorEnd, runBehaviorCancel } from '../gestureLifecycle';\nimport { defaultCommitAdapter } from '../defaultCommitAdapter';\nimport type { TextEditDep } from '../depSchema';\nimport type { SelectionApi } from 'core/selection/useSelection';\nimport { shapeKindInfo } from 'core/shapeKinds';\nimport type { KitInsertShape } from 'core/shapeKinds';\nimport { inPlane, insertLayer } from '../planeInput';\nimport type { PlaneMap } from 'core/viewport/parallax';\n\n// ---------------------------------------------------------------------------\n// Internal scratch\n// ---------------------------------------------------------------------------\n\ninterface InsertScratch {\n dep: InsertDep;\n /** Text-edit dep captured at gesture start, for the text kind's\n * drop-into-the-caret step. Stashed rather than read at commit because\n * the dispatcher only builds the deps bag once, on `start` — every later\n * pump event carries `deps: {}`. */\n textEdit: TextEditDep | undefined;\n /** World-space point snapper from the `snap` dep, or identity when the\n * dep isn't registered. Applied to the drag's start and current point so\n * the live preview and the committed geometry agree. Freehand pencil\n * samples are deliberately NOT snapped — a grid-quantized freehand trail\n * is a staircase, not a stroke. */\n snap: (p: { x: number; y: number }) => { x: number; y: number };\n /** The active binding's opts — re-resolved at commit time so thunked\n * params see the latest tool state (e.g. polygon `sides` after ArrowUp). */\n opts: BindingOpts | undefined;\n /** RAW (unsnapped) drag endpoints in world space. `shapeEndpoints`\n * constrains the angle first, THEN aligns the endpoint to the grid, so\n * the documented modifier ordering holds for the preview and the commit. */\n startX: number;\n startY: number;\n currentX: number;\n currentY: number;\n /** Pointer trail accumulated by the dispatcher in world space. Same array\n * reference as `ctx.drag.points`; pencil-kind commits read from this. */\n points: ReadonlyArray<DragSample> | null;\n /** Live Alt-key state from the most recent pump event. Alt INVERTS the\n * binding's nominal `originMode` (corner → center and vice versa), so\n * the user can press / release Alt mid-drag and the preview/commit\n * flip without needing the dispatcher to re-route to a different\n * binding. Captured per-onMove from `ctx.modifiers.alt`. */\n altHeld: boolean;\n /** Live Shift-key state from the most recent pump event. Constrains the\n * `line` kind to 15° increments (the modifier the line tool documents).\n * Captured per-onMove from `ctx.modifiers.shift`. */\n shiftHeld: boolean;\n /** Cleared once `onEnd` runs so subsequent `overlay()` calls report no\n * in-flight preview (mirrors the areaSelect/lasso convention). */\n open: boolean;\n /** Behaviors from `opts.behaviors`; empty when none were bound. */\n behaviors: InsertBehavior<unknown>[];\n /** Reused gesture context handed to behaviors. Its `origin` holds the\n * start point under {@link GESTURE_KEY}, after `onStart` shaped it. */\n gestureCtx: GestureContext<unknown>;\n readView: () => View | null;\n readPlane: () => PlaneMap | null;\n /** The endpoints after Shift-constrain, the `snap` dep and the behaviors,\n * recomputed on every pump event so each behavior runs once per frame. */\n shaped: { start: InsertPoint; current: InsertPoint };\n /** Captured at `start` for committing a behavior's `Op[]`. */\n scene: Scene<unknown, string, unknown> | undefined;\n applyOps: ((ops: Op[], label: string) => void) | undefined;\n selection: SelectionApi | undefined;\n /** Accumulated user-driven rotation (radians) layered on top of any\n * drag-direction / params rotation. Driven by `insert.adjustRotation`\n * (Shift+wheel during engaged phase). Only consulted for kinds that\n * carry a `rotation` field on their extras (star / polygon today). */\n userRotation: number;\n}\n\n// Module-scoped pointer to the in-flight insert scratch. There is at most\n// one insert gesture at a time (single primary pointer) so a single ref\n// is sufficient. `insert.adjustRotation` reads this to mutate the live\n// scratch without needing handle-passing plumbing through the dispatcher.\nlet liveInsertScratch: InsertScratch | null = null;\n\n/** Resolve the effective origin mode from the binding's nominal opt\n * and live Alt state. Alt inverts: `corner` ⇄ `center`. Applies to\n * every shape kind — radial shapes (polygon/star) included; the\n * overlay paints an `anchorPoint` dot at the click so corner mode\n * reads as anchored even though no polygon vertex sits there.\n */\nfunction effectiveOriginMode(\n paramsOrigin: unknown,\n altHeld: boolean,\n): 'corner' | 'center' {\n const nominal: 'corner' | 'center' = paramsOrigin === 'center' ? 'center' : 'corner';\n if (!altHeld) return nominal;\n return nominal === 'center' ? 'corner' : 'center';\n}\n\n/** Compute the insert AABB from drag endpoints.\n * - `'corner'` (default): bounds = drag rect (top-left → bottom-right of cursor sweep).\n * - `'center'`: bounds = symmetric AABB anchored on the start point.\n * Used when the tool's Alt-modifier binding passes\n * `originMode: 'center'` (Illustrator/Figma convention). */\nfunction computeBounds(\n startX: number, startY: number,\n currentX: number, currentY: number,\n originMode: 'corner' | 'center',\n): { x: number; y: number; width: number; height: number } {\n if (originMode === 'center') {\n const dx = Math.abs(currentX - startX);\n const dy = Math.abs(currentY - startY);\n return { x: startX - dx, y: startY - dy, width: dx * 2, height: dy * 2 };\n }\n return {\n x: Math.min(startX, currentX),\n y: Math.min(startY, currentY),\n width: Math.abs(currentX - startX),\n height: Math.abs(currentY - startY),\n };\n}\n\n/** Constrain `end` to the nearest 15° increment around `start`, preserving\n * the drag length. The line tool's documented Shift behavior. */\nfunction snapTo15Degrees(\n start: { x: number; y: number },\n end: { x: number; y: number },\n): { x: number; y: number } {\n const dx = end.x - start.x;\n const dy = end.y - start.y;\n const len = Math.hypot(dx, dy);\n if (len === 0) return end;\n const step = Math.PI / 12; // 15°\n const snapped = Math.round(Math.atan2(dy, dx) / step) * step;\n return { x: start.x + len * Math.cos(snapped), y: start.y + len * Math.sin(snapped) };\n}\n\n/** The key an insert's single gesture point rides under in the behaviors'\n * `draggedIds` / `origin` / `current` — insert has no node id yet. */\nconst GESTURE_KEY = 'gesture';\n\n/**\n * Shape the raw drag endpoints, in order: the line tool's Shift-constrain\n * (on raw coords, so the locked angle survives), the `snap` dep, then each\n * behavior's `onMove`, each seeing the points the one before it returned.\n * Stored on `scratch.shaped`; `resolveEndpoints` reads it.\n */\nfunction shapeEndpoints(scratch: InsertScratch, modifiers: GestureContext<unknown>['modifiers']): void {\n const resolved = resolveParams(scratch.opts?.params);\n const kind = (resolved?.['kind'] as string | undefined) ?? 'rect';\n const gctx = scratch.gestureCtx;\n let start = gctx.origin.get(GESTURE_KEY) as InsertPoint;\n let current = { x: scratch.currentX, y: scratch.currentY };\n if (kind === 'line' && scratch.shiftHeld) {\n current = snapTo15Degrees({ x: scratch.startX, y: scratch.startY }, current);\n }\n current = scratch.snap(current);\n\n if (scratch.behaviors.length > 0) {\n gctx.modifiers = { ...modifiers };\n gctx.pointer = { worldX: scratch.currentX, worldY: scratch.currentY, clientX: 0, clientY: 0 };\n gctx.view = scratch.readView();\n gctx.plane = scratch.readPlane();\n gctx.current.set(GESTURE_KEY, current);\n const mode = effectiveOriginMode(resolved?.['originMode'], scratch.altHeld);\n for (const b of scratch.behaviors) {\n const bounds = computeBounds(start.x, start.y, current.x, current.y, mode);\n const r = b.onMove?.(gctx, { start, current, bounds, pose: bounds });\n if (!r) continue;\n if (r.start) start = r.start;\n if (r.current) current = r.current;\n }\n gctx.current.set(GESTURE_KEY, current);\n }\n scratch.shaped = { start, current };\n}\n\n/**\n * The effective endpoints: `scratch.shaped`, plus — for the `line` kind\n * only — the alt/center reading as \"mirror the start around the pointer\"\n * rather than \"grow a symmetric AABB\".\n *\n * Every geometry consumer (bounds, extras, preview) goes through this, so\n * the live overlay and the committed node can't disagree.\n */\nfunction resolveEndpoints(\n scratch: InsertScratch,\n kind: string,\n mode: 'corner' | 'center',\n): { startX: number; startY: number; currentX: number; currentY: number } {\n let { start } = scratch.shaped;\n const { current } = scratch.shaped;\n\n // A line has no area, so \"from center\" means the drag is a half-line:\n // mirror the start to the far side of the pointer.\n if (kind === 'line' && mode === 'center') {\n start = { x: start.x - (current.x - start.x), y: start.y - (current.y - start.y) };\n }\n\n return { startX: start.x, startY: start.y, currentX: current.x, currentY: current.y };\n}\n\n/** Build a typed `InsertExtras` from the static params + gesture context.\n * Kit-built-in kinds (line / polygon / star / pencil) read kind-specific\n * fields; unknown kinds pass the raw params through as `{ kind, ... }`. */\nfunction buildExtras(\n params: Record<string, unknown> | undefined,\n startX: number,\n startY: number,\n currentX: number,\n currentY: number,\n points: ReadonlyArray<DragSample> | null,\n): InsertExtras {\n const kind = ((params?.['kind'] as string | undefined) ?? 'rect');\n switch (kind) {\n case 'rect':\n case 'ellipse':\n return { kind } as InsertExtras;\n case 'line':\n // Use the live drag endpoints (not AABB) so the line preserves the\n // user's drag direction — drag from bottom-left to top-right makes a\n // line that slopes up, not the bounds diagonal.\n return { kind: 'line', a: { x: startX, y: startY }, b: { x: currentX, y: currentY } };\n case 'polygon': {\n const sides = Number(params?.['sides'] ?? 6);\n // When the tool omits rotation, point the first vertex along the\n // drag vector so dragging in a direction orients the shape that\n // way. Sub-pixel drags (no direction yet) fall back to 0.\n const dragAngle = (currentX === startX && currentY === startY)\n ? 0\n : Math.atan2(currentY - startY, currentX - startX);\n const rotation = params?.['rotation'] !== undefined\n ? Number(params['rotation'])\n : dragAngle;\n const extras: InsertExtras = { kind: 'polygon', sides, rotation };\n // Drag-from-center: tool's Alt binding passes `originMode:'center'`.\n // Compute polygon center + radius from the drag vector so the shape\n // anchors on the click point. Without this, the dep falls back to\n // inscribing in the AABB (drag-from-corner default).\n if (params?.['originMode'] === 'center') {\n const dx = currentX - startX;\n const dy = currentY - startY;\n (extras as { center?: unknown }).center = { x: startX, y: startY };\n (extras as { radius?: unknown }).radius = Math.hypot(dx, dy);\n } else {\n if (params?.['center'] !== undefined) (extras as { center?: unknown }).center = params['center'];\n if (params?.['radius'] !== undefined) (extras as { radius?: unknown }).radius = params['radius'];\n }\n return extras;\n }\n case 'star': {\n const pts = Number(params?.['points'] ?? 5);\n const ir = Number(params?.['innerRadiusRatio'] ?? 0.5);\n const dragAngle = (currentX === startX && currentY === startY)\n ? 0\n : Math.atan2(currentY - startY, currentX - startX);\n const rotation = params?.['rotation'] !== undefined\n ? Number(params['rotation'])\n : dragAngle;\n const extras: InsertExtras = { kind: 'star', points: pts, innerRadiusRatio: ir, rotation };\n if (params?.['originMode'] === 'center') {\n const dx = currentX - startX;\n const dy = currentY - startY;\n (extras as { center?: unknown }).center = { x: startX, y: startY };\n (extras as { outerRadius?: unknown }).outerRadius = Math.hypot(dx, dy);\n } else {\n if (params?.['center'] !== undefined) (extras as { center?: unknown }).center = params['center'];\n if (params?.['outerRadius'] !== undefined) (extras as { outerRadius?: unknown }).outerRadius = params['outerRadius'];\n }\n return extras;\n }\n case 'pencil':\n // Prefer tool-supplied samples (param) when present — pencil tools may\n // capture richer per-sample data (pressure/tilt). Fall back to the\n // dispatcher's accumulated pointer trail.\n return {\n kind: 'pencil',\n samples: (params?.['samples'] as ReadonlyArray<DragSample> | undefined)\n ?? points\n ?? [],\n };\n default:\n // Consumer-defined kind: pass everything through so a custom insert\n // dep can read its own fields.\n return { ...(params ?? {}), kind } as InsertExtras;\n }\n}\n\n// ---------------------------------------------------------------------------\n// Descriptor\n// ---------------------------------------------------------------------------\n\n/**\n * @experimental\n * Static descriptor for the `insert` Action.\n *\n * Requires dep-schema entry: `insert`.\n * Node `kind` is read from `opts.params.kind`; defaults to `'rect'` when absent.\n *\n * @see useInsert — the React hook this descriptor mirrors for the simple case.\n */\nexport const insertAction: Action & { requires: string[] } = inPlane({\n id: 'insert',\n label: 'Insert',\n group: 'insert',\n eligible: { capability: 'creates-shapes' },\n requires: ['insert', 'selection', 'snap', 'textEdit', 'scene', 'applyOps', 'view'],\n invoker: {\n timing: 'ongoing',\n start(ctx: InvocationCtx, opts?: BindingOpts): OngoingHandle {\n const dep = ctx.deps.insert;\n if (!dep) return {};\n\n // Starting a draw retires any prior selection — the lingering halo\n // around an unrelated node while the user is drawing a new shape is\n // just visual noise, and it primes the UX bug where a drag that\n // continues over the selected node would otherwise drive the move\n // action via fall-through. The clear is unconditional: the user has\n // committed to \"I'm making a new thing\" by engaging a creation tool.\n const selection = ctx.deps.selection;\n if (selection && selection.get().length > 0) {\n selection.clear();\n }\n\n const snapDep = ctx.deps.snap;\n const snap = snapDep\n ? (p: { x: number; y: number }) => snapDep.point(p)\n : (p: { x: number; y: number }) => p;\n const behaviors = (opts?.behaviors ?? []) as InsertBehavior<unknown>[];\n const readView = gestureViewReader(ctx.deps);\n const readPlane = gesturePlaneReader(ctx.deps);\n const origin = snap({ x: ctx.world.x, y: ctx.world.y });\n const gestureCtx: GestureContext<unknown> = {\n draggedIds: [GESTURE_KEY],\n origin: new Map<string, unknown>([[GESTURE_KEY, origin]]),\n current: new Map<string, unknown>([[GESTURE_KEY, origin]]),\n snap: null,\n modifiers: { ...ctx.modifiers },\n pointer: { worldX: ctx.world.x, worldY: ctx.world.y, clientX: 0, clientY: 0 },\n view: readView(),\n plane: readPlane(),\n // No node exists to adapt until commit; insert behaviors read points.\n adapter: undefined as unknown as GestureContext<unknown>['adapter'],\n scratch: {},\n };\n for (const b of behaviors) b.onStart?.(gestureCtx);\n const startPoint = gestureCtx.origin.get(GESTURE_KEY) as InsertPoint;\n\n const scratch: InsertScratch = {\n dep,\n textEdit: ctx.deps.textEdit,\n snap,\n opts,\n behaviors,\n gestureCtx,\n readView,\n readPlane,\n shaped: { start: startPoint, current: startPoint },\n scene: ctx.deps.scene,\n applyOps: ctx.deps.applyOps,\n selection,\n startX: ctx.world.x,\n startY: ctx.world.y,\n currentX: ctx.world.x,\n currentY: ctx.world.y,\n points: ctx.drag?.points ?? null,\n altHeld: ctx.modifiers.alt,\n shiftHeld: ctx.modifiers.shift,\n open: true,\n userRotation: 0,\n };\n liveInsertScratch = scratch;\n\n return {\n kind: 'insert',\n onMove(moveCtx: InvocationCtx): void {\n scratch.currentX = moveCtx.world.x;\n scratch.currentY = moveCtx.world.y;\n scratch.shiftHeld = moveCtx.modifiers.shift;\n // Track live Alt state for the corner ⇄ center toggle. Each\n // pointermove carries fresh modifier state from the dispatcher;\n // releasing / pressing Alt mid-drag flips the bounds mode on\n // the next move tick (true modifier-only events don't fire\n // without a cursor change).\n scratch.altHeld = moveCtx.modifiers.alt;\n // The dispatcher mutates its own per-gesture trail in place but\n // attaches the array reference to each InvocationCtx.drag — keep\n // the latest reference in case the dispatcher swaps it.\n if (moveCtx.drag?.points) scratch.points = moveCtx.drag.points;\n shapeEndpoints(scratch, moveCtx.modifiers);\n },\n overlay(): OngoingOverlay | null {\n if (!scratch.open) return null;\n // Resolve params on every overlay() so thunked params (polygon\n // sides ticking via ArrowUp mid-drag) reflect in the live preview.\n const resolved = resolveParams(scratch.opts?.params);\n const kind = (resolved?.['kind'] as string | undefined) ?? 'rect';\n // Consumer-defined kinds aren't renderable by the kit overlay —\n // skip the preview rather than emit something half-faithful.\n if (!shapeKindInfo(kind)?.insertPreview) return null;\n const mode = effectiveOriginMode(resolved?.['originMode'], scratch.altHeld);\n const pts = resolveEndpoints(scratch, kind, mode);\n const bounds = computeBounds(\n pts.startX, pts.startY, pts.currentX, pts.currentY, mode,\n );\n // Derive extras with the *effective* mode so polygon/star\n // center+radius reflect the live Alt toggle, not the binding's\n // nominal originMode.\n const effectiveExtras = buildExtras(\n { ...(resolved ?? {}), originMode: mode },\n pts.startX, pts.startY, pts.currentX, pts.currentY,\n scratch.points,\n );\n applyUserRotation(effectiveExtras, scratch.userRotation);\n return {\n kind: 'insertPreview',\n shape: effectiveExtras.kind as KitInsertShape,\n bounds,\n extras: effectiveExtras,\n // Anchor dot at the click point — chrome that sells \"this\n // is where the drag started.\" Useful for radial shapes\n // (no vertex at click) and for center mode (dot marks the\n // growth axis).\n anchorPoint: { x: pts.startX, y: pts.startY },\n };\n },\n onEnd(endCtx: InvocationCtx, reason: 'commit' | 'cancel'): void {\n scratch.open = false;\n if (liveInsertScratch === scratch) liveInsertScratch = null;\n if (reason === 'cancel') {\n runBehaviorCancel(scratch.behaviors, scratch.gestureCtx);\n return;\n }\n\n const { dep: d, opts: o } = scratch;\n const points = endCtx.drag?.points ?? scratch.points;\n\n // Resolve params at commit time so thunked params (polygon\n // `sides` adjusted mid-drag, etc.) see the latest tool state.\n const resolved = resolveParams(o?.params);\n\n if (scratch.behaviors.length > 0) {\n const r = reduceBehaviorEnd(scratch.behaviors, scratch.gestureCtx);\n if (r === null) return;\n if (r !== undefined) {\n if (scratch.scene) {\n commitGestureOps(\n {\n scene: scratch.scene,\n applyOps: scratch.applyOps,\n adapter: defaultCommitAdapter(scratch.scene, scratch.selection?.adapterMethods),\n },\n readGestureLifecycle(resolved, 'Insert', scratch.behaviors),\n r,\n );\n }\n return;\n }\n }\n\n const kind = (resolved?.['kind'] as string | undefined) ?? 'rect';\n const mode = effectiveOriginMode(resolved?.['originMode'], scratch.altHeld);\n const { startX, startY, currentX, currentY } = resolveEndpoints(scratch, kind, mode);\n const bounds = computeBounds(startX, startY, currentX, currentY, mode);\n const extras = buildExtras(\n { ...(resolved ?? {}), originMode: mode },\n startX, startY, currentX, currentY, points,\n );\n applyUserRotation(extras, scratch.userRotation);\n\n // Sub-threshold drag — no insert. The test is kind-aware because\n // \"zero size\" isn't one shape:\n // - pencil: a sample trail can be meaningful even when start ≈ end\n // (a closed loop), so no guard at all.\n // - line: has no area by construction. An axis-aligned line has a\n // zero-height (or zero-width) AABB and is perfectly valid — only\n // a zero-LENGTH drag is degenerate. (Shift-constrain makes\n // axis-aligned the common case, which is how this surfaced.)\n // - everything else: a zero extent in either axis is degenerate.\n if (!isCommittableExtent(bounds, extras.kind)) return;\n\n const id = d.commit(bounds, extras);\n\n // A freshly dragged text box is empty, so it draws nothing and the\n // tool's own `click on selected body → enterTextEdit` binding has\n // nothing visible to click. Drop straight into the caret instead —\n // which is also what every other editor does with a text tool.\n // `textEdit` is optional: without it the box is still committed,\n // exactly as before.\n //\n // Read from the scratch, not `endCtx.deps`: the dispatcher builds\n // the deps bag once, at `start`, and passes `deps: {}` on every\n // later pump event. Same reason the insert dep itself is stashed.\n if (id !== null && extras.kind === 'text') {\n scratch.textEdit?.startEdit(String(id), { caret: 0 });\n }\n },\n };\n },\n },\n /**\n * Insert is always available — no selection required. Returns `true` so the\n * dispatcher allows the action through on every drag-on-empty gesture.\n *\n * Fixed from the stale `ActionDisabledReason.SelectionRequired`\n * placeholder that was silently blocking all dispatcher-routed inserts.\n */\n enabled: () => true as const,\n}, insertLayer);\n\n/** Whether a drag produced enough extent to be worth committing, per kind.\n * See the call site in `onEnd` for why this isn't one uniform test. */\nfunction isCommittableExtent(\n bounds: { width: number; height: number },\n kind: string,\n): boolean {\n if (kind === 'pencil') return true;\n if (kind === 'line') return bounds.width !== 0 || bounds.height !== 0;\n return bounds.width !== 0 && bounds.height !== 0;\n}\n\n/** Add a user-driven rotation offset onto kinds that carry rotation. Rect\n * / ellipse / line / pencil don't expose a rotation field on their\n * extras today, so they ignore the offset. */\nfunction applyUserRotation(extras: InsertExtras, userRotation: number): void {\n if (userRotation === 0) return;\n if (extras.kind === 'star' || extras.kind === 'polygon') {\n (extras as { rotation: number }).rotation += userRotation;\n }\n}\n\n/** Radians per unit of wheel deltaY. Tuned so a typical mouse-wheel click\n * (deltaY ≈ 100) yields ~25°, while a trackpad event (deltaY ≈ 1–10)\n * yields a smooth 0.25–2.5° increment. */\nconst ROTATION_SENSITIVITY = Math.PI / 720;\n\n/**\n * @experimental\n * Companion to `insertAction` — adjusts the live insert gesture's\n * `userRotation` based on wheel deltaY. Intended to be bound to\n * Shift+wheel during the insert tool's engaged phase. No-op when no\n * insert is in flight.\n */\nexport const insertRotateAction: Action = {\n id: 'insert.adjustRotation',\n label: 'Insert — rotate',\n group: 'insert',\n eligible: { capability: 'creates-shapes' },\n invoker: {\n timing: 'immediate' as const,\n run: (_deps, params) => {\n const scratch = liveInsertScratch;\n if (!scratch || !scratch.open) return;\n const deltaY = (params as { deltaY?: number } | undefined)?.deltaY ?? 0;\n if (deltaY === 0) return;\n scratch.userRotation += deltaY * ROTATION_SENSITIVITY;\n },\n },\n};\n"],"mappings":"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"}