@weasel-js/core 1.10.1 → 1.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1431) hide show
  1. package/CHANGELOG.md +587 -0
  2. package/README.md +16 -15
  3. package/dist/WeaselProvider.js +25 -9
  4. package/dist/WeaselProvider.js.map +1 -1
  5. package/dist/affordances/composeAffordanceLayer.js +217 -140
  6. package/dist/affordances/composeAffordanceLayer.js.map +1 -1
  7. package/dist/affordances/cornerResize.js +92 -50
  8. package/dist/affordances/cornerResize.js.map +1 -1
  9. package/dist/affordances/hitAffordanceRegions.js +147 -84
  10. package/dist/affordances/hitAffordanceRegions.js.map +1 -1
  11. package/dist/affordances/pathAnchors.js +140 -65
  12. package/dist/affordances/pathAnchors.js.map +1 -1
  13. package/dist/affordances/rotateCursor.js +10 -4
  14. package/dist/affordances/rotateCursor.js.map +1 -1
  15. package/dist/affordances/rotationHandle.js +83 -60
  16. package/dist/affordances/rotationHandle.js.map +1 -1
  17. package/dist/animation/behaviors/coast.js +20 -14
  18. package/dist/animation/behaviors/coast.js.map +1 -1
  19. package/dist/animation/behaviors/coastByWrite.js +98 -70
  20. package/dist/animation/behaviors/coastByWrite.js.map +1 -1
  21. package/dist/animation/behaviors/coastOnTargets.js +115 -67
  22. package/dist/animation/behaviors/coastOnTargets.js.map +1 -1
  23. package/dist/animation/behaviors/momentum.js +88 -53
  24. package/dist/animation/behaviors/momentum.js.map +1 -1
  25. package/dist/animation/clipTargets.js +14 -7
  26. package/dist/animation/clipTargets.js.map +1 -1
  27. package/dist/animation/departures.js +116 -0
  28. package/dist/animation/departures.js.map +1 -0
  29. package/dist/animation/index.js +18 -15
  30. package/dist/animation/poseHelpers.js +147 -107
  31. package/dist/animation/poseHelpers.js.map +1 -1
  32. package/dist/animation/poseTarget.js +158 -85
  33. package/dist/animation/poseTarget.js.map +1 -1
  34. package/dist/animation/poseTransition.js +64 -0
  35. package/dist/animation/poseTransition.js.map +1 -0
  36. package/dist/animation/reflow.js +208 -120
  37. package/dist/animation/reflow.js.map +1 -1
  38. package/dist/animation/rewind.js +76 -45
  39. package/dist/animation/rewind.js.map +1 -1
  40. package/dist/animation/rig/bindRig.js +135 -82
  41. package/dist/animation/rig/bindRig.js.map +1 -1
  42. package/dist/animation/rig/rigNode.js +120 -75
  43. package/dist/animation/rig/rigNode.js.map +1 -1
  44. package/dist/animation/rig/rigSeat.js +61 -41
  45. package/dist/animation/rig/rigSeat.js.map +1 -1
  46. package/dist/animation/rig/skinBinding.js +57 -45
  47. package/dist/animation/rig/skinBinding.js.map +1 -1
  48. package/dist/animation/rig/useRig.js +44 -30
  49. package/dist/animation/rig/useRig.js.map +1 -1
  50. package/dist/animation/wrappers/animateLifecycle.js +51 -35
  51. package/dist/animation/wrappers/animateLifecycle.js.map +1 -1
  52. package/dist/animation/wrappers/animateOnSetPose.js +55 -32
  53. package/dist/animation/wrappers/animateOnSetPose.js.map +1 -1
  54. package/dist/animation/wrappers/instantPose.js +13 -8
  55. package/dist/animation/wrappers/instantPose.js.map +1 -1
  56. package/dist/animation/writtenPoseTarget.js +44 -22
  57. package/dist/animation/writtenPoseTarget.js.map +1 -1
  58. package/dist/{autoPoseDescriptor-DHg5KqaJ.d.ts → autoPoseDescriptor-CZ1eXbzY.d.ts} +1 -1
  59. package/dist/barrel/canvas.js +41 -32
  60. package/dist/barrel/chrome.js +19 -16
  61. package/dist/barrel/icons.js +6 -0
  62. package/dist/barrel/input.js +19 -18
  63. package/dist/barrel/interactions.js +40 -39
  64. package/dist/barrel/paint.js +12 -11
  65. package/dist/barrel/paths.js +39 -13
  66. package/dist/barrel/renderer.js +24 -14
  67. package/dist/barrel/routing.js +69 -58
  68. package/dist/barrel/scene.js +48 -37
  69. package/dist/barrel/text.js +10 -9
  70. package/dist/barrel/viewport.js +47 -45
  71. package/dist/canvas/Canvas.js +189 -306
  72. package/dist/canvas/Canvas.js.map +1 -1
  73. package/dist/canvas/CanvasView.js +273 -199
  74. package/dist/canvas/CanvasView.js.map +1 -1
  75. package/dist/canvas/CursorCoordsHud.js +103 -64
  76. package/dist/canvas/CursorCoordsHud.js.map +1 -1
  77. package/dist/canvas/DrawCanvas.js +68 -41
  78. package/dist/canvas/DrawCanvas.js.map +1 -1
  79. package/dist/canvas/LeanSceneCanvas.js +23 -0
  80. package/dist/canvas/LeanSceneCanvas.js.map +1 -0
  81. package/dist/canvas/ModalityHud.js +58 -43
  82. package/dist/canvas/ModalityHud.js.map +1 -1
  83. package/dist/canvas/NodeShape.js +137 -60
  84. package/dist/canvas/NodeShape.js.map +1 -1
  85. package/dist/canvas/PickHud.js +77 -59
  86. package/dist/canvas/PickHud.js.map +1 -1
  87. package/dist/canvas/SceneCanvas/ActionsProviderIfRoot.js +9 -6
  88. package/dist/canvas/SceneCanvas/ActionsProviderIfRoot.js.map +1 -1
  89. package/dist/canvas/SceneCanvas/CanvasKitProviders.js +25 -0
  90. package/dist/canvas/SceneCanvas/CanvasKitProviders.js.map +1 -0
  91. package/dist/canvas/SceneCanvas/DepRegistryProviderIfRoot.js +10 -6
  92. package/dist/canvas/SceneCanvas/DepRegistryProviderIfRoot.js.map +1 -1
  93. package/dist/canvas/SceneCanvas/DevHuds.js +47 -32
  94. package/dist/canvas/SceneCanvas/DevHuds.js.map +1 -1
  95. package/dist/canvas/SceneCanvas/PointerProviderIfRoot.js +72 -37
  96. package/dist/canvas/SceneCanvas/PointerProviderIfRoot.js.map +1 -1
  97. package/dist/canvas/SceneCanvas/SceneCanvasInput.js +110 -0
  98. package/dist/canvas/SceneCanvas/SceneCanvasInput.js.map +1 -0
  99. package/dist/canvas/SceneCanvas/brushOverlay.js +36 -0
  100. package/dist/canvas/SceneCanvas/brushOverlay.js.map +1 -0
  101. package/dist/canvas/SceneCanvas/canvasPassThrough.js +72 -0
  102. package/dist/canvas/SceneCanvas/canvasPassThrough.js.map +1 -0
  103. package/dist/canvas/SceneCanvas/contributionFrameHooks.js +54 -32
  104. package/dist/canvas/SceneCanvas/contributionFrameHooks.js.map +1 -1
  105. package/dist/canvas/SceneCanvas/coordTrace.js +36 -29
  106. package/dist/canvas/SceneCanvas/coordTrace.js.map +1 -1
  107. package/dist/canvas/SceneCanvas/defaultNodeProperties.js +318 -159
  108. package/dist/canvas/SceneCanvas/defaultNodeProperties.js.map +1 -1
  109. package/dist/canvas/SceneCanvas/defaultNodeRouting.js +39 -13
  110. package/dist/canvas/SceneCanvas/defaultNodeRouting.js.map +1 -1
  111. package/dist/canvas/SceneCanvas/dispatcherGestureBounds.js +83 -47
  112. package/dist/canvas/SceneCanvas/dispatcherGestureBounds.js.map +1 -1
  113. package/dist/canvas/SceneCanvas/features.js +83 -106
  114. package/dist/canvas/SceneCanvas/features.js.map +1 -1
  115. package/dist/canvas/SceneCanvas/insertPreviewCommands.js +80 -62
  116. package/dist/canvas/SceneCanvas/insertPreviewCommands.js.map +1 -1
  117. package/dist/canvas/SceneCanvas/mergeLayers.js +43 -0
  118. package/dist/canvas/SceneCanvas/mergeLayers.js.map +1 -0
  119. package/dist/canvas/SceneCanvas/namedPresets.js +56 -0
  120. package/dist/canvas/SceneCanvas/namedPresets.js.map +1 -0
  121. package/dist/canvas/SceneCanvas/poseGeometry.js +66 -31
  122. package/dist/canvas/SceneCanvas/poseGeometry.js.map +1 -1
  123. package/dist/canvas/SceneCanvas/poseRegistrars.js +18 -8
  124. package/dist/canvas/SceneCanvas/poseRegistrars.js.map +1 -1
  125. package/dist/canvas/SceneCanvas/presets/arrange.js +27 -0
  126. package/dist/canvas/SceneCanvas/presets/arrange.js.map +1 -0
  127. package/dist/canvas/SceneCanvas/presets/chrome.js +14 -0
  128. package/dist/canvas/SceneCanvas/presets/chrome.js.map +1 -0
  129. package/dist/canvas/SceneCanvas/presets/edit.js +59 -0
  130. package/dist/canvas/SceneCanvas/presets/edit.js.map +1 -0
  131. package/dist/canvas/SceneCanvas/presets/ingest.js +13 -0
  132. package/dist/canvas/SceneCanvas/presets/ingest.js.map +1 -0
  133. package/dist/canvas/SceneCanvas/presets/paths.js +67 -0
  134. package/dist/canvas/SceneCanvas/presets/paths.js.map +1 -0
  135. package/dist/canvas/SceneCanvas/presets/select.js +19 -0
  136. package/dist/canvas/SceneCanvas/presets/select.js.map +1 -0
  137. package/dist/canvas/SceneCanvas/presets/toolDriven.js +20 -0
  138. package/dist/canvas/SceneCanvas/presets/toolDriven.js.map +1 -0
  139. package/dist/canvas/SceneCanvas/presets/transform.js +41 -0
  140. package/dist/canvas/SceneCanvas/presets/transform.js.map +1 -0
  141. package/dist/canvas/SceneCanvas/presets/view.js +14 -0
  142. package/dist/canvas/SceneCanvas/presets/view.js.map +1 -0
  143. package/dist/canvas/SceneCanvas/props.js +19 -35
  144. package/dist/canvas/SceneCanvas/props.js.map +1 -1
  145. package/dist/canvas/SceneCanvas/scenePointQuery.js +43 -35
  146. package/dist/canvas/SceneCanvas/scenePointQuery.js.map +1 -1
  147. package/dist/canvas/SceneCanvas/shapeGeneratorProperties.js +22 -15
  148. package/dist/canvas/SceneCanvas/shapeGeneratorProperties.js.map +1 -1
  149. package/dist/canvas/SceneCanvas/toolRegistry.js +30 -15
  150. package/dist/canvas/SceneCanvas/toolRegistry.js.map +1 -1
  151. package/dist/canvas/SceneCanvas/useActionTunings.js +14 -11
  152. package/dist/canvas/SceneCanvas/useActionTunings.js.map +1 -1
  153. package/dist/canvas/SceneCanvas/useActionsPropResolver.js +68 -35
  154. package/dist/canvas/SceneCanvas/useActionsPropResolver.js.map +1 -1
  155. package/dist/canvas/SceneCanvas/useBakedScene.js +17 -0
  156. package/dist/canvas/SceneCanvas/useBakedScene.js.map +1 -0
  157. package/dist/canvas/SceneCanvas/useBuiltinRigTools.js +65 -0
  158. package/dist/canvas/SceneCanvas/useBuiltinRigTools.js.map +1 -0
  159. package/dist/canvas/SceneCanvas/useBuiltinShapeTools.js +47 -23
  160. package/dist/canvas/SceneCanvas/useBuiltinShapeTools.js.map +1 -1
  161. package/dist/canvas/SceneCanvas/useBuiltinTools.js +29 -14
  162. package/dist/canvas/SceneCanvas/useBuiltinTools.js.map +1 -1
  163. package/dist/canvas/SceneCanvas/useCanvasCamera.js +53 -38
  164. package/dist/canvas/SceneCanvas/useCanvasCamera.js.map +1 -1
  165. package/dist/canvas/SceneCanvas/useCanvasDispatcher.js +24 -14
  166. package/dist/canvas/SceneCanvas/useCanvasDispatcher.js.map +1 -1
  167. package/dist/canvas/SceneCanvas/useCanvasSelection.js +30 -12
  168. package/dist/canvas/SceneCanvas/useCanvasSelection.js.map +1 -1
  169. package/dist/canvas/SceneCanvas/useCanvasTools.js +112 -53
  170. package/dist/canvas/SceneCanvas/useCanvasTools.js.map +1 -1
  171. package/dist/canvas/SceneCanvas/useChromeAffordances.js +31 -0
  172. package/dist/canvas/SceneCanvas/useChromeAffordances.js.map +1 -0
  173. package/dist/canvas/SceneCanvas/useContributionRoles.js +107 -56
  174. package/dist/canvas/SceneCanvas/useContributionRoles.js.map +1 -1
  175. package/dist/canvas/SceneCanvas/useDepartureGhostLayer.js +64 -0
  176. package/dist/canvas/SceneCanvas/useDepartureGhostLayer.js.map +1 -0
  177. package/dist/canvas/SceneCanvas/useDispatcherOverlayLayer.js +104 -71
  178. package/dist/canvas/SceneCanvas/useDispatcherOverlayLayer.js.map +1 -1
  179. package/dist/canvas/SceneCanvas/useHeldModifiers.js +21 -14
  180. package/dist/canvas/SceneCanvas/useHeldModifiers.js.map +1 -1
  181. package/dist/canvas/SceneCanvas/useNodeAtPoint.js +21 -19
  182. package/dist/canvas/SceneCanvas/useNodeAtPoint.js.map +1 -1
  183. package/dist/canvas/SceneCanvas/useNodeKinds.js +28 -19
  184. package/dist/canvas/SceneCanvas/useNodeKinds.js.map +1 -1
  185. package/dist/canvas/SceneCanvas/usePreviewGhostLayer.js +91 -59
  186. package/dist/canvas/SceneCanvas/usePreviewGhostLayer.js.map +1 -1
  187. package/dist/canvas/SceneCanvas/useSceneCanvasHandle.js +62 -35
  188. package/dist/canvas/SceneCanvas/useSceneCanvasHandle.js.map +1 -1
  189. package/dist/canvas/SceneCanvas/useSceneCanvasLayers.js +110 -50
  190. package/dist/canvas/SceneCanvas/useSceneCanvasLayers.js.map +1 -1
  191. package/dist/canvas/SceneCanvas/useSceneCanvasPathEdit.js +30 -0
  192. package/dist/canvas/SceneCanvas/useSceneCanvasPathEdit.js.map +1 -0
  193. package/dist/canvas/SceneCanvas/useSceneCanvasTools.js +40 -0
  194. package/dist/canvas/SceneCanvas/useSceneCanvasTools.js.map +1 -0
  195. package/dist/canvas/SceneCanvas/useSceneChrome.js +100 -44
  196. package/dist/canvas/SceneCanvas/useSceneChrome.js.map +1 -1
  197. package/dist/canvas/SceneCanvas/useSceneGestureDispatcher.js +163 -0
  198. package/dist/canvas/SceneCanvas/useSceneGestureDispatcher.js.map +1 -0
  199. package/dist/canvas/SceneCanvas/useScenePicking.js +69 -0
  200. package/dist/canvas/SceneCanvas/useScenePicking.js.map +1 -0
  201. package/dist/canvas/SceneCanvas/useSceneRedrawSources.js +28 -17
  202. package/dist/canvas/SceneCanvas/useSceneRedrawSources.js.map +1 -1
  203. package/dist/canvas/SceneCanvas/useSceneSelectTool.js +159 -80
  204. package/dist/canvas/SceneCanvas/useSceneSelectTool.js.map +1 -1
  205. package/dist/canvas/SceneCanvas/useSceneSlotLayers.js +38 -26
  206. package/dist/canvas/SceneCanvas/useSceneSlotLayers.js.map +1 -1
  207. package/dist/canvas/SceneCanvas/useSceneStandardActions.js +108 -0
  208. package/dist/canvas/SceneCanvas/useSceneStandardActions.js.map +1 -0
  209. package/dist/canvas/SceneCanvas/useSelectionOverlayLayer.js +40 -27
  210. package/dist/canvas/SceneCanvas/useSelectionOverlayLayer.js.map +1 -1
  211. package/dist/canvas/SceneCanvas/useSurfaceRouting.js +29 -0
  212. package/dist/canvas/SceneCanvas/useSurfaceRouting.js.map +1 -0
  213. package/dist/canvas/SceneCanvas/useSurfaceViewInputs.js +44 -0
  214. package/dist/canvas/SceneCanvas/useSurfaceViewInputs.js.map +1 -0
  215. package/dist/canvas/SceneCanvas/useToolKeybindings.js +28 -0
  216. package/dist/canvas/SceneCanvas/useToolKeybindings.js.map +1 -0
  217. package/dist/canvas/SceneCanvas/useViewportActions.js +52 -28
  218. package/dist/canvas/SceneCanvas/useViewportActions.js.map +1 -1
  219. package/dist/canvas/SceneCanvas/worldPointAt.js +10 -4
  220. package/dist/canvas/SceneCanvas/worldPointAt.js.map +1 -1
  221. package/dist/canvas/SceneCanvas.js +274 -312
  222. package/dist/canvas/SceneCanvas.js.map +1 -1
  223. package/dist/canvas/SceneViewCanvas.js +68 -42
  224. package/dist/canvas/SceneViewCanvas.js.map +1 -1
  225. package/dist/canvas/SurfaceCanvas.js +53 -31
  226. package/dist/canvas/SurfaceCanvas.js.map +1 -1
  227. package/dist/canvas/accentColor.js +8 -5
  228. package/dist/canvas/accentColor.js.map +1 -1
  229. package/dist/canvas/adapterDerivedPath.js +33 -18
  230. package/dist/canvas/adapterDerivedPath.js.map +1 -1
  231. package/dist/canvas/adapterPickSource.js +49 -23
  232. package/dist/canvas/adapterPickSource.js.map +1 -1
  233. package/dist/canvas/affordanceAt.js +106 -50
  234. package/dist/canvas/affordanceAt.js.map +1 -1
  235. package/dist/canvas/buildSceneLayer.js +111 -80
  236. package/dist/canvas/buildSceneLayer.js.map +1 -1
  237. package/dist/canvas/buildSceneTree.js +101 -59
  238. package/dist/canvas/buildSceneTree.js.map +1 -1
  239. package/dist/canvas/canvasRenderer.js +156 -71
  240. package/dist/canvas/canvasRenderer.js.map +1 -1
  241. package/dist/canvas/colorOverrides.js +18 -10
  242. package/dist/canvas/colorOverrides.js.map +1 -1
  243. package/dist/canvas/copiesAbove.js +24 -14
  244. package/dist/canvas/copiesAbove.js.map +1 -1
  245. package/dist/canvas/defaultDrawOne.js +55 -31
  246. package/dist/canvas/defaultDrawOne.js.map +1 -1
  247. package/dist/canvas/deps/areaSelect.js +30 -12
  248. package/dist/canvas/deps/areaSelect.js.map +1 -1
  249. package/dist/canvas/deps/booleans.js +104 -0
  250. package/dist/canvas/deps/booleans.js.map +1 -0
  251. package/dist/canvas/deps/changes.js +17 -9
  252. package/dist/canvas/deps/changes.js.map +1 -1
  253. package/dist/canvas/deps/debug.js +12 -5
  254. package/dist/canvas/deps/debug.js.map +1 -1
  255. package/dist/canvas/deps/dispatchSources.js +27 -0
  256. package/dist/canvas/deps/dispatchSources.js.map +1 -0
  257. package/dist/canvas/deps/dispatcher.js +18 -7
  258. package/dist/canvas/deps/dispatcher.js.map +1 -1
  259. package/dist/canvas/deps/editAnchors.js +253 -63
  260. package/dist/canvas/deps/editAnchors.js.map +1 -1
  261. package/dist/canvas/deps/geometryProjection.js +13 -7
  262. package/dist/canvas/deps/geometryProjection.js.map +1 -1
  263. package/dist/canvas/deps/hitTestArea.js +78 -53
  264. package/dist/canvas/deps/hitTestArea.js.map +1 -1
  265. package/dist/canvas/deps/ingestion.js +18 -13
  266. package/dist/canvas/deps/ingestion.js.map +1 -1
  267. package/dist/canvas/deps/insert.js +176 -116
  268. package/dist/canvas/deps/insert.js.map +1 -1
  269. package/dist/canvas/deps/kitSettings.js +16 -0
  270. package/dist/canvas/deps/kitSettings.js.map +1 -0
  271. package/dist/canvas/deps/lassoSelect.js +25 -13
  272. package/dist/canvas/deps/lassoSelect.js.map +1 -1
  273. package/dist/canvas/deps/layout.js +32 -20
  274. package/dist/canvas/deps/layout.js.map +1 -1
  275. package/dist/canvas/deps/nodeAtPoint.js +28 -14
  276. package/dist/canvas/deps/nodeAtPoint.js.map +1 -1
  277. package/dist/canvas/deps/pathLeaf.js +66 -0
  278. package/dist/canvas/deps/pathLeaf.js.map +1 -0
  279. package/dist/canvas/deps/pathLeafDeps.js +13 -0
  280. package/dist/canvas/deps/pathLeafDeps.js.map +1 -0
  281. package/dist/canvas/deps/poseDescriptor.js +10 -8
  282. package/dist/canvas/deps/poseDescriptor.js.map +1 -1
  283. package/dist/canvas/deps/previewPaths.js +44 -0
  284. package/dist/canvas/deps/previewPaths.js.map +1 -0
  285. package/dist/canvas/deps/resizePolicy.js +32 -25
  286. package/dist/canvas/deps/resizePolicy.js.map +1 -1
  287. package/dist/canvas/deps/slice.js +73 -87
  288. package/dist/canvas/deps/slice.js.map +1 -1
  289. package/dist/canvas/deps/snap.js +58 -7
  290. package/dist/canvas/deps/snap.js.map +1 -1
  291. package/dist/canvas/deps/surface.js +30 -0
  292. package/dist/canvas/deps/surface.js.map +1 -0
  293. package/dist/canvas/deps/textEdit.js +21 -13
  294. package/dist/canvas/deps/textEdit.js.map +1 -1
  295. package/dist/canvas/deps/view.js +46 -34
  296. package/dist/canvas/deps/view.js.map +1 -1
  297. package/dist/canvas/derivedPath.js +154 -70
  298. package/dist/canvas/derivedPath.js.map +1 -1
  299. package/dist/canvas/doubleClickTarget.js +20 -0
  300. package/dist/canvas/doubleClickTarget.js.map +1 -0
  301. package/dist/canvas/drawEnvelope.js +26 -17
  302. package/dist/canvas/drawEnvelope.js.map +1 -1
  303. package/dist/canvas/drawnBounds.js +116 -0
  304. package/dist/canvas/drawnBounds.js.map +1 -0
  305. package/dist/canvas/getNodeAtPoint.js +11 -8
  306. package/dist/canvas/getNodeAtPoint.js.map +1 -1
  307. package/dist/canvas/hostAnchor.js +35 -18
  308. package/dist/canvas/hostAnchor.js.map +1 -1
  309. package/dist/canvas/hud.module.js +25 -14
  310. package/dist/canvas/hud.module.js.map +1 -1
  311. package/dist/canvas/insertPreviewExtent.js +82 -61
  312. package/dist/canvas/insertPreviewExtent.js.map +1 -1
  313. package/dist/canvas/kitRequirements.js +154 -115
  314. package/dist/canvas/kitRequirements.js.map +1 -1
  315. package/dist/canvas/layerHover.js +28 -0
  316. package/dist/canvas/layerHover.js.map +1 -0
  317. package/dist/canvas/layerOrder.js +107 -57
  318. package/dist/canvas/layerOrder.js.map +1 -1
  319. package/dist/canvas/layerSlots.js +16 -9
  320. package/dist/canvas/layerSlots.js.map +1 -1
  321. package/dist/canvas/mountedCanvases.js +23 -13
  322. package/dist/canvas/mountedCanvases.js.map +1 -1
  323. package/dist/canvas/nodeShapes/derivedPainter.js +65 -25
  324. package/dist/canvas/nodeShapes/derivedPainter.js.map +1 -1
  325. package/dist/canvas/nodeShapes/imagePainter.js +69 -53
  326. package/dist/canvas/nodeShapes/imagePainter.js.map +1 -1
  327. package/dist/canvas/nodeShapes/measurePainter.js +58 -0
  328. package/dist/canvas/nodeShapes/measurePainter.js.map +1 -0
  329. package/dist/canvas/nodeShapes/memo.js +16 -5
  330. package/dist/canvas/nodeShapes/memo.js.map +1 -1
  331. package/dist/canvas/nodeShapes/nodePaint.js +125 -46
  332. package/dist/canvas/nodeShapes/nodePaint.js.map +1 -1
  333. package/dist/canvas/nodeShapes/pathPainter.js +41 -27
  334. package/dist/canvas/nodeShapes/pathPainter.js.map +1 -1
  335. package/dist/canvas/nodeShapes/poseBox.js +20 -13
  336. package/dist/canvas/nodeShapes/poseBox.js.map +1 -1
  337. package/dist/canvas/nodeShapes/rectFallbackPainter.js +26 -22
  338. package/dist/canvas/nodeShapes/rectFallbackPainter.js.map +1 -1
  339. package/dist/canvas/nodeShapes/shapePainter.js +67 -46
  340. package/dist/canvas/nodeShapes/shapePainter.js.map +1 -1
  341. package/dist/canvas/nodeShapes/strokedBounds.js +177 -0
  342. package/dist/canvas/nodeShapes/strokedBounds.js.map +1 -0
  343. package/dist/canvas/nodeShapes/textPainter.js +170 -37
  344. package/dist/canvas/nodeShapes/textPainter.js.map +1 -1
  345. package/dist/canvas/overChildren.js +29 -18
  346. package/dist/canvas/overChildren.js.map +1 -1
  347. package/dist/canvas/overlayRoleStrokes.js +20 -3
  348. package/dist/canvas/overlayRoleStrokes.js.map +1 -1
  349. package/dist/canvas/paintCull.js +24 -12
  350. package/dist/canvas/paintCull.js.map +1 -1
  351. package/dist/canvas/paintedCursorLayer.js +59 -35
  352. package/dist/canvas/paintedCursorLayer.js.map +1 -1
  353. package/dist/canvas/pathOverlay.js +63 -0
  354. package/dist/canvas/pathOverlay.js.map +1 -0
  355. package/dist/canvas/pickReach.js +34 -17
  356. package/dist/canvas/pickReach.js.map +1 -1
  357. package/dist/canvas/pickWalk.js +151 -102
  358. package/dist/canvas/pickWalk.js.map +1 -1
  359. package/dist/canvas/planeClips.js +39 -22
  360. package/dist/canvas/planeClips.js.map +1 -1
  361. package/dist/canvas/poseCascade.js +51 -27
  362. package/dist/canvas/poseCascade.js.map +1 -1
  363. package/dist/canvas/poseRotation.js +24 -14
  364. package/dist/canvas/poseRotation.js.map +1 -1
  365. package/dist/canvas/rasterReadback.js +23 -15
  366. package/dist/canvas/rasterReadback.js.map +1 -1
  367. package/dist/canvas/rasterToPng.js +21 -15
  368. package/dist/canvas/rasterToPng.js.map +1 -1
  369. package/dist/canvas/renderDebugSnapshot.js +36 -19
  370. package/dist/canvas/renderDebugSnapshot.js.map +1 -1
  371. package/dist/canvas/renderNeeds.js +33 -18
  372. package/dist/canvas/renderNeeds.js.map +1 -1
  373. package/dist/canvas/renderSceneToPixels.js +202 -87
  374. package/dist/canvas/renderSceneToPixels.js.map +1 -1
  375. package/dist/canvas/sceneAdapter.js +96 -75
  376. package/dist/canvas/sceneAdapter.js.map +1 -1
  377. package/dist/canvas/sceneClipboard.js +141 -92
  378. package/dist/canvas/sceneClipboard.js.map +1 -1
  379. package/dist/canvas/sceneLayerPaint.js +56 -27
  380. package/dist/canvas/sceneLayerPaint.js.map +1 -1
  381. package/dist/canvas/sceneSlotWiring.js +24 -14
  382. package/dist/canvas/sceneSlotWiring.js.map +1 -1
  383. package/dist/canvas/sceneViewRender.js +85 -49
  384. package/dist/canvas/sceneViewRender.js.map +1 -1
  385. package/dist/canvas/slopsDebugLayer.js +58 -49
  386. package/dist/canvas/slopsDebugLayer.js.map +1 -1
  387. package/dist/canvas/surfaceContribution.js +22 -10
  388. package/dist/canvas/surfaceContribution.js.map +1 -1
  389. package/dist/canvas/useCanvasElements.js +31 -0
  390. package/dist/canvas/useCanvasElements.js.map +1 -0
  391. package/dist/canvas/useCanvasHandle.js +69 -0
  392. package/dist/canvas/useCanvasHandle.js.map +1 -0
  393. package/dist/canvas/useCanvasPaint.js +91 -0
  394. package/dist/canvas/useCanvasPaint.js.map +1 -0
  395. package/dist/canvas/useCanvasRenderer.js +45 -23
  396. package/dist/canvas/useCanvasRenderer.js.map +1 -1
  397. package/dist/canvas/useCanvasSurface.js +41 -23
  398. package/dist/canvas/useCanvasSurface.js.map +1 -1
  399. package/dist/canvas/useCanvasView.js +80 -48
  400. package/dist/canvas/useCanvasView.js.map +1 -1
  401. package/dist/canvas/useClientToWorld.js +27 -0
  402. package/dist/canvas/useClientToWorld.js.map +1 -0
  403. package/dist/canvas/useExtraLayers.js +45 -0
  404. package/dist/canvas/useExtraLayers.js.map +1 -0
  405. package/dist/canvas/useFrameLoop.js +109 -49
  406. package/dist/canvas/useFrameLoop.js.map +1 -1
  407. package/dist/canvas/useHitObserver.js +22 -15
  408. package/dist/canvas/useHitObserver.js.map +1 -1
  409. package/dist/canvas/useHostAnchor.js +83 -53
  410. package/dist/canvas/useHostAnchor.js.map +1 -1
  411. package/dist/canvas/useLateContentRedraw.js +21 -14
  412. package/dist/canvas/useLateContentRedraw.js.map +1 -1
  413. package/dist/canvas/useLayerStack.js +72 -0
  414. package/dist/canvas/useLayerStack.js.map +1 -0
  415. package/dist/canvas/usePaintedCursor.js +28 -0
  416. package/dist/canvas/usePaintedCursor.js.map +1 -0
  417. package/dist/canvas/useRedrawOn.js +24 -14
  418. package/dist/canvas/useRedrawOn.js.map +1 -1
  419. package/dist/canvas/useSceneAdapter.js +21 -16
  420. package/dist/canvas/useSceneAdapter.js.map +1 -1
  421. package/dist/canvas/useSceneLayerList.js +15 -7
  422. package/dist/canvas/useSceneLayerList.js.map +1 -1
  423. package/dist/canvas/useSurfaceInput.js +46 -27
  424. package/dist/canvas/useSurfaceInput.js.map +1 -1
  425. package/dist/canvas/useSurfaceSize.js +43 -0
  426. package/dist/canvas/useSurfaceSize.js.map +1 -0
  427. package/dist/canvas/useToolCursor.js +30 -21
  428. package/dist/canvas/useToolCursor.js.map +1 -1
  429. package/dist/canvas/useViewHelpers.js +112 -61
  430. package/dist/canvas/useViewHelpers.js.map +1 -1
  431. package/dist/canvas/useViewLayerGate.js +29 -0
  432. package/dist/canvas/useViewLayerGate.js.map +1 -0
  433. package/dist/canvas/useViewNesting.js +104 -0
  434. package/dist/canvas/useViewNesting.js.map +1 -0
  435. package/dist/canvas/useViewRegistrySurface.js +44 -0
  436. package/dist/canvas/useViewRegistrySurface.js.map +1 -0
  437. package/dist/canvas/viewInputs.js +14 -11
  438. package/dist/canvas/viewInputs.js.map +1 -1
  439. package/dist/canvas/viewRegistry.js +140 -42
  440. package/dist/canvas/viewRegistry.js.map +1 -1
  441. package/dist/canvas/watchElementMove.js +71 -33
  442. package/dist/canvas/watchElementMove.js.map +1 -1
  443. package/dist/canvas/wrapNodeOutput.js +20 -13
  444. package/dist/canvas/wrapNodeOutput.js.map +1 -1
  445. package/dist/clipboard.d.ts +7 -3
  446. package/dist/clipboard.js +4 -3
  447. package/dist/{clone-C0eADtS0.d.ts → clone-DZDrfIlU.d.ts} +20 -53
  448. package/dist/clone.d.ts +5 -4
  449. package/dist/core/adapters/testing/rootsTree.js +17 -0
  450. package/dist/core/adapters/testing/rootsTree.js.map +1 -0
  451. package/dist/core/applyOps.js +23 -7
  452. package/dist/core/applyOps.js.map +1 -1
  453. package/dist/core/device/index.js +6 -5
  454. package/dist/core/device/targets.js +29 -8
  455. package/dist/core/device/targets.js.map +1 -1
  456. package/dist/core/device/useDeviceProfile.js +86 -52
  457. package/dist/core/device/useDeviceProfile.js.map +1 -1
  458. package/dist/core/device/useTargetBasePx.js +23 -0
  459. package/dist/core/device/useTargetBasePx.js.map +1 -0
  460. package/dist/core/device/watchDevicePixelRatio.js +27 -10
  461. package/dist/core/device/watchDevicePixelRatio.js.map +1 -1
  462. package/dist/core/geometry/autoPoseDescriptor.js +38 -24
  463. package/dist/core/geometry/autoPoseDescriptor.js.map +1 -1
  464. package/dist/core/geometry/inkExtents.js +60 -0
  465. package/dist/core/geometry/inkExtents.js.map +1 -0
  466. package/dist/core/geometry/pathPoseDescriptor.js +101 -76
  467. package/dist/core/geometry/pathPoseDescriptor.js.map +1 -1
  468. package/dist/core/geometry/poseDescriptor.js +199 -136
  469. package/dist/core/geometry/poseDescriptor.js.map +1 -1
  470. package/dist/core/geometry/regionHit.js +127 -79
  471. package/dist/core/geometry/regionHit.js.map +1 -1
  472. package/dist/core/geometry/targetFrame.js +84 -60
  473. package/dist/core/geometry/targetFrame.js.map +1 -1
  474. package/dist/core/geometry/unionBounds.js +103 -48
  475. package/dist/core/geometry/unionBounds.js.map +1 -1
  476. package/dist/core/isPlainObject.js +3 -2
  477. package/dist/core/layers/backgroundFill.js +23 -15
  478. package/dist/core/layers/backgroundFill.js.map +1 -1
  479. package/dist/core/layers/children.js +16 -13
  480. package/dist/core/layers/children.js.map +1 -1
  481. package/dist/core/layers/gateLayer.js +24 -9
  482. package/dist/core/layers/gateLayer.js.map +1 -1
  483. package/dist/core/layers/layerGroup.js +42 -29
  484. package/dist/core/layers/layerGroup.js.map +1 -1
  485. package/dist/core/layers/redrawSource.js +15 -0
  486. package/dist/core/layers/redrawSource.js.map +1 -0
  487. package/dist/core/layers/render.js +183 -93
  488. package/dist/core/layers/render.js.map +1 -1
  489. package/dist/core/layers/retain.js +38 -0
  490. package/dist/core/layers/retain.js.map +1 -0
  491. package/dist/core/ops/arrange.js +30 -19
  492. package/dist/core/ops/arrange.js.map +1 -1
  493. package/dist/core/ops/create.js +32 -23
  494. package/dist/core/ops/create.js.map +1 -1
  495. package/dist/core/ops/createHistory.js +23 -14
  496. package/dist/core/ops/createHistory.js.map +1 -1
  497. package/dist/core/ops/delete.js +80 -53
  498. package/dist/core/ops/delete.js.map +1 -1
  499. package/dist/core/ops/nodeFlags.js +44 -0
  500. package/dist/core/ops/nodeFlags.js.map +1 -0
  501. package/dist/core/ops/registry.js +26 -11
  502. package/dist/core/ops/registry.js.map +1 -1
  503. package/dist/core/ops/reorder/algorithms.js +62 -38
  504. package/dist/core/ops/reorder/algorithms.js.map +1 -1
  505. package/dist/core/ops/reorder/index.js +124 -84
  506. package/dist/core/ops/reorder/index.js.map +1 -1
  507. package/dist/core/ops/reorder/setChildOrder.js +32 -23
  508. package/dist/core/ops/reorder/setChildOrder.js.map +1 -1
  509. package/dist/core/ops/reparent.js +63 -37
  510. package/dist/core/ops/reparent.js.map +1 -1
  511. package/dist/core/ops/select.js +23 -20
  512. package/dist/core/ops/select.js.map +1 -1
  513. package/dist/core/ops/setData.js +23 -21
  514. package/dist/core/ops/setData.js.map +1 -1
  515. package/dist/core/ops/setLayer.js +26 -21
  516. package/dist/core/ops/setLayer.js.map +1 -1
  517. package/dist/core/ops/setLayout.js +27 -18
  518. package/dist/core/ops/setLayout.js.map +1 -1
  519. package/dist/core/ops/setPath.js +60 -41
  520. package/dist/core/ops/setPath.js.map +1 -1
  521. package/dist/core/ops/setText.js +26 -21
  522. package/dist/core/ops/setText.js.map +1 -1
  523. package/dist/core/ops/slot.js +36 -22
  524. package/dist/core/ops/slot.js.map +1 -1
  525. package/dist/core/ops/transform.js +35 -28
  526. package/dist/core/ops/transform.js.map +1 -1
  527. package/dist/core/pages/fitViewToPage.js +13 -11
  528. package/dist/core/pages/fitViewToPage.js.map +1 -1
  529. package/dist/core/pages/pages.js +73 -42
  530. package/dist/core/pages/pages.js.map +1 -1
  531. package/dist/core/pages/pagesLayer.js +19 -13
  532. package/dist/core/pages/pagesLayer.js.map +1 -1
  533. package/dist/core/paint/meshKind.js +16 -11
  534. package/dist/core/paint/meshKind.js.map +1 -1
  535. package/dist/core/paint/meshKindLazy.js +1 -1
  536. package/dist/core/paint/meshKindLazy.js.map +1 -1
  537. package/dist/core/paint/paintKindEntry.js +13 -4
  538. package/dist/core/paint/paintKindEntry.js.map +1 -1
  539. package/dist/core/paint/paintKinds.js +149 -88
  540. package/dist/core/paint/paintKinds.js.map +1 -1
  541. package/dist/core/paint/registerMesh.js +6 -4
  542. package/dist/core/paint/registerMesh.js.map +1 -1
  543. package/dist/core/scene/NodeProperties.js +15 -10
  544. package/dist/core/scene/NodeProperties.js.map +1 -1
  545. package/dist/core/scene/NodeRouting.js +16 -12
  546. package/dist/core/scene/NodeRouting.js.map +1 -1
  547. package/dist/core/scene/annotation.js +28 -0
  548. package/dist/core/scene/annotation.js.map +1 -0
  549. package/dist/core/scene/appliedLog.js +31 -23
  550. package/dist/core/scene/appliedLog.js.map +1 -1
  551. package/dist/core/scene/arrivalWindow.js +120 -75
  552. package/dist/core/scene/arrivalWindow.js.map +1 -1
  553. package/dist/core/scene/arrivals.js +17 -6
  554. package/dist/core/scene/arrivals.js.map +1 -1
  555. package/dist/core/scene/boundOps.js +42 -23
  556. package/dist/core/scene/boundOps.js.map +1 -1
  557. package/dist/core/scene/composeFrame.js +51 -21
  558. package/dist/core/scene/composeFrame.js.map +1 -1
  559. package/dist/core/scene/composePose.js +114 -62
  560. package/dist/core/scene/composePose.js.map +1 -1
  561. package/dist/core/scene/depFrame.js +94 -0
  562. package/dist/core/scene/depFrame.js.map +1 -0
  563. package/dist/core/scene/depMemo.js +44 -19
  564. package/dist/core/scene/depMemo.js.map +1 -1
  565. package/dist/core/scene/dependents.js +73 -45
  566. package/dist/core/scene/dependents.js.map +1 -1
  567. package/dist/core/scene/derivedParts.js +58 -0
  568. package/dist/core/scene/derivedParts.js.map +1 -0
  569. package/dist/core/scene/derivedPath.js +52 -22
  570. package/dist/core/scene/derivedPath.js.map +1 -1
  571. package/dist/core/scene/editMode.js +11 -11
  572. package/dist/core/scene/editMode.js.map +1 -1
  573. package/dist/core/scene/effectivePose.js +167 -51
  574. package/dist/core/scene/effectivePose.js.map +1 -1
  575. package/dist/core/scene/fieldEdits.js +95 -75
  576. package/dist/core/scene/fieldEdits.js.map +1 -1
  577. package/dist/core/scene/historyFacade.js +126 -87
  578. package/dist/core/scene/historyFacade.js.map +1 -1
  579. package/dist/core/scene/historyForm.js +7 -3
  580. package/dist/core/scene/historyForm.js.map +1 -1
  581. package/dist/core/scene/kitOps.js +203 -131
  582. package/dist/core/scene/kitOps.js.map +1 -1
  583. package/dist/core/scene/kitRegistry.js +49 -22
  584. package/dist/core/scene/kitRegistry.js.map +1 -1
  585. package/dist/core/scene/layerStack.js +123 -92
  586. package/dist/core/scene/layerStack.js.map +1 -1
  587. package/dist/core/scene/layoutPass.js +118 -72
  588. package/dist/core/scene/layoutPass.js.map +1 -1
  589. package/dist/core/scene/lockGuard.js +32 -24
  590. package/dist/core/scene/lockGuard.js.map +1 -1
  591. package/dist/core/scene/minSize.js +17 -0
  592. package/dist/core/scene/minSize.js.map +1 -0
  593. package/dist/core/scene/nestedHit.js +45 -31
  594. package/dist/core/scene/nestedHit.js.map +1 -1
  595. package/dist/core/scene/nodeFlags.js +43 -0
  596. package/dist/core/scene/nodeFlags.js.map +1 -0
  597. package/dist/core/scene/nodeFnFields.js +58 -41
  598. package/dist/core/scene/nodeFnFields.js.map +1 -1
  599. package/dist/core/scene/nodeGates.js +58 -0
  600. package/dist/core/scene/nodeGates.js.map +1 -0
  601. package/dist/core/scene/nodeMemo.js +92 -40
  602. package/dist/core/scene/nodeMemo.js.map +1 -1
  603. package/dist/core/scene/nodeStore.js +179 -99
  604. package/dist/core/scene/nodeStore.js.map +1 -1
  605. package/dist/core/scene/notifier.js +30 -19
  606. package/dist/core/scene/notifier.js.map +1 -1
  607. package/dist/core/scene/opTable.js +42 -36
  608. package/dist/core/scene/opTable.js.map +1 -1
  609. package/dist/core/scene/outerOps.js +49 -43
  610. package/dist/core/scene/outerOps.js.map +1 -1
  611. package/dist/core/scene/pathEffects/blend.js +80 -0
  612. package/dist/core/scene/pathEffects/blend.js.map +1 -0
  613. package/dist/core/scene/pathEffects/derive.js +112 -0
  614. package/dist/core/scene/pathEffects/derive.js.map +1 -0
  615. package/dist/core/scene/pathEffects/effects.js +40 -0
  616. package/dist/core/scene/pathEffects/effects.js.map +1 -0
  617. package/dist/core/scene/poseFeed.js +95 -60
  618. package/dist/core/scene/poseFeed.js.map +1 -1
  619. package/dist/core/scene/poseHold.js +33 -24
  620. package/dist/core/scene/poseHold.js.map +1 -1
  621. package/dist/core/scene/poseOverrides.js +86 -49
  622. package/dist/core/scene/poseOverrides.js.map +1 -1
  623. package/dist/core/scene/poseRemovals.js +58 -0
  624. package/dist/core/scene/poseRemovals.js.map +1 -0
  625. package/dist/core/scene/poseSnapshot.js +62 -41
  626. package/dist/core/scene/poseSnapshot.js.map +1 -1
  627. package/dist/core/scene/poseWrites.js +151 -0
  628. package/dist/core/scene/poseWrites.js.map +1 -0
  629. package/dist/core/scene/reconcileSpecs.js +63 -34
  630. package/dist/core/scene/reconcileSpecs.js.map +1 -1
  631. package/dist/core/scene/recorder.js +90 -57
  632. package/dist/core/scene/recorder.js.map +1 -1
  633. package/dist/core/scene/renderOrder.js +105 -59
  634. package/dist/core/scene/renderOrder.js.map +1 -1
  635. package/dist/core/scene/scene.js +133 -80
  636. package/dist/core/scene/scene.js.map +1 -1
  637. package/dist/core/scene/sceneEdits.js +62 -49
  638. package/dist/core/scene/sceneEdits.js.map +1 -1
  639. package/dist/core/scene/sceneMutators.js +44 -36
  640. package/dist/core/scene/sceneMutators.js.map +1 -1
  641. package/dist/core/scene/scenePoseAdapter.js +13 -9
  642. package/dist/core/scene/scenePoseAdapter.js.map +1 -1
  643. package/dist/core/scene/sceneRecording.js +89 -73
  644. package/dist/core/scene/sceneRecording.js.map +1 -1
  645. package/dist/core/scene/sceneSelection.js +23 -16
  646. package/dist/core/scene/sceneSelection.js.map +1 -1
  647. package/dist/core/scene/sceneState.js +54 -36
  648. package/dist/core/scene/sceneState.js.map +1 -1
  649. package/dist/core/scene/serialization.js +87 -50
  650. package/dist/core/scene/serialization.js.map +1 -1
  651. package/dist/core/scene/staleReplay.js +35 -26
  652. package/dist/core/scene/staleReplay.js.map +1 -1
  653. package/dist/core/scene/statedFields.js +10 -5
  654. package/dist/core/scene/statedFields.js.map +1 -1
  655. package/dist/core/scene/treeEdits.js +129 -98
  656. package/dist/core/scene/treeEdits.js.map +1 -1
  657. package/dist/core/scene/treeOrder.js +13 -8
  658. package/dist/core/scene/treeOrder.js.map +1 -1
  659. package/dist/core/scene/treeReads.js +25 -16
  660. package/dist/core/scene/treeReads.js.map +1 -1
  661. package/dist/core/scene/types.js +4 -3
  662. package/dist/core/scene/types.js.map +1 -1
  663. package/dist/core/scene/unionOfChildren.js +20 -10
  664. package/dist/core/scene/unionOfChildren.js.map +1 -1
  665. package/dist/core/scene/unitScopes.js +15 -8
  666. package/dist/core/scene/unitScopes.js.map +1 -1
  667. package/dist/core/scene/useScene.js +32 -24
  668. package/dist/core/scene/useScene.js.map +1 -1
  669. package/dist/core/selection/chromeState.js +41 -17
  670. package/dist/core/selection/chromeState.js.map +1 -1
  671. package/dist/core/selection/readOnlySelection.js +39 -24
  672. package/dist/core/selection/readOnlySelection.js.map +1 -1
  673. package/dist/core/selection/selectionTarget.js +14 -3
  674. package/dist/core/selection/selectionTarget.js.map +1 -1
  675. package/dist/core/selection/usePublishSceneSelection.js +25 -18
  676. package/dist/core/selection/usePublishSceneSelection.js.map +1 -1
  677. package/dist/core/selection/useSelection.js +90 -57
  678. package/dist/core/selection/useSelection.js.map +1 -1
  679. package/dist/core/shapeKinds.js +43 -28
  680. package/dist/core/shapeKinds.js.map +1 -1
  681. package/dist/core/stableStringify.js +5 -4
  682. package/dist/core/stableStringify.js.map +1 -1
  683. package/dist/core/stylus/stylus.js +49 -25
  684. package/dist/core/stylus/stylus.js.map +1 -1
  685. package/dist/core/stylus/usePointerStylus.js +61 -34
  686. package/dist/core/stylus/usePointerStylus.js.map +1 -1
  687. package/dist/core/usePaintKinds.js +21 -11
  688. package/dist/core/usePaintKinds.js.map +1 -1
  689. package/dist/core/viewport/clampView.js +31 -15
  690. package/dist/core/viewport/clampView.js.map +1 -1
  691. package/dist/core/viewport/clientToWorld.js +15 -4
  692. package/dist/core/viewport/clientToWorld.js.map +1 -1
  693. package/dist/core/viewport/createVelocityTracker.js +23 -19
  694. package/dist/core/viewport/createVelocityTracker.js.map +1 -1
  695. package/dist/core/viewport/fitToBounds.js +28 -11
  696. package/dist/core/viewport/fitToBounds.js.map +1 -1
  697. package/dist/core/viewport/fitViewToBounds.js +45 -19
  698. package/dist/core/viewport/fitViewToBounds.js.map +1 -1
  699. package/dist/core/viewport/interpolateView.js +40 -20
  700. package/dist/core/viewport/interpolateView.js.map +1 -1
  701. package/dist/core/viewport/parallax.js +89 -56
  702. package/dist/core/viewport/parallax.js.map +1 -1
  703. package/dist/core/viewport/sceneNodeClientRect.js +21 -12
  704. package/dist/core/viewport/sceneNodeClientRect.js.map +1 -1
  705. package/dist/core/viewport/screenSlop.js +40 -17
  706. package/dist/core/viewport/screenSlop.js.map +1 -1
  707. package/dist/core/viewport/useAutoCenter.js +36 -22
  708. package/dist/core/viewport/useAutoCenter.js.map +1 -1
  709. package/dist/core/viewport/useCanvasSize.js +43 -22
  710. package/dist/core/viewport/useCanvasSize.js.map +1 -1
  711. package/dist/core/viewport/useDecayLoop.js +120 -48
  712. package/dist/core/viewport/useDecayLoop.js.map +1 -1
  713. package/dist/core/viewport/useNodeOverlayFrame.js +93 -58
  714. package/dist/core/viewport/useNodeOverlayFrame.js.map +1 -1
  715. package/dist/core/viewport/useVelocityTracker.js +9 -6
  716. package/dist/core/viewport/useVelocityTracker.js.map +1 -1
  717. package/dist/core/viewport/useViewAnimation.js +143 -84
  718. package/dist/core/viewport/useViewAnimation.js.map +1 -1
  719. package/dist/core/viewport/view.js +48 -24
  720. package/dist/core/viewport/view.js.map +1 -1
  721. package/dist/core/viewport/viewTransform.js +8 -6
  722. package/dist/core/viewport/viewTransform.js.map +1 -1
  723. package/dist/core/viewport/viewportWorldRect.js +15 -7
  724. package/dist/core/viewport/viewportWorldRect.js.map +1 -1
  725. package/dist/core/viewport/wheelHandler.js +31 -20
  726. package/dist/core/viewport/wheelHandler.js.map +1 -1
  727. package/dist/core/viewport/zoomAt.js +47 -19
  728. package/dist/core/viewport/zoomAt.js.map +1 -1
  729. package/dist/core/viewport/zoomBounds.js +33 -17
  730. package/dist/core/viewport/zoomBounds.js.map +1 -1
  731. package/dist/cornerHandles-Camw_yeu.d.ts +169 -0
  732. package/dist/debug/createDebugOverlayLayer.js +303 -215
  733. package/dist/debug/createDebugOverlayLayer.js.map +1 -1
  734. package/dist/debug/createDebugSink.js +68 -47
  735. package/dist/debug/createDebugSink.js.map +1 -1
  736. package/dist/debug/defaultTheme.js +16 -4
  737. package/dist/debug/defaultTheme.js.map +1 -1
  738. package/dist/debug/flag.js +3 -2
  739. package/dist/debug/frameStats.js +11 -9
  740. package/dist/debug/frameStats.js.map +1 -1
  741. package/dist/debug/parseDebugFlags.js +25 -17
  742. package/dist/debug/parseDebugFlags.js.map +1 -1
  743. package/dist/debug/useDebugSink.js +52 -33
  744. package/dist/debug/useDebugSink.js.map +1 -1
  745. package/dist/depSchema-Cgfu_G9s.d.ts +3581 -0
  746. package/dist/features/chrome-caps/buildChromeCtx.js +12 -10
  747. package/dist/features/chrome-caps/buildChromeCtx.js.map +1 -1
  748. package/dist/features/chrome-caps/conditions.js +103 -25
  749. package/dist/features/chrome-caps/conditions.js.map +1 -1
  750. package/dist/features/chrome-caps/defaults.js +18 -10
  751. package/dist/features/chrome-caps/defaults.js.map +1 -1
  752. package/dist/features/chrome-caps/index.js +8 -7
  753. package/dist/features/chrome-caps/resolve.js +28 -16
  754. package/dist/features/chrome-caps/resolve.js.map +1 -1
  755. package/dist/features/chrome-caps/useChromeCaps.js +52 -44
  756. package/dist/features/chrome-caps/useChromeCaps.js.map +1 -1
  757. package/dist/features/chrome-caps/useHoverTracking.js +52 -26
  758. package/dist/features/chrome-caps/useHoverTracking.js.map +1 -1
  759. package/dist/features/ingestion/contentHandlers.js +80 -34
  760. package/dist/features/ingestion/contentHandlers.js.map +1 -1
  761. package/dist/features/ingestion/imageHandler.js +49 -29
  762. package/dist/features/ingestion/imageHandler.js.map +1 -1
  763. package/dist/features/ingestion/openFilePicker.js +27 -9
  764. package/dist/features/ingestion/openFilePicker.js.map +1 -1
  765. package/dist/features/ingestion/placement.js +20 -11
  766. package/dist/features/ingestion/placement.js.map +1 -1
  767. package/dist/features/ingestion/registerKitHandlers.js +35 -18
  768. package/dist/features/ingestion/registerKitHandlers.js.map +1 -1
  769. package/dist/features/ingestion/svgHandler.js +60 -34
  770. package/dist/features/ingestion/svgHandler.js.map +1 -1
  771. package/dist/features/ingestion/textHandler.js +37 -16
  772. package/dist/features/ingestion/textHandler.js.map +1 -1
  773. package/dist/features/ingestion/useCanvasIngestion.js +57 -39
  774. package/dist/features/ingestion/useCanvasIngestion.js.map +1 -1
  775. package/dist/features/ingestion/weaselJsonHandler.js +38 -28
  776. package/dist/features/ingestion/weaselJsonHandler.js.map +1 -1
  777. package/dist/features/longPress/longPressFeedback.js +110 -81
  778. package/dist/features/longPress/longPressFeedback.js.map +1 -1
  779. package/dist/features/measure/actionIds.js +22 -0
  780. package/dist/features/measure/actionIds.js.map +1 -0
  781. package/dist/features/measure/measureCommands.js +178 -0
  782. package/dist/features/measure/measureCommands.js.map +1 -0
  783. package/dist/features/measure/measureContribution.js +57 -0
  784. package/dist/features/measure/measureContribution.js.map +1 -0
  785. package/dist/features/measure/measureEdits.js +82 -0
  786. package/dist/features/measure/measureEdits.js.map +1 -0
  787. package/dist/features/measure/measureGestures.js +185 -0
  788. package/dist/features/measure/measureGestures.js.map +1 -0
  789. package/dist/features/measure/measureHit.js +80 -0
  790. package/dist/features/measure/measureHit.js.map +1 -0
  791. package/dist/features/measure/measureLayer.js +86 -0
  792. package/dist/features/measure/measureLayer.js.map +1 -0
  793. package/dist/features/measure/measurement.js +79 -0
  794. package/dist/features/measure/measurement.js.map +1 -0
  795. package/dist/features/measure/measurements.js +41 -0
  796. package/dist/features/measure/measurements.js.map +1 -0
  797. package/dist/features/modes/modeLayers.js +81 -55
  798. package/dist/features/modes/modeLayers.js.map +1 -1
  799. package/dist/features/modes/modeTriggers.js +66 -0
  800. package/dist/features/modes/modeTriggers.js.map +1 -0
  801. package/dist/features/pathEffects/index.js +35 -0
  802. package/dist/features/pathEffects/index.js.map +1 -0
  803. package/dist/features/pathEffects/readSource.js +46 -0
  804. package/dist/features/pathEffects/readSource.js.map +1 -0
  805. package/dist/features/paths/anchorData.js +65 -0
  806. package/dist/features/paths/anchorData.js.map +1 -0
  807. package/dist/features/paths/anchorMarkers.js +137 -0
  808. package/dist/features/paths/anchorMarkers.js.map +1 -0
  809. package/dist/features/paths/editablePath.js +149 -46
  810. package/dist/features/paths/editablePath.js.map +1 -1
  811. package/dist/features/paths/index.js +12 -9
  812. package/dist/features/paths/originProjection.js +16 -9
  813. package/dist/features/paths/originProjection.js.map +1 -1
  814. package/dist/features/paths/pathEditExtension.js +26 -0
  815. package/dist/features/paths/pathEditExtension.js.map +1 -0
  816. package/dist/features/paths/pathEditState.js +107 -26
  817. package/dist/features/paths/pathEditState.js.map +1 -1
  818. package/dist/features/paths/pathEditingOverlayLayer.js +58 -110
  819. package/dist/features/paths/pathEditingOverlayLayer.js.map +1 -1
  820. package/dist/features/paths/pathLayer.js +79 -29
  821. package/dist/features/paths/pathLayer.js.map +1 -1
  822. package/dist/features/paths/pathRepresentation.js +27 -0
  823. package/dist/features/paths/pathRepresentation.js.map +1 -0
  824. package/dist/features/paths/pathSnap/glyphs.js +39 -0
  825. package/dist/features/paths/pathSnap/glyphs.js.map +1 -0
  826. package/dist/features/paths/pathSnap/pathSnapSource.js +82 -0
  827. package/dist/features/paths/pathSnap/pathSnapSource.js.map +1 -0
  828. package/dist/features/paths/pathSnap/sceneIndex.js +78 -0
  829. package/dist/features/paths/pathSnap/sceneIndex.js.map +1 -0
  830. package/dist/features/paths/pathSnap/snapGeometry.js +47 -0
  831. package/dist/features/paths/pathSnap/snapGeometry.js.map +1 -0
  832. package/dist/features/paths/penPreviewLayer.js +135 -102
  833. package/dist/features/paths/penPreviewLayer.js.map +1 -1
  834. package/dist/features/paths/shapeGenerator.js +112 -60
  835. package/dist/features/paths/shapeGenerator.js.map +1 -1
  836. package/dist/features/paths/strokeOutline.js +15 -0
  837. package/dist/features/paths/strokeOutline.js.map +1 -0
  838. package/dist/features/paths/useAnchorFields.js +35 -0
  839. package/dist/features/paths/useAnchorFields.js.map +1 -0
  840. package/dist/features/paths/usePathEdit.js +58 -28
  841. package/dist/features/paths/usePathEdit.js.map +1 -1
  842. package/dist/features/poseRun/usePoseRun.js +110 -43
  843. package/dist/features/poseRun/usePoseRun.js.map +1 -1
  844. package/dist/features/selection/handleCommands.js +116 -0
  845. package/dist/features/selection/handleCommands.js.map +1 -0
  846. package/dist/features/selection/overlay.js +288 -328
  847. package/dist/features/selection/overlay.js.map +1 -1
  848. package/dist/features/selection/selectionPose.js +109 -0
  849. package/dist/features/selection/selectionPose.js.map +1 -0
  850. package/dist/features/snap/angle2d.js +158 -0
  851. package/dist/features/snap/angle2d.js.map +1 -0
  852. package/dist/features/snap/debugCandidates.js +27 -0
  853. package/dist/features/snap/debugCandidates.js.map +1 -0
  854. package/dist/features/snap/gather.js +71 -0
  855. package/dist/features/snap/gather.js.map +1 -0
  856. package/dist/features/snap/inputSubspace.js +46 -0
  857. package/dist/features/snap/inputSubspace.js.map +1 -0
  858. package/dist/features/snap/marks.js +29 -0
  859. package/dist/features/snap/marks.js.map +1 -0
  860. package/dist/features/snap/outcomeStore.js +25 -0
  861. package/dist/features/snap/outcomeStore.js.map +1 -0
  862. package/dist/features/snap/pointSnap.js +48 -0
  863. package/dist/features/snap/pointSnap.js.map +1 -0
  864. package/dist/features/snap/probes2d.js +91 -0
  865. package/dist/features/snap/probes2d.js.map +1 -0
  866. package/dist/features/snap/readoutDraw.js +93 -0
  867. package/dist/features/snap/readoutDraw.js.map +1 -0
  868. package/dist/features/snap/readoutLayer.js +49 -0
  869. package/dist/features/snap/readoutLayer.js.map +1 -0
  870. package/dist/features/snap/registry.js +27 -0
  871. package/dist/features/snap/registry.js.map +1 -0
  872. package/dist/features/snap/resizeBox.js +137 -0
  873. package/dist/features/snap/resizeBox.js.map +1 -0
  874. package/dist/features/snap/roles.js +31 -0
  875. package/dist/features/snap/roles.js.map +1 -0
  876. package/dist/features/snap/rotationSource.js +30 -0
  877. package/dist/features/snap/rotationSource.js.map +1 -0
  878. package/dist/features/snap/sceneReads.js +45 -0
  879. package/dist/features/snap/sceneReads.js.map +1 -0
  880. package/dist/features/snap/sceneSession2d.js +79 -0
  881. package/dist/features/snap/sceneSession2d.js.map +1 -0
  882. package/dist/features/snap/screen.js +23 -0
  883. package/dist/features/snap/screen.js.map +1 -0
  884. package/dist/features/snap/session2d.js +129 -0
  885. package/dist/features/snap/session2d.js.map +1 -0
  886. package/dist/features/snap/spanSnap.js +77 -0
  887. package/dist/features/snap/spanSnap.js.map +1 -0
  888. package/dist/features/snap/stepAngles.js +15 -0
  889. package/dist/features/snap/stepAngles.js.map +1 -0
  890. package/dist/features/text/editingDrawOne.js +32 -0
  891. package/dist/features/text/editingDrawOne.js.map +1 -0
  892. package/dist/features/text/index.js +7 -6
  893. package/dist/features/text/textHitAt.js +51 -0
  894. package/dist/features/text/textHitAt.js.map +1 -0
  895. package/dist/features/text/textLayer.js +21 -27
  896. package/dist/features/text/textLayer.js.map +1 -1
  897. package/dist/features/text/useSceneTextEdit.js +190 -128
  898. package/dist/features/text/useSceneTextEdit.js.map +1 -1
  899. package/dist/features/viewports/viewResolver.js +48 -39
  900. package/dist/features/viewports/viewResolver.js.map +1 -1
  901. package/dist/features/viewports/viewportLayer.js +60 -29
  902. package/dist/features/viewports/viewportLayer.js.map +1 -1
  903. package/dist/iconRegistry/IconRegistryProvider.js +73 -0
  904. package/dist/iconRegistry/IconRegistryProvider.js.map +1 -0
  905. package/dist/iconRegistry/useIconGlyph.js +14 -0
  906. package/dist/iconRegistry/useIconGlyph.js.map +1 -0
  907. package/dist/iconRegistry/useIconVariant.js +29 -0
  908. package/dist/iconRegistry/useIconVariant.js.map +1 -0
  909. package/dist/icons.d.ts +6 -0
  910. package/dist/icons.js +3 -0
  911. package/dist/icons.table.js +13 -0
  912. package/dist/icons.table.js.map +1 -0
  913. package/dist/icons.table.json +556 -0
  914. package/dist/icons2.table.js +9 -0
  915. package/dist/icons2.table.js.map +1 -0
  916. package/dist/index.d.ts +4259 -5074
  917. package/dist/index.js +340 -285
  918. package/dist/input/keyState.js +118 -54
  919. package/dist/input/keyState.js.map +1 -1
  920. package/dist/input/useKeyModifiers.js +13 -7
  921. package/dist/input/useKeyModifiers.js.map +1 -1
  922. package/dist/input/useKeyState.js +23 -16
  923. package/dist/input/useKeyState.js.map +1 -1
  924. package/dist/interactions/actions/align/action.js +76 -45
  925. package/dist/interactions/actions/align/action.js.map +1 -1
  926. package/dist/interactions/actions/align/align.js +86 -48
  927. package/dist/interactions/actions/align/align.js.map +1 -1
  928. package/dist/interactions/actions/booleans/action.js +67 -33
  929. package/dist/interactions/actions/booleans/action.js.map +1 -1
  930. package/dist/interactions/actions/booleans/booleans.js +77 -70
  931. package/dist/interactions/actions/booleans/booleans.js.map +1 -1
  932. package/dist/interactions/actions/booleans/commit.js +49 -0
  933. package/dist/interactions/actions/booleans/commit.js.map +1 -0
  934. package/dist/interactions/actions/booleans/custom.js +48 -0
  935. package/dist/interactions/actions/booleans/custom.js.map +1 -0
  936. package/dist/interactions/actions/booleans/operands.js +43 -32
  937. package/dist/interactions/actions/booleans/operands.js.map +1 -1
  938. package/dist/interactions/actions/booleans/pieces.js +29 -23
  939. package/dist/interactions/actions/booleans/pieces.js.map +1 -1
  940. package/dist/interactions/actions/booleans/placement.js +30 -17
  941. package/dist/interactions/actions/booleans/placement.js.map +1 -1
  942. package/dist/interactions/actions/booleans/useBooleans.js +30 -17
  943. package/dist/interactions/actions/booleans/useBooleans.js.map +1 -1
  944. package/dist/interactions/actions/booleans/useBooleansAdapter.js +8 -5
  945. package/dist/interactions/actions/booleans/useBooleansAdapter.js.map +1 -1
  946. package/dist/interactions/actions/clipboard/action.js +81 -40
  947. package/dist/interactions/actions/clipboard/action.js.map +1 -1
  948. package/dist/interactions/actions/clipboard/clipboardOps.js +100 -72
  949. package/dist/interactions/actions/clipboard/clipboardOps.js.map +1 -1
  950. package/dist/interactions/actions/clipboard/materializePaste.js +38 -19
  951. package/dist/interactions/actions/clipboard/materializePaste.js.map +1 -1
  952. package/dist/interactions/actions/clipboard/wireFormat.js +66 -28
  953. package/dist/interactions/actions/clipboard/wireFormat.js.map +1 -1
  954. package/dist/interactions/actions/clone/action.js +102 -70
  955. package/dist/interactions/actions/clone/action.js.map +1 -1
  956. package/dist/interactions/actions/clone/behaviors.js +55 -38
  957. package/dist/interactions/actions/clone/behaviors.js.map +1 -1
  958. package/dist/interactions/actions/defaultCommitAdapter.js +32 -10
  959. package/dist/interactions/actions/defaultCommitAdapter.js.map +1 -1
  960. package/dist/interactions/actions/defaults/anchorEditing.js +252 -111
  961. package/dist/interactions/actions/defaults/anchorEditing.js.map +1 -1
  962. package/dist/interactions/actions/defaults/anchorFields.js +54 -0
  963. package/dist/interactions/actions/defaults/anchorFields.js.map +1 -0
  964. package/dist/interactions/actions/defaults/anchorHandles.js +31 -27
  965. package/dist/interactions/actions/defaults/anchorHandles.js.map +1 -1
  966. package/dist/interactions/actions/defaults/anchorJoin.js +55 -37
  967. package/dist/interactions/actions/defaults/anchorJoin.js.map +1 -1
  968. package/dist/interactions/actions/defaults/areaSelect.js +56 -40
  969. package/dist/interactions/actions/defaults/areaSelect.js.map +1 -1
  970. package/dist/interactions/actions/defaults/bendSegment.js +67 -31
  971. package/dist/interactions/actions/defaults/bendSegment.js.map +1 -1
  972. package/dist/interactions/actions/defaults/cancelGesture.js +12 -5
  973. package/dist/interactions/actions/defaults/cancelGesture.js.map +1 -1
  974. package/dist/interactions/actions/defaults/clearSelection.js +22 -7
  975. package/dist/interactions/actions/defaults/clearSelection.js.map +1 -1
  976. package/dist/interactions/actions/defaults/contextMenu.js +149 -0
  977. package/dist/interactions/actions/defaults/contextMenu.js.map +1 -0
  978. package/dist/interactions/actions/defaults/copySubtree.js +43 -29
  979. package/dist/interactions/actions/defaults/copySubtree.js.map +1 -1
  980. package/dist/interactions/actions/defaults/createPaintAction.js +79 -54
  981. package/dist/interactions/actions/defaults/createPaintAction.js.map +1 -1
  982. package/dist/interactions/actions/defaults/delete.js +61 -33
  983. package/dist/interactions/actions/defaults/delete.js.map +1 -1
  984. package/dist/interactions/actions/defaults/duplicate.js +60 -32
  985. package/dist/interactions/actions/defaults/duplicate.js.map +1 -1
  986. package/dist/interactions/actions/defaults/enterPathEdit.js +22 -18
  987. package/dist/interactions/actions/defaults/enterPathEdit.js.map +1 -1
  988. package/dist/interactions/actions/defaults/enterTextEdit.js +20 -8
  989. package/dist/interactions/actions/defaults/enterTextEdit.js.map +1 -1
  990. package/dist/interactions/actions/defaults/escape.js +16 -7
  991. package/dist/interactions/actions/defaults/escape.js.map +1 -1
  992. package/dist/interactions/actions/defaults/exitPathEdit.js +6 -6
  993. package/dist/interactions/actions/defaults/exitPathEdit.js.map +1 -1
  994. package/dist/interactions/actions/defaults/group.js +122 -73
  995. package/dist/interactions/actions/defaults/group.js.map +1 -1
  996. package/dist/interactions/actions/defaults/ingest.js +52 -35
  997. package/dist/interactions/actions/defaults/ingest.js.map +1 -1
  998. package/dist/interactions/actions/defaults/insertPathAnchor.js +43 -22
  999. package/dist/interactions/actions/defaults/insertPathAnchor.js.map +1 -1
  1000. package/dist/interactions/actions/defaults/nudge.js +79 -52
  1001. package/dist/interactions/actions/defaults/nudge.js.map +1 -1
  1002. package/dist/interactions/actions/defaults/nudgeSteps.js +17 -12
  1003. package/dist/interactions/actions/defaults/nudgeSteps.js.map +1 -1
  1004. package/dist/interactions/actions/defaults/pathEditMarks.js +60 -0
  1005. package/dist/interactions/actions/defaults/pathEditMarks.js.map +1 -0
  1006. package/dist/interactions/actions/defaults/pathEditTools.js +57 -0
  1007. package/dist/interactions/actions/defaults/pathEditTools.js.map +1 -0
  1008. package/dist/interactions/actions/defaults/pinchZoom.js +55 -39
  1009. package/dist/interactions/actions/defaults/pinchZoom.js.map +1 -1
  1010. package/dist/interactions/actions/defaults/reorder.js +71 -40
  1011. package/dist/interactions/actions/defaults/reorder.js.map +1 -1
  1012. package/dist/interactions/actions/defaults/requiresSelection.js +13 -6
  1013. package/dist/interactions/actions/defaults/requiresSelection.js.map +1 -1
  1014. package/dist/interactions/actions/defaults/segmentUnder.js +24 -16
  1015. package/dist/interactions/actions/defaults/segmentUnder.js.map +1 -1
  1016. package/dist/interactions/actions/defaults/selectAll.js +21 -7
  1017. package/dist/interactions/actions/defaults/selectAll.js.map +1 -1
  1018. package/dist/interactions/actions/defaults/setFill.js +37 -21
  1019. package/dist/interactions/actions/defaults/setFill.js.map +1 -1
  1020. package/dist/interactions/actions/defaults/setFillOpacity.js +19 -10
  1021. package/dist/interactions/actions/defaults/setFillOpacity.js.map +1 -1
  1022. package/dist/interactions/actions/defaults/setStroke.js +46 -25
  1023. package/dist/interactions/actions/defaults/setStroke.js.map +1 -1
  1024. package/dist/interactions/actions/defaults/setStrokeOpacity.js +19 -11
  1025. package/dist/interactions/actions/defaults/setStrokeOpacity.js.map +1 -1
  1026. package/dist/interactions/actions/defaults/slice.js +42 -17
  1027. package/dist/interactions/actions/defaults/slice.js.map +1 -1
  1028. package/dist/interactions/actions/defaults/sliceOps.js +63 -42
  1029. package/dist/interactions/actions/defaults/sliceOps.js.map +1 -1
  1030. package/dist/interactions/actions/defaults/toolActivate.js +34 -16
  1031. package/dist/interactions/actions/defaults/toolActivate.js.map +1 -1
  1032. package/dist/interactions/actions/defaults/toolResetToDefault.js +29 -10
  1033. package/dist/interactions/actions/defaults/toolResetToDefault.js.map +1 -1
  1034. package/dist/interactions/actions/defaults/undoRedo.js +26 -20
  1035. package/dist/interactions/actions/defaults/undoRedo.js.map +1 -1
  1036. package/dist/interactions/actions/defaults/viewportDragPan.js +91 -58
  1037. package/dist/interactions/actions/defaults/viewportDragPan.js.map +1 -1
  1038. package/dist/interactions/actions/defaults/viewportWheelPan.js +42 -23
  1039. package/dist/interactions/actions/defaults/viewportWheelPan.js.map +1 -1
  1040. package/dist/interactions/actions/defaults/viewportZoom.js +107 -59
  1041. package/dist/interactions/actions/defaults/viewportZoom.js.map +1 -1
  1042. package/dist/interactions/actions/distribute/action.js +62 -39
  1043. package/dist/interactions/actions/distribute/action.js.map +1 -1
  1044. package/dist/interactions/actions/distribute/distribute.js +53 -34
  1045. package/dist/interactions/actions/distribute/distribute.js.map +1 -1
  1046. package/dist/interactions/actions/distribute/plan.js +40 -22
  1047. package/dist/interactions/actions/distribute/plan.js.map +1 -1
  1048. package/dist/interactions/actions/drawnBoxes.js +31 -0
  1049. package/dist/interactions/actions/drawnBoxes.js.map +1 -0
  1050. package/dist/interactions/actions/edit-anchors/action.js +248 -72
  1051. package/dist/interactions/actions/edit-anchors/action.js.map +1 -1
  1052. package/dist/interactions/actions/edit-anchors/extensionDrags.js +50 -0
  1053. package/dist/interactions/actions/edit-anchors/extensionDrags.js.map +1 -0
  1054. package/dist/interactions/actions/edit-anchors/geometry.js +74 -47
  1055. package/dist/interactions/actions/edit-anchors/geometry.js.map +1 -1
  1056. package/dist/interactions/actions/edit-anchors/handleDrag.js +101 -0
  1057. package/dist/interactions/actions/edit-anchors/handleDrag.js.map +1 -0
  1058. package/dist/interactions/actions/edit-anchors/handles.js +41 -27
  1059. package/dist/interactions/actions/edit-anchors/handles.js.map +1 -1
  1060. package/dist/interactions/actions/edit-anchors/params.js +12 -0
  1061. package/dist/interactions/actions/edit-anchors/params.js.map +1 -0
  1062. package/dist/interactions/actions/edit-anchors/preview.js +61 -19
  1063. package/dist/interactions/actions/edit-anchors/preview.js.map +1 -1
  1064. package/dist/interactions/actions/edit-anchors/symmetry.js +12 -7
  1065. package/dist/interactions/actions/edit-anchors/symmetry.js.map +1 -1
  1066. package/dist/interactions/actions/flip/action.js +119 -61
  1067. package/dist/interactions/actions/flip/action.js.map +1 -1
  1068. package/dist/interactions/actions/flip/helpers.js +69 -36
  1069. package/dist/interactions/actions/flip/helpers.js.map +1 -1
  1070. package/dist/interactions/actions/geometryProjection.js +17 -12
  1071. package/dist/interactions/actions/geometryProjection.js.map +1 -1
  1072. package/dist/interactions/actions/gestureFrames.js +20 -11
  1073. package/dist/interactions/actions/gestureFrames.js.map +1 -1
  1074. package/dist/interactions/actions/gestureLifecycle.js +93 -48
  1075. package/dist/interactions/actions/gestureLifecycle.js.map +1 -1
  1076. package/dist/interactions/actions/hitSelection.js +6 -4
  1077. package/dist/interactions/actions/hitSelection.js.map +1 -1
  1078. package/dist/interactions/actions/insert/action.js +71 -42
  1079. package/dist/interactions/actions/insert/action.js.map +1 -1
  1080. package/dist/interactions/actions/insert/commit.js +44 -22
  1081. package/dist/interactions/actions/insert/commit.js.map +1 -1
  1082. package/dist/interactions/actions/insert/extras.js +60 -38
  1083. package/dist/interactions/actions/insert/extras.js.map +1 -1
  1084. package/dist/interactions/actions/insert/frame.js +58 -39
  1085. package/dist/interactions/actions/insert/frame.js.map +1 -1
  1086. package/dist/interactions/actions/insert/geometry.js +29 -25
  1087. package/dist/interactions/actions/insert/geometry.js.map +1 -1
  1088. package/dist/interactions/actions/insert/placeAction.js +108 -0
  1089. package/dist/interactions/actions/insert/placeAction.js.map +1 -0
  1090. package/dist/interactions/actions/insert/repositionAction.js +26 -11
  1091. package/dist/interactions/actions/insert/repositionAction.js.map +1 -1
  1092. package/dist/interactions/actions/insert/rotateAction.js +19 -8
  1093. package/dist/interactions/actions/insert/rotateAction.js.map +1 -1
  1094. package/dist/interactions/actions/insert/session.js +57 -41
  1095. package/dist/interactions/actions/insert/session.js.map +1 -1
  1096. package/dist/interactions/actions/insert/shape.js +83 -25
  1097. package/dist/interactions/actions/insert/shape.js.map +1 -1
  1098. package/dist/interactions/actions/lasso-select/action.js +160 -100
  1099. package/dist/interactions/actions/lasso-select/action.js.map +1 -1
  1100. package/dist/interactions/actions/lasso-select/behaviors/selectFromLasso.js +44 -25
  1101. package/dist/interactions/actions/lasso-select/behaviors/selectFromLasso.js.map +1 -1
  1102. package/dist/interactions/actions/move/action.js +87 -52
  1103. package/dist/interactions/actions/move/action.js.map +1 -1
  1104. package/dist/interactions/actions/move/behaviors/layoutDrop.js +56 -36
  1105. package/dist/interactions/actions/move/behaviors/layoutDrop.js.map +1 -1
  1106. package/dist/interactions/actions/move/behaviors/reparentOnDrop.js +20 -10
  1107. package/dist/interactions/actions/move/behaviors/reparentOnDrop.js.map +1 -1
  1108. package/dist/interactions/actions/move/behaviors/snapBackOrDelete.js +40 -24
  1109. package/dist/interactions/actions/move/behaviors/snapBackOrDelete.js.map +1 -1
  1110. package/dist/interactions/actions/move/behaviors/snapToContainer.js +102 -64
  1111. package/dist/interactions/actions/move/behaviors/snapToContainer.js.map +1 -1
  1112. package/dist/interactions/actions/move/capture.js +103 -78
  1113. package/dist/interactions/actions/move/capture.js.map +1 -1
  1114. package/dist/interactions/actions/move/commit/index.js +43 -34
  1115. package/dist/interactions/actions/move/commit/index.js.map +1 -1
  1116. package/dist/interactions/actions/move/commit/layoutDrop.js +43 -32
  1117. package/dist/interactions/actions/move/commit/layoutDrop.js.map +1 -1
  1118. package/dist/interactions/actions/move/commit/layoutRelease.js +97 -77
  1119. package/dist/interactions/actions/move/commit/layoutRelease.js.map +1 -1
  1120. package/dist/interactions/actions/move/commit/rebase.js +16 -13
  1121. package/dist/interactions/actions/move/commit/rebase.js.map +1 -1
  1122. package/dist/interactions/actions/move/commit/reparent.js +83 -57
  1123. package/dist/interactions/actions/move/commit/reparent.js.map +1 -1
  1124. package/dist/interactions/actions/move/delta.js +58 -36
  1125. package/dist/interactions/actions/move/delta.js.map +1 -1
  1126. package/dist/interactions/actions/move/frame.js +72 -35
  1127. package/dist/interactions/actions/move/frame.js.map +1 -1
  1128. package/dist/interactions/actions/move/gestureAdapter.js +30 -20
  1129. package/dist/interactions/actions/move/gestureAdapter.js.map +1 -1
  1130. package/dist/interactions/actions/move/landedDescendants.js +40 -25
  1131. package/dist/interactions/actions/move/landedDescendants.js.map +1 -1
  1132. package/dist/interactions/actions/move/layout/container.js +92 -72
  1133. package/dist/interactions/actions/move/layout/container.js.map +1 -1
  1134. package/dist/interactions/actions/move/layout/dragged.js +61 -39
  1135. package/dist/interactions/actions/move/layout/dragged.js.map +1 -1
  1136. package/dist/interactions/actions/move/layout/dropPass.js +136 -94
  1137. package/dist/interactions/actions/move/layout/dropPass.js.map +1 -1
  1138. package/dist/interactions/actions/move/layout/exits.js +58 -30
  1139. package/dist/interactions/actions/move/layout/exits.js.map +1 -1
  1140. package/dist/interactions/actions/move/layout/glide.js +55 -34
  1141. package/dist/interactions/actions/move/layout/glide.js.map +1 -1
  1142. package/dist/interactions/actions/move/session.js +85 -56
  1143. package/dist/interactions/actions/move/session.js.map +1 -1
  1144. package/dist/interactions/actions/move/translate.js +58 -43
  1145. package/dist/interactions/actions/move/translate.js.map +1 -1
  1146. package/dist/interactions/actions/outlines/createOutlines.js +28 -20
  1147. package/dist/interactions/actions/outlines/createOutlines.js.map +1 -1
  1148. package/dist/interactions/actions/outlines/createOutlinesAction.js +43 -31
  1149. package/dist/interactions/actions/outlines/createOutlinesAction.js.map +1 -1
  1150. package/dist/interactions/actions/outlines/outlineStroke.js +68 -45
  1151. package/dist/interactions/actions/outlines/outlineStroke.js.map +1 -1
  1152. package/dist/interactions/actions/outlines/outlineStrokeAction.js +24 -19
  1153. package/dist/interactions/actions/outlines/outlineStrokeAction.js.map +1 -1
  1154. package/dist/interactions/actions/outlines/replaceWithPaths.js +57 -42
  1155. package/dist/interactions/actions/outlines/replaceWithPaths.js.map +1 -1
  1156. package/dist/interactions/actions/outlines/strokeRegion.js +37 -22
  1157. package/dist/interactions/actions/outlines/strokeRegion.js.map +1 -1
  1158. package/dist/interactions/actions/outlines/useCreateOutlinesAdapter.js +8 -5
  1159. package/dist/interactions/actions/outlines/useCreateOutlinesAdapter.js.map +1 -1
  1160. package/dist/interactions/actions/pathCommands/cutJoin.js +119 -72
  1161. package/dist/interactions/actions/pathCommands/cutJoin.js.map +1 -1
  1162. package/dist/interactions/actions/pathCommands/livePathEdit.js +74 -40
  1163. package/dist/interactions/actions/pathCommands/livePathEdit.js.map +1 -1
  1164. package/dist/interactions/actions/pathCommands/pathNodes.js +91 -82
  1165. package/dist/interactions/actions/pathCommands/pathNodes.js.map +1 -1
  1166. package/dist/interactions/actions/pathCommands/simplifyOffset.js +52 -28
  1167. package/dist/interactions/actions/pathCommands/simplifyOffset.js.map +1 -1
  1168. package/dist/interactions/actions/pathGestureTags.js +29 -0
  1169. package/dist/interactions/actions/pathGestureTags.js.map +1 -0
  1170. package/dist/interactions/actions/planeInput.js +198 -123
  1171. package/dist/interactions/actions/planeInput.js.map +1 -1
  1172. package/dist/interactions/actions/pointerState.js +12 -7
  1173. package/dist/interactions/actions/pointerState.js.map +1 -1
  1174. package/dist/interactions/actions/poseDescriptorDep.js +24 -14
  1175. package/dist/interactions/actions/poseDescriptorDep.js.map +1 -1
  1176. package/dist/interactions/actions/poseFrame.js +45 -28
  1177. package/dist/interactions/actions/poseFrame.js.map +1 -1
  1178. package/dist/interactions/actions/resize/action.js +68 -39
  1179. package/dist/interactions/actions/resize/action.js.map +1 -1
  1180. package/dist/interactions/actions/resize/aspect.js +44 -0
  1181. package/dist/interactions/actions/resize/aspect.js.map +1 -0
  1182. package/dist/interactions/actions/resize/behaviors/clampMinSize.js +38 -13
  1183. package/dist/interactions/actions/resize/behaviors/clampMinSize.js.map +1 -1
  1184. package/dist/interactions/actions/resize/boxFrame.js +15 -11
  1185. package/dist/interactions/actions/resize/boxFrame.js.map +1 -1
  1186. package/dist/interactions/actions/resize/capture.js +105 -62
  1187. package/dist/interactions/actions/resize/capture.js.map +1 -1
  1188. package/dist/interactions/actions/resize/commit.js +75 -56
  1189. package/dist/interactions/actions/resize/commit.js.map +1 -1
  1190. package/dist/interactions/actions/resize/cornerHandles.js +154 -17
  1191. package/dist/interactions/actions/resize/cornerHandles.js.map +1 -1
  1192. package/dist/interactions/actions/resize/frame.js +133 -66
  1193. package/dist/interactions/actions/resize/frame.js.map +1 -1
  1194. package/dist/interactions/actions/resize/minimum.js +35 -0
  1195. package/dist/interactions/actions/resize/minimum.js.map +1 -0
  1196. package/dist/interactions/actions/resize/replay.js +40 -30
  1197. package/dist/interactions/actions/resize/replay.js.map +1 -1
  1198. package/dist/interactions/actions/resize/ruleBounds.js +8 -5
  1199. package/dist/interactions/actions/resize/ruleBounds.js.map +1 -1
  1200. package/dist/interactions/actions/resize/session.js +95 -50
  1201. package/dist/interactions/actions/resize/session.js.map +1 -1
  1202. package/dist/interactions/actions/resolveOverlays.js +48 -33
  1203. package/dist/interactions/actions/resolveOverlays.js.map +1 -1
  1204. package/dist/interactions/actions/resolvePreviews.js +63 -46
  1205. package/dist/interactions/actions/resolvePreviews.js.map +1 -1
  1206. package/dist/interactions/actions/rotate/action.js +68 -42
  1207. package/dist/interactions/actions/rotate/action.js.map +1 -1
  1208. package/dist/interactions/actions/rotate/commit.js +39 -31
  1209. package/dist/interactions/actions/rotate/commit.js.map +1 -1
  1210. package/dist/interactions/actions/rotate/frame.js +75 -47
  1211. package/dist/interactions/actions/rotate/frame.js.map +1 -1
  1212. package/dist/interactions/actions/rotate/geometry.js +36 -24
  1213. package/dist/interactions/actions/rotate/geometry.js.map +1 -1
  1214. package/dist/interactions/actions/rotate/handle.js +28 -15
  1215. package/dist/interactions/actions/rotate/handle.js.map +1 -1
  1216. package/dist/interactions/actions/rotate/replay.js +22 -18
  1217. package/dist/interactions/actions/rotate/replay.js.map +1 -1
  1218. package/dist/interactions/actions/rotate/session.js +115 -76
  1219. package/dist/interactions/actions/rotate/session.js.map +1 -1
  1220. package/dist/interactions/actions/selectionSubtree.js +124 -53
  1221. package/dist/interactions/actions/selectionSubtree.js.map +1 -1
  1222. package/dist/interactions/actions/spatialReference.js +33 -26
  1223. package/dist/interactions/actions/spatialReference.js.map +1 -1
  1224. package/dist/interactions/actions/testUtils.js +53 -0
  1225. package/dist/interactions/actions/testUtils.js.map +1 -0
  1226. package/dist/interactions/actions/transform-again/action.js +50 -35
  1227. package/dist/interactions/actions/transform-again/action.js.map +1 -1
  1228. package/dist/interactions/actions/transform-again/memory.js +32 -21
  1229. package/dist/interactions/actions/transform-again/memory.js.map +1 -1
  1230. package/dist/interactions/actions/useActionSet.js +83 -0
  1231. package/dist/interactions/actions/useActionSet.js.map +1 -0
  1232. package/dist/interactions/actions/useStandardActions.js +23 -165
  1233. package/dist/interactions/actions/useStandardActions.js.map +1 -1
  1234. package/dist/interactions/gestures/dragGesture/dragGesture.js +109 -68
  1235. package/dist/interactions/gestures/dragGesture/dragGesture.js.map +1 -1
  1236. package/dist/interactions/gestures/dragGesture/dragPointOf.js +17 -10
  1237. package/dist/interactions/gestures/dragGesture/dragPointOf.js.map +1 -1
  1238. package/dist/interactions/gestures/dragRadial/dragRadial.js +129 -93
  1239. package/dist/interactions/gestures/dragRadial/dragRadial.js.map +1 -1
  1240. package/dist/interactions/gestures/dragRect/dragRect.js +155 -111
  1241. package/dist/interactions/gestures/dragRect/dragRect.js.map +1 -1
  1242. package/dist/interactions/gestures/handleDrag/handleDrag.js +52 -30
  1243. package/dist/interactions/gestures/handleDrag/handleDrag.js.map +1 -1
  1244. package/dist/interactions/gestures/pointerDrag/pointerDrag.js +168 -97
  1245. package/dist/interactions/gestures/pointerDrag/pointerDrag.js.map +1 -1
  1246. package/dist/interactions/gestures/shared/originProjection.js +32 -25
  1247. package/dist/interactions/gestures/shared/originProjection.js.map +1 -1
  1248. package/dist/interactions/gestures/shared/screenTolerance.js +26 -17
  1249. package/dist/interactions/gestures/shared/screenTolerance.js.map +1 -1
  1250. package/dist/interactions/gestures/thresholdDrag/thresholdDrag.js +39 -21
  1251. package/dist/interactions/gestures/thresholdDrag/thresholdDrag.js.map +1 -1
  1252. package/dist/kitSettingsSchema.js +80 -0
  1253. package/dist/kitSettingsSchema.js.map +1 -0
  1254. package/dist/{math-CYUjoyyU.d.ts → math-CrJULaZI.d.ts} +5 -6
  1255. package/dist/math.d.ts +4 -5
  1256. package/dist/math.js +7 -6
  1257. package/dist/mesh.js +3 -2
  1258. package/dist/move.d.ts +7 -6
  1259. package/dist/move.js +4 -3
  1260. package/dist/{originProjection-CoNVpITV.d.ts → options-p9GZMXbY.d.ts} +4 -27
  1261. package/dist/originProjection-gY0jb4Wb.d.ts +24 -0
  1262. package/dist/patterns-builtin.js +3 -2
  1263. package/dist/{poseDescriptor-Bqk-11Rl.d.ts → poseDescriptor-DN2yfnq_.d.ts} +7 -7
  1264. package/dist/renderer.d.ts +1 -1
  1265. package/dist/renderer.js +3 -2
  1266. package/dist/resize.d.ts +10 -28
  1267. package/dist/resize.js +6 -7
  1268. package/dist/routing.js +3 -2
  1269. package/dist/style.css +88 -1
  1270. package/dist/test-hook/createTestHook.js +23 -20
  1271. package/dist/test-hook/createTestHook.js.map +1 -1
  1272. package/dist/test-hook/install.js +32 -13
  1273. package/dist/test-hook/install.js.map +1 -1
  1274. package/dist/test-hook/useTestHook.js +22 -16
  1275. package/dist/test-hook/useTestHook.js.map +1 -1
  1276. package/dist/test-seams.d.ts +164 -1
  1277. package/dist/test-seams.js +8 -3
  1278. package/dist/tools/builtin/bone/boneActions.js +96 -70
  1279. package/dist/tools/builtin/bone/boneActions.js.map +1 -1
  1280. package/dist/tools/builtin/bone/boneOverlay.js +49 -36
  1281. package/dist/tools/builtin/bone/boneOverlay.js.map +1 -1
  1282. package/dist/tools/builtin/bone/placedRig.js +18 -14
  1283. package/dist/tools/builtin/bone/placedRig.js.map +1 -1
  1284. package/dist/tools/builtin/bone/rigEditState.js +22 -13
  1285. package/dist/tools/builtin/bone/rigEditState.js.map +1 -1
  1286. package/dist/tools/builtin/bone/useBoneTool.js +68 -41
  1287. package/dist/tools/builtin/bone/useBoneTool.js.map +1 -1
  1288. package/dist/tools/builtin/ellipse/useEllipseTool.js +22 -17
  1289. package/dist/tools/builtin/ellipse/useEllipseTool.js.map +1 -1
  1290. package/dist/tools/builtin/eyedropper/useEyedropperTool.js +44 -28
  1291. package/dist/tools/builtin/eyedropper/useEyedropperTool.js.map +1 -1
  1292. package/dist/tools/builtin/hand/dragPanContribution.js +12 -7
  1293. package/dist/tools/builtin/hand/dragPanContribution.js.map +1 -1
  1294. package/dist/tools/builtin/hand/useHandTool.js +21 -13
  1295. package/dist/tools/builtin/hand/useHandTool.js.map +1 -1
  1296. package/dist/tools/builtin/image/useImageTool.js +28 -19
  1297. package/dist/tools/builtin/image/useImageTool.js.map +1 -1
  1298. package/dist/tools/builtin/lasso/useLassoTool.js +48 -36
  1299. package/dist/tools/builtin/lasso/useLassoTool.js.map +1 -1
  1300. package/dist/tools/builtin/line/useLineTool.js +24 -17
  1301. package/dist/tools/builtin/line/useLineTool.js.map +1 -1
  1302. package/dist/tools/builtin/measure/useMeasureTool.js +84 -0
  1303. package/dist/tools/builtin/measure/useMeasureTool.js.map +1 -0
  1304. package/dist/tools/builtin/pen/penHandle.js +60 -0
  1305. package/dist/tools/builtin/pen/penHandle.js.map +1 -0
  1306. package/dist/tools/builtin/pen/usePenTool.js +461 -303
  1307. package/dist/tools/builtin/pen/usePenTool.js.map +1 -1
  1308. package/dist/tools/builtin/pencil/usePencilTool.js +20 -15
  1309. package/dist/tools/builtin/pencil/usePencilTool.js.map +1 -1
  1310. package/dist/tools/builtin/pickTopMostHit.js +51 -31
  1311. package/dist/tools/builtin/pickTopMostHit.js.map +1 -1
  1312. package/dist/tools/builtin/polygon/usePolygonTool.js +45 -28
  1313. package/dist/tools/builtin/polygon/usePolygonTool.js.map +1 -1
  1314. package/dist/tools/builtin/rect/useRectTool.js +24 -16
  1315. package/dist/tools/builtin/rect/useRectTool.js.map +1 -1
  1316. package/dist/tools/builtin/select/adapterPointQuery.js +47 -30
  1317. package/dist/tools/builtin/select/adapterPointQuery.js.map +1 -1
  1318. package/dist/tools/builtin/select/selectionContributions.js +94 -56
  1319. package/dist/tools/builtin/select/selectionContributions.js.map +1 -1
  1320. package/dist/tools/builtin/select/useSelectTool.js +155 -108
  1321. package/dist/tools/builtin/select/useSelectTool.js.map +1 -1
  1322. package/dist/tools/builtin/shared/insertToolOptions.js +5 -4
  1323. package/dist/tools/builtin/shared/insertToolOptions.js.map +1 -1
  1324. package/dist/tools/builtin/shared/pointerFollower.js +15 -8
  1325. package/dist/tools/builtin/shared/pointerFollower.js.map +1 -1
  1326. package/dist/tools/builtin/slice/useSliceTool.js +148 -101
  1327. package/dist/tools/builtin/slice/useSliceTool.js.map +1 -1
  1328. package/dist/tools/builtin/star/useStarTool.js +48 -31
  1329. package/dist/tools/builtin/star/useStarTool.js.map +1 -1
  1330. package/dist/tools/builtin/sticky/stickyNode.js +49 -0
  1331. package/dist/tools/builtin/sticky/stickyNode.js.map +1 -0
  1332. package/dist/tools/builtin/sticky/useStickyTool.js +86 -0
  1333. package/dist/tools/builtin/sticky/useStickyTool.js.map +1 -0
  1334. package/dist/tools/builtin/text/useTextTool.js +59 -34
  1335. package/dist/tools/builtin/text/useTextTool.js.map +1 -1
  1336. package/dist/tools/builtin/weight/useWeightTool.js +66 -42
  1337. package/dist/tools/builtin/weight/useWeightTool.js.map +1 -1
  1338. package/dist/tools/builtin/weight/weightActions.js +93 -65
  1339. package/dist/tools/builtin/weight/weightActions.js.map +1 -1
  1340. package/dist/tools/builtin/weight/weightOverlay.js +47 -30
  1341. package/dist/tools/builtin/weight/weightOverlay.js.map +1 -1
  1342. package/dist/tools/overlayBinding.js +7 -5
  1343. package/dist/tools/overlayBinding.js.map +1 -1
  1344. package/dist/tools/useKeybindings.js +62 -46
  1345. package/dist/tools/useKeybindings.js.map +1 -1
  1346. package/dist/{types-DBbbCy0i.d.ts → types-CHVXGfYm.d.ts} +5 -5
  1347. package/dist/util/color.js +39 -18
  1348. package/dist/util/color.js.map +1 -1
  1349. package/dist/util/paint.js +93 -38
  1350. package/dist/util/paint.js.map +1 -1
  1351. package/dist/version.js +11 -3
  1352. package/dist/version.js.map +1 -1
  1353. package/package.json +35 -23
  1354. package/dist/canvas/SceneCanvas/GestureDispatcherMounter.js +0 -126
  1355. package/dist/canvas/SceneCanvas/GestureDispatcherMounter.js.map +0 -1
  1356. package/dist/canvas/SceneCanvas/StandardActionsRegistrar.js +0 -55
  1357. package/dist/canvas/SceneCanvas/StandardActionsRegistrar.js.map +0 -1
  1358. package/dist/canvas/SceneCanvas/ToolKeybindingsMounter.js +0 -16
  1359. package/dist/canvas/SceneCanvas/ToolKeybindingsMounter.js.map +0 -1
  1360. package/dist/canvas/SceneCanvas/isDev.js +0 -12
  1361. package/dist/canvas/SceneCanvas/isDev.js.map +0 -1
  1362. package/dist/canvas/SceneCanvas/useViewLayerGate.js +0 -20
  1363. package/dist/canvas/SceneCanvas/useViewLayerGate.js.map +0 -1
  1364. package/dist/cornerHandles-BSKbyuvQ.d.ts +0 -104
  1365. package/dist/icons/ArrowIcon.js +0 -23
  1366. package/dist/icons/ArrowIcon.js.map +0 -1
  1367. package/dist/icons/EllipseIcon.js +0 -21
  1368. package/dist/icons/EllipseIcon.js.map +0 -1
  1369. package/dist/icons/EyedropperIcon.js +0 -49
  1370. package/dist/icons/EyedropperIcon.js.map +0 -1
  1371. package/dist/icons/HandIcon.js +0 -59
  1372. package/dist/icons/HandIcon.js.map +0 -1
  1373. package/dist/icons/ImageIcon.js +0 -34
  1374. package/dist/icons/ImageIcon.js.map +0 -1
  1375. package/dist/icons/LassoIcon.js +0 -22
  1376. package/dist/icons/LassoIcon.js.map +0 -1
  1377. package/dist/icons/LineIcon.js +0 -22
  1378. package/dist/icons/LineIcon.js.map +0 -1
  1379. package/dist/icons/PenIcon.js +0 -36
  1380. package/dist/icons/PenIcon.js.map +0 -1
  1381. package/dist/icons/PencilIcon.js +0 -25
  1382. package/dist/icons/PencilIcon.js.map +0 -1
  1383. package/dist/icons/PolygonIcon.js +0 -19
  1384. package/dist/icons/PolygonIcon.js.map +0 -1
  1385. package/dist/icons/RectIcon.js +0 -37
  1386. package/dist/icons/RectIcon.js.map +0 -1
  1387. package/dist/icons/SelectIcon.js +0 -20
  1388. package/dist/icons/SelectIcon.js.map +0 -1
  1389. package/dist/icons/SliceIcon.js +0 -24
  1390. package/dist/icons/SliceIcon.js.map +0 -1
  1391. package/dist/icons/StarIcon.js +0 -19
  1392. package/dist/icons/StarIcon.js.map +0 -1
  1393. package/dist/icons/TextIcon.js +0 -19
  1394. package/dist/icons/TextIcon.js.map +0 -1
  1395. package/dist/icons/UnknownIcon.js +0 -33
  1396. package/dist/icons/UnknownIcon.js.map +0 -1
  1397. package/dist/icons/_base.js +0 -12
  1398. package/dist/icons/_base.js.map +0 -1
  1399. package/dist/interactions/actions/actionShortcuts.js +0 -32
  1400. package/dist/interactions/actions/actionShortcuts.js.map +0 -1
  1401. package/dist/interactions/actions/defaults/icons/actionGlyphIcons.js +0 -40
  1402. package/dist/interactions/actions/defaults/icons/actionGlyphIcons.js.map +0 -1
  1403. package/dist/interactions/actions/defaults/icons/actionGlyphs.js +0 -10
  1404. package/dist/interactions/actions/defaults/icons/actionGlyphs.js.map +0 -1
  1405. package/dist/interactions/actions/defaults/icons/alignIcons.js +0 -173
  1406. package/dist/interactions/actions/defaults/icons/alignIcons.js.map +0 -1
  1407. package/dist/interactions/actions/defaults/icons/anchorIcons.js +0 -75
  1408. package/dist/interactions/actions/defaults/icons/anchorIcons.js.map +0 -1
  1409. package/dist/interactions/actions/defaults/icons/booleanIcons.js +0 -194
  1410. package/dist/interactions/actions/defaults/icons/booleanIcons.js.map +0 -1
  1411. package/dist/interactions/actions/defaults/icons/distributeIcons.js +0 -63
  1412. package/dist/interactions/actions/defaults/icons/distributeIcons.js.map +0 -1
  1413. package/dist/interactions/actions/defaults/icons/editIcons.js +0 -307
  1414. package/dist/interactions/actions/defaults/icons/editIcons.js.map +0 -1
  1415. package/dist/interactions/actions/defaults/icons/outlineIcons.js +0 -91
  1416. package/dist/interactions/actions/defaults/icons/outlineIcons.js.map +0 -1
  1417. package/dist/interactions/actions/resize/behaviors/index.js +0 -8
  1418. package/dist/interactions/actions/resize/behaviors/index.js.map +0 -1
  1419. package/dist/interactions/actions/resize/behaviors/lockAspect.js +0 -24
  1420. package/dist/interactions/actions/resize/behaviors/lockAspect.js.map +0 -1
  1421. package/dist/interactions/actions/resize/pointSnap.js +0 -111
  1422. package/dist/interactions/actions/resize/pointSnap.js.map +0 -1
  1423. package/dist/interactions/actions/rotate/behaviors/index.js +0 -7
  1424. package/dist/interactions/actions/rotate/behaviors/index.js.map +0 -1
  1425. package/dist/interactions/actions/rotate/behaviors/snapRotation.js +0 -12
  1426. package/dist/interactions/actions/rotate/behaviors/snapRotation.js.map +0 -1
  1427. package/dist/interactions/gestures/shared/snap.js +0 -24
  1428. package/dist/interactions/gestures/shared/snap.js.map +0 -1
  1429. package/dist/test-seams-D0pyV3pR.d.ts +0 -149
  1430. package/dist/util/constrainTo45.js +0 -17
  1431. package/dist/util/constrainTo45.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"cornerHandles.js","names":["CORNER_ANCHORS","cornerPoint","entry","bounds","cornerResizeHandles","p","c","hitCornerHandle","px","handle","radius","py","fixedCornerOf","anchor"],"sources":["../../../../src/interactions/actions/resize/cornerHandles.ts"],"sourcesContent":["import type { ResizeAnchor } from '../../gestures/types';\nimport type { Bounds } from 'core/viewport/fitViewToBounds';\n\n/** Corner resize-handle: world-space center plus the anchor that pins the opposite corner during resize. */\nexport interface CornerHandle {\n cx: number;\n cy: number;\n anchor: ResizeAnchor;\n}\n\n/** Which AABB edge a corner sits on, per axis. `'min'` = the x/y origin\n * edge; `'max'` = the origin + extent edge. */\nexport type CornerEdge = 'min' | 'max';\n\n/** One entry of the canonical 4-corner resize layout. The single source of\n * truth for \"which corner maps to which anchor / handle-kind\". */\nexport interface CornerAnchor {\n /** Which x-edge the corner sits on (`'min'` = left, `'max'` = right). */\n xEdge: CornerEdge;\n /** Which y-edge the corner sits on (`'min'` = top, `'max'` = bottom). */\n yEdge: CornerEdge;\n /** Anchor that pins the diagonally-opposite (fixed) corner. Always the\n * axis-wise opposite of `{xEdge, yEdge}`. */\n anchor: ResizeAnchor;\n /** Affordance/handle discriminator string for this corner. */\n kind: string;\n /** Short positional tag (`'<xEdge>-<yEdge>'`), e.g. `'min-max'`. */\n tag: string;\n}\n\n/**\n * The single ordered corner→anchor table. Order is **load-bearing**: every\n * consumer iterates it in this sequence (TL, TR, BL, BR) so positional\n * meaning (the i-th handle / `kind` / `tag`) stays consistent across the\n * resize-handle affordance, the affordance-hit classifier, and\n * `cornerResizeHandles`. Each corner's `anchor` names the diagonally\n * opposite corner, so dragging the corner scales the box from that fixed\n * point.\n */\nexport const CORNER_ANCHORS: readonly CornerAnchor[] = [\n { xEdge: 'min', yEdge: 'min', anchor: { x: 'max', y: 'max' }, kind: 'handle:top-left', tag: 'min-min' },\n { xEdge: 'max', yEdge: 'min', anchor: { x: 'min', y: 'max' }, kind: 'handle:top-right', tag: 'max-min' },\n { xEdge: 'min', yEdge: 'max', anchor: { x: 'max', y: 'min' }, kind: 'handle:bottom-left', tag: 'min-max' },\n { xEdge: 'max', yEdge: 'max', anchor: { x: 'min', y: 'min' }, kind: 'handle:bottom-right', tag: 'max-max' },\n];\n\n/** Resolve a corner's world-space position for the given bounds. `xEdge`\n * `'max'` → `x + width`; `yEdge` `'max'` → `y + height`. */\nexport function cornerPoint(\n bounds: Bounds,\n entry: Pick<CornerAnchor, 'xEdge' | 'yEdge'>,\n): { x: number; y: number } {\n return {\n x: entry.xEdge === 'max' ? bounds.x + bounds.width : bounds.x,\n y: entry.yEdge === 'max' ? bounds.y + bounds.height : bounds.y,\n };\n}\n\n/** Standard 4-corner resize-handle layout: each corner pins the opposite\n * corner via an anchor of `{x: 'min'|'max', y: 'min'|'max'}` so dragging it\n * scales the box from the fixed opposite corner. Decodes {@link CORNER_ANCHORS}\n * against `bounds`. */\nexport function cornerResizeHandles(bounds: Bounds): CornerHandle[] {\n return CORNER_ANCHORS.map((c) => {\n const p = cornerPoint(bounds, c);\n return { cx: p.x, cy: p.y, anchor: c.anchor };\n });\n}\n\n/** Square hit-test for a handle: returns true if `(px, py)` is within\n * `radius` of the handle center on both axes. */\nexport function hitCornerHandle(\n handle: CornerHandle,\n px: number,\n py: number,\n radius: number,\n): boolean {\n return Math.abs(px - handle.cx) <= radius\n && Math.abs(py - handle.cy) <= radius;\n}\n\n/** The corner that does NOT move under a resize gesture with the given\n * anchor. Used by the rotated-resize math to pin a world-space invariant.\n *\n * Convention: `anchor.x === 'min'` means the min-x (left) edge is the\n * fixed anchor, so the fixed corner sits at `x = bounds.x` (min-x).\n * `anchor.x === 'max'` means the max-x (right) edge is fixed, so the\n * fixed corner sits at `x = bounds.x + bounds.width`. `'free'` on an\n * axis means that axis doesn't move; the fixed coord is the bounds\n * origin on that axis. */\nexport function fixedCornerOf(\n bounds: Bounds,\n anchor: ResizeAnchor,\n): { x: number; y: number } {\n return {\n x: anchor.x === 'max' ? bounds.x + bounds.width : bounds.x,\n y: anchor.y === 'max' ? bounds.y + bounds.height : bounds.y,\n };\n}\n"],"mappings":";AAuCA,IAAaA,IAA0C;CACrD;EAAE,OAAO;EAAO,OAAO;EAAO,QAAQ;GAAE,GAAG;GAAO,GAAG;EAAM;EAAG,MAAM;EAAuB,KAAK;CAAU;CAC1G;EAAE,OAAO;EAAO,OAAO;EAAO,QAAQ;GAAE,GAAG;GAAO,GAAG;EAAM;EAAG,MAAM;EAAuB,KAAK;CAAU;CAC1G;EAAE,OAAO;EAAO,OAAO;EAAO,QAAQ;GAAE,GAAG;GAAO,GAAG;EAAM;EAAG,MAAM;EAAuB,KAAK;CAAU;CAC1G;EAAE,OAAO;EAAO,OAAO;EAAO,QAAQ;GAAE,GAAG;GAAO,GAAG;EAAM;EAAG,MAAM;EAAuB,KAAK;CAAU;AAC5G;AAIA,SAAgBC,EACd,GACA,GAC0B;CAC1B,OAAO;EACL,GAAGC,EAAM,UAAU,QAAQC,EAAO,IAAIA,EAAO,QAAQA,EAAO;EAC5D,GAAGD,EAAM,UAAU,QAAQC,EAAO,IAAIA,EAAO,SAASA,EAAO;CAC/D;AACF;AAMA,SAAgBC,EAAoB,GAAgC;CAClE,OAAOJ,EAAe,KAAK,MAAM;EAC/B,IAAMK,IAAIJ,EAAYE,GAAQG,CAAC;EAC/B,OAAO;GAAE,IAAID,EAAE;GAAG,IAAIA,EAAE;GAAG,QAAQC,EAAE;EAAO;CAC9C,CAAC;AACH;AAIA,SAAgBC,EACd,GACA,GACA,GACA,GACS;CACT,OAAO,KAAK,IAAIC,IAAKC,EAAO,EAAE,KAAKC,KAC9B,KAAK,IAAIC,IAAKF,EAAO,EAAE,KAAKC;AACnC;AAWA,SAAgBE,EACd,GACA,GAC0B;CAC1B,OAAO;EACL,GAAGC,EAAO,MAAM,QAAQV,EAAO,IAAIA,EAAO,QAAQA,EAAO;EACzD,GAAGU,EAAO,MAAM,QAAQV,EAAO,IAAIA,EAAO,SAASA,EAAO;CAC5D;AACF"}
