@weasel-js/core 1.15.0 → 1.15.2

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 (838) hide show
  1. package/CHANGELOG.md +199 -0
  2. package/dist/WeaselProvider.js +4 -5
  3. package/dist/affordances/composeAffordanceLayer.js +1 -2
  4. package/dist/affordances/cornerResize.js +4 -5
  5. package/dist/affordances/hitAffordanceRegions.js +1 -2
  6. package/dist/affordances/pathAnchors.js +1 -2
  7. package/dist/affordances/rotateCursor.js +1 -2
  8. package/dist/affordances/rotationHandle.js +2 -3
  9. package/dist/animation/behaviors/coast.js +1 -2
  10. package/dist/animation/behaviors/coastByWrite.js +2 -3
  11. package/dist/animation/behaviors/coastOnTargets.js +2 -3
  12. package/dist/animation/behaviors/momentum.js +1 -2
  13. package/dist/animation/clipTargets.js +1 -2
  14. package/dist/animation/departures.js +2 -3
  15. package/dist/animation/poseHelpers.js +2 -3
  16. package/dist/animation/poseTarget.js +5 -6
  17. package/dist/animation/poseTarget.js.map +1 -1
  18. package/dist/animation/poseTransition.js +1 -2
  19. package/dist/animation/reflow.js +9 -10
  20. package/dist/animation/reflow.js.map +1 -1
  21. package/dist/animation/rewind.js +1 -2
  22. package/dist/animation/rig/bindRig.js +2 -3
  23. package/dist/animation/rig/rigNode.js +3 -4
  24. package/dist/animation/rig/rigNode.js.map +1 -1
  25. package/dist/animation/rig/rigSeat.js +1 -2
  26. package/dist/animation/rig/skinBinding.js +1 -2
  27. package/dist/animation/rig/useRig.js +2 -3
  28. package/dist/animation/wrappers/animateLifecycle.js +1 -2
  29. package/dist/animation/wrappers/animateOnSetPose.js +1 -2
  30. package/dist/animation/wrappers/instantPose.js +1 -2
  31. package/dist/animation/writtenPoseTarget.js +1 -2
  32. package/dist/barrel/input.js +2 -1
  33. package/dist/barrel/interactions.js +2 -1
  34. package/dist/barrel/paint.js +2 -2
  35. package/dist/barrel/routing.js +2 -2
  36. package/dist/barrel/scene.js +2 -2
  37. package/dist/barrel/viewport.js +3 -3
  38. package/dist/canvas/Canvas.js +5 -6
  39. package/dist/canvas/CanvasView.js +6 -7
  40. package/dist/canvas/CursorCoordsHud.js +2 -3
  41. package/dist/canvas/DrawCanvas.js +3 -4
  42. package/dist/canvas/GestureReason.js +1 -2
  43. package/dist/canvas/GestureReason.module.js +1 -2
  44. package/dist/canvas/LeanSceneCanvas.js +2 -3
  45. package/dist/canvas/ModalityHud.js +2 -3
  46. package/dist/canvas/NodeShape.js +3 -4
  47. package/dist/canvas/PickHud.js +2 -3
  48. package/dist/canvas/SceneCanvas/ActionsProviderIfRoot.js +1 -2
  49. package/dist/canvas/SceneCanvas/CanvasKitProviders.js +3 -4
  50. package/dist/canvas/SceneCanvas/DepRegistryProviderIfRoot.js +1 -2
  51. package/dist/canvas/SceneCanvas/DevHuds.js +1 -2
  52. package/dist/canvas/SceneCanvas/PointerProviderIfRoot.js +18 -66
  53. package/dist/canvas/SceneCanvas/PointerProviderIfRoot.js.map +1 -1
  54. package/dist/canvas/SceneCanvas/SceneCanvasInput.js +4 -5
  55. package/dist/canvas/SceneCanvas/SurfaceDeclarations.js +1 -2
  56. package/dist/canvas/SceneCanvas/brushOverlay.js +1 -2
  57. package/dist/canvas/SceneCanvas/builtinToolSets.js +1 -2
  58. package/dist/canvas/SceneCanvas/canvasPassThrough.js +1 -2
  59. package/dist/canvas/SceneCanvas/contributionFrameHooks.js +1 -2
  60. package/dist/canvas/SceneCanvas/coordTrace.js +1 -2
  61. package/dist/canvas/SceneCanvas/defaultNodeProperties.js +3 -4
  62. package/dist/canvas/SceneCanvas/defaultNodeRouting.js +1 -2
  63. package/dist/canvas/SceneCanvas/defaultTextEditor.js +4 -5
  64. package/dist/canvas/SceneCanvas/describePresets.js +1 -2
  65. package/dist/canvas/SceneCanvas/dispatcherGestureBounds.js +1 -2
  66. package/dist/canvas/SceneCanvas/features.js +1 -2
  67. package/dist/canvas/SceneCanvas/insertPreviewCommands.js +1 -2
  68. package/dist/canvas/SceneCanvas/mergeLayers.js +1 -2
  69. package/dist/canvas/SceneCanvas/namedPresets.js +5 -6
  70. package/dist/canvas/SceneCanvas/poseGeometry.js +1 -2
  71. package/dist/canvas/SceneCanvas/poseRegistrars.js +1 -2
  72. package/dist/canvas/SceneCanvas/presets/arrange.js +2 -3
  73. package/dist/canvas/SceneCanvas/presets/baseline.js +1 -2
  74. package/dist/canvas/SceneCanvas/presets/chrome.js +1 -2
  75. package/dist/canvas/SceneCanvas/presets/composites.js +1 -2
  76. package/dist/canvas/SceneCanvas/presets/edit.js +4 -5
  77. package/dist/canvas/SceneCanvas/presets/ingest.js +1 -2
  78. package/dist/canvas/SceneCanvas/presets/paths.js +3 -4
  79. package/dist/canvas/SceneCanvas/presets/select.js +1 -2
  80. package/dist/canvas/SceneCanvas/presets/toolDriven.js +2 -3
  81. package/dist/canvas/SceneCanvas/presets/tools.js +1 -2
  82. package/dist/canvas/SceneCanvas/presets/transform.js +2 -3
  83. package/dist/canvas/SceneCanvas/presets/view.js +2 -3
  84. package/dist/canvas/SceneCanvas/props.js +1 -2
  85. package/dist/canvas/SceneCanvas/scenePointQuery.js +2 -3
  86. package/dist/canvas/SceneCanvas/shapeGeneratorProperties.js +1 -2
  87. package/dist/canvas/SceneCanvas/toolRegistry.js +2 -3
  88. package/dist/canvas/SceneCanvas/useActionTunings.js +1 -2
  89. package/dist/canvas/SceneCanvas/useActionsPropResolver.js +1 -2
  90. package/dist/canvas/SceneCanvas/useBakedScene.js +2 -3
  91. package/dist/canvas/SceneCanvas/useBuiltinShapeTools.js +7 -8
  92. package/dist/canvas/SceneCanvas/useBuiltinTools.js +2 -3
  93. package/dist/canvas/SceneCanvas/useCanvasCamera.js +2 -3
  94. package/dist/canvas/SceneCanvas/useCanvasDevtoolsRoot.js +1 -2
  95. package/dist/canvas/SceneCanvas/useCanvasDispatcher.js +1 -2
  96. package/dist/canvas/SceneCanvas/useCanvasSelection.js +8 -6
  97. package/dist/canvas/SceneCanvas/useCanvasSelection.js.map +1 -1
  98. package/dist/canvas/SceneCanvas/useCanvasTools.js +2 -3
  99. package/dist/canvas/SceneCanvas/useChromeAffordances.js +2 -3
  100. package/dist/canvas/SceneCanvas/useContributionRoles.js +1 -2
  101. package/dist/canvas/SceneCanvas/useDepartureGhostLayer.js +4 -5
  102. package/dist/canvas/SceneCanvas/useDispatcherOverlayLayer.js +2 -3
  103. package/dist/canvas/SceneCanvas/useHeldModifiers.js +1 -2
  104. package/dist/canvas/SceneCanvas/useMagnificationCheck.js +41 -0
  105. package/dist/canvas/SceneCanvas/useMagnificationCheck.js.map +1 -0
  106. package/dist/canvas/SceneCanvas/useNodeAtPoint.js +1 -2
  107. package/dist/canvas/SceneCanvas/useNodeKinds.js +2 -3
  108. package/dist/canvas/SceneCanvas/usePreviewGhostLayer.js +10 -11
  109. package/dist/canvas/SceneCanvas/useSceneCanvasHandle.js +1 -2
  110. package/dist/canvas/SceneCanvas/useSceneCanvasLayers.js +6 -7
  111. package/dist/canvas/SceneCanvas/useSceneCanvasPathEdit.js +1 -2
  112. package/dist/canvas/SceneCanvas/useSceneCanvasTools.js +1 -2
  113. package/dist/canvas/SceneCanvas/useSceneChrome.js +5 -6
  114. package/dist/canvas/SceneCanvas/useSceneGestureDispatcher.js +6 -7
  115. package/dist/canvas/SceneCanvas/useScenePicking.js +5 -6
  116. package/dist/canvas/SceneCanvas/useSceneRedrawSources.js +1 -2
  117. package/dist/canvas/SceneCanvas/useSceneSelectTool.js +7 -8
  118. package/dist/canvas/SceneCanvas/useSceneSlotLayers.js +2 -3
  119. package/dist/canvas/SceneCanvas/useSceneStandardActions.js +26 -18
  120. package/dist/canvas/SceneCanvas/useSceneStandardActions.js.map +1 -1
  121. package/dist/canvas/SceneCanvas/useSelectionOverlayLayer.js +2 -3
  122. package/dist/canvas/SceneCanvas/useSurfaceRouting.js +1 -2
  123. package/dist/canvas/SceneCanvas/useSurfaceViewInputs.js +1 -2
  124. package/dist/canvas/SceneCanvas/useToolKeybindings.js +1 -2
  125. package/dist/canvas/SceneCanvas/useViewportActions.js +3 -4
  126. package/dist/canvas/SceneCanvas/worldPointAt.js +1 -2
  127. package/dist/canvas/SceneCanvas.js +18 -17
  128. package/dist/canvas/SceneCanvas.js.map +1 -1
  129. package/dist/canvas/SceneViewCanvas.js +2 -3
  130. package/dist/canvas/SurfaceCanvas.js +1 -2
  131. package/dist/canvas/ViewMarker.js +1 -2
  132. package/dist/canvas/accentColor.js +4 -5
  133. package/dist/canvas/accentColor.js.map +1 -1
  134. package/dist/canvas/adapterDerivedPath.js +2 -3
  135. package/dist/canvas/adapterPickSource.js +1 -2
  136. package/dist/canvas/affordanceAt.js +2 -3
  137. package/dist/canvas/buildSceneLayer.js +4 -5
  138. package/dist/canvas/buildSceneTree.js +4 -5
  139. package/dist/canvas/canvasRenderer.js +1 -2
  140. package/dist/canvas/colorOverrides.js +1 -2
  141. package/dist/canvas/contextAttributes.js +1 -2
  142. package/dist/canvas/copiesAbove.js +1 -2
  143. package/dist/canvas/defaultDrawOne.js +1 -2
  144. package/dist/canvas/deps/areaSelect.js +5 -3
  145. package/dist/canvas/deps/areaSelect.js.map +1 -1
  146. package/dist/canvas/deps/booleans.js +5 -6
  147. package/dist/canvas/deps/changes.js +1 -2
  148. package/dist/canvas/deps/chromeRules.js +1 -2
  149. package/dist/canvas/deps/debug.js +1 -2
  150. package/dist/canvas/deps/dispatchSources.js +1 -2
  151. package/dist/canvas/deps/dispatcher.js +1 -2
  152. package/dist/canvas/deps/editAnchors.js +3 -4
  153. package/dist/canvas/deps/enteredGroup.js +6 -6
  154. package/dist/canvas/deps/enteredGroup.js.map +1 -1
  155. package/dist/canvas/deps/geometryProjection.js +1 -2
  156. package/dist/canvas/deps/hitTestArea.js +4 -5
  157. package/dist/canvas/deps/ingestion.js +1 -2
  158. package/dist/canvas/deps/insert.js +3 -4
  159. package/dist/canvas/deps/insertSite.js +3 -4
  160. package/dist/canvas/deps/kitSettings.js +1 -2
  161. package/dist/canvas/deps/lassoSelect.js +5 -3
  162. package/dist/canvas/deps/lassoSelect.js.map +1 -1
  163. package/dist/canvas/deps/layout.js +1 -2
  164. package/dist/canvas/deps/modeDefaultTool.js +1 -2
  165. package/dist/canvas/deps/nodeAtPoint.js +1 -2
  166. package/dist/canvas/deps/pathEditCommits.js +4 -5
  167. package/dist/canvas/deps/pathLeaf.js +1 -2
  168. package/dist/canvas/deps/pathLeafDeps.js +2 -3
  169. package/dist/canvas/deps/poseDescriptor.js +1 -2
  170. package/dist/canvas/deps/previewPaths.js +1 -2
  171. package/dist/canvas/deps/resizePolicy.js +1 -2
  172. package/dist/canvas/deps/selectionSnapshot.js +8 -4
  173. package/dist/canvas/deps/selectionSnapshot.js.map +1 -1
  174. package/dist/canvas/deps/slice.js +5 -6
  175. package/dist/canvas/deps/snap.js +3 -4
  176. package/dist/canvas/deps/surface.js +1 -2
  177. package/dist/canvas/deps/textEdit.js +1 -2
  178. package/dist/canvas/deps/transformFollowers.js +1 -2
  179. package/dist/canvas/deps/view.js +1 -2
  180. package/dist/canvas/derivedPath.js +6 -7
  181. package/dist/canvas/doubleClickTarget.js +1 -2
  182. package/dist/canvas/drawEnvelope.js +1 -2
  183. package/dist/canvas/drawnBounds.js +4 -5
  184. package/dist/canvas/getNodeAtPoint.js +1 -2
  185. package/dist/canvas/hostAnchor.js +1 -2
  186. package/dist/canvas/hud.module.js +1 -2
  187. package/dist/canvas/inheritedPaints.js +1 -2
  188. package/dist/canvas/insertPreviewExtent.js +1 -2
  189. package/dist/canvas/kitRequirements.js +1 -2
  190. package/dist/canvas/layerHover.js +1 -2
  191. package/dist/canvas/layerOrder.js +1 -2
  192. package/dist/canvas/layerSlots.js +1 -2
  193. package/dist/canvas/mountedCanvases.js +1 -2
  194. package/dist/canvas/nodeShapes/derivedPainter.js +2 -3
  195. package/dist/canvas/nodeShapes/imagePainter.js +1 -2
  196. package/dist/canvas/nodeShapes/measurePainter.js +2 -3
  197. package/dist/canvas/nodeShapes/memo.js +1 -2
  198. package/dist/canvas/nodeShapes/nodePaint.js +1 -2
  199. package/dist/canvas/nodeShapes/pathPainter.js +3 -4
  200. package/dist/canvas/nodeShapes/poseBox.js +1 -2
  201. package/dist/canvas/nodeShapes/rectFallbackPainter.js +1 -2
  202. package/dist/canvas/nodeShapes/shapePainter.js +2 -3
  203. package/dist/canvas/nodeShapes/strokedBounds.js +1 -2
  204. package/dist/canvas/nodeShapes/textPainter.js +1 -2
  205. package/dist/canvas/overChildren.js +1 -2
  206. package/dist/canvas/overlayRoleStrokes.js +1 -2
  207. package/dist/canvas/ownClip.js +1 -2
  208. package/dist/canvas/paintCull.js +1 -2
  209. package/dist/canvas/paintedCursorLayer.js +1 -2
  210. package/dist/canvas/pathOverlay.js +1 -2
  211. package/dist/canvas/pickIndex/nodeBroadBox.js +3 -4
  212. package/dist/canvas/pickIndex/scenePickIndex.js +3 -4
  213. package/dist/canvas/pickReach.js +1 -2
  214. package/dist/canvas/pickWalk.js +2 -3
  215. package/dist/canvas/planeClips.js +1 -2
  216. package/dist/canvas/poseRotation.js +1 -2
  217. package/dist/canvas/publishPreviews.js +1 -2
  218. package/dist/canvas/rasterReadback.js +1 -2
  219. package/dist/canvas/rasterToPng.js +1 -2
  220. package/dist/canvas/renderDebugSnapshot.js +1 -2
  221. package/dist/canvas/renderNeeds.js +1 -2
  222. package/dist/canvas/renderSceneToPixels.js +5 -6
  223. package/dist/canvas/sceneAdapter.js +37 -27
  224. package/dist/canvas/sceneAdapter.js.map +1 -1
  225. package/dist/canvas/sceneClipboard.js +19 -7
  226. package/dist/canvas/sceneClipboard.js.map +1 -1
  227. package/dist/canvas/sceneLayerPaint.js +1 -2
  228. package/dist/canvas/scenePickReads.js +1 -2
  229. package/dist/canvas/scenePickSource.js +5 -6
  230. package/dist/canvas/sceneSlotWiring.js +2 -3
  231. package/dist/canvas/sceneViewRender.js +5 -6
  232. package/dist/canvas/shownNodes.js +1 -2
  233. package/dist/canvas/slopsDebugLayer.js +9 -4
  234. package/dist/canvas/slopsDebugLayer.js.map +1 -1
  235. package/dist/canvas/surfaceContribution.js +1 -2
  236. package/dist/canvas/useCanvasElements.js +1 -2
  237. package/dist/canvas/useCanvasHandle.js +1 -2
  238. package/dist/canvas/useCanvasPaint.js +2 -3
  239. package/dist/canvas/useCanvasRenderer.js +1 -2
  240. package/dist/canvas/useCanvasSurface.js +1 -2
  241. package/dist/canvas/useCanvasView.js +2 -3
  242. package/dist/canvas/useClientToWorld.js +1 -2
  243. package/dist/canvas/useExtraLayers.js +1 -2
  244. package/dist/canvas/useFrameLoop.js +1 -2
  245. package/dist/canvas/useHitObserver.js +1 -2
  246. package/dist/canvas/useHostAnchor.js +1 -2
  247. package/dist/canvas/useInFlightBounds.js +6 -6
  248. package/dist/canvas/useInFlightBounds.js.map +1 -1
  249. package/dist/canvas/useLateContentRedraw.js +1 -2
  250. package/dist/canvas/useLayerStack.js +2 -3
  251. package/dist/canvas/usePaintedCursor.js +1 -2
  252. package/dist/canvas/useRedrawOn.js +1 -2
  253. package/dist/canvas/useSceneAdapter.js +1 -2
  254. package/dist/canvas/useSceneLayerList.js +1 -2
  255. package/dist/canvas/useSurfaceInput.js +1 -2
  256. package/dist/canvas/useSurfaceSize.js +1 -2
  257. package/dist/canvas/useToolCursor.js +1 -2
  258. package/dist/canvas/useViewAim.js +2 -3
  259. package/dist/canvas/useViewHelpers.js +5 -4
  260. package/dist/canvas/useViewHelpers.js.map +1 -1
  261. package/dist/canvas/useViewLayerGate.js +1 -2
  262. package/dist/canvas/useViewNesting.js +1 -2
  263. package/dist/canvas/useViewRegistrySurface.js +7 -5
  264. package/dist/canvas/useViewRegistrySurface.js.map +1 -1
  265. package/dist/canvas/viewInputs.js +1 -2
  266. package/dist/canvas/viewMarkers.js +1 -2
  267. package/dist/canvas/viewRegistry.js +6 -7
  268. package/dist/canvas/viewRegistry.js.map +1 -1
  269. package/dist/canvas/viewSnap.js +1 -2
  270. package/dist/canvas/watchElementMove.js +1 -2
  271. package/dist/canvas/wrapNodeOutput.js +1 -2
  272. package/dist/core/adapters/testing/rootsTree.js +1 -2
  273. package/dist/core/applyOps.js +1 -2
  274. package/dist/core/device/targets.js +1 -2
  275. package/dist/core/device/useDeviceProfile.js +1 -2
  276. package/dist/core/device/useTargetBasePx.js +1 -2
  277. package/dist/core/device/watchDevicePixelRatio.js +1 -2
  278. package/dist/core/geometry/autoPoseDescriptor.js +2 -3
  279. package/dist/core/geometry/booleanOfPaths.js +1 -2
  280. package/dist/core/geometry/inkExtents.js +1 -2
  281. package/dist/core/geometry/pathPoseDescriptor.js +1 -2
  282. package/dist/core/geometry/poseDescriptor.js +1 -2
  283. package/dist/core/geometry/regionHit.js +1 -2
  284. package/dist/core/geometry/targetFrame.js +1 -2
  285. package/dist/core/geometry/unionBounds.js +1 -2
  286. package/dist/core/layers/backgroundFill.js +1 -2
  287. package/dist/core/layers/children.js +1 -2
  288. package/dist/core/layers/gateLayer.js +1 -2
  289. package/dist/core/layers/layerGroup.js +1 -2
  290. package/dist/core/layers/redrawSource.js +1 -2
  291. package/dist/core/layers/render.js +1 -2
  292. package/dist/core/layers/retain.js +1 -2
  293. package/dist/core/ops/arrange.js +1 -2
  294. package/dist/core/ops/create.js +2 -3
  295. package/dist/core/ops/createHistory.js +2 -3
  296. package/dist/core/ops/delete.js +2 -3
  297. package/dist/core/ops/nodeFlags.js +1 -2
  298. package/dist/core/ops/registry.js +1 -2
  299. package/dist/core/ops/reorder/algorithms.js +1 -2
  300. package/dist/core/ops/reorder/index.js +3 -8
  301. package/dist/core/ops/reorder/index.js.map +1 -1
  302. package/dist/core/ops/reorder/setChildOrder.js +1 -2
  303. package/dist/core/ops/reparent.js +1 -2
  304. package/dist/core/ops/select.js +1 -2
  305. package/dist/core/ops/setData.js +1 -2
  306. package/dist/core/ops/setDependsOn.js +1 -2
  307. package/dist/core/ops/setLayer.js +1 -2
  308. package/dist/core/ops/setLayout.js +1 -2
  309. package/dist/core/ops/setPath.js +1 -2
  310. package/dist/core/ops/setText.js +1 -2
  311. package/dist/core/ops/slot.js +1 -2
  312. package/dist/core/ops/transform.js +1 -2
  313. package/dist/core/ops/writtenBy.js +1 -2
  314. package/dist/core/pages/fitViewToPage.js +3 -9
  315. package/dist/core/pages/fitViewToPage.js.map +1 -1
  316. package/dist/core/pages/pageEdits.js +3 -4
  317. package/dist/core/pages/pages.js +4 -11
  318. package/dist/core/pages/pages.js.map +1 -1
  319. package/dist/core/pages/pagesLayer.js +1 -2
  320. package/dist/core/paint/meshKind.js +1 -2
  321. package/dist/core/paint/meshKindLazy.js +18 -23
  322. package/dist/core/paint/meshKindLazy.js.map +1 -1
  323. package/dist/core/paint/paintKindEntry.js +1 -2
  324. package/dist/core/paint/paintKinds.js +1 -2
  325. package/dist/core/paint/registerMesh.js +1 -2
  326. package/dist/core/scene/NodeProperties.js +1 -2
  327. package/dist/core/scene/NodeRouting.js +1 -2
  328. package/dist/core/scene/annotation.js +1 -2
  329. package/dist/core/scene/appliedLog.js +1 -2
  330. package/dist/core/scene/arrivalWindow.js +2 -3
  331. package/dist/core/scene/arrivals.js +1 -2
  332. package/dist/core/scene/booleanGroup.js +1 -2
  333. package/dist/core/scene/booleanOfChildren.js +1 -2
  334. package/dist/core/scene/boundOps.js +1 -2
  335. package/dist/core/scene/carryDescendants.js +2 -3
  336. package/dist/core/scene/clipNothing.js +1 -2
  337. package/dist/core/scene/composeFrame.js +1 -2
  338. package/dist/core/scene/composePose.js +1 -2
  339. package/dist/core/scene/declaredFieldSetters.js +1 -2
  340. package/dist/core/scene/depFrame.js +1 -2
  341. package/dist/core/scene/depMemo.js +1 -2
  342. package/dist/core/scene/dependents.js +1 -2
  343. package/dist/core/scene/derivedParts.js +1 -2
  344. package/dist/core/scene/derivedPath.js +2 -3
  345. package/dist/core/scene/docValues.js +1 -2
  346. package/dist/core/scene/documentOf.js +1 -2
  347. package/dist/core/scene/editMode.js +1 -2
  348. package/dist/core/scene/editPass.js +1 -2
  349. package/dist/core/scene/effectivePose.js +3 -4
  350. package/dist/core/scene/fieldEdits.js +1 -2
  351. package/dist/core/scene/fontReads.js +1 -2
  352. package/dist/core/scene/historyFacade.js +1 -2
  353. package/dist/core/scene/historyForm.js +1 -2
  354. package/dist/core/scene/inheritedPaint.js +1 -2
  355. package/dist/core/scene/kitOps.js +16 -15
  356. package/dist/core/scene/kitOps.js.map +1 -1
  357. package/dist/core/scene/kitRegistry.js +2 -3
  358. package/dist/core/scene/layerOps.js +1 -2
  359. package/dist/core/scene/layerStack.js +1 -2
  360. package/dist/core/scene/layoutPass.js +4 -5
  361. package/dist/core/scene/lockGuard.js +1 -2
  362. package/dist/core/scene/minSize.js +1 -2
  363. package/dist/core/scene/nestedHit.js +1 -2
  364. package/dist/core/scene/nodeAsShown.js +1 -2
  365. package/dist/core/scene/nodeFlags.js +1 -2
  366. package/dist/core/scene/nodeFnFields.js +1 -2
  367. package/dist/core/scene/nodeGates.js +1 -2
  368. package/dist/core/scene/nodeMemo.js +1 -2
  369. package/dist/core/scene/nodeStore.js +2 -3
  370. package/dist/core/scene/notifier.js +1 -2
  371. package/dist/core/scene/opTable.js +1 -2
  372. package/dist/core/scene/outerOps.js +1 -2
  373. package/dist/core/scene/pathEffects/blend.js +3 -4
  374. package/dist/core/scene/pathEffects/blend.js.map +1 -1
  375. package/dist/core/scene/pathEffects/derive.js +2 -3
  376. package/dist/core/scene/pathEffects/effects.js +1 -2
  377. package/dist/core/scene/pathEffects/foundHidden.js +1 -2
  378. package/dist/core/scene/pathEffects/textAlong.js +6 -6
  379. package/dist/core/scene/pathEffects/textAlong.js.map +1 -1
  380. package/dist/core/scene/pathEffects/textAlongBands.js +1 -2
  381. package/dist/core/scene/plyStacks.js +1 -2
  382. package/dist/core/scene/poseFeed.js +1 -2
  383. package/dist/core/scene/poseHold.js +1 -2
  384. package/dist/core/scene/poseOverrides.js +1 -2
  385. package/dist/core/scene/posePlies.js +1 -2
  386. package/dist/core/scene/poseRemovals.js +1 -2
  387. package/dist/core/scene/poseSnapshot.js +1 -2
  388. package/dist/core/scene/poseWrites.js +1 -2
  389. package/dist/core/scene/reconcileSpecs.js +26 -3
  390. package/dist/core/scene/reconcileSpecs.js.map +1 -1
  391. package/dist/core/scene/recorder.js +1 -2
  392. package/dist/core/scene/renderOrder.js +1 -2
  393. package/dist/core/scene/sameValue.js +1 -2
  394. package/dist/core/scene/scene.js +23 -13
  395. package/dist/core/scene/scene.js.map +1 -1
  396. package/dist/core/scene/sceneChanges.js +1 -2
  397. package/dist/core/scene/sceneEdits.js +1 -2
  398. package/dist/core/scene/sceneJournals.js +1 -2
  399. package/dist/core/scene/sceneMutators.js +2 -3
  400. package/dist/core/scene/scenePoseAdapter.js +1 -2
  401. package/dist/core/scene/sceneRecording.js +1 -2
  402. package/dist/core/scene/sceneSelection.js +8 -5
  403. package/dist/core/scene/sceneSelection.js.map +1 -1
  404. package/dist/core/scene/sceneState.js +3 -4
  405. package/dist/core/scene/scrollOffsets.js +1 -2
  406. package/dist/core/scene/serialization.js +2 -3
  407. package/dist/core/scene/staleReplay.js +1 -2
  408. package/dist/core/scene/statedFields.js +1 -2
  409. package/dist/core/scene/strategyView.js +1 -2
  410. package/dist/core/scene/treeEdits.js +2 -3
  411. package/dist/core/scene/treeOrder.js +1 -2
  412. package/dist/core/scene/treeReads.js +1 -2
  413. package/dist/core/scene/treeShape.js +1 -2
  414. package/dist/core/scene/types.js +1 -2
  415. package/dist/core/scene/types.js.map +1 -1
  416. package/dist/core/scene/unionOfChildren.js +1 -2
  417. package/dist/core/scene/unitScopes.js +20 -4
  418. package/dist/core/scene/unitScopes.js.map +1 -1
  419. package/dist/core/scene/useScene.js +2 -3
  420. package/dist/core/scene/worldSave.js +2 -3
  421. package/dist/core/selection/chromeState.js +1 -2
  422. package/dist/core/selection/outermostSelection.js +56 -0
  423. package/dist/core/selection/outermostSelection.js.map +1 -0
  424. package/dist/core/selection/readOnlySelection.js +1 -2
  425. package/dist/core/selection/selectionTarget.js +1 -2
  426. package/dist/core/selection/usePublishSceneSelection.js +1 -2
  427. package/dist/core/selection/useSelection.js +1 -2
  428. package/dist/core/shapeKinds.js +1 -2
  429. package/dist/core/stableStringify.js +1 -2
  430. package/dist/core/stylus/stylus.js +1 -2
  431. package/dist/core/stylus/usePointerStylus.js +1 -2
  432. package/dist/core/usePaintKinds.js +1 -2
  433. package/dist/core/viewport/clampView.js +1 -2
  434. package/dist/core/viewport/clientToWorld.js +8 -3
  435. package/dist/core/viewport/clientToWorld.js.map +1 -1
  436. package/dist/core/viewport/createVelocityTracker.js +1 -2
  437. package/dist/core/viewport/fitToBounds.js +1 -2
  438. package/dist/core/viewport/fitViewToBounds.js +1 -2
  439. package/dist/core/viewport/interpolateView.js +1 -2
  440. package/dist/core/viewport/parallax.js +1 -2
  441. package/dist/core/viewport/sceneNodeClientRect.js +1 -2
  442. package/dist/core/viewport/screenSlop.js +1 -2
  443. package/dist/core/viewport/useAutoCenter.js +1 -2
  444. package/dist/core/viewport/useCanvasSize.js +1 -2
  445. package/dist/core/viewport/useDecayLoop.js +1 -2
  446. package/dist/core/viewport/useNodeOverlayFrame.js +1 -2
  447. package/dist/core/viewport/useVelocityTracker.js +1 -2
  448. package/dist/core/viewport/useViewAnimation.js +3 -4
  449. package/dist/core/viewport/view.js +1 -2
  450. package/dist/core/viewport/viewTransform.js +1 -2
  451. package/dist/core/viewport/viewportWorldRect.js +1 -2
  452. package/dist/core/viewport/wheelHandler.js +1 -2
  453. package/dist/core/viewport/zoomAt.js +7 -8
  454. package/dist/core/viewport/zoomAt.js.map +1 -1
  455. package/dist/core/viewport/zoomBounds.js +1 -2
  456. package/dist/debug/createDebugOverlayLayer.js +1 -2
  457. package/dist/debug/createDebugSink.js +1 -2
  458. package/dist/debug/defaultTheme.js +1 -2
  459. package/dist/debug/features.js +1 -2
  460. package/dist/debug/frameStats.js +1 -2
  461. package/dist/debug/overlayPanels.js +1 -2
  462. package/dist/debug/parseDebugFlags.js +1 -2
  463. package/dist/debug/useDebugSink.js +2 -3
  464. package/dist/{depSchema-ChQPzEkW.d.ts → depSchema-C7a_OMt-.d.ts} +61 -52
  465. package/dist/devtools/handlers.js +1 -2
  466. package/dist/devtools/history.js +1 -2
  467. package/dist/devtools/hook.js +1 -2
  468. package/dist/devtools/label.js +1 -2
  469. package/dist/devtools/notices.js +1 -2
  470. package/dist/devtools/protocol.js +1 -2
  471. package/dist/devtools/registry.js +1 -2
  472. package/dist/devtools/root.js +12 -6
  473. package/dist/devtools/root.js.map +1 -1
  474. package/dist/devtools/serialize.js +1 -2
  475. package/dist/devtools/session.js +2 -3
  476. package/dist/devtools/transport.js +13 -18
  477. package/dist/devtools/transport.js.map +1 -1
  478. package/dist/devtools/useDevtoolsRoot.js +1 -2
  479. package/dist/devtools-protocol.d.ts +1 -12
  480. package/dist/devtools-protocol.js +2 -2
  481. package/dist/devtools.d.ts +1 -1
  482. package/dist/devtools.js +1 -2
  483. package/dist/domains/chrome-caps/buildChromeCtx.js +1 -2
  484. package/dist/domains/chrome-caps/conditions.js +1 -2
  485. package/dist/domains/chrome-caps/defaults.js +1 -2
  486. package/dist/domains/chrome-caps/resolve.js +2 -3
  487. package/dist/domains/chrome-caps/useChromeCaps.js +1 -2
  488. package/dist/domains/chrome-caps/useHoverTracking.js +1 -2
  489. package/dist/domains/ingestion/contentHandlers.js +1 -2
  490. package/dist/domains/ingestion/ghost.js +2 -3
  491. package/dist/domains/ingestion/imageHandler.js +1 -2
  492. package/dist/domains/ingestion/kitHandlers.js +2 -3
  493. package/dist/domains/ingestion/openFilePicker.js +1 -2
  494. package/dist/domains/ingestion/placement.js +1 -2
  495. package/dist/domains/ingestion/svgHandler.js +1 -2
  496. package/dist/domains/ingestion/textHandler.js +1 -2
  497. package/dist/domains/ingestion/useCanvasIngestion.js +1 -2
  498. package/dist/domains/ingestion/weaselJsonHandler.js +2 -3
  499. package/dist/domains/longPress/longPressFeedback.js +1 -2
  500. package/dist/domains/measure/actionIds.js +1 -2
  501. package/dist/domains/measure/measureCommands.js +6 -7
  502. package/dist/domains/measure/measureContribution.js +3 -4
  503. package/dist/domains/measure/measureEdits.js +3 -4
  504. package/dist/domains/measure/measureGestures.js +2 -3
  505. package/dist/domains/measure/measureHit.js +5 -12
  506. package/dist/domains/measure/measureHit.js.map +1 -1
  507. package/dist/domains/measure/measureLayer.js +3 -4
  508. package/dist/domains/measure/measurement.js +1 -2
  509. package/dist/domains/measure/measurements.js +1 -2
  510. package/dist/domains/modes/modeLayers.js +1 -2
  511. package/dist/domains/modes/modeTriggers.js +1 -2
  512. package/dist/domains/pathEffects/effectSources.js +2 -3
  513. package/dist/domains/pathEffects/index.js +1 -2
  514. package/dist/domains/pathEffects/readSource.js +3 -4
  515. package/dist/domains/pathEffects/textItems.js +1 -2
  516. package/dist/domains/pathEffects/useEffectSourcesLayer.js +3 -4
  517. package/dist/domains/paths/anchorData.js +1 -2
  518. package/dist/domains/paths/anchorMarkers.js +6 -13
  519. package/dist/domains/paths/anchorMarkers.js.map +1 -1
  520. package/dist/domains/paths/editablePath.js +3 -4
  521. package/dist/domains/paths/originProjection.js +1 -2
  522. package/dist/domains/paths/pathEditExtension.js +1 -2
  523. package/dist/domains/paths/pathEditState.js +1 -2
  524. package/dist/domains/paths/pathEditingOverlayLayer.js +7 -12
  525. package/dist/domains/paths/pathEditingOverlayLayer.js.map +1 -1
  526. package/dist/domains/paths/pathLayer.js +1 -2
  527. package/dist/domains/paths/pathRepresentation.js +1 -2
  528. package/dist/domains/paths/pathSnap/glyphs.js +1 -2
  529. package/dist/domains/paths/pathSnap/pathSnapSource.js +1 -2
  530. package/dist/domains/paths/pathSnap/sceneIndex.js +1 -2
  531. package/dist/domains/paths/pathSnap/snapGeometry.js +2 -3
  532. package/dist/domains/paths/penPreviewLayer.js +10 -14
  533. package/dist/domains/paths/penPreviewLayer.js.map +1 -1
  534. package/dist/domains/paths/shapeGenerator.js +2 -4
  535. package/dist/domains/paths/shapeGenerator.js.map +1 -1
  536. package/dist/domains/paths/strokeOutline.js +2 -3
  537. package/dist/domains/paths/useAnchorFields.js +1 -2
  538. package/dist/domains/paths/usePathEdit.js +2 -3
  539. package/dist/domains/poseRun/usePoseRun.js +1 -2
  540. package/dist/domains/selection/enteredGroupFrame.js +1 -2
  541. package/dist/domains/selection/enteredGroupScope.js +1 -2
  542. package/dist/domains/selection/enteredOperands.js +1 -2
  543. package/dist/domains/selection/handleCommands.js +2 -3
  544. package/dist/domains/selection/overlay.js +6 -7
  545. package/dist/domains/selection/selectionPose.js +2 -3
  546. package/dist/domains/snap/angle2d.js +3 -3
  547. package/dist/domains/snap/angle2d.js.map +1 -1
  548. package/dist/domains/snap/debugCandidates.js +1 -2
  549. package/dist/domains/snap/gather.js +1 -2
  550. package/dist/domains/snap/inputSubspace.js +2 -3
  551. package/dist/domains/snap/lazySession.js +1 -2
  552. package/dist/domains/snap/marks.js +1 -2
  553. package/dist/domains/snap/outcomeStore.js +6 -10
  554. package/dist/domains/snap/outcomeStore.js.map +1 -1
  555. package/dist/domains/snap/pointSnap.js +1 -2
  556. package/dist/domains/snap/probes2d.js +1 -2
  557. package/dist/domains/snap/readoutDraw.js +1 -2
  558. package/dist/domains/snap/readoutLayer.js +1 -2
  559. package/dist/domains/snap/registry.js +1 -2
  560. package/dist/domains/snap/resizeBox.js +1 -2
  561. package/dist/domains/snap/roles.js +1 -2
  562. package/dist/domains/snap/rotationSource.js +1 -2
  563. package/dist/domains/snap/sceneReads.js +2 -3
  564. package/dist/domains/snap/sceneSession2d.js +2 -3
  565. package/dist/domains/snap/screen.js +2 -3
  566. package/dist/domains/snap/session2d.js +4 -5
  567. package/dist/domains/snap/spanSnap.js +1 -2
  568. package/dist/domains/snap/stepAngles.js +1 -2
  569. package/dist/domains/text/editingDrawOne.js +1 -2
  570. package/dist/domains/text/hostTextEditors.js +1 -2
  571. package/dist/domains/text/sceneTextDrafts.js +1 -2
  572. package/dist/domains/text/textHitAt.js +4 -5
  573. package/dist/domains/text/textLayer.js +12 -2
  574. package/dist/domains/text/textLayer.js.map +1 -1
  575. package/dist/domains/text/useSceneTextEdit.js +13 -9
  576. package/dist/domains/text/useSceneTextEdit.js.map +1 -1
  577. package/dist/domains/viewports/aim.js +6 -12
  578. package/dist/domains/viewports/aim.js.map +1 -1
  579. package/dist/domains/viewports/viewMarker.js +1 -2
  580. package/dist/domains/viewports/viewMarkerDrag.js +1 -2
  581. package/dist/domains/viewports/viewResolver.js +6 -5
  582. package/dist/domains/viewports/viewResolver.js.map +1 -1
  583. package/dist/domains/viewports/viewportLayer.js +1 -2
  584. package/dist/iconRegistry/IconRegistryProvider.js +1 -2
  585. package/dist/iconRegistry/useIconGlyph.js +1 -2
  586. package/dist/iconRegistry/useIconVariant.js +1 -2
  587. package/dist/icons.table.js +1 -2
  588. package/dist/icons2.table.js +1 -2
  589. package/dist/index.d.ts +70 -27
  590. package/dist/index.js +7 -5
  591. package/dist/input/keyState.js +1 -2
  592. package/dist/input/useKeyModifiers.js +1 -2
  593. package/dist/input/useKeyState.js +1 -2
  594. package/dist/input/usePublishPointer.js +59 -0
  595. package/dist/input/usePublishPointer.js.map +1 -0
  596. package/dist/interactions/actions/admitsChild.js +1 -2
  597. package/dist/interactions/actions/align/action.js +6 -7
  598. package/dist/interactions/actions/align/align.js +6 -7
  599. package/dist/interactions/actions/booleans/action.js +1 -2
  600. package/dist/interactions/actions/booleans/booleanGroupAction.js +2 -3
  601. package/dist/interactions/actions/booleans/booleans.js +1 -2
  602. package/dist/interactions/actions/booleans/commit.js +4 -5
  603. package/dist/interactions/actions/booleans/custom.js +2 -3
  604. package/dist/interactions/actions/booleans/keymap.js +1 -2
  605. package/dist/interactions/actions/booleans/operands.js +1 -2
  606. package/dist/interactions/actions/booleans/pieces.js +1 -2
  607. package/dist/interactions/actions/booleans/placement.js +1 -2
  608. package/dist/interactions/actions/booleans/useBooleans.js +1 -2
  609. package/dist/interactions/actions/booleans/useBooleansAdapter.js +1 -2
  610. package/dist/interactions/actions/clipboard/action.js +2 -3
  611. package/dist/interactions/actions/clipboard/clipboardOps.js +2 -3
  612. package/dist/interactions/actions/clipboard/materializePaste.js +1 -2
  613. package/dist/interactions/actions/clipboard/wireFormat.js +1 -2
  614. package/dist/interactions/actions/clone/action.js +7 -8
  615. package/dist/interactions/actions/clone/behaviors.js +4 -5
  616. package/dist/interactions/actions/defaultCommitAdapter.js +2 -3
  617. package/dist/interactions/actions/defaults/anchorEditing.js +3 -4
  618. package/dist/interactions/actions/defaults/anchorFields.js +1 -2
  619. package/dist/interactions/actions/defaults/anchorHandles.js +2 -3
  620. package/dist/interactions/actions/defaults/anchorJoin.js +2 -3
  621. package/dist/interactions/actions/defaults/areaSelect.js +6 -6
  622. package/dist/interactions/actions/defaults/areaSelect.js.map +1 -1
  623. package/dist/interactions/actions/defaults/bendSegment.js +3 -4
  624. package/dist/interactions/actions/defaults/cancelGesture.js +1 -2
  625. package/dist/interactions/actions/defaults/clearSelection.js +1 -2
  626. package/dist/interactions/actions/defaults/containerScroll.js +13 -8
  627. package/dist/interactions/actions/defaults/containerScroll.js.map +1 -1
  628. package/dist/interactions/actions/defaults/contextMenu.js +6 -7
  629. package/dist/interactions/actions/defaults/copySubtree.js +2 -3
  630. package/dist/interactions/actions/defaults/createPaintAction.js +3 -4
  631. package/dist/interactions/actions/defaults/delete.js +2 -3
  632. package/dist/interactions/actions/defaults/duplicate.js +5 -6
  633. package/dist/interactions/actions/defaults/enterGroup.js +5 -6
  634. package/dist/interactions/actions/defaults/enterGroup.js.map +1 -1
  635. package/dist/interactions/actions/defaults/enterPathEdit.js +1 -2
  636. package/dist/interactions/actions/defaults/enterTextEdit.js +1 -2
  637. package/dist/interactions/actions/defaults/escape.js +1 -2
  638. package/dist/interactions/actions/defaults/exitPathEdit.js +1 -2
  639. package/dist/interactions/actions/defaults/group.js +6 -7
  640. package/dist/interactions/actions/defaults/ingest.js +3 -4
  641. package/dist/interactions/actions/defaults/insertPathAnchor.js +2 -3
  642. package/dist/interactions/actions/defaults/nudge.js +3 -4
  643. package/dist/interactions/actions/defaults/nudgeSteps.js +2 -3
  644. package/dist/interactions/actions/defaults/nudgeSteps.js.map +1 -1
  645. package/dist/interactions/actions/defaults/pathEditMarks.js +3 -7
  646. package/dist/interactions/actions/defaults/pathEditMarks.js.map +1 -1
  647. package/dist/interactions/actions/defaults/pinchZoom.js +3 -4
  648. package/dist/interactions/actions/defaults/reorder.js +2 -3
  649. package/dist/interactions/actions/defaults/requiresSelection.js +1 -2
  650. package/dist/interactions/actions/defaults/segmentUnder.js +1 -2
  651. package/dist/interactions/actions/defaults/selectAll.js +1 -2
  652. package/dist/interactions/actions/defaults/selectDeep.js +1 -2
  653. package/dist/interactions/actions/defaults/setFill.js +1 -2
  654. package/dist/interactions/actions/defaults/setFillOpacity.js +1 -2
  655. package/dist/interactions/actions/defaults/setStroke.js +1 -2
  656. package/dist/interactions/actions/defaults/setStrokeOpacity.js +1 -2
  657. package/dist/interactions/actions/defaults/slice.js +1 -2
  658. package/dist/interactions/actions/defaults/sliceOps.js +1 -2
  659. package/dist/interactions/actions/defaults/toolActivate.js +1 -2
  660. package/dist/interactions/actions/defaults/toolResetToDefault.js +1 -2
  661. package/dist/interactions/actions/defaults/undoRedo.js +1 -2
  662. package/dist/interactions/actions/defaults/viewportDragPan.js +1 -2
  663. package/dist/interactions/actions/defaults/viewportWheelPan.js +1 -2
  664. package/dist/interactions/actions/defaults/viewportZoom.js +3 -4
  665. package/dist/interactions/actions/distribute/action.js +4 -5
  666. package/dist/interactions/actions/distribute/distribute.js +5 -6
  667. package/dist/interactions/actions/distribute/plan.js +1 -2
  668. package/dist/interactions/actions/drawnBoxes.js +4 -5
  669. package/dist/interactions/actions/dropVerdict.js +1 -2
  670. package/dist/interactions/actions/edit-anchors/action.js +4 -5
  671. package/dist/interactions/actions/edit-anchors/extensionDrags.js +1 -2
  672. package/dist/interactions/actions/edit-anchors/geometry.js +1 -2
  673. package/dist/interactions/actions/edit-anchors/handleDrag.js +5 -9
  674. package/dist/interactions/actions/edit-anchors/handleDrag.js.map +1 -1
  675. package/dist/interactions/actions/edit-anchors/handles.js +1 -2
  676. package/dist/interactions/actions/edit-anchors/params.js +1 -2
  677. package/dist/interactions/actions/edit-anchors/preview.js +1 -2
  678. package/dist/interactions/actions/edit-anchors/symmetry.js +1 -2
  679. package/dist/interactions/actions/flip/action.js +8 -9
  680. package/dist/interactions/actions/flip/helpers.js +1 -2
  681. package/dist/interactions/actions/geometryProjection.js +1 -2
  682. package/dist/interactions/actions/gestureFrames.js +3 -4
  683. package/dist/interactions/actions/gestureLifecycle.js +1 -2
  684. package/dist/interactions/actions/hitSelection.js +7 -3
  685. package/dist/interactions/actions/hitSelection.js.map +1 -1
  686. package/dist/interactions/actions/insert/action.js +6 -7
  687. package/dist/interactions/actions/insert/commit.js +2 -3
  688. package/dist/interactions/actions/insert/extras.js +1 -2
  689. package/dist/interactions/actions/insert/frame.js +1 -2
  690. package/dist/interactions/actions/insert/geometry.js +1 -2
  691. package/dist/interactions/actions/insert/params.js +2 -3
  692. package/dist/interactions/actions/insert/parent.js +1 -2
  693. package/dist/interactions/actions/insert/placeAction.js +5 -6
  694. package/dist/interactions/actions/insert/repositionAction.js +1 -2
  695. package/dist/interactions/actions/insert/rotateAction.js +1 -2
  696. package/dist/interactions/actions/insert/session.js +5 -6
  697. package/dist/interactions/actions/insert/shape.js +2 -3
  698. package/dist/interactions/actions/lasso-select/action.js +9 -9
  699. package/dist/interactions/actions/lasso-select/action.js.map +1 -1
  700. package/dist/interactions/actions/lasso-select/behaviors/selectFromLasso.js +2 -3
  701. package/dist/interactions/actions/magnification.js +37 -0
  702. package/dist/interactions/actions/magnification.js.map +1 -0
  703. package/dist/interactions/actions/move/action.js +2 -3
  704. package/dist/interactions/actions/move/behaviors/clampMove.js +42 -0
  705. package/dist/interactions/actions/move/behaviors/clampMove.js.map +1 -0
  706. package/dist/interactions/actions/move/behaviors/layoutDrop.js +2 -3
  707. package/dist/interactions/actions/move/behaviors/reparentOnDrop.js +2 -3
  708. package/dist/interactions/actions/move/behaviors/snapBackOrDelete.js +1 -2
  709. package/dist/interactions/actions/move/behaviors/snapToContainer.js +2 -3
  710. package/dist/interactions/actions/move/capture.js +6 -7
  711. package/dist/interactions/actions/move/commit/index.js +2 -3
  712. package/dist/interactions/actions/move/commit/layoutDrop.js +4 -5
  713. package/dist/interactions/actions/move/commit/layoutRelease.js +7 -8
  714. package/dist/interactions/actions/move/commit/rebase.js +2 -3
  715. package/dist/interactions/actions/move/commit/reparent.js +5 -6
  716. package/dist/interactions/actions/move/delta.js +2 -3
  717. package/dist/interactions/actions/move/frame.js +2 -3
  718. package/dist/interactions/actions/move/gestureAdapter.js +1 -2
  719. package/dist/interactions/actions/move/landedDescendants.js +2 -3
  720. package/dist/interactions/actions/move/layout/container.js +6 -10
  721. package/dist/interactions/actions/move/layout/container.js.map +1 -1
  722. package/dist/interactions/actions/move/layout/dragged.js +2 -3
  723. package/dist/interactions/actions/move/layout/dropPass.js +5 -6
  724. package/dist/interactions/actions/move/layout/exits.js +4 -5
  725. package/dist/interactions/actions/move/layout/exits.js.map +1 -1
  726. package/dist/interactions/actions/move/layout/glide.js +2 -3
  727. package/dist/interactions/actions/move/layout/view.js +1 -2
  728. package/dist/interactions/actions/move/refusal.js +2 -3
  729. package/dist/interactions/actions/move/session.js +4 -5
  730. package/dist/interactions/actions/move/translate.js +2 -3
  731. package/dist/interactions/actions/moveNodes.js +5 -6
  732. package/dist/interactions/actions/notices.js +1 -2
  733. package/dist/interactions/actions/outlines/createOutlines.js +1 -2
  734. package/dist/interactions/actions/outlines/createOutlinesAction.js +2 -3
  735. package/dist/interactions/actions/outlines/outlineStroke.js +2 -3
  736. package/dist/interactions/actions/outlines/outlineStrokeAction.js +2 -3
  737. package/dist/interactions/actions/outlines/replaceWithPaths.js +5 -6
  738. package/dist/interactions/actions/outlines/strokeRegion.js +1 -2
  739. package/dist/interactions/actions/outlines/useCreateOutlinesAdapter.js +1 -2
  740. package/dist/interactions/actions/pathCommands/cutJoin.js +3 -4
  741. package/dist/interactions/actions/pathCommands/livePathEdit.js +3 -4
  742. package/dist/interactions/actions/pathCommands/pathNodes.js +3 -4
  743. package/dist/interactions/actions/pathCommands/simplifyOffset.js +2 -3
  744. package/dist/interactions/actions/pathGestureTags.js +1 -2
  745. package/dist/interactions/actions/planeInput.js +2 -3
  746. package/dist/interactions/actions/pointerState.js +1 -2
  747. package/dist/interactions/actions/poseDescriptorDep.js +1 -2
  748. package/dist/interactions/actions/poseFrame.js +3 -4
  749. package/dist/interactions/actions/resize/action.js +3 -4
  750. package/dist/interactions/actions/resize/aspect.js +1 -2
  751. package/dist/interactions/actions/resize/behaviors/clampMinSize.js +1 -2
  752. package/dist/interactions/actions/resize/boxFrame.js +1 -2
  753. package/dist/interactions/actions/resize/capture.js +7 -8
  754. package/dist/interactions/actions/resize/commit.js +3 -4
  755. package/dist/interactions/actions/resize/cornerHandles.js +1 -2
  756. package/dist/interactions/actions/resize/frame.js +7 -8
  757. package/dist/interactions/actions/resize/held.js +2 -3
  758. package/dist/interactions/actions/resize/minimum.js +1 -2
  759. package/dist/interactions/actions/resize/replay.js +1 -2
  760. package/dist/interactions/actions/resize/ruleBounds.js +1 -2
  761. package/dist/interactions/actions/resize/session.js +9 -10
  762. package/dist/interactions/actions/resolveOverlays.js +1 -2
  763. package/dist/interactions/actions/resolvePreviews.js +3 -4
  764. package/dist/interactions/actions/rotate/action.js +5 -6
  765. package/dist/interactions/actions/rotate/commit.js +2 -3
  766. package/dist/interactions/actions/rotate/frame.js +3 -4
  767. package/dist/interactions/actions/rotate/geometry.js +1 -2
  768. package/dist/interactions/actions/rotate/handle.js +2 -3
  769. package/dist/interactions/actions/rotate/replay.js +2 -3
  770. package/dist/interactions/actions/rotate/session.js +10 -11
  771. package/dist/interactions/actions/selectionSubtree.js +7 -22
  772. package/dist/interactions/actions/selectionSubtree.js.map +1 -1
  773. package/dist/interactions/actions/spatialReference.js +1 -2
  774. package/dist/interactions/actions/testUtils.js +1 -2
  775. package/dist/interactions/actions/transform-again/action.js +5 -6
  776. package/dist/interactions/actions/transform-again/memory.js +3 -4
  777. package/dist/interactions/actions/transform-again/memory.js.map +1 -1
  778. package/dist/interactions/actions/transformFinish.js +1 -2
  779. package/dist/interactions/actions/useActionSet.js +1 -2
  780. package/dist/interactions/actions/useNotices.js +1 -2
  781. package/dist/interactions/actions/useStandardActions.js +1 -2
  782. package/dist/interactions/gestures/dragGesture/dragGesture.js +1 -2
  783. package/dist/interactions/gestures/dragGesture/dragPointOf.js +1 -2
  784. package/dist/interactions/gestures/dragRadial/dragRadial.js +2 -3
  785. package/dist/interactions/gestures/dragRect/dragRect.js +2 -3
  786. package/dist/interactions/gestures/handleDrag/handleDrag.js +1 -2
  787. package/dist/interactions/gestures/pointerDrag/pointerDrag.js +1 -2
  788. package/dist/interactions/gestures/shared/originProjection.js +1 -2
  789. package/dist/interactions/gestures/shared/screenTolerance.js +1 -2
  790. package/dist/interactions/gestures/thresholdDrag/thresholdDrag.js +1 -2
  791. package/dist/kitSettingsSchema.js +4 -5
  792. package/dist/move.d.ts +18 -3
  793. package/dist/move.js +2 -1
  794. package/dist/test-hook/createTestHook.js +1 -2
  795. package/dist/test-hook/install.js +1 -2
  796. package/dist/test-hook/useTestHook.js +1 -2
  797. package/dist/test-seams.d.ts +4 -4
  798. package/dist/test-seams.js +2 -2
  799. package/dist/tools/builtin/anchors/anchorsTool.js +1 -2
  800. package/dist/tools/builtin/ellipse/useEllipseTool.js +2 -3
  801. package/dist/tools/builtin/eyedropper/useEyedropperTool.js +1 -2
  802. package/dist/tools/builtin/hand/dragPanContribution.js +1 -2
  803. package/dist/tools/builtin/hand/useHandTool.js +1 -2
  804. package/dist/tools/builtin/image/useImageTool.js +1 -2
  805. package/dist/tools/builtin/lasso/useLassoTool.js +1 -2
  806. package/dist/tools/builtin/line/useLineTool.js +2 -3
  807. package/dist/tools/builtin/measure/useMeasureTool.js +2 -3
  808. package/dist/tools/builtin/pen/penHandle.js +1 -2
  809. package/dist/tools/builtin/pen/usePenTool.js +6 -7
  810. package/dist/tools/builtin/pencil/usePencilTool.js +1 -2
  811. package/dist/tools/builtin/pickTopMostHit.js +1 -2
  812. package/dist/tools/builtin/polygon/usePolygonTool.js +3 -4
  813. package/dist/tools/builtin/pressTarget.js +1 -2
  814. package/dist/tools/builtin/rect/useRectTool.js +2 -3
  815. package/dist/tools/builtin/select/adapterPointQuery.js +3 -4
  816. package/dist/tools/builtin/select/collapseDeferred.js +1 -2
  817. package/dist/tools/builtin/select/groupEntry.js +2 -3
  818. package/dist/tools/builtin/select/pressDecision.js +3 -4
  819. package/dist/tools/builtin/select/pressDecision.js.map +1 -1
  820. package/dist/tools/builtin/select/selectionContributions.js +1 -2
  821. package/dist/tools/builtin/select/useSelectTool.js +5 -6
  822. package/dist/tools/builtin/shared/insertToolOptions.js +1 -2
  823. package/dist/tools/builtin/shared/pointerFollower.js +1 -2
  824. package/dist/tools/builtin/slice/useSliceTool.js +5 -6
  825. package/dist/tools/builtin/star/useStarTool.js +3 -4
  826. package/dist/tools/builtin/sticky/stickyNode.js +1 -2
  827. package/dist/tools/builtin/sticky/useStickyTool.js +2 -3
  828. package/dist/tools/builtin/text/useTextTool.js +1 -2
  829. package/dist/tools/index.js +2 -2
  830. package/dist/tools/overlayBinding.js +1 -2
  831. package/dist/tools/toolOptions.js +17 -4
  832. package/dist/tools/toolOptions.js.map +1 -1
  833. package/dist/tools/useKeybindings.js +1 -2
  834. package/dist/{types-DW14eu9B.d.ts → types-BUvUXZe5.d.ts} +3 -3
  835. package/dist/util/color.js +1 -2
  836. package/dist/util/paint.js +1 -2
  837. package/dist/version.js +2 -3
  838. package/package.json +27 -27
@@ -1,9 +1,9 @@
1
1
  import { shapeSources } from "../selectionSubtree.js";
2
- import { storedPreviews } from "./frame.js";
3
2
  import { rotateOps } from "./commit.js";
3
+ import { storedPreviews } from "./frame.js";
4
4
  import { captureTurn } from "./session.js";
5
5
 
6
- //#region src/interactions/actions/rotate/replay.ts
6
+ // src/interactions/actions/rotate/replay.ts
7
7
  /** The ops that turn `selected` by `angle` radians the way a rotate drag
8
8
  * would: about the selection's center, or each node about its own. */
9
9
  function rotateSelectionOps(scene, selected, deps, angle, pivot, label) {
@@ -21,6 +21,5 @@ function rotateSelectionOps(scene, selected, deps, angle, pivot, label) {
21
21
  return rotateOps([...turn.origins.keys()], originPoses, previews, label);
22
22
  }
23
23
 
24
- //#endregion
25
24
  export { rotateSelectionOps };
26
25
  //# sourceMappingURL=replay.js.map
@@ -1,20 +1,20 @@
1
- import { unionAABB } from "../../../core/geometry/unionBounds.js";
2
- import { scenePoseFrame } from "../poseFrame.js";
3
- import { nodeDescriptors, poseDescriptorOf } from "../poseDescriptorDep.js";
1
+ import { pointerStateOf } from "../pointerState.js";
4
2
  import { transformFinisher } from "../transformFinish.js";
3
+ import { sceneGestureFrames } from "../gestureFrames.js";
4
+ import { unionAABB } from "../../../core/geometry/unionBounds.js";
5
+ import { gestureReaders } from "../../gestures/shared/screenTolerance.js";
5
6
  import { readGestureLifecycle } from "../gestureLifecycle.js";
7
+ import { moveGestureAdapter } from "../move/gestureAdapter.js";
6
8
  import { carryPose, invertPlane, planeOf } from "../planeInput.js";
7
- import { gestureReaders } from "../../gestures/shared/screenTolerance.js";
8
- import { shapeSources } from "../selectionSubtree.js";
9
- import { pointerStateOf } from "../pointerState.js";
9
+ import { nodeDescriptors, poseDescriptorOf } from "../poseDescriptorDep.js";
10
+ import { scenePoseFrame } from "../poseFrame.js";
10
11
  import { drawnBoxes } from "../drawnBoxes.js";
11
- import { sceneGestureFrames } from "../gestureFrames.js";
12
- import { moveGestureAdapter } from "../move/gestureAdapter.js";
13
- import { SNAP_ANGLE_STEP } from "../../../domains/snap/roles.js";
12
+ import { shapeSources } from "../selectionSubtree.js";
14
13
  import { inputSession } from "../../../domains/snap/session2d.js";
14
+ import { SNAP_ANGLE_STEP } from "../../../domains/snap/roles.js";
15
15
  import { resolveParams } from "@weasel-js/routing";
16
16
 
17
- //#region src/interactions/actions/rotate/session.ts
17
+ // src/interactions/actions/rotate/session.ts
18
18
  function captureOrigins(view, scene, ids, descriptorOf, poseFrame, boxes) {
19
19
  const originPoses = /* @__PURE__ */ new Map();
20
20
  const origins = /* @__PURE__ */ new Map();
@@ -138,6 +138,5 @@ function beginRotate(ctx, opts) {
138
138
  };
139
139
  }
140
140
 
141
- //#endregion
142
141
  export { beginRotate, captureTurn };
143
142
  //# sourceMappingURL=session.js.map
@@ -1,28 +1,14 @@
1
- import { poseDescriptorForNode, translatePoseViaDescriptor } from "../../core/geometry/poseDescriptor.js";
2
1
  import { asNodeId } from "../../core/scene/types.js";
3
- import { sceneMutators } from "../../core/scene/sceneMutators.js";
4
2
  import { createTransformOp } from "../../core/ops/transform.js";
3
+ import { sceneMutators } from "../../core/scene/sceneMutators.js";
4
+ import { poseDescriptorForNode, translatePoseViaDescriptor } from "../../core/geometry/poseDescriptor.js";
5
+ import { outermost } from "@weasel-js/select";
5
6
 
6
- //#region src/interactions/actions/selectionSubtree.ts
7
- /** True when any ancestor of `id` is also in `set` — acting on that ancestor
8
- * already reaches this node, so acting on it again would double it. */
9
- function hasSelectedAncestor(parentOf, id, set) {
10
- return selectedAncestor(parentOf, id, set) !== null;
11
- }
12
- /** The nearest ancestor of `id` that is in `set`, or `null`. */
13
- function selectedAncestor(parentOf, id, set) {
14
- let parent = parentOf(id);
15
- while (parent != null) {
16
- if (set.has(parent)) return parent;
17
- parent = parentOf(parent);
18
- }
19
- return null;
20
- }
21
- /** The ids in `ids` that are in the scene and have no selected ancestor. */
7
+ // src/interactions/actions/selectionSubtree.ts
8
+ /** The ids in `ids` that are in the scene and that no ancestor in `ids` holds. */
22
9
  function selectedRoots(scene, ids) {
23
- const set = new Set(ids);
24
10
  const parentOf = (id) => scene.get(asNodeId(id))?.parent ?? null;
25
- return ids.map((id) => asNodeId(id)).filter((id) => scene.get(id) !== void 0 && !hasSelectedAncestor(parentOf, id, set));
11
+ return outermost(ids, parentOf).map((id) => asNodeId(id)).filter((id) => scene.get(id) !== void 0);
26
12
  }
27
13
  /** Whether `id` draws a path derived from other nodes. Its pose is a
28
14
  * placeholder: the path follows the nodes it derives from. */
@@ -149,6 +135,5 @@ function storedDelta(frame, descriptor, id, dx, dy) {
149
135
  };
150
136
  }