1
+ {"version":3,"file":"cornerHandles.js","names":[],"sources":["../../../../src/interactions/actions/resize/cornerHandles.ts"],"sourcesContent":["import type { ResizeAnchor } from '../../gestures/types';\nimport type { Bounds } from 'core/viewport/fitViewToBounds';\nimport { pxExtentIn, type TargetTransform } from 'core/geometry/targetFrame';\n\n/** Corner resize-handle: world-space center plus the anchor that pins the opposite corner during resize. */\nexport interface CornerHandle {\n cx: number;\n cy: number;\n anchor: ResizeAnchor;\n}\n\n/** Which AABB edge a corner sits on, per axis. `'min'` = the x/y origin\n * edge; `'max'` = the origin + extent edge. */\nexport type CornerEdge = 'min' | 'max';\n\n/** Where a resize handle sits on one axis: on an edge (`CornerEdge`), or\n * `'mid'`way between them, which is what makes a handle an edge handle. */\nexport type HandleEdge = CornerEdge | 'mid';\n\n/** One entry of the canonical resize-handle layout: where the handle sits,\n * which edges it pins, and what a press on it reports. */\nexport interface ResizeHandleAnchor {\n /** Where the handle sits on x (`'min'` = left, `'mid'` = centered, `'max'` = right). */\n xEdge: HandleEdge;\n /** Where the handle sits on y (`'min'` = top, `'mid'` = centered, `'max'` = bottom). */\n yEdge: HandleEdge;\n /** Anchor that pins the opposite side: the axis-wise opposite of each\n * edge the handle sits on, and `'free'` on an axis it sits mid-way along,\n * which the drag leaves alone. */\n anchor: ResizeAnchor;\n /** Affordance/handle discriminator string for this handle. */\n kind: string;\n /** Short positional tag (`'<xEdge>-<yEdge>'`), e.g. `'min-max'`. */\n tag: string;\n}\n\n/** A corner entry of {@link RESIZE_HANDLE_ANCHORS}. */\nexport interface CornerAnchor extends ResizeHandleAnchor {\n /** Which x-edge the corner sits on (`'min'` = left, `'max'` = right). */\n xEdge: CornerEdge;\n /** Which y-edge the corner sits on (`'min'` = top, `'max'` = bottom). */\n yEdge: CornerEdge;\n}\n\n/**\n * The single ordered resize-handle table: the four corners (TL, TR, BL, BR),\n * then the four edge midpoints (top, right, bottom, left). Order is\n * **load-bearing**: the resize-handle affordance, the selection overlay and\n * `cornerResizeHandles` all iterate it in this sequence, so the i-th handle\n * means the same thing to each. A corner pins the diagonally opposite corner;\n * an edge pins the opposite edge and leaves the other axis free.\n */\nexport const RESIZE_HANDLE_ANCHORS: readonly ResizeHandleAnchor[] = [\n { xEdge: 'min', yEdge: 'min', anchor: { x: 'max', y: 'max' }, kind: 'handle:top-left', tag: 'min-min' },\n { xEdge: 'max', yEdge: 'min', anchor: { x: 'min', y: 'max' }, kind: 'handle:top-right', tag: 'max-min' },\n { xEdge: 'min', yEdge: 'max', anchor: { x: 'max', y: 'min' }, kind: 'handle:bottom-left', tag: 'min-max' },\n { xEdge: 'max', yEdge: 'max', anchor: { x: 'min', y: 'min' }, kind: 'handle:bottom-right', tag: 'max-max' },\n { xEdge: 'mid', yEdge: 'min', anchor: { x: 'free', y: 'max' }, kind: 'handle:top', tag: 'mid-min' },\n { xEdge: 'max', yEdge: 'mid', anchor: { x: 'min', y: 'free' }, kind: 'handle:right', tag: 'max-mid' },\n { xEdge: 'mid', yEdge: 'max', anchor: { x: 'free', y: 'min' }, kind: 'handle:bottom', tag: 'mid-max' },\n { xEdge: 'min', yEdge: 'mid', anchor: { x: 'max', y: 'free' }, kind: 'handle:left', tag: 'min-mid' },\n];\n\n/** True for a corner entry of {@link RESIZE_HANDLE_ANCHORS}. */\nexport function isCornerHandle(entry: ResizeHandleAnchor): entry is CornerAnchor {\n return entry.xEdge !== 'mid' && entry.yEdge !== 'mid';\n}\n\n/** The corner entries of {@link RESIZE_HANDLE_ANCHORS}, in its order. */\nexport const CORNER_ANCHORS: readonly CornerAnchor[] = RESIZE_HANDLE_ANCHORS.filter(isCornerHandle);\n\n/** An edge handle sits this many hit radii on screen from each corner of the\n * side it is on, at least: under that, it would crowd the corners and leave\n * the body too little room to be grabbed. At the default 8 px radius, a\n * side must span 48 px. */\nexport const EDGE_HANDLE_MIN_RADII = 6;\n\n/** Whether a body this size, in its own frame `xf`, has room for edge\n * handles on screen: each side spans {@link EDGE_HANDLE_MIN_RADII} times\n * `radiusPx`. Both sides, because a short side puts the two handles across\n * it over the middle of the body. */\nexport function edgeHandlesFit(\n body: { width: number; height: number },\n xf: TargetTransform,\n scale: { x: number; y: number },\n radiusPx: number,\n): boolean {\n const floor = pxExtentIn(EDGE_HANDLE_MIN_RADII * radiusPx, scale, xf);\n return Math.abs(body.width) >= floor.x && Math.abs(body.height) >= floor.y;\n}\n\n/** How a canvas lays out its resize handles. `hitRadiusPx` is the one size\n * the edge-handle decision keys on, because a handle exists to be grabbed:\n * paint and hit-test both read it, so no handle is drawn that cannot be\n * grabbed or grabbable where none is drawn. */\nexport interface ResizeHandleLayout {\n /** Whether the edge midpoints get handles at all. */\n edges: boolean;\n /** The handles' hit radius, screen px. */\n hitRadiusPx: number;\n}\n\n/** The handles a body gets in `layout`: every corner, then the edge\n * midpoints when the layout has them and {@link edgeHandlesFit} at its hit\n * radius. The answer the selection overlay paints; the hit-test reaches the\n * same one through the regions' `edgeOf`. */\nexport function resizeHandlesFor(\n layout: ResizeHandleLayout,\n body: { width: number; height: number },\n xf: TargetTransform,\n scale: { x: number; y: number },\n): readonly ResizeHandleAnchor[] {\n return layout.edges && edgeHandlesFit(body, xf, scale, layout.hitRadiusPx)\n ? RESIZE_HANDLE_ANCHORS\n : CORNER_ANCHORS;\n}\n\n/** Resolve a handle's position for the given bounds, in the bounds' frame:\n * `'min'` → the origin edge, `'max'` → origin + extent, `'mid'` → between. */\nexport function handlePoint(\n bounds: Bounds,\n entry: Pick<ResizeHandleAnchor, 'xEdge' | 'yEdge'>,\n): { x: number; y: number } {\n return {\n x: bounds.x + bounds.width * EDGE_FRACTION[entry.xEdge],\n y: bounds.y + bounds.height * EDGE_FRACTION[entry.yEdge],\n };\n}\n\nconst EDGE_FRACTION: Record<HandleEdge, number> = { min: 0, mid: 0.5, max: 1 };\n\n/** @deprecated Use {@link handlePoint}, which also places edge handles. */\nexport const cornerPoint: (\n bounds: Bounds,\n entry: Pick<CornerAnchor, 'xEdge' | 'yEdge'>,\n) => { x: number; y: number } = handlePoint;\n\n/** Standard 4-corner resize-handle layout: each corner pins the opposite\n * corner via an anchor of `{x: 'min'|'max', y: 'min'|'max'}` so dragging it\n * scales the box from the fixed opposite corner. Decodes {@link CORNER_ANCHORS}\n * against `bounds`; edge handles are the affordance's, which knows the view. */\nexport function cornerResizeHandles(bounds: Bounds): CornerHandle[] {\n return CORNER_ANCHORS.map((c) => {\n const p = handlePoint(bounds, c);\n return { cx: p.x, cy: p.y, anchor: c.anchor };\n });\n}\n\n/** Square hit-test for a handle: returns true if `(px, py)` is within\n * `radius` of the handle center on both axes. */\nexport function hitCornerHandle(\n handle: CornerHandle,\n px: number,\n py: number,\n radius: number,\n): boolean {\n return Math.abs(px - handle.cx) <= radius\n && Math.abs(py - handle.cy) <= radius;\n}\n\n/** The corner that does NOT move under a resize gesture with the given\n * anchor. Used by the rotated-resize math to pin a world-space invariant.\n *\n * Convention: `anchor.x === 'min'` means the min-x (left) edge is the\n * fixed anchor, so the fixed corner sits at `x = bounds.x` (min-x).\n * `anchor.x === 'max'` means the max-x (right) edge is fixed, so the\n * fixed corner sits at `x = bounds.x + bounds.width`. `'free'` on an\n * axis (an edge handle's other axis) pins the bounds' center on it: a drag\n * leaves that extent alone, and an aspect lock grows it about the center. */\nexport function fixedCornerOf(\n bounds: Bounds,\n anchor: ResizeAnchor,\n): { x: number; y: number } {\n return handlePoint(bounds, { xEdge: PINNED[anchor.x], yEdge: PINNED[anchor.y] });\n}\n\nconst PINNED: Record<ResizeAnchor['x'], HandleEdge> = { min: 'min', max: 'max', free: 'mid' };\n\n/** The corner or edge midpoint of `bounds` a resize pinning `anchor` moves. */\nexport function movingPoint(bounds: Bounds, anchor: ResizeAnchor): { x: number; y: number } {\n return handlePoint(bounds, { xEdge: MOVING[anchor.x], yEdge: MOVING[anchor.y] });\n}\n\nconst MOVING: Record<ResizeAnchor['x'], HandleEdge> = { min: 'max', max: 'min', free: 'mid' };\n\n/** `bounds` with the edges `anchor` leaves free moved by `(dx, dy)`, in its own axes. */\nexport function movedEdges(bounds: Bounds, anchor: ResizeAnchor, dx: number, dy: number): Bounds {\n let { x, y, width, height } = bounds;\n if (anchor.x === 'min') width += dx;\n else if (anchor.x === 'max') { x += dx; width -= dx; }\n if (anchor.y === 'min') height += dy;\n else if (anchor.y === 'max') { y += dy; height -= dy; }\n return { x, y, width, height };\n}\n"],"mappings":"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"}
@@ -1,88 +1,155 @@
1
- import { remapRotatedLeaf as e, translatePoseViaDescriptor as t } from "../../../core/geometry/poseDescriptor.js";
2
- import { localToWorld as n, worldDeltaToLocal as r } from "../../../core/geometry/targetFrame.js";
3
- import { fixedCornerOf as i } from "./cornerHandles.js";
4
- import { carryPose as a, planeOf as o } from "../planeInput.js";
5
- import { pointerStateOf as s } from "../pointerState.js";
6
- import { boxFrame as c } from "./boxFrame.js";
7
- import { boundsForRules as l } from "./ruleBounds.js";
8
- import { snapPose as u } from "./pointSnap.js";
9
- import { poseFrameOf as d } from "@weasel-js/geom";
1
+ import { remapRotatedLeaf, translatePoseViaDescriptor } from "../../../core/geometry/poseDescriptor.js";
2
+ import { localToWorld, worldDeltaToLocal } from "../../../core/geometry/targetFrame.js";
3
+ import { insetBox, outsetBox } from "../../../core/geometry/inkExtents.js";
4
+ import { fixedCornerOf, movedEdges } from "./cornerHandles.js";
5
+ import { carryPose, planeOf } from "../planeInput.js";
6
+ import { pointerStateOf } from "../pointerState.js";
7
+ import { snapMods } from "../../../features/snap/roles.js";
8
+ import { boundsForRules } from "./ruleBounds.js";
9
+ import { boxFrame } from "./boxFrame.js";
10
+ import { clampToMinSize } from "./behaviors/clampMinSize.js";
11
+ import { edgeAspect, onDiagonal } from "./aspect.js";
12
+ import { poseFrameOf } from "@weasel-js/geom";
13
+
10
14
  //#region src/interactions/actions/resize/frame.ts