151
137
 
152
- //#endregion
153
- export { hasSelectedAncestor, moveSources, selectedAncestor, selectedRoots, shapeSources, storedDelta, subtreeIds, translateEach, translateTargets };
138
+ export { moveSources, selectedRoots, shapeSources, storedDelta, subtreeIds, translateEach, translateTargets };
154
139
  //# sourceMappingURL=selectionSubtree.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"selectionSubtree.js","names":[],"sources":["../../../src/interactions/actions/selectionSubtree.ts"],"sourcesContent":["import type { NodeId, Scene } from 'core/scene/types';\nimport { asNodeId } from 'core/scene/types';\nimport type { PoseFrame } from './poseFrame';\nimport type { TransformFinisher } from './transformFinish';\nimport { createTransformOp } from 'core/ops/transform';\nimport { sceneMutators } from 'core/scene/sceneMutators';\nimport { poseDescriptorForNode, translatePoseViaDescriptor, type PoseDescriptor } from 'core/geometry/poseDescriptor';\n\ntype AnyScene = Scene<unknown, string, unknown>;\n\n/** True when any ancestor of `id` is also in `set` — acting on that ancestor\n * already reaches this node, so acting on it again would double it. */\nexport function hasSelectedAncestor(\n parentOf: (id: string) => string | null,\n id: string,\n set: ReadonlySet<string>,\n): boolean {\n return selectedAncestor(parentOf, id, set) !== null;\n}\n\n/** The nearest ancestor of `id` that is in `set`, or `null`. */\nexport function selectedAncestor(\n parentOf: (id: string) => string | null,\n id: string,\n set: ReadonlySet<string>,\n): string | null {\n let parent = parentOf(id);\n while (parent != null) {\n if (set.has(parent)) return parent;\n parent = parentOf(parent);\n }\n return null;\n}\n\n/** The ids in `ids` that are in the scene and have no selected ancestor. */\nexport function selectedRoots(scene: AnyScene, ids: readonly string[]): NodeId[] {\n const set = new Set<string>(ids);\n const parentOf = (id: string) => scene.get(asNodeId(id))?.parent ?? null;\n return ids\n .map((id) => asNodeId(id))\n .filter((id) => scene.get(id) !== undefined && !hasSelectedAncestor(parentOf, id, set));\n}\n\n/** Whether `id` draws a path derived from other nodes. Its pose is a\n * placeholder: the path follows the nodes it derives from. */\nfunction derivesPathOnly(scene: AnyScene, id: string): boolean {\n const node = scene.get(asNodeId(id));\n return node?.derivePath !== undefined && node.derivePose === undefined\n && Array.isArray(node.dependsOn) && node.dependsOn.length > 0;\n}\n\n/**\n * The nodes a translation of `ids` has to act on. A node whose pose is derived\n * from an id list cannot be moved itself, since a pose written to it is\n * overwritten on the next read, so the nodes it derives from stand in for it,\n * through however many derived nodes that takes. A node reached that way which\n * derives only its path — a wire under a label — follows its own dependencies\n * and is not written. Each id appears once, in the order it was first reached.\n */\nexport function moveSources(scene: AnyScene, ids: readonly string[]): string[] {\n const out = new Set<string>();\n const walked = new Set<string>();\n const visit = (id: string, reached: boolean): void => {\n if (walked.has(id)) return;\n walked.add(id);\n if (reached && derivesPathOnly(scene, id)) return;\n const node = scene.get(asNodeId(id));\n const deps = node?.derivePose !== undefined && Array.isArray(node.dependsOn) ? node.dependsOn : [];\n if (deps.length === 0) out.add(id);\n else for (const dep of deps) visit(dep, true);\n };\n for (const id of ids) visit(id, false);\n return [...out];\n}\n\n/**\n * The nodes a resize, rotation, flip, or alignment of `ids` has to write. A\n * node whose pose is derived cannot be written itself, so what it derives\n * from stands in for it — a container's children, or the ids a node names —\n * through however many derived nodes that takes, leaving out one reached that\n * way which derives only its path, as {@link moveSources} does. Each id appears once, in the order it\n * was first reached.\n */\nexport function shapeSources(scene: AnyScene, ids: readonly string[]): string[] {\n const out = new Set<string>();\n const walked = new Set<string>();\n const visit = (id: string, reached: boolean): void => {\n if (walked.has(id)) return;\n walked.add(id);\n if (reached && derivesPathOnly(scene, id)) return;\n const node = scene.get(asNodeId(id));\n const deps = node?.derivePose === undefined\n ? []\n : node.dependsOn === 'children' ? scene.childrenOf(asNodeId(id)) : node.dependsOn ?? [];\n if (deps.length === 0 && node?.dependsOn !== 'children') out.add(id);\n else for (const dep of deps) visit(dep, true);\n };\n for (const id of ids) visit(id, false);\n return [...out];\n}\n\n/** `id` and everything under it, a parent ahead of its children. */\nexport function subtreeIds(scene: AnyScene, id: NodeId): NodeId[] {\n const out: NodeId[] = [];\n const walk = (at: NodeId): void => {\n out.push(at);\n for (const child of scene.childrenOf(at)) walk(child);\n };\n walk(id);\n return out;\n}\n\n/**\n * The nodes whose stored pose has to change for `ids` to move as a unit: each\n * selected node and its descendants, less any stored in the frame of another\n * node in the set, which that frame carries.\n */\nexport function translateTargets(\n scene: AnyScene,\n frame: PoseFrame<unknown>,\n ids: readonly string[],\n): NodeId[] {\n const moving = new Set<NodeId>();\n for (const root of selectedRoots(scene, ids)) {\n for (const id of subtreeIds(scene, root)) moving.add(id);\n }\n return [...moving].filter((id) => {\n const storedIn = frame.frame(id);\n return storedIn === null || !moving.has(storedIn);\n });\n}\n\n/**\n * Move each of `moves` by its own delta, taking along whatever has to be\n * written for that node to move as a unit ({@link translateTargets}). Every\n * world pose is read before the first write, so one move cannot shift what a\n * later one reads. Call inside a `scene.batch`.\n */\nexport function translateEach(\n scene: AnyScene,\n frame: PoseFrame<unknown>,\n descriptor: PoseDescriptor<unknown>,\n moves: readonly { id: string; dx: number; dy: number }[],\n finish?: TransformFinisher,\n label = 'Translate',\n): void {\n const writes: { id: NodeId; to: unknown }[] = [];\n const seen = new Set<NodeId>();\n for (const { id, dx, dy } of moves) {\n if (dx === 0 && dy === 0) continue;\n for (const target of translateTargets(scene, frame, [id])) {\n if (seen.has(target)) continue;\n seen.add(target);\n const node = scene.get(target);\n if (!node) continue;\n const d = poseDescriptorForNode(descriptor, node);\n writes.push({ id: target, to: frame.local(target, translatePoseViaDescriptor(frame.world(target), dx, dy, d)) });\n }\n }\n const ops = writes.map(({ id, to }) => createTransformOp({ id, from: scene.get(id)!.pose, to, label }));\n const all = finish && ops.length > 0 ? finish(ops, label) : ops;\n if (!all) return;\n const adapter = sceneMutators(scene);\n for (const op of all) op.apply(adapter);\n}\n\n/** The world translation `(dx, dy)` as a translation of `id`'s stored pose,\n * which under a turned frame points another way. */\nexport function storedDelta(\n frame: PoseFrame<unknown>,\n descriptor: PoseDescriptor<unknown>,\n id: NodeId,\n dx: number,\n dy: number,\n): { dx: number; dy: number } {\n if (frame.frame(id) === null) return { dx, dy };\n const world = frame.world(id);\n const from = descriptor.getBounds(frame.local(id, world));\n const to = descriptor.getBounds(frame.local(id, translatePoseViaDescriptor(world, dx, dy, descriptor)));\n return { dx: to.x - from.x, dy: to.y - from.y };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"selectionSubtree.js","names":[],"sources":["../../../src/interactions/actions/selectionSubtree.ts"],"sourcesContent":["import { outermost } from '@weasel-js/select';\nimport type { NodeId, Scene } from 'core/scene/types';\nimport { asNodeId } from 'core/scene/types';\nimport type { PoseFrame } from './poseFrame';\nimport type { TransformFinisher } from './transformFinish';\nimport { createTransformOp } from 'core/ops/transform';\nimport { sceneMutators } from 'core/scene/sceneMutators';\nimport { poseDescriptorForNode, translatePoseViaDescriptor, type PoseDescriptor } from 'core/geometry/poseDescriptor';\n\ntype AnyScene = Scene<unknown, string, unknown>;\n\n/** The ids in `ids` that are in the scene and that no ancestor in `ids` holds. */\nexport function selectedRoots(scene: AnyScene, ids: readonly string[]): NodeId[] {\n const parentOf = (id: string) => scene.get(asNodeId(id))?.parent ?? null;\n return outermost(ids, parentOf).map((id) => asNodeId(id)).filter((id) => scene.get(id) !== undefined);\n}\n\n/** Whether `id` draws a path derived from other nodes. Its pose is a\n * placeholder: the path follows the nodes it derives from. */\nfunction derivesPathOnly(scene: AnyScene, id: string): boolean {\n const node = scene.get(asNodeId(id));\n return node?.derivePath !== undefined && node.derivePose === undefined\n && Array.isArray(node.dependsOn) && node.dependsOn.length > 0;\n}\n\n/**\n * The nodes a translation of `ids` has to act on. A node whose pose is derived\n * from an id list cannot be moved itself, since a pose written to it is\n * overwritten on the next read, so the nodes it derives from stand in for it,\n * through however many derived nodes that takes. A node reached that way which\n * derives only its path — a wire under a label — follows its own dependencies\n * and is not written. Each id appears once, in the order it was first reached.\n */\nexport function moveSources(scene: AnyScene, ids: readonly string[]): string[] {\n const out = new Set<string>();\n const walked = new Set<string>();\n const visit = (id: string, reached: boolean): void => {\n if (walked.has(id)) return;\n walked.add(id);\n if (reached && derivesPathOnly(scene, id)) return;\n const node = scene.get(asNodeId(id));\n const deps = node?.derivePose !== undefined && Array.isArray(node.dependsOn) ? node.dependsOn : [];\n if (deps.length === 0) out.add(id);\n else for (const dep of deps) visit(dep, true);\n };\n for (const id of ids) visit(id, false);\n return [...out];\n}\n\n/**\n * The nodes a resize, rotation, flip, or alignment of `ids` has to write. A\n * node whose pose is derived cannot be written itself, so what it derives\n * from stands in for it — a container's children, or the ids a node names —\n * through however many derived nodes that takes, leaving out one reached that\n * way which derives only its path, as {@link moveSources} does. Each id appears once, in the order it\n * was first reached.\n */\nexport function shapeSources(scene: AnyScene, ids: readonly string[]): string[] {\n const out = new Set<string>();\n const walked = new Set<string>();\n const visit = (id: string, reached: boolean): void => {\n if (walked.has(id)) return;\n walked.add(id);\n if (reached && derivesPathOnly(scene, id)) return;\n const node = scene.get(asNodeId(id));\n const deps = node?.derivePose === undefined\n ? []\n : node.dependsOn === 'children' ? scene.childrenOf(asNodeId(id)) : node.dependsOn ?? [];\n if (deps.length === 0 && node?.dependsOn !== 'children') out.add(id);\n else for (const dep of deps) visit(dep, true);\n };\n for (const id of ids) visit(id, false);\n return [...out];\n}\n\n/** `id` and everything under it, a parent ahead of its children. */\nexport function subtreeIds(scene: AnyScene, id: NodeId): NodeId[] {\n const out: NodeId[] = [];\n const walk = (at: NodeId): void => {\n out.push(at);\n for (const child of scene.childrenOf(at)) walk(child);\n };\n walk(id);\n return out;\n}\n\n/**\n * The nodes whose stored pose has to change for `ids` to move as a unit: each\n * selected node and its descendants, less any stored in the frame of another\n * node in the set, which that frame carries.\n */\nexport function translateTargets(\n scene: AnyScene,\n frame: PoseFrame<unknown>,\n ids: readonly string[],\n): NodeId[] {\n const moving = new Set<NodeId>();\n for (const root of selectedRoots(scene, ids)) {\n for (const id of subtreeIds(scene, root)) moving.add(id);\n }\n return [...moving].filter((id) => {\n const storedIn = frame.frame(id);\n return storedIn === null || !moving.has(storedIn);\n });\n}\n\n/**\n * Move each of `moves` by its own delta, taking along whatever has to be\n * written for that node to move as a unit ({@link translateTargets}). Every\n * world pose is read before the first write, so one move cannot shift what a\n * later one reads. Call inside a `scene.batch`.\n */\nexport function translateEach(\n scene: AnyScene,\n frame: PoseFrame<unknown>,\n descriptor: PoseDescriptor<unknown>,\n moves: readonly { id: string; dx: number; dy: number }[],\n finish?: TransformFinisher,\n label = 'Translate',\n): void {\n const writes: { id: NodeId; to: unknown }[] = [];\n const seen = new Set<NodeId>();\n for (const { id, dx, dy } of moves) {\n if (dx === 0 && dy === 0) continue;\n for (const target of translateTargets(scene, frame, [id])) {\n if (seen.has(target)) continue;\n seen.add(target);\n const node = scene.get(target);\n if (!node) continue;\n const d = poseDescriptorForNode(descriptor, node);\n writes.push({ id: target, to: frame.local(target, translatePoseViaDescriptor(frame.world(target), dx, dy, d)) });\n }\n }\n const ops = writes.map(({ id, to }) => createTransformOp({ id, from: scene.get(id)!.pose, to, label }));\n const all = finish && ops.length > 0 ? finish(ops, label) : ops;\n if (!all) return;\n const adapter = sceneMutators(scene);\n for (const op of all) op.apply(adapter);\n}\n\n/** The world translation `(dx, dy)` as a translation of `id`'s stored pose,\n * which under a turned frame points another way. */\nexport function storedDelta(\n frame: PoseFrame<unknown>,\n descriptor: PoseDescriptor<unknown>,\n id: NodeId,\n dx: number,\n dy: number,\n): { dx: number; dy: number } {\n if (frame.frame(id) === null) return { dx, dy };\n const world = frame.world(id);\n const from = descriptor.getBounds(frame.local(id, world));\n const to = descriptor.getBounds(frame.local(id, translatePoseViaDescriptor(world, dx, dy, descriptor)));\n return { dx: to.x - from.x, dy: to.y - from.y };\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- //#region src/interactions/actions/spatialReference.ts
1
+ // src/interactions/actions/spatialReference.ts
2
2
  /**
3
3
  * The world bounds `ref` names — a point comes back as a zero-size rect — or
4
4
  * `null` when it names nothing right now (no pointer, a missing node, a
@@ -39,6 +39,5 @@ function actionReferenceSources(params, pointer, scene, frame, boxes) {
39
39
  };
40
40
  }
41
41
 
42
- //#endregion
43
42
  export { actionReferenceSources, resolveSpatialReference };
44
43
  //# sourceMappingURL=spatialReference.js.map
@@ -1,4 +1,4 @@
1
- //#region src/interactions/actions/testUtils.ts
1
+ // src/interactions/actions/testUtils.ts
2
2
  /**
3
3
  * Build an inert {@link EditAnchorsDep} for action unit tests. Every
4
4
  * member has a harmless default; override just the ones a test cares
@@ -41,6 +41,5 @@ function makeEditAnchorsDep(over = {}) {
41
41
  }, Object.getOwnPropertyDescriptors(over));
42
42
  }
43
43
 
44
- //#endregion
45
44
  export { makeEditAnchorsDep };
46
45
  //# sourceMappingURL=testUtils.js.map
@@ -1,13 +1,13 @@
1
- import { poseDescriptorOf } from "../poseDescriptorDep.js";
2
1
  import { commitTransformOps, transformApplyOps } from "../transformFinish.js";
3
- import { lastTransform, recordTransform } from "./memory.js";
4
- import { requiresSelection } from "../defaults/requiresSelection.js";
5
- import { resizeSelectionOps } from "../resize/replay.js";
6
2
  import { DUPLICATE_OFFSET, duplicateSelection } from "../defaults/duplicate.js";
7
3
  import { translateSelection } from "../defaults/nudge.js";
4
+ import { requiresSelection } from "../defaults/requiresSelection.js";
5
+ import { poseDescriptorOf } from "../poseDescriptorDep.js";
6
+ import { resizeSelectionOps } from "../resize/replay.js";
8
7
  import { rotateSelectionOps } from "../rotate/replay.js";
8
+ import { lastTransform, recordTransform } from "./memory.js";
9
9
 
10
- //#region src/interactions/actions/transform-again/action.ts
10
+ // src/interactions/actions/transform-again/action.ts
11
11
  var LABEL = "Transform Again";
12
12
  /** With nothing recorded yet, a repeat is a plain duplicate. */