11
- function f(e, t, n, i, a) {
12
- let { x: o, y: s } = r(a, n, i) ?? {
15
+ /** `ob` with the edges `anchor` leaves free moved by the drag delta, which is
16
+ * taken into the axes of the frame the box is drawn in first. A frame nothing
17
+ * maps back through moves no edge. */
18
+ function computeProposedBounds(ob, anchor, worldDx, worldDy, frame) {
19
+ const { x: dx, y: dy } = worldDeltaToLocal(frame, worldDx, worldDy) ?? {
13
20
  x: 0,
14
21
  y: 0
15
- }, c = e.x, l = e.y, u = e.width, d = e.height;
16
- return t.x === "min" ? u = e.width + o : t.x === "max" && (c = e.x + o, u = e.width - o), t.y === "min" ? d = e.height + s : t.y === "max" && (l = e.y + s, d = e.height - s), {
17
- x: c,
18
- y: l,
19
- width: u,
20
- height: d
21
22
  };
23
+ return movedEdges(ob, anchor, dx, dy);
22
24
  }
23
- function p(e, t, n, r) {
24
- let i = r;
25
- for (let r of e) {
26
- let e = r.onMove?.(t, {
27
- pose: i,
28
- anchor: n
29
- });
30
- e && e.pose !== void 0 && (i = {
31
- x: e.pose.x,
32
- y: e.pose.y,
33
- width: e.pose.width,
34
- height: e.pose.height
25
+ /** `proposed` as the constraints rewrite it, each seeing the one before's. */
26
+ function constrain(constraints, gctx, anchor, proposed) {
27
+ let bounds = proposed;
28
+ for (const b of constraints) {
29
+ const r = b.onMove?.(gctx, {
30
+ pose: bounds,
31
+ anchor
35
32
  });
33
+ if (!r) continue;
34
+ if (r.pose !== void 0) bounds = {
35
+ x: r.pose.x,
36
+ y: r.pose.y,
37
+ width: r.pose.width,
38
+ height: r.pose.height
39
+ };
36
40
  }
37
- return i;
41
+ return bounds;
38
42
  }
39
- function m(t, n, r, i, a) {
40
- return a && d(n) !== null ? e(n, r, i) : t.remapBounds(n, r, i);
43
+ /** One write id's world pose with the box taken from `src` to `dst`.
44
+ *
45
+ * A turned or skewed leaf resized with others needs its own frame: `src`/`dst`
46
+ * are world-frame there, unlike the lone path where the drag delta
47
+ * was already projected into the leaf's frame, so the naive affine
48
+ * scales the wrong pair of extents. See `remapRotatedLeaf`. */
49
+ function leafPose(g, start, src, dst, sharedBox) {
50
+ if (sharedBox && poseFrameOf(start) !== null) return remapRotatedLeaf(start, src, dst);
51
+ return g.remapBounds(start, src, dst);
41
52
  }
42
- function h(e, r, a, o) {
43
- let s = c(a, o);
44
- if (s.identity) return r;
45
- let l = i(o, a.anchor), u = n(s, l.x, l.y);
46
- return t(r, a.fixedWorld.x - u.x, a.fixedWorld.y - u.y, e);
53
+ /** `pose` shifted so the corner opposite the dragged one stays where the
54
+ * press found it, which resizing a box whose frame is about its center moves. */
55
+ function pinFixedCorner(g, pose, box, proposed) {
56
+ const frame = boxFrame(box, proposed);
57
+ if (frame.identity) return pose;
58
+ const newFixedLocal = fixedCornerOf(proposed, box.anchor);
59
+ const newFixedWorld = localToWorld(frame, newFixedLocal.x, newFixedLocal.y);
60
+ return translatePoseViaDescriptor(pose, box.fixedWorld.x - newFixedWorld.x, box.fixedWorld.y - newFixedWorld.y, g);
47
61
  }
48
- function g(e, t, n) {
49
- let r = e.scene.get(t)?.layer;
50
- return e.poseFrame.local(t, a(e.geometryOf(t), n, r === void 0 ? null : o(e.view, r)));
62
+ /** A world result for `id`, as stored. */
63
+ function storedPose(place, id, world) {
64
+ const layer = place.scene.get(id)?.layer;
65
+ return place.poseFrame.local(id, carryPose(place.geometryOf(id), world, layer === void 0 ? null : planeOf(place.view, layer)));
51
66
  }
52
- function _(e, t, n = (e, t) => t) {
53
- let { box: r } = e, i = /* @__PURE__ */ new Map(), a = (n) => {
54
- let i = e.startWorlds.get(n);
55
- if (i !== void 0) return m(e.geometryOf(n), i, r.bounds, t, e.sharedBox);
67
+ /** Every write id's stored pose with the box taken from where the press found
68
+ * it to `asked`, held to the place's minimum. A lone target is also pinned at
69
+ * the fixed corner, and comes back with its world pose. `proposed` is the box
70
+ * they were put in. */
71
+ function posesInBox(place, asked) {
72
+ const { box } = place;
73
+ const proposed = (place.minimum && clampToMinSize(asked, box.anchor, place.minimum)) ?? asked;
74
+ const previews = /* @__PURE__ */ new Map();
75
+ const worldOf = (id) => {
76
+ const start = place.startWorlds.get(id);
77
+ if (start === void 0) return void 0;
78
+ return leafPose(place.geometryOf(id), start, box.bounds, proposed, place.sharedBox);
56
79
  };
57
- if (e.sharedBox) {
58
- for (let t of e.writeIds) {
59
- let n = a(t);
60
- n !== void 0 && i.set(t, g(e, t, n));
80
+ if (place.sharedBox) {
81
+ for (const id of place.writeIds) {
82
+ const next = worldOf(id);
83
+ if (next === void 0) continue;
84
+ previews.set(id, storedPose(place, id, next));
61
85
  }
62
- return { previews: i };
86
+ return {
87
+ previews,
88
+ proposed
89
+ };
63
90
  }
64
- let o = e.writeIds[0], s = e.geometryOf(o), c = a(o);
65
- if (c === void 0) return { previews: i };
66
- let l = n(s, h(s, c, r, t));
67
- return i.set(o, g(e, o, l)), {
68
- previews: i,
91
+ const id = place.writeIds[0];
92
+ const g = place.geometryOf(id);
93
+ const remapped = worldOf(id);
94
+ if (remapped === void 0) return {
95
+ previews,
96
+ proposed
97
+ };
98
+ const world = pinFixedCorner(g, remapped, box, proposed);
99
+ previews.set(id, storedPose(place, id, world));
100
+ return {
101
+ previews,
102
+ proposed,
69
103
  lone: {
70
- id: o,
71
- g: s,
72
- world: l
104
+ id,
105
+ g,
106
+ world
73
107
  }
74
108
  };
75
109
  }
76
- function v(e, t, n) {
77
- let r = n.drag.current, { box: i, gestureCtx: a } = e;
78
- a.modifiers = { ...n.modifiers }, a.pointer = s(r, n), a.view = t.view(), a.plane = t.plane();
79
- let o = p(e.constraints, a, i.anchor, f(i.bounds, i.anchor, r.x - e.startWorld.x, r.y - e.startWorld.y, c(i, i.bounds))), { previews: d, lone: m } = _(e, o, (t, n) => u(e.pointSnap, t, n, i, i.anchor, a.modifiers, a.plane ?? null));
80
- return m && (a.current = /* @__PURE__ */ new Map([[m.id, l(m.g, m.world)]])), {
81
- previews: d,
82
- proposed: o
110
+ /** The pointer put on the box's diagonal, for an aspect-locked corner: the
111
+ * session's input subspace then leaves it where it is, and a target still
112
+ * lands it where the diagonal meets the target. */
113
+ function aspectPointer(session, frame, drawn, raw) {
114
+ const { startWorld: o, box } = session;
115
+ const local = worldDeltaToLocal(frame, raw.x - o.x, raw.y - o.y);
116
+ const d = local && onDiagonal(local, drawn, box.anchor);
117
+ if (!d) return raw;
118
+ const zero = localToWorld(frame, 0, 0);
119
+ const w = localToWorld(frame, d.x, d.y);
120
+ return {
121
+ x: o.x + w.x - zero.x,
122
+ y: o.y + w.y - zero.y
123
+ };
124
+ }
125
+ /** One move's previews: the box as the snapped drag and the constraints
126
+ * leave it, and every write id's stored pose inside it. A lone target also
127
+ * gets the rotated-resize pin; a shared box, resized in the AABB frame, does
128
+ * not.
129
+ * `moveCtx` must carry a drag. */
130
+ function nextFrame(session, readers, moveCtx) {
131
+ const raw = moveCtx.drag.current;
132
+ const { box, gestureCtx: gctx } = session;
133
+ gctx.modifiers = { ...moveCtx.modifiers };
134
+ gctx.pointer = pointerStateOf(raw, moveCtx);
135
+ gctx.view = readers.view();
136
+ gctx.plane = readers.plane();
137
+ const mods = snapMods(moveCtx);
138
+ const frame = boxFrame(box, box.bounds);
139
+ const drawnStart = outsetBox(box.bounds, box.extents);
140
+ const pointer = mods.constrain ? aspectPointer(session, frame, drawnStart, raw) : raw;
141
+ const at = session.snap.at(pointer, mods).point;
142
+ const moved = computeProposedBounds(box.bounds, box.anchor, at.x - session.startWorld.x, at.y - session.startWorld.y, frame);
143
+ const drawn = outsetBox(moved, box.extents);
144
+ const shaped = mods.constrain ? edgeAspect(drawn, drawnStart, box.anchor) : drawn;
145
+ const { previews, proposed, lone } = posesInBox(session, insetBox(constrain(session.constraints, gctx, box.anchor, shaped), box.extents));
146
+ if (lone) gctx.current = /* @__PURE__ */ new Map([[lone.id, outsetBox(boundsForRules(lone.g, lone.world), box.extents)]]);
147
+ return {
148
+ previews,
149
+ proposed
83
150
  };
84
151
  }
85
- //#endregion
86
- export { v as nextFrame, _ as posesInBox };
87
152
 
153
+ //#endregion
154
+ export { nextFrame, posesInBox };
88
155
  //# sourceMappingURL=frame.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"frame.js","names":["computeProposedBounds","dx","dy","worldDeltaToLocal","frame","worldDx","worldDy","nx","ob","ny","nw","nh","anchor","constrain","bounds","proposed","b","constraints","r","gctx","leafPose","sharedBox","poseFrameOf","start","remapRotatedLeaf","src","dst","g","pinFixedCorner","boxFrame","box","pose","newFixedLocal","fixedCornerOf","newFixedWorld","localToWorld","translatePoseViaDescriptor","storedPose","layer","place","id","carryPose","world","planeOf","posesInBox","previews","worldOf","next","remapped","snap","nextFrame","at","moveCtx","session","pointerStateOf","readers","snapPose","lone","boundsForRules"],"sources":["../../../../src/interactions/actions/resize/frame.ts"],"sourcesContent":["import { poseFrameOf } from '@weasel-js/geom';\nimport type { InvocationCtx } from '@weasel-js/routing';\nimport { pointerStateOf } from '../pointerState';\nimport { localToWorld, worldDeltaToLocal, type TargetTransform } from 'core/geometry/targetFrame';\nimport type { NodeId } from 'core/scene/types';\nimport type { Bounds } from 'core/viewport/fitViewToBounds';\nimport type { GestureReaders } from '../../gestures/shared/screenTolerance';\nimport type { BoundsConstraint, GestureContext, ResizeAnchor, RotatedPose } from '../../gestures/types';\nimport { carryPose, planeOf } from '../planeInput';\nimport { fixedCornerOf } from './cornerHandles';\nimport { remapRotatedLeaf, translatePoseViaDescriptor, type PoseDescriptor } from './geometry';\nimport { snapPose } from './pointSnap';\nimport { boundsForRules } from './ruleBounds';\nimport { boxFrame } from './boxFrame';\nimport type { ResizeBox, ResizeFrame, ResizeSession } from './session';\n\n/** `ob` with the edges `anchor` leaves free moved by the drag delta, which is\n * taken into the axes of the frame the box is drawn in first. A frame nothing\n * maps back through moves no edge. */\nfunction computeProposedBounds(\n ob: Bounds,\n anchor: ResizeAnchor,\n worldDx: number,\n worldDy: number,\n frame: TargetTransform,\n): Bounds {\n const { x: dx, y: dy } = worldDeltaToLocal(frame, worldDx, worldDy) ?? { x: 0, y: 0 };\n let nx = ob.x;\n let ny = ob.y;\n let nw = ob.width;\n let nh = ob.height;\n if (anchor.x === 'min') {\n nw = ob.width + dx;\n } else if (anchor.x === 'max') {\n nx = ob.x + dx;\n nw = ob.width - dx;\n }\n if (anchor.y === 'min') {\n nh = ob.height + dy;\n } else if (anchor.y === 'max') {\n ny = ob.y + dy;\n nh = ob.height - dy;\n }\n return { x: nx, y: ny, width: nw, height: nh };\n}\n\n/** `proposed` as the constraints rewrite it, each seeing the one before's. */\nfunction constrain(\n constraints: readonly BoundsConstraint<Bounds>[],\n gctx: GestureContext<Bounds>,\n anchor: ResizeAnchor,\n proposed: Bounds,\n): Bounds {\n let bounds = proposed;\n for (const b of constraints) {\n const r = b.onMove?.(gctx, { pose: bounds, anchor });\n if (!r) continue;\n if (r.pose !== undefined) {\n bounds = { x: r.pose.x, y: r.pose.y, width: r.pose.width, height: r.pose.height };\n }\n }\n return bounds;\n}\n\n/** One write id's world pose with the box taken from `src` to `dst`.\n *\n * A turned or skewed leaf resized with others needs its own frame: `src`/`dst`\n * are world-frame there, unlike the lone path where the drag delta\n * was already projected into the leaf's frame, so the naive affine\n * scales the wrong pair of extents. See `remapRotatedLeaf`. */\nfunction leafPose(\n g: PoseDescriptor<unknown>,\n start: unknown,\n src: Bounds,\n dst: Bounds,\n sharedBox: boolean,\n): unknown {\n if (sharedBox && poseFrameOf(start) !== null) {\n return remapRotatedLeaf(start as RotatedPose, src, dst);\n }\n return g.remapBounds(start, src, dst);\n}\n\n/** `pose` shifted so the corner opposite the dragged one stays where the\n * press found it, which resizing a box whose frame is about its center moves. */\nfunction pinFixedCorner(\n g: PoseDescriptor<unknown>,\n pose: unknown,\n box: Pick<ResizeBox, 'anchor' | 'rotation' | 'transform' | 'fixedWorld'>,\n proposed: Bounds,\n): unknown {\n const frame = boxFrame(box, proposed);\n if (frame.identity) return pose;\n const newFixedLocal = fixedCornerOf(proposed, box.anchor);\n const newFixedWorld = localToWorld(frame, newFixedLocal.x, newFixedLocal.y);\n return translatePoseViaDescriptor(\n pose,\n box.fixedWorld.x - newFixedWorld.x,\n box.fixedWorld.y - newFixedWorld.y,\n g,\n );\n}\n\n/** A world result for `id`, as stored. */\nfunction storedPose(\n place: Pick<ResizeSession, 'scene' | 'poseFrame' | 'view' | 'geometryOf'>,\n id: NodeId,\n world: unknown,\n): unknown {\n const layer = place.scene.get(id)?.layer;\n return place.poseFrame.local(\n id,\n carryPose(place.geometryOf(id), world, layer === undefined ? null : planeOf(place.view, layer)),\n );\n}\n\n/** Every write id's stored pose with the box taken from where the press found\n * it to `proposed`. A lone target is also pinned at the fixed corner and run\n * through `snap`, and comes back with its world pose. */\nexport function posesInBox(\n place: Pick<ResizeSession, 'scene' | 'poseFrame' | 'view' | 'geometryOf' | 'writeIds' | 'startWorlds' | 'box' | 'sharedBox'>,\n proposed: Bounds,\n snap: (g: PoseDescriptor<unknown>, world: unknown) => unknown = (_g, world) => world,\n): { previews: Map<NodeId, unknown>; lone?: { id: NodeId; g: PoseDescriptor<unknown>; world: unknown } } {\n const { box } = place;\n const previews = new Map<NodeId, unknown>();\n const worldOf = (id: NodeId): unknown => {\n const start = place.startWorlds.get(id);\n if (start === undefined) return undefined;\n return leafPose(place.geometryOf(id), start, box.bounds, proposed, place.sharedBox);\n };\n\n if (place.sharedBox) {\n for (const id of place.writeIds) {\n const next = worldOf(id);\n if (next === undefined) continue;\n previews.set(id, storedPose(place, id, next));\n }\n return { previews };\n }\n\n const id = place.writeIds[0];\n const g = place.geometryOf(id);\n const remapped = worldOf(id);\n if (remapped === undefined) return { previews };\n const world = snap(g, pinFixedCorner(g, remapped, box, proposed));\n previews.set(id, storedPose(place, id, world));\n return { previews, lone: { id, g, world } };\n}\n\n/** One move's previews: the box as the drag and the constraints leave it,\n * and every write id's stored pose inside it. A lone target also gets the\n * rotated-resize pin and the point snaps, which a shared box, resized in the\n * AABB frame, does not. `moveCtx` must carry a drag. */\nexport function nextFrame(session: ResizeSession, readers: GestureReaders, moveCtx: InvocationCtx): ResizeFrame {\n const at = moveCtx.drag!.current;\n const { box, gestureCtx: gctx } = session;\n gctx.modifiers = { ...moveCtx.modifiers };\n gctx.pointer = pointerStateOf(at, moveCtx);\n gctx.view = readers.view();\n gctx.plane = readers.plane();\n\n const proposed = constrain(\n session.constraints,\n gctx,\n box.anchor,\n computeProposedBounds(box.bounds, box.anchor, at.x - session.startWorld.x, at.y - session.startWorld.y, boxFrame(box, box.bounds)),\n );\n\n const { previews, lone } = posesInBox(session, proposed, (g, world) => snapPose(\n session.pointSnap, g, world, box, box.anchor, gctx.modifiers, gctx.plane ?? null,\n ));\n if (lone) gctx.current = new Map<string, Bounds>([[lone.id as string, boundsForRules(lone.g, lone.world)]]);\n return { previews, proposed };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"frame.js","names":[],"sources":["../../../../src/interactions/actions/resize/frame.ts"],"sourcesContent":["import { poseFrameOf } from '@weasel-js/geom';\nimport type { InvocationCtx } from '@weasel-js/routing';\nimport { pointerStateOf } from '../pointerState';\nimport { localToWorld, worldDeltaToLocal, type TargetTransform } from 'core/geometry/targetFrame';\nimport type { NodeId } from 'core/scene/types';\nimport type { Bounds } from 'core/viewport/fitViewToBounds';\nimport type { GestureReaders } from '../../gestures/shared/screenTolerance';\nimport type { BoundsConstraint, GestureContext, ResizeAnchor, RotatedPose } from '../../gestures/types';\nimport { carryPose, planeOf } from '../planeInput';\nimport { fixedCornerOf, movedEdges } from './cornerHandles';\nimport { remapRotatedLeaf, translatePoseViaDescriptor, type PoseDescriptor } from './geometry';\nimport { boundsForRules } from './ruleBounds';\nimport { boxFrame } from './boxFrame';\nimport { insetBox, outsetBox } from 'core/geometry/inkExtents';\nimport type { ResizeBox, ResizeFrame, ResizeSession } from './session';\nimport { clampToMinSize } from './behaviors/clampMinSize';\nimport { edgeAspect, onDiagonal } from './aspect';\nimport { snapMods } from 'features/snap/roles';\n\n/** `ob` with the edges `anchor` leaves free moved by the drag delta, which is\n * taken into the axes of the frame the box is drawn in first. A frame nothing\n * maps back through moves no edge. */\nfunction computeProposedBounds(\n ob: Bounds,\n anchor: ResizeAnchor,\n worldDx: number,\n worldDy: number,\n frame: TargetTransform,\n): Bounds {\n const { x: dx, y: dy } = worldDeltaToLocal(frame, worldDx, worldDy) ?? { x: 0, y: 0 };\n return movedEdges(ob, anchor, dx, dy);\n}\n\n/** `proposed` as the constraints rewrite it, each seeing the one before's. */\nfunction constrain(\n constraints: readonly BoundsConstraint<Bounds>[],\n gctx: GestureContext<Bounds>,\n anchor: ResizeAnchor,\n proposed: Bounds,\n): Bounds {\n let bounds = proposed;\n for (const b of constraints) {\n const r = b.onMove?.(gctx, { pose: bounds, anchor });\n if (!r) continue;\n if (r.pose !== undefined) {\n bounds = { x: r.pose.x, y: r.pose.y, width: r.pose.width, height: r.pose.height };\n }\n }\n return bounds;\n}\n\n/** One write id's world pose with the box taken from `src` to `dst`.\n *\n * A turned or skewed leaf resized with others needs its own frame: `src`/`dst`\n * are world-frame there, unlike the lone path where the drag delta\n * was already projected into the leaf's frame, so the naive affine\n * scales the wrong pair of extents. See `remapRotatedLeaf`. */\nfunction leafPose(\n g: PoseDescriptor<unknown>,\n start: unknown,\n src: Bounds,\n dst: Bounds,\n sharedBox: boolean,\n): unknown {\n if (sharedBox && poseFrameOf(start) !== null) {\n return remapRotatedLeaf(start as RotatedPose, src, dst);\n }\n return g.remapBounds(start, src, dst);\n}\n\n/** `pose` shifted so the corner opposite the dragged one stays where the\n * press found it, which resizing a box whose frame is about its center moves. */\nfunction pinFixedCorner(\n g: PoseDescriptor<unknown>,\n pose: unknown,\n box: Pick<ResizeBox, 'anchor' | 'rotation' | 'transform' | 'fixedWorld'>,\n proposed: Bounds,\n): unknown {\n const frame = boxFrame(box, proposed);\n if (frame.identity) return pose;\n const newFixedLocal = fixedCornerOf(proposed, box.anchor);\n const newFixedWorld = localToWorld(frame, newFixedLocal.x, newFixedLocal.y);\n return translatePoseViaDescriptor(\n pose,\n box.fixedWorld.x - newFixedWorld.x,\n box.fixedWorld.y - newFixedWorld.y,\n g,\n );\n}\n\n/** A world result for `id`, as stored. */\nfunction storedPose(\n place: Pick<ResizeSession, 'scene' | 'poseFrame' | 'view' | 'geometryOf'>,\n id: NodeId,\n world: unknown,\n): unknown {\n const layer = place.scene.get(id)?.layer;\n return place.poseFrame.local(\n id,\n carryPose(place.geometryOf(id), world, layer === undefined ? null : planeOf(place.view, layer)),\n );\n}\n\n/** Every write id's stored pose with the box taken from where the press found\n * it to `asked`, held to the place's minimum. A lone target is also pinned at\n * the fixed corner, and comes back with its world pose. `proposed` is the box\n * they were put in. */\nexport function posesInBox(\n place: Pick<ResizeSession, 'scene' | 'poseFrame' | 'view' | 'geometryOf' | 'writeIds' | 'startWorlds' | 'box' | 'sharedBox' | 'minimum'>,\n asked: Bounds,\n): { previews: Map<NodeId, unknown>; proposed: Bounds; lone?: { id: NodeId; g: PoseDescriptor<unknown>; world: unknown } } {\n const { box } = place;\n const proposed = (place.minimum && clampToMinSize(asked, box.anchor, place.minimum)) ?? asked;\n const previews = new Map<NodeId, unknown>();\n const worldOf = (id: NodeId): unknown => {\n const start = place.startWorlds.get(id);\n if (start === undefined) return undefined;\n return leafPose(place.geometryOf(id), start, box.bounds, proposed, place.sharedBox);\n };\n\n if (place.sharedBox) {\n for (const id of place.writeIds) {\n const next = worldOf(id);\n if (next === undefined) continue;\n previews.set(id, storedPose(place, id, next));\n }\n return { previews, proposed };\n }\n\n const id = place.writeIds[0];\n const g = place.geometryOf(id);\n const remapped = worldOf(id);\n if (remapped === undefined) return { previews, proposed };\n const world = pinFixedCorner(g, remapped, box, proposed);\n previews.set(id, storedPose(place, id, world));\n return { previews, proposed, lone: { id, g, world } };\n}\n\n/** The pointer put on the box's diagonal, for an aspect-locked corner: the\n * session's input subspace then leaves it where it is, and a target still\n * lands it where the diagonal meets the target. */\nfunction aspectPointer(session: ResizeSession, frame: TargetTransform, drawn: Bounds, raw: { x: number; y: number }): { x: number; y: number } {\n const { startWorld: o, box } = session;\n const local = worldDeltaToLocal(frame, raw.x - o.x, raw.y - o.y);\n const d = local && onDiagonal(local, drawn, box.anchor);\n if (!d) return raw;\n const zero = localToWorld(frame, 0, 0);\n const w = localToWorld(frame, d.x, d.y);\n return { x: o.x + w.x - zero.x, y: o.y + w.y - zero.y };\n}\n\n/** One move's previews: the box as the snapped drag and the constraints\n * leave it, and every write id's stored pose inside it. A lone target also\n * gets the rotated-resize pin; a shared box, resized in the AABB frame, does\n * not.\n * `moveCtx` must carry a drag. */\nexport function nextFrame(session: ResizeSession, readers: GestureReaders, moveCtx: InvocationCtx): ResizeFrame {\n const raw = moveCtx.drag!.current;\n const { box, gestureCtx: gctx } = session;\n gctx.modifiers = { ...moveCtx.modifiers };\n gctx.pointer = pointerStateOf(raw, moveCtx);\n gctx.view = readers.view();\n gctx.plane = readers.plane();\n\n const mods = snapMods(moveCtx);\n const frame = boxFrame(box, box.bounds);\n const drawnStart = outsetBox(box.bounds, box.extents);\n const pointer = mods.constrain ? aspectPointer(session, frame, drawnStart, raw) : raw;\n const snapped = session.snap.at(pointer, mods);\n const at = snapped.point;\n // The constraints see the box as drawn; the stroke keeps its width, so the\n // extents come back off what they leave.\n const moved = computeProposedBounds(box.bounds, box.anchor, at.x - session.startWorld.x, at.y - session.startWorld.y, frame);\n const drawn = outsetBox(moved, box.extents);\n const shaped = mods.constrain ? edgeAspect(drawn, drawnStart, box.anchor) : drawn;\n const constrained = insetBox(constrain(session.constraints, gctx, box.anchor, shaped), box.extents);\n\n const { previews, proposed, lone } = posesInBox(session, constrained);\n if (lone) gctx.current = new Map<string, Bounds>([[lone.id as string, outsetBox(boundsForRules(lone.g, lone.world), box.extents)]]);\n return { previews, proposed };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAsBA,SAAS,sBACP,IACA,QACA,SACA,SACA,OACQ;CACR,MAAM,EAAE,GAAG,IAAI,GAAG,OAAO,kBAAkB,OAAO,SAAS,OAAO,KAAK;EAAE,GAAG;EAAG,GAAG;CAAE;CACpF,OAAO,WAAW,IAAI,QAAQ,IAAI,EAAE;AACtC;;AAGA,SAAS,UACP,aACA,MACA,QACA,UACQ;CACR,IAAI,SAAS;CACb,KAAK,MAAM,KAAK,aAAa;EAC3B,MAAM,IAAI,EAAE,SAAS,MAAM;GAAE,MAAM;GAAQ;EAAO,CAAC;EACnD,IAAI,CAAC,GAAG;EACR,IAAI,EAAE,SAAS,QACb,SAAS;GAAE,GAAG,EAAE,KAAK;GAAG,GAAG,EAAE,KAAK;GAAG,OAAO,EAAE,KAAK;GAAO,QAAQ,EAAE,KAAK;EAAO;CAEpF;CACA,OAAO;AACT;;;;;;;AAQA,SAAS,SACP,GACA,OACA,KACA,KACA,WACS;CACT,IAAI,aAAa,YAAY,KAAK,MAAM,MACtC,OAAO,iBAAiB,OAAsB,KAAK,GAAG;CAExD,OAAO,EAAE,YAAY,OAAO,KAAK,GAAG;AACtC;;;AAIA,SAAS,eACP,GACA,MACA,KACA,UACS;CACT,MAAM,QAAQ,SAAS,KAAK,QAAQ;CACpC,IAAI,MAAM,UAAU,OAAO;CAC3B,MAAM,gBAAgB,cAAc,UAAU,IAAI,MAAM;CACxD,MAAM,gBAAgB,aAAa,OAAO,cAAc,GAAG,cAAc,CAAC;CAC1E,OAAO,2BACL,MACA,IAAI,WAAW,IAAI,cAAc,GACjC,IAAI,WAAW,IAAI,cAAc,GACjC,CACF;AACF;;AAGA,SAAS,WACP,OACA,IACA,OACS;CACT,MAAM,QAAQ,MAAM,MAAM,IAAI,EAAE,CAAC,EAAE;CACnC,OAAO,MAAM,UAAU,MACrB,IACA,UAAU,MAAM,WAAW,EAAE,GAAG,OAAO,UAAU,SAAY,OAAO,QAAQ,MAAM,MAAM,KAAK,CAAC,CAChG;AACF;;;;;AAMA,SAAgB,WACd,OACA,OACyH;CACzH,MAAM,EAAE,QAAQ;CAChB,MAAM,YAAY,MAAM,WAAW,eAAe,OAAO,IAAI,QAAQ,MAAM,OAAO,MAAM;CACxF,MAAM,2BAAW,IAAI,IAAqB;CAC1C,MAAM,WAAW,OAAwB;EACvC,MAAM,QAAQ,MAAM,YAAY,IAAI,EAAE;EACtC,IAAI,UAAU,QAAW,OAAO;EAChC,OAAO,SAAS,MAAM,WAAW,EAAE,GAAG,OAAO,IAAI,QAAQ,UAAU,MAAM,SAAS;CACpF;CAEA,IAAI,MAAM,WAAW;EACnB,KAAK,MAAM,MAAM,MAAM,UAAU;GAC/B,MAAM,OAAO,QAAQ,EAAE;GACvB,IAAI,SAAS,QAAW;GACxB,SAAS,IAAI,IAAI,WAAW,OAAO,IAAI,IAAI,CAAC;EAC9C;EACA,OAAO;GAAE;GAAU;EAAS;CAC9B;CAEA,MAAM,KAAK,MAAM,SAAS;CAC1B,MAAM,IAAI,MAAM,WAAW,EAAE;CAC7B,MAAM,WAAW,QAAQ,EAAE;CAC3B,IAAI,aAAa,QAAW,OAAO;EAAE;EAAU;CAAS;CACxD,MAAM,QAAQ,eAAe,GAAG,UAAU,KAAK,QAAQ;CACvD,SAAS,IAAI,IAAI,WAAW,OAAO,IAAI,KAAK,CAAC;CAC7C,OAAO;EAAE;EAAU;EAAU,MAAM;GAAE;GAAI;GAAG;EAAM;CAAE;AACtD;;;;AAKA,SAAS,cAAc,SAAwB,OAAwB,OAAe,KAAyD;CAC7I,MAAM,EAAE,YAAY,GAAG,QAAQ;CAC/B,MAAM,QAAQ,kBAAkB,OAAO,IAAI,IAAI,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC;CAC/D,MAAM,IAAI,SAAS,WAAW,OAAO,OAAO,IAAI,MAAM;CACtD,IAAI,CAAC,GAAG,OAAO;CACf,MAAM,OAAO,aAAa,OAAO,GAAG,CAAC;CACrC,MAAM,IAAI,aAAa,OAAO,EAAE,GAAG,EAAE,CAAC;CACtC,OAAO;EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,KAAK;EAAG,GAAG,EAAE,IAAI,EAAE,IAAI,KAAK;CAAE;AACxD;;;;;;AAOA,SAAgB,UAAU,SAAwB,SAAyB,SAAqC;CAC9G,MAAM,MAAM,QAAQ,KAAM;CAC1B,MAAM,EAAE,KAAK,YAAY,SAAS;CAClC,KAAK,YAAY,EAAE,GAAG,QAAQ,UAAU;CACxC,KAAK,UAAU,eAAe,KAAK,OAAO;CAC1C,KAAK,OAAO,QAAQ,KAAK;CACzB,KAAK,QAAQ,QAAQ,MAAM;CAE3B,MAAM,OAAO,SAAS,OAAO;CAC7B,MAAM,QAAQ,SAAS,KAAK,IAAI,MAAM;CACtC,MAAM,aAAa,UAAU,IAAI,QAAQ,IAAI,OAAO;CACpD,MAAM,UAAU,KAAK,YAAY,cAAc,SAAS,OAAO,YAAY,GAAG,IAAI;CAElF,MAAM,KADU,QAAQ,KAAK,GAAG,SAAS,IAC9B,CAAA,CAAQ;CAGnB,MAAM,QAAQ,sBAAsB,IAAI,QAAQ,IAAI,QAAQ,GAAG,IAAI,QAAQ,WAAW,GAAG,GAAG,IAAI,QAAQ,WAAW,GAAG,KAAK;CAC3H,MAAM,QAAQ,UAAU,OAAO,IAAI,OAAO;CAC1C,MAAM,SAAS,KAAK,YAAY,WAAW,OAAO,YAAY,IAAI,MAAM,IAAI;CAG5E,MAAM,EAAE,UAAU,UAAU,SAAS,WAAW,SAF5B,SAAS,UAAU,QAAQ,aAAa,MAAM,IAAI,QAAQ,MAAM,GAAG,IAAI,OAElC,CAAW;CACpE,IAAI,MAAM,KAAK,0BAAU,IAAI,IAAoB,CAAC,CAAC,KAAK,IAAc,UAAU,eAAe,KAAK,GAAG,KAAK,KAAK,GAAG,IAAI,OAAO,CAAC,CAAC,CAAC;CAClI,OAAO;EAAE;EAAU;CAAS;AAC9B"}
@@ -0,0 +1,35 @@
1
+ import { minSizeOf } from "../../../core/scene/minSize.js";
2
+ import { poseFrameOf } from "@weasel-js/geom";
3
+
4
+ //#region src/interactions/actions/resize/minimum.ts
5
+ /**
6
+ * The smallest the resized box may go, from each written node's
7
+ * `data.minSize`: a lone target's own, or, for a box several share, the box
8
+ * at which the first of them reaches its own. A turned member is held on
9
+ * both axes by the larger of its two ratios, since the box's axes are not
10
+ * its own. `null` when nothing written has a minimum.
11
+ */
12
+ function boxMinimum(scene, writeIds, leafBounds, startWorlds, box, sharedBox) {
13
+ if (!sharedBox) return minSizeOf(scene.get(writeIds[0])?.data);
14
+ let sx = 0;
15
+ let sy = 0;
16
+ writeIds.forEach((id, i) => {
17
+ const min = minSizeOf(scene.get(id)?.data);
18
+ const leaf = leafBounds[i];
19
+ if (!min || !leaf) return;
20
+ const rx = leaf.width > 0 ? min.width / leaf.width : 0;
21
+ const ry = leaf.height > 0 ? min.height / leaf.height : 0;
22
+ const turned = poseFrameOf(startWorlds.get(id)) !== null;
23
+ sx = Math.max(sx, turned ? Math.max(rx, ry) : rx);
24
+ sy = Math.max(sy, turned ? Math.max(rx, ry) : ry);
25
+ });
26
+ if (sx === 0 && sy === 0) return null;
27
+ return {
28
+ width: sx * box.width,
29
+ height: sy * box.height
30
+ };
31
+ }
32
+
33
+ //#endregion
34
+ export { boxMinimum };
35
+ //# sourceMappingURL=minimum.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"minimum.js","names":[],"sources":["../../../../src/interactions/actions/resize/minimum.ts"],"sourcesContent":["import { poseFrameOf } from '@weasel-js/geom';\nimport { minSizeOf, type MinSize } from 'core/scene/minSize';\nimport type { NodeId, Scene } from 'core/scene/types';\nimport type { Bounds } from 'core/viewport/fitViewToBounds';\n\n/**\n * The smallest the resized box may go, from each written node's\n * `data.minSize`: a lone target's own, or, for a box several share, the box\n * at which the first of them reaches its own. A turned member is held on\n * both axes by the larger of its two ratios, since the box's axes are not\n * its own. `null` when nothing written has a minimum.\n */\nexport function boxMinimum(\n scene: Scene<unknown, string, unknown>,\n writeIds: readonly NodeId[],\n leafBounds: readonly Bounds[],\n startWorlds: ReadonlyMap<NodeId, unknown>,\n box: Bounds,\n sharedBox: boolean,\n): MinSize | null {\n if (!sharedBox) return minSizeOf(scene.get(writeIds[0])?.data);\n let sx = 0;\n let sy = 0;\n writeIds.forEach((id, i) => {\n const min = minSizeOf(scene.get(id)?.data);\n const leaf = leafBounds[i];\n if (!min || !leaf) return;\n const rx = leaf.width > 0 ? min.width / leaf.width : 0;\n const ry = leaf.height > 0 ? min.height / leaf.height : 0;\n const turned = poseFrameOf(startWorlds.get(id)) !== null;\n sx = Math.max(sx, turned ? Math.max(rx, ry) : rx);\n sy = Math.max(sy, turned ? Math.max(rx, ry) : ry);\n });\n if (sx === 0 && sy === 0) return null;\n return { width: sx * box.width, height: sy * box.height };\n}\n"],"mappings":";;;;;;;;;;;AAYA,SAAgB,WACd,OACA,UACA,YACA,aACA,KACA,WACgB;CAChB,IAAI,CAAC,WAAW,OAAO,UAAU,MAAM,IAAI,SAAS,EAAE,CAAC,EAAE,IAAI;CAC7D,IAAI,KAAK;CACT,IAAI,KAAK;CACT,SAAS,SAAS,IAAI,MAAM;EAC1B,MAAM,MAAM,UAAU,MAAM,IAAI,EAAE,CAAC,EAAE,IAAI;EACzC,MAAM,OAAO,WAAW;EACxB,IAAI,CAAC,OAAO,CAAC,MAAM;EACnB,MAAM,KAAK,KAAK,QAAQ,IAAI,IAAI,QAAQ,KAAK,QAAQ;EACrD,MAAM,KAAK,KAAK,SAAS,IAAI,IAAI,SAAS,KAAK,SAAS;EACxD,MAAM,SAAS,YAAY,YAAY,IAAI,EAAE,CAAC,MAAM;EACpD,KAAK,KAAK,IAAI,IAAI,SAAS,KAAK,IAAI,IAAI,EAAE,IAAI,EAAE;EAChD,KAAK,KAAK,IAAI,IAAI,SAAS,KAAK,IAAI,IAAI,EAAE,IAAI,EAAE;CAClD,CAAC;CACD,IAAI,OAAO,KAAK,OAAO,GAAG,OAAO;CACjC,OAAO;EAAE,OAAO,KAAK,IAAI;EAAO,QAAQ,KAAK,IAAI;CAAO;AAC1D"}
@@ -1,47 +1,57 @@
1
- import { resizeOps as e } from "./commit.js";
2
- import { posesInBox as t } from "./frame.js";
3
- import { captureResize as n } from "./session.js";
1
+ import { resizeOps } from "./commit.js";
2
+ import { posesInBox } from "./frame.js";
3
+ import { captureResize } from "./session.js";
4
+
4
5
  //#region src/interactions/actions/resize/replay.ts
5
- function r(e, t) {
6
+ /** `to`, given in units of `from` (`{ x: 0, y: 0, width: 1, height: 1 }` is
7
+ * `from` itself), in `from`'s own coordinates. */
8
+ function boxInUnits(from, to) {
6
9
  return {
7
- x: e.x + t.x * e.width,
8
- y: e.y + t.y * e.height,
9
- width: t.width * e.width,
10
- height: t.height * e.height
10
+ x: from.x + to.x * from.width,
11
+ y: from.y + to.y * from.height,
12
+ width: to.width * from.width,
13
+ height: to.height * from.height
11
14
  };
12
15
  }
13
- function i(e, t) {
14
- let n = e.width === 0 ? {
16
+ /** `to` in units of `from`: the inverse of `boxInUnits`. A zero extent
17
+ * reads as unscaled on that axis. */
18
+ function unitsOfBox(from, to) {
19
+ const ux = from.width === 0 ? {
15
20
  x: 0,
16
21
  width: 1
17
22
  } : {
18
- x: (t.x - e.x) / e.width,
19
- width: t.width / e.width
20
- }, r = e.height === 0 ? {
23
+ x: (to.x - from.x) / from.width,
24
+ width: to.width / from.width
25
+ };
26
+ const uy = from.height === 0 ? {
21
27
  y: 0,
22
28
  height: 1
23
29
  } : {
24
- y: (t.y - e.y) / e.height,
25
- height: t.height / e.height
30
+ y: (to.y - from.y) / from.height,
31
+ height: to.height / from.height
26
32
  };
27
33
  return {
28
- x: n.x,
29
- y: r.y,
30
- width: n.width,
31
- height: r.height
34
+ x: ux.x,
35
+ y: uy.y,
36
+ width: ux.width,
37
+ height: uy.height
32
38
  };
33
39
  }
34
- function a(i, a, o, s, c, l) {
35
- if (a.length === 0) return [];
36
- let u = n(i, a, o, c);
37
- if (!u) return [];
38
- let { place: d } = u, { previews: f } = t(d, r(d.box.bounds, s));
39
- return e({
40
- ...d,
41
- geometryProjection: c.geometryProjection
42
- }, f, l);
40
+ /** The ops that resize `selected` the way a handle drag would, taking the box
41
+ * it would resize to `units` of itself. The resize policy's expansion
42
+ * applies; its constraints and point snaps, which shape a pointer, do not. */
43
+ function resizeSelectionOps(scene, selected, anchor, units, deps, label) {
44
+ if (selected.length === 0) return [];
45
+ const captured = captureResize(scene, selected, anchor, deps);
46
+ if (!captured) return [];
47
+ const { place } = captured;
48
+ const { previews } = posesInBox(place, boxInUnits(place.box.bounds, units));
49
+ return resizeOps({
50
+ ...place,
51
+ geometryProjection: deps.geometryProjection
52
+ }, previews, label);
43
53
  }
44
- //#endregion
45
- export { r as boxInUnits, a as resizeSelectionOps, i as unitsOfBox };
46
54
 
55
+ //#endregion
56
+ export { boxInUnits, resizeSelectionOps, unitsOfBox };
47
57
  //# sourceMappingURL=replay.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"replay.js","names":["boxInUnits","from","to","unitsOfBox","ux","uy","resizeSelectionOps","selected","captured","captureResize","scene","anchor","deps","posesInBox","place","units","resizeOps","previews","label"],"sources":["../../../../src/interactions/actions/resize/replay.ts"],"sourcesContent":["import type { ActionDeps, ResizeAnchor } from '@weasel-js/routing';\nimport type { Op } from 'core/ops/types';\nimport type { NodeId, Scene } from 'core/scene/types';\nimport type { Bounds } from 'core/viewport/fitViewToBounds';\nimport { resizeOps } from './commit';\nimport { posesInBox } from './frame';\nimport { captureResize } from './session';\n\n/** `to`, given in units of `from` (`{ x: 0, y: 0, width: 1, height: 1 }` is\n * `from` itself), in `from`'s own coordinates. */\nexport function boxInUnits(from: Bounds, to: Bounds): Bounds {\n return {\n x: from.x + to.x * from.width,\n y: from.y + to.y * from.height,\n width: to.width * from.width,\n height: to.height * from.height,\n };\n}\n\n/** `to` in units of `from`: the inverse of `boxInUnits`. A zero extent\n * reads as unscaled on that axis. */\nexport function unitsOfBox(from: Bounds, to: Bounds): Bounds {\n const ux = from.width === 0 ? { x: 0, width: 1 } : { x: (to.x - from.x) / from.width, width: to.width / from.width };\n const uy = from.height === 0 ? { y: 0, height: 1 } : { y: (to.y - from.y) / from.height, height: to.height / from.height };\n return { x: ux.x, y: uy.y, width: ux.width, height: uy.height };\n}\n\n/** The ops that resize `selected` the way a handle drag would, taking the box\n * it would resize to `units` of itself. The resize policy's expansion\n * applies; its constraints and point snaps, which shape a pointer, do not. */\nexport function resizeSelectionOps(\n scene: Scene<unknown, string, unknown>,\n selected: readonly string[],\n anchor: ResizeAnchor,\n units: Bounds,\n deps: Pick<ActionDeps, 'poseDescriptor' | 'resizePolicy' | 'view' | 'geometryProjection'>,\n label: string,\n): Op[] {\n if (selected.length === 0) return [];\n const captured = captureResize(scene, selected as NodeId[], anchor, deps);\n if (!captured) return [];\n const { place } = captured;\n const { previews } = posesInBox(place, boxInUnits(place.box.bounds, units));\n return resizeOps({ ...place, geometryProjection: deps.geometryProjection }, previews, label);\n}\n"],"mappings":";;;;AAUA,SAAgBA,EAAW,GAAc,GAAoB;CAC3D,OAAO;EACL,GAAGC,EAAK,IAAIC,EAAG,IAAID,EAAK;EACxB,GAAGA,EAAK,IAAIC,EAAG,IAAID,EAAK;EACxB,OAAOC,EAAG,QAAQD,EAAK;EACvB,QAAQC,EAAG,SAASD,EAAK;CAC3B;AACF;AAIA,SAAgBE,EAAW,GAAc,GAAoB;CAC3D,IAAMC,IAAKH,EAAK,UAAU,IAAI;EAAE,GAAG;EAAG,OAAO;CAAE,IAAI;EAAE,IAAIC,EAAG,IAAID,EAAK,KAAKA,EAAK;EAAO,OAAOC,EAAG,QAAQD,EAAK;CAAM,GAC7GI,IAAKJ,EAAK,WAAW,IAAI;EAAE,GAAG;EAAG,QAAQ;CAAE,IAAI;EAAE,IAAIC,EAAG,IAAID,EAAK,KAAKA,EAAK;EAAQ,QAAQC,EAAG,SAASD,EAAK;CAAO;CACzH,OAAO;EAAE,GAAGG,EAAG;EAAG,GAAGC,EAAG;EAAG,OAAOD,EAAG;EAAO,QAAQC,EAAG;CAAO;AAChE;AAKA,SAAgBC,EACd,GACA,GACA,GACA,GACA,GACA,GACM;CACN,IAAIC,EAAS,WAAW,GAAG,OAAO,CAAC;CACnC,IAAMC,IAAWC,EAAcC,GAAOH,GAAsBI,GAAQC,CAAI;CACxE,IAAI,CAACJ,GAAU,OAAO,CAAC;CACvB,IAAM,EAAE,aAAUA,GACZ,EAAE,gBAAaK,EAAWC,GAAOd,EAAWc,EAAM,IAAI,QAAQC,CAAK,CAAC;CAC1E,OAAOC,EAAU;EAAE,GAAGF;EAAO,oBAAoBF,EAAK;CAAmB,GAAGK,GAAUC,CAAK;AAC7F"}
1
+ {"version":3,"file":"replay.js","names":[],"sources":["../../../../src/interactions/actions/resize/replay.ts"],"sourcesContent":["import type { ActionDeps, ResizeAnchor } from '@weasel-js/routing';\nimport type { Op } from 'core/ops/types';\nimport type { NodeId, Scene } from 'core/scene/types';\nimport type { Bounds } from 'core/viewport/fitViewToBounds';\nimport { resizeOps } from './commit';\nimport { posesInBox } from './frame';\nimport { captureResize } from './session';\n\n/** `to`, given in units of `from` (`{ x: 0, y: 0, width: 1, height: 1 }` is\n * `from` itself), in `from`'s own coordinates. */\nexport function boxInUnits(from: Bounds, to: Bounds): Bounds {\n return {\n x: from.x + to.x * from.width,\n y: from.y + to.y * from.height,\n width: to.width * from.width,\n height: to.height * from.height,\n };\n}\n\n/** `to` in units of `from`: the inverse of `boxInUnits`. A zero extent\n * reads as unscaled on that axis. */\nexport function unitsOfBox(from: Bounds, to: Bounds): Bounds {\n const ux = from.width === 0 ? { x: 0, width: 1 } : { x: (to.x - from.x) / from.width, width: to.width / from.width };\n const uy = from.height === 0 ? { y: 0, height: 1 } : { y: (to.y - from.y) / from.height, height: to.height / from.height };\n return { x: ux.x, y: uy.y, width: ux.width, height: uy.height };\n}\n\n/** The ops that resize `selected` the way a handle drag would, taking the box\n * it would resize to `units` of itself. The resize policy's expansion\n * applies; its constraints and point snaps, which shape a pointer, do not. */\nexport function resizeSelectionOps(\n scene: Scene<unknown, string, unknown>,\n selected: readonly string[],\n anchor: ResizeAnchor,\n units: Bounds,\n deps: Pick<ActionDeps, 'poseDescriptor' | 'resizePolicy' | 'view' | 'geometryProjection'>,\n label: string,\n): Op[] {\n if (selected.length === 0) return [];\n const captured = captureResize(scene, selected as NodeId[], anchor, deps);\n if (!captured) return [];\n const { place } = captured;\n const { previews } = posesInBox(place, boxInUnits(place.box.bounds, units));\n return resizeOps({ ...place, geometryProjection: deps.geometryProjection }, previews, label);\n}\n"],"mappings":";;;;;;;AAUA,SAAgB,WAAW,MAAc,IAAoB;CAC3D,OAAO;EACL,GAAG,KAAK,IAAI,GAAG,IAAI,KAAK;EACxB,GAAG,KAAK,IAAI,GAAG,IAAI,KAAK;EACxB,OAAO,GAAG,QAAQ,KAAK;EACvB,QAAQ,GAAG,SAAS,KAAK;CAC3B;AACF;;;AAIA,SAAgB,WAAW,MAAc,IAAoB;CAC3D,MAAM,KAAK,KAAK,UAAU,IAAI;EAAE,GAAG;EAAG,OAAO;CAAE,IAAI;EAAE,IAAI,GAAG,IAAI,KAAK,KAAK,KAAK;EAAO,OAAO,GAAG,QAAQ,KAAK;CAAM;CACnH,MAAM,KAAK,KAAK,WAAW,IAAI;EAAE,GAAG;EAAG,QAAQ;CAAE,IAAI;EAAE,IAAI,GAAG,IAAI,KAAK,KAAK,KAAK;EAAQ,QAAQ,GAAG,SAAS,KAAK;CAAO;CACzH,OAAO;EAAE,GAAG,GAAG;EAAG,GAAG,GAAG;EAAG,OAAO,GAAG;EAAO,QAAQ,GAAG;CAAO;AAChE;;;;AAKA,SAAgB,mBACd,OACA,UACA,QACA,OACA,MACA,OACM;CACN,IAAI,SAAS,WAAW,GAAG,OAAO,CAAC;CACnC,MAAM,WAAW,cAAc,OAAO,UAAsB,QAAQ,IAAI;CACxE,IAAI,CAAC,UAAU,OAAO,CAAC;CACvB,MAAM,EAAE,UAAU;CAClB,MAAM,EAAE,aAAa,WAAW,OAAO,WAAW,MAAM,IAAI,QAAQ,KAAK,CAAC;CAC1E,OAAO,UAAU;EAAE,GAAG;EAAO,oBAAoB,KAAK;CAAmB,GAAG,UAAU,KAAK;AAC7F"}
@@ -1,9 +1,12 @@
1
- import { isRectPose as e } from "../../../core/geometry/autoPoseDescriptor.js";
1
+ import { isRectPose } from "../../../core/geometry/autoPoseDescriptor.js";
2
+
2
3
  //#region src/interactions/actions/resize/ruleBounds.ts
3
- function t(t, n) {
4
- return e(n) ? n : t.getBounds(n);
4
+ /** `pose` as the bounds a constraint or a point snap reads. A pose that is
5
+ * already a box goes through whole, so a `rotation` on it rides along. */
6
+ function boundsForRules(geometry, pose) {
7
+ return isRectPose(pose) ? pose : geometry.getBounds(pose);
5
8
  }
6
- //#endregion
7
- export { t as boundsForRules };
8
9
 
10
+ //#endregion
11
+ export { boundsForRules };
9
12
  //# sourceMappingURL=ruleBounds.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ruleBounds.js","names":["boundsForRules","isRectPose","pose","geometry"],"sources":["../../../../src/interactions/actions/resize/ruleBounds.ts"],"sourcesContent":["import { isRectPose } from 'core/geometry/autoPoseDescriptor';\nimport type { Bounds } from 'core/viewport/fitViewToBounds';\nimport type { PoseDescriptor } from './geometry';\n\n/** `pose` as the bounds a constraint or a point snap reads. A pose that is\n * already a box goes through whole, so a `rotation` on it rides along. */\nexport function boundsForRules(geometry: PoseDescriptor<unknown>, pose: unknown): Bounds {\n return isRectPose(pose) ? pose : geometry.getBounds(pose);\n}\n"],"mappings":";;AAMA,SAAgBA,EAAe,GAAmC,GAAuB;CACvF,OAAOC,EAAWC,CAAI,IAAIA,IAAOC,EAAS,UAAUD,CAAI;AAC1D"}
1
+ {"version":3,"file":"ruleBounds.js","names":[],"sources":["../../../../src/interactions/actions/resize/ruleBounds.ts"],"sourcesContent":["import { isRectPose } from 'core/geometry/autoPoseDescriptor';\nimport type { Bounds } from 'core/viewport/fitViewToBounds';\nimport type { PoseDescriptor } from './geometry';\n\n/** `pose` as the bounds a constraint or a point snap reads. A pose that is\n * already a box goes through whole, so a `rotation` on it rides along. */\nexport function boundsForRules(geometry: PoseDescriptor<unknown>, pose: unknown): Bounds {\n return isRectPose(pose) ? pose : geometry.getBounds(pose);\n}\n"],"mappings":";;;;;AAMA,SAAgB,eAAe,UAAmC,MAAuB;CACvF,OAAO,WAAW,IAAI,IAAI,OAAO,SAAS,UAAU,IAAI;AAC1D"}