13
13
  var FIRST = {
@@ -75,6 +75,5 @@ var transformAgainAction = {
75
75
  enabled: requiresSelection
76
76
  };
77
77
 
78
- //#endregion
79
78
  export { transformAgainAction };
80
79
  //# sourceMappingURL=action.js.map
@@ -1,6 +1,6 @@
1
- //#region src/interactions/actions/transform-again/memory.ts
1
+ // src/interactions/actions/transform-again/memory.ts
2
2
  var LAST = /* @__PURE__ */ new WeakMap();
3
- function sameIds(a, b) {
3
+ function sameMembers(a, b) {
4
4
  if (a.length !== b.length) return false;
5
5
  const set = new Set(a);
6
6
  return b.every((id) => set.has(id));
@@ -20,7 +20,7 @@ function lastTransform(scene) {
20
20
  */
21
21
  function recordTransform(scene, transform, subject) {
22
22
  const prev = LAST.get(scene);
23
- if (transform.kind === "translate" && prev?.transform.kind === "duplicate" && sameIds(prev.subject, subject)) {
23
+ if (transform.kind === "translate" && prev?.transform.kind === "duplicate" && sameMembers(prev.subject, subject)) {
24
24
  LAST.set(scene, {
25
25
  transform: {
26
26
  kind: "duplicate",
@@ -41,6 +41,5 @@ function forgetTransform(scene) {
41
41
  LAST.delete(scene);
42
42
  }
43
43
 
44
- //#endregion
45
44
  export { forgetTransform, lastTransform, recordTransform };
46
45
  //# sourceMappingURL=memory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"memory.js","names":[],"sources":["../../../../src/interactions/actions/transform-again/memory.ts"],"sourcesContent":["import type { ResizeAnchor } from '@weasel-js/routing';\nimport type { Bounds } from 'core/viewport/fitViewToBounds';\n\n/**\n * A transform the selection underwent, kept relative so it can be applied to\n * whatever is selected next.\n *\n * - `translate`: a world offset.\n * - `rotate`: radians about the selection's center, or about each node's own\n * center (`pivot: 'each'`).\n * - `scale`: the box the selection was resized to, in units of the box it\n * started as (`{ x: 0, y: 0, width: 1, height: 1 }` is no change), and the\n * anchor the resize held fixed.\n * - `duplicate`: copy the selection, offset by the world offset `(dx, dy)`, and\n * select the copies.\n *\n * Offsets are world, so a repeat inside a turned group steps the way the drag\n * or nudge it repeats did on screen.\n */\nexport type RepeatableTransform =\n | { readonly kind: 'translate'; readonly dx: number; readonly dy: number }\n | { readonly kind: 'rotate'; readonly angle: number; readonly pivot: 'union' | 'each' }\n | { readonly kind: 'scale'; readonly to: Bounds; readonly anchor: ResizeAnchor }\n | { readonly kind: 'duplicate'; readonly dx: number; readonly dy: number };\n\ninterface Entry {\n readonly transform: RepeatableTransform;\n /** The ids selected once it landed. */\n readonly subject: readonly string[];\n}\n\nconst LAST = new WeakMap<object, Entry>();\n\nfunction sameIds(a: readonly string[], b: readonly string[]): boolean {\n if (a.length !== b.length) return false;\n const set = new Set(a);\n return b.every((id) => set.has(id));\n}\n\n/**\n * The last transform recorded against `scene`, which `transformAgain` repeats.\n */\nexport function lastTransform(scene: object): RepeatableTransform | undefined {\n return LAST.get(scene)?.transform;\n}\n\n/**\n * Remember `transform` as the last one `scene` underwent, `subject` being the\n * ids selected once it landed. A translate of exactly the copies a\n * `duplicate` just made folds into it, so the copies' offset from their\n * sources is what repeats: duplicate, drag the copy, and each repeat steps\n * one more copy along.\n */\nexport function recordTransform(\n scene: object,\n transform: RepeatableTransform,\n subject: readonly string[],\n): void {\n const prev = LAST.get(scene);\n if (\n transform.kind === 'translate'\n && prev?.transform.kind === 'duplicate'\n && sameIds(prev.subject, subject)\n ) {\n LAST.set(scene, {\n transform: { kind: 'duplicate', dx: prev.transform.dx + transform.dx, dy: prev.transform.dy + transform.dy },\n subject: [...subject],\n });\n return;\n }\n LAST.set(scene, { transform, subject: [...subject] });\n}\n\n/** Drop what `scene` remembers, so `transformAgain` has nothing to repeat. */\nexport function forgetTransform(scene: object): void {\n LAST.delete(scene);\n}\n"],"mappings":";AA+BA,IAAM,uBAAO,IAAI,QAAuB;AAExC,SAAS,QAAQ,GAAsB,GAA+B;CACpE,IAAI,EAAE,WAAW,EAAE,QAAQ,OAAO;CAClC,MAAM,MAAM,IAAI,IAAI,CAAC;CACrB,OAAO,EAAE,OAAO,OAAO,IAAI,IAAI,EAAE,CAAC;AACpC;;;;AAKA,SAAgB,cAAc,OAAgD;CAC5E,OAAO,KAAK,IAAI,KAAK,CAAC,EAAE;AAC1B;;;;;;;;AASA,SAAgB,gBACd,OACA,WACA,SACM;CACN,MAAM,OAAO,KAAK,IAAI,KAAK;CAC3B,IACE,UAAU,SAAS,eAChB,MAAM,UAAU,SAAS,eACzB,QAAQ,KAAK,SAAS,OAAO,GAChC;EACA,KAAK,IAAI,OAAO;GACd,WAAW;IAAE,MAAM;IAAa,IAAI,KAAK,UAAU,KAAK,UAAU;IAAI,IAAI,KAAK,UAAU,KAAK,UAAU;GAAG;GAC3G,SAAS,CAAC,GAAG,OAAO;EACtB,CAAC;EACD;CACF;CACA,KAAK,IAAI,OAAO;EAAE;EAAW,SAAS,CAAC,GAAG,OAAO;CAAE,CAAC;AACtD;;AAGA,SAAgB,gBAAgB,OAAqB;CACnD,KAAK,OAAO,KAAK;AACnB"}
1
+ {"version":3,"file":"memory.js","names":[],"sources":["../../../../src/interactions/actions/transform-again/memory.ts"],"sourcesContent":["import type { ResizeAnchor } from '@weasel-js/routing';\nimport type { Bounds } from 'core/viewport/fitViewToBounds';\n\n/**\n * A transform the selection underwent, kept relative so it can be applied to\n * whatever is selected next.\n *\n * - `translate`: a world offset.\n * - `rotate`: radians about the selection's center, or about each node's own\n * center (`pivot: 'each'`).\n * - `scale`: the box the selection was resized to, in units of the box it\n * started as (`{ x: 0, y: 0, width: 1, height: 1 }` is no change), and the\n * anchor the resize held fixed.\n * - `duplicate`: copy the selection, offset by the world offset `(dx, dy)`, and\n * select the copies.\n *\n * Offsets are world, so a repeat inside a turned group steps the way the drag\n * or nudge it repeats did on screen.\n */\nexport type RepeatableTransform =\n | { readonly kind: 'translate'; readonly dx: number; readonly dy: number }\n | { readonly kind: 'rotate'; readonly angle: number; readonly pivot: 'union' | 'each' }\n | { readonly kind: 'scale'; readonly to: Bounds; readonly anchor: ResizeAnchor }\n | { readonly kind: 'duplicate'; readonly dx: number; readonly dy: number };\n\ninterface Entry {\n readonly transform: RepeatableTransform;\n /** The ids selected once it landed. */\n readonly subject: readonly string[];\n}\n\nconst LAST = new WeakMap<object, Entry>();\n\nfunction sameMembers(a: readonly string[], b: readonly string[]): boolean {\n if (a.length !== b.length) return false;\n const set = new Set(a);\n return b.every((id) => set.has(id));\n}\n\n/**\n * The last transform recorded against `scene`, which `transformAgain` repeats.\n */\nexport function lastTransform(scene: object): RepeatableTransform | undefined {\n return LAST.get(scene)?.transform;\n}\n\n/**\n * Remember `transform` as the last one `scene` underwent, `subject` being the\n * ids selected once it landed. A translate of exactly the copies a\n * `duplicate` just made folds into it, so the copies' offset from their\n * sources is what repeats: duplicate, drag the copy, and each repeat steps\n * one more copy along.\n */\nexport function recordTransform(\n scene: object,\n transform: RepeatableTransform,\n subject: readonly string[],\n): void {\n const prev = LAST.get(scene);\n if (\n transform.kind === 'translate'\n && prev?.transform.kind === 'duplicate'\n && sameMembers(prev.subject, subject)\n ) {\n LAST.set(scene, {\n transform: { kind: 'duplicate', dx: prev.transform.dx + transform.dx, dy: prev.transform.dy + transform.dy },\n subject: [...subject],\n });\n return;\n }\n LAST.set(scene, { transform, subject: [...subject] });\n}\n\n/** Drop what `scene` remembers, so `transformAgain` has nothing to repeat. */\nexport function forgetTransform(scene: object): void {\n LAST.delete(scene);\n}\n"],"mappings":";AA+BA,IAAM,uBAAO,IAAI,QAAuB;AAExC,SAAS,YAAY,GAAsB,GAA+B;CACxE,IAAI,EAAE,WAAW,EAAE,QAAQ,OAAO;CAClC,MAAM,MAAM,IAAI,IAAI,CAAC;CACrB,OAAO,EAAE,OAAO,OAAO,IAAI,IAAI,EAAE,CAAC;AACpC;;;;AAKA,SAAgB,cAAc,OAAgD;CAC5E,OAAO,KAAK,IAAI,KAAK,CAAC,EAAE;AAC1B;;;;;;;;AASA,SAAgB,gBACd,OACA,WACA,SACM;CACN,MAAM,OAAO,KAAK,IAAI,KAAK;CAC3B,IACE,UAAU,SAAS,eAChB,MAAM,UAAU,SAAS,eACzB,YAAY,KAAK,SAAS,OAAO,GACpC;EACA,KAAK,IAAI,OAAO;GACd,WAAW;IAAE,MAAM;IAAa,IAAI,KAAK,UAAU,KAAK,UAAU;IAAI,IAAI,KAAK,UAAU,KAAK,UAAU;GAAG;GAC3G,SAAS,CAAC,GAAG,OAAO;EACtB,CAAC;EACD;CACF;CACA,KAAK,IAAI,OAAO;EAAE;EAAW,SAAS,CAAC,GAAG,OAAO;CAAE,CAAC;AACtD;;AAGA,SAAgB,gBAAgB,OAAqB;CACnD,KAAK,OAAO,KAAK;AACnB"}
@@ -1,6 +1,6 @@
1
1
  import { commitOps } from "./defaultCommitAdapter.js";
2
2
 
3
- //#region src/interactions/actions/transformFinish.ts
3
+ // src/interactions/actions/transformFinish.ts
4
4
  /** Every follower in `deps.transformFollowers` finishing the batch in turn, as a {@link TransformFinisher}; undefined with none. */
5
5
  function transformFinisher(deps) {
6
6
  const followers = deps?.transformFollowers;
@@ -101,6 +101,5 @@ function transformPreview(deps, scene, previews) {
101
101
  };
102
102
  }
103
103
 
104
- //#endregion
105
104
  export { commitTransformOps, finishTransformOps, transformApplyOps, transformFinisher, transformPreview };
106
105
  //# sourceMappingURL=transformFinish.js.map
@@ -3,7 +3,7 @@ import { useLatest } from "@weasel-js/react";
3
3
  import "@weasel-js/routing";
4
4
  import { useActionsRegistry, useOptionalActiveToolContext, useOptionalDepRegistry } from "@weasel-js/routing/react";
5
5
 
6
- //#region src/interactions/actions/useActionSet.ts
6
+ // src/interactions/actions/useActionSet.ts
7
7
  /**
8
8
  * The two halves of `useStandardActions`, apart from the action list it
9
9
  * defaults to, so a canvas that names its own set never loads the kit's.
@@ -78,6 +78,5 @@ function useActionSet(actions, exclude) {
78
78
  ]);
79
79
  }
80
80
 
81
- //#endregion
82
81
  export { useActionSet, useStandardDeps };
83
82
  //# sourceMappingURL=useActionSet.js.map
@@ -1,6 +1,6 @@
1
1
  import { useDepSource } from "@weasel-js/routing/react";
2
2
 
3
- //#region src/interactions/actions/useNotices.ts
3
+ // src/interactions/actions/useNotices.ts
4
4
  /** Publish the host's notice surface as the `notices` dep, where actions tell
5
5
  * the user something went wrong. Silently does nothing outside a
6
6
  * `<DepRegistryProvider>`. */
@@ -8,6 +8,5 @@ function useNotices(notices) {
8
8
  useDepSource("notices", () => notices);
9
9
  }
10
10
 
11
- //#endregion
12
11
  export { useNotices };
13
12
  //# sourceMappingURL=useNotices.js.map
@@ -1,7 +1,7 @@
1
1
  import { KIT_STANDARD_ACTIONS } from "../../canvas/SceneCanvas/namedPresets.js";
2
2
  import { useActionSet, useStandardDeps } from "./useActionSet.js";
3
3
 
4
- //#region src/interactions/actions/useStandardActions.ts
4
+ // src/interactions/actions/useStandardActions.ts
5
5
  /** Every id `useStandardActions` can register, each core preset's in turn and
6
6
  * then the tool-driven ones. It holds `clipboard.pasteEvent` back while
7
7
  * `ingest` is registered. */
@@ -22,6 +22,5 @@ function useStandardActions(opts) {
22
22
  useActionSet(actions, exclude);
23
23
  }
24
24
 
25
- //#endregion
26
25
  export { KIT_STANDARD_ACTION_IDS, useStandardActions };
27
26
  //# sourceMappingURL=useStandardActions.js.map
@@ -1,7 +1,7 @@
1
1
  import { useCallback, useMemo, useRef, useState } from "react";
2
2
  import { useLatest } from "@weasel-js/react";
3
3
 
4
- //#region src/interactions/gestures/dragGesture/dragGesture.ts
4
+ // src/interactions/gestures/dragGesture/dragGesture.ts
5
5
  /**
6
6
  * The base drag primitive: tracks a pointer from press to release, with an
7
7
  * optional threshold below which the gesture stays pending and commits
@@ -144,6 +144,5 @@ function useDragGesture(options = {}) {
144
144
  ]);
145
145
  }
146
146
 
147
- //#endregion
148
147
  export { useDragGesture };
149
148
  //# sourceMappingURL=dragGesture.js.map
@@ -1,6 +1,6 @@
1
1
  import { clientToWorld } from "../../../core/viewport/clientToWorld.js";
2
2
 
3
- //#region src/interactions/gestures/dragGesture/dragPointOf.ts
3
+ // src/interactions/gestures/dragGesture/dragPointOf.ts
4
4
  var IDENTITY = {
5
5
  x: 0,
6
6
  y: 0,
@@ -25,6 +25,5 @@ function dragPointOf(event, element, view = IDENTITY) {
25
25
  };
26
26
  }
27
27
 
28
- //#endregion
29
28
  export { dragPointOf };
30
29
  //# sourceMappingURL=dragPointOf.js.map
@@ -1,9 +1,9 @@
1
- import { dlog } from "../../../debug/flag.js";
2
1
  import { useDragGesture } from "../dragGesture/dragGesture.js";
2
+ import { dlog } from "../../../debug/flag.js";
3
3
  import { useCallback, useMemo, useRef, useState } from "react";
4
4
  import { useLatest } from "@weasel-js/react";
5
5
 
6
- //#region src/interactions/gestures/dragRadial/dragRadial.ts
6
+ // src/interactions/gestures/dragRadial/dragRadial.ts
7
7
  function stateFrom(s) {
8
8
  const dx = s.current.x - s.center.x;
9
9
  const dy = s.current.y - s.center.y;
@@ -148,6 +148,5 @@ function useDragRadial(options = {}) {
148
148
  ]);
149
149
  }
150
150
 
151
- //#endregion
152
151
  export { useDragRadial };
153
152
  //# sourceMappingURL=dragRadial.js.map
@@ -1,9 +1,9 @@
1
- import { dlog } from "../../../debug/flag.js";
2
1
  import { useDragGesture } from "../dragGesture/dragGesture.js";
2
+ import { dlog } from "../../../debug/flag.js";
3
3
  import { useCallback, useMemo, useRef, useState } from "react";
4
4
  import { useLatest } from "@weasel-js/react";
5
5
 
6
- //#region src/interactions/gestures/dragRect/dragRect.ts
6
+ // src/interactions/gestures/dragRect/dragRect.ts
7
7
  function boundsFrom(start, current) {
8
8
  return {
9
9
  x: Math.min(start.x, current.x),
@@ -203,6 +203,5 @@ function useDragRect(options = {}) {
203
203
  ]);
204
204
  }
205
205
 
206
- //#endregion
207
206
  export { useDragRect };
208
207
  //# sourceMappingURL=dragRect.js.map
@@ -2,7 +2,7 @@ import { useCallback, useEffect, useRef } from "react";
2
2
  import { useLatest } from "@weasel-js/react";
3
3
  import { clientToCanvasRect, openPointerSession } from "@weasel-js/routing";
4
4
 
5
- //#region src/interactions/gestures/handleDrag/handleDrag.ts
5
+ // src/interactions/gestures/handleDrag/handleDrag.ts
6
6
  function defaultRectEl(target) {
7
7
  if (target instanceof SVGElement && target.ownerSVGElement) return target.ownerSVGElement;
8
8
  return target;
@@ -58,6 +58,5 @@ function useHandleDrag(opts) {
58
58
  }, [optsRef]) };
59
59
  }
60
60
 
61
- //#endregion
62
61
  export { useHandleDrag };
63
62
  //# sourceMappingURL=handleDrag.js.map
@@ -3,7 +3,7 @@ import { useKitSettings, useLatest } from "@weasel-js/react";
3
3
  import { openPointerSession, pastDragThreshold } from "@weasel-js/routing";
4
4
  import { fixedSeat } from "@weasel-js/gestures";
5
5
 
6
- //#region src/interactions/gestures/pointerDrag/pointerDrag.ts
6
+ // src/interactions/gestures/pointerDrag/pointerDrag.ts
7
7
  var dropZones = /* @__PURE__ */ new Set();
8
8
  var activeDrag = null;
9
9
  function registerDropZone(zone) {
@@ -205,6 +205,5 @@ function useDropZone(opts) {
205
205
  }, [optsRef]);
206
206
  }
207
207
 
208
- //#endregion
209
208
  export { useDragHandle, useDropZone };
210
209
  //# sourceMappingURL=pointerDrag.js.map
@@ -1,7 +1,7 @@
1
1
  import { isPathLike } from "../../../core/geometry/autoPoseDescriptor.js";
2
2
  import { boundsOfPath, translatePath } from "@weasel-js/geom";
3
3
 
4
- //#region src/interactions/gestures/shared/originProjection.ts
4
+ // src/interactions/gestures/shared/originProjection.ts
5
5
  /** Identity projection for `TPose extends { x; y }`. */
6
6
  var RECT_ORIGIN_PROJECTION = {
7
7
  getOrigin: (p) => ({
@@ -44,6 +44,5 @@ var AUTO_ORIGIN_PROJECTION = {
44
44
  }
45
45
  };
46
46
 
47
- //#endregion
48
47
  export { AUTO_ORIGIN_PROJECTION, RECT_ORIGIN_PROJECTION };
49
48
  //# sourceMappingURL=originProjection.js.map
@@ -1,6 +1,6 @@
1
1
  import { pxExtent } from "@weasel-js/geom";
2
2
 
3
- //#region src/interactions/gestures/shared/screenTolerance.ts
3
+ // src/interactions/gestures/shared/screenTolerance.ts
4
4
  /** A screen-pixel tolerance in world units, per axis, through the camera of
5
5
  * the view the gesture landed in. With no view, one pixel is one unit. */
6
6
  function screenTolerance(px, ctx) {
@@ -31,6 +31,5 @@ function gestureReaders(deps) {
31
31
  };
32
32
  }
33
33
 
34
- //#endregion
35
34
  export { gesturePlaneReader, gestureReaders, gestureViewReader, screenTolerance };
36
35
  //# sourceMappingURL=screenTolerance.js.map
@@ -1,6 +1,6 @@
1
1
  import { openPointerSession, pastDragThreshold } from "@weasel-js/routing";
2
2
 
3
- //#region src/interactions/gestures/thresholdDrag/thresholdDrag.ts
3
+ // src/interactions/gestures/thresholdDrag/thresholdDrag.ts
4
4
  /** Begin a threshold-gated drag from a React PointerDown event; returns a handle exposing live state. */
5
5
  function startThresholdDrag(e, opts) {
6
6
  const start = {
@@ -59,6 +59,5 @@ function startThresholdDrag(e, opts) {
59
59
  };
60
60
  }
61
61
 
62
- //#endregion
63
62
  export { startThresholdDrag };
64
63
  //# sourceMappingURL=thresholdDrag.js.map
@@ -1,15 +1,15 @@
1
1
  import { ANCHOR_HIT_BASE_PX, HANDLE_BASE_PX, ROTATION_HANDLE_BASE_PX } from "./core/device/targets.js";
2
2
  import { DEFAULT_VIEW_ANIMATION_MS } from "./core/viewport/useViewAnimation.js";
3
- import { DEFAULT_SNAP_PX } from "./domains/snap/session2d.js";
4
- import { ANCHOR_CLICK_PX } from "./interactions/actions/defaults/anchorEditing.js";
3
+ import { DEFAULT_PICK_TOLERANCE_PX } from "./canvas/SceneCanvas/useSceneSelectTool.js";
5
4
  import { SEGMENT_HIT_PX } from "./interactions/actions/defaults/segmentUnder.js";
5
+ import { ANCHOR_CLICK_PX } from "./interactions/actions/defaults/anchorEditing.js";
6
6
  import { ANCHOR_RADIUS_PX, CLOSE_HINT_RADIUS_PX, HANDLE_DOT_RADIUS_PX, PEN_CLOSE_HIT_PX } from "./domains/paths/penPreviewLayer.js";
7
+ import { DEFAULT_SNAP_PX } from "./domains/snap/session2d.js";
7
8
  import { SLICE_CLOSE_HIT_PX, VERTEX_RADIUS_PX } from "./tools/builtin/slice/useSliceTool.js";
8
- import { DEFAULT_PICK_TOLERANCE_PX } from "./canvas/SceneCanvas/useSceneSelectTool.js";
9
9
  import { DOUBLE_CLICK_MAX_MS, DOUBLE_CLICK_MAX_PX, DRAG_THRESHOLD_PX, LONG_PRESS_MS, TAP_THRESHOLD_PX } from "@weasel-js/gestures";
10
10
  import { pref } from "@weasel-js/prefs";
11
11
 
12
- //#region src/kitSettingsSchema.ts
12
+ // src/kitSettingsSchema.ts
13
13
  var ms = {
14
14
  scale: 1,
15
15
  suffix: "ms"
@@ -78,6 +78,5 @@ var coreKitSettingsSchema = pref.group("Canvas", {
78
78
  view: pref.group("View", { animationMs: msLeaf("Camera animation", DEFAULT_VIEW_ANIMATION_MS, 0) })
79
79
  });
80
80
 
81
- //#endregion
82
81
  export { coreKitSettingsSchema };
83
82
  //# sourceMappingURL=kitSettingsSchema.js.map
package/dist/move.d.ts CHANGED
@@ -2,10 +2,10 @@ export { U as UseMoveOptions } from './options-DAjkhbcs.js';
2
2
  import { S as SnapTarget } from './types-VCtfchp-.js';
3
3
  import { M as MoveBehavior } from './clone-Bz4iqGfE.js';
4
4
  import { O as OriginProjection } from './originProjection-gY0jb4Wb.js';
5
+ import { FramedBox } from '@weasel-js/geom';
6
+ import { P as PoseDescriptor } from './poseDescriptor-CvSxVhCd.js';
5
7
  import './types-A_sNJYRd.js';
6
- import '@weasel-js/geom';
7
8
  import '@weasel-js/history';
8
- import './poseDescriptor-CvSxVhCd.js';
9
9
  import '@weasel-js/animator';
10
10
  import '@weasel-js/routing';
11
11
  import '@weasel-js/react';
@@ -51,4 +51,19 @@ declare function snapBackOrDelete<TPose>(args: {
51
51
  origin: OriginProjection<TPose>;
52
52
  }): MoveBehavior<TPose>;
53
53
 
54
- export { snapBackOrDelete, snapToContainer };
54
+ /** What {@link clampMove} takes. */
55
+ interface ClampMoveOptions<TPose> {
56
+ /** The world rect the dragged nodes stay inside, or a function read each frame for one that changes. */
57
+ bounds: FramedBox | (() => FramedBox);
58
+ /** Reads each pose's box. Default `AUTO_POSE_DESCRIPTOR`. */
59
+ poseDescriptor?: PoseDescriptor<TPose>;
60
+ }
61
+ /**
62
+ * Move behavior that keeps the dragged nodes inside `bounds`: the drag's translation is
63
+ * clamped so the box around every dragged node's start pose, moved by it, stays in the rect.
64
+ * The clamp applies to the preview and the commit alike, so a node let go past an edge lands
65
+ * on it. Put it after behaviors that reshape the translation, so it has the last word.
66
+ */
67
+ declare function clampMove<TPose>(opts: ClampMoveOptions<TPose>): MoveBehavior<TPose>;
68
+
69
+ export { type ClampMoveOptions, clampMove, snapBackOrDelete, snapToContainer };
package/dist/move.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import { snapToContainer } from "./interactions/actions/move/behaviors/snapToContainer.js";
2
2
  import { snapBackOrDelete } from "./interactions/actions/move/behaviors/snapBackOrDelete.js";
3
+ import { clampMove } from "./interactions/actions/move/behaviors/clampMove.js";
3
4
 
4
- export { snapBackOrDelete, snapToContainer };
5
+ export { clampMove, snapBackOrDelete, snapToContainer };
@@ -1,4 +1,4 @@
1
- //#region src/test-hook/createTestHook.ts
1
+ // src/test-hook/createTestHook.ts
2
2
  function createTestHook(refs) {
3
3
  let resolveReady;
4
4
  const ready = new Promise((r) => {
@@ -37,6 +37,5 @@ function createTestHook(refs) {
37
37
  };
38
38
  }
39
39
 
40
- //#endregion
41
40
  export { createTestHook };
42
41
  //# sourceMappingURL=createTestHook.js.map
@@ -1,7 +1,7 @@
1
1
  import { createTestHook } from "./createTestHook.js";
2
2
  import { isDev } from "@weasel-js/react";
3
3
 
4
- //#region src/test-hook/install.ts
4
+ // src/test-hook/install.ts
5
5
  /** Hooks of the canvases mounted now, oldest first. `window.__weaselTest` is the first. */
6
6
  var live = [];
7
7
  /** Make a hook for this canvas and return it iff
@@ -32,6 +32,5 @@ function releaseTestHook(hook) {
32
32
  else delete window.__weaselTest;
33
33
  }
34
34
 
35
- //#endregion
36
35
  export { installTestHookIfRequested, releaseTestHook };
37
36
  //# sourceMappingURL=install.js.map
@@ -2,7 +2,7 @@ import { installTestHookIfRequested, releaseTestHook } from "./install.js";
2
2
  import { useEffect } from "react";
3
3
  import { isDev, useLatest } from "@weasel-js/react";
4
4
 
5
- //#region src/test-hook/useTestHook.ts
5
+ // src/test-hook/useTestHook.ts
6
6
  /** The test hook for one canvas: opt-in via `?test=1`, never in a production
7
7
  * build. `read` is called for the values of the last committed render. */
8
8
  function useTestHook(read) {
@@ -24,6 +24,5 @@ function useTestHook(read) {
24
24
  }, [live]);
25
25
  }
26
26
 
27
- //#endregion
28
27
  export { useTestHook };
29
28
  //# sourceMappingURL=useTestHook.js.map
@@ -1,7 +1,7 @@
1
- import { E as EditAnchorsDep, P as PathEditMark, a as PathEditExtension, H as HandleLocks, S as SnapSource, b as SnapGesture, c as SnapConstrain, d as SnapResizeBox, e as SnapGeometry, f as SnapOutcomeStore, g as SnapAnchors, h as SnapSession } from './depSchema-ChQPzEkW.js';
2
- export { _ as _resetPaintKindsForTests } from './depSchema-ChQPzEkW.js';
1
+ import { E as EditAnchorsDep, P as PathEditMark, a as PathEditExtension, H as HandleLocks, S as SnapSource, b as SnapGesture, c as SnapConstrain, d as SnapResizeBox, e as SnapGeometry, f as SnapOutcomeStore, g as SnapAnchors, h as SnapSession } from './depSchema-C7a_OMt-.js';
2
+ export { _ as _resetPaintKindsForTests } from './depSchema-C7a_OMt-.js';
3
3
  export { _resetMarkersForTests } from '@weasel-js/stroke/test-seams';
4
- import { S as Scene } from './types-DW14eu9B.js';
4
+ import { S as Scene } from './types-BUvUXZe5.js';
5
5
  import { SelectionApi, ActionTunings, WorldPoint, ResizeAnchor } from '@weasel-js/routing';
6
6
  import { Op } from '@weasel-js/history';
7
7
  import { View } from '@weasel-js/geom';
@@ -19,8 +19,8 @@ import '@weasel-js/cursor';
19
19
  import '@weasel-js/gestures';
20
20
  import '@weasel-js/geom/nd';
21
21
  import '@weasel-js/animator';
22
- import './types-VCtfchp-.js';
23
22
  import './clone-Bz4iqGfE.js';
23
+ import './types-VCtfchp-.js';
24
24
  import '@weasel-js/react';
25
25
  import '@weasel-js/quantity';
26
26
 
@@ -1,8 +1,8 @@
1
1
  import { _resetPaintKindsForTests } from "./core/paint/paintKinds.js";
2
- import { useEditAnchorsDepSource } from "./canvas/deps/editAnchors.js";
3
- import { createSnapSession2d } from "./domains/snap/sceneSession2d.js";
4
2
  import { makeEditAnchorsDep } from "./interactions/actions/testUtils.js";
3
+ import { useEditAnchorsDepSource } from "./canvas/deps/editAnchors.js";
5
4
  import { rootsTree } from "./core/adapters/testing/rootsTree.js";
5
+ import { createSnapSession2d } from "./domains/snap/sceneSession2d.js";
6
6
  import { _resetMarkersForTests } from "@weasel-js/stroke/test-seams";
7
7
 
8
8
  export { _resetMarkersForTests, _resetPaintKindsForTests, createSnapSession2d as createSnapSession2dForTests, makeEditAnchorsDep as makeEditAnchorsDepForTests, rootsTree as rootsTreeForTests, useEditAnchorsDepSource as useEditAnchorsDepSourceForTests };