@weasel-js/core 1.15.0 → 1.15.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (794) hide show
  1. package/CHANGELOG.md +84 -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 +2 -3
  17. package/dist/animation/poseTransition.js +1 -2
  18. package/dist/animation/reflow.js +2 -3
  19. package/dist/animation/rewind.js +1 -2
  20. package/dist/animation/rig/bindRig.js +2 -3
  21. package/dist/animation/rig/rigNode.js +1 -2
  22. package/dist/animation/rig/rigSeat.js +1 -2
  23. package/dist/animation/rig/skinBinding.js +1 -2
  24. package/dist/animation/rig/useRig.js +2 -3
  25. package/dist/animation/wrappers/animateLifecycle.js +1 -2
  26. package/dist/animation/wrappers/animateOnSetPose.js +1 -2
  27. package/dist/animation/wrappers/instantPose.js +1 -2
  28. package/dist/animation/writtenPoseTarget.js +1 -2
  29. package/dist/barrel/interactions.js +2 -1
  30. package/dist/barrel/routing.js +2 -2
  31. package/dist/barrel/scene.js +2 -2
  32. package/dist/canvas/Canvas.js +5 -6
  33. package/dist/canvas/CanvasView.js +6 -7
  34. package/dist/canvas/CursorCoordsHud.js +2 -3
  35. package/dist/canvas/DrawCanvas.js +3 -4
  36. package/dist/canvas/GestureReason.js +1 -2
  37. package/dist/canvas/GestureReason.module.js +1 -2
  38. package/dist/canvas/LeanSceneCanvas.js +2 -3
  39. package/dist/canvas/ModalityHud.js +2 -3
  40. package/dist/canvas/NodeShape.js +3 -4
  41. package/dist/canvas/PickHud.js +2 -3
  42. package/dist/canvas/SceneCanvas/ActionsProviderIfRoot.js +1 -2
  43. package/dist/canvas/SceneCanvas/CanvasKitProviders.js +3 -4
  44. package/dist/canvas/SceneCanvas/DepRegistryProviderIfRoot.js +1 -2
  45. package/dist/canvas/SceneCanvas/DevHuds.js +1 -2
  46. package/dist/canvas/SceneCanvas/PointerProviderIfRoot.js +1 -2
  47. package/dist/canvas/SceneCanvas/SceneCanvasInput.js +4 -5
  48. package/dist/canvas/SceneCanvas/SurfaceDeclarations.js +1 -2
  49. package/dist/canvas/SceneCanvas/brushOverlay.js +1 -2
  50. package/dist/canvas/SceneCanvas/builtinToolSets.js +1 -2
  51. package/dist/canvas/SceneCanvas/canvasPassThrough.js +1 -2
  52. package/dist/canvas/SceneCanvas/contributionFrameHooks.js +1 -2
  53. package/dist/canvas/SceneCanvas/coordTrace.js +1 -2
  54. package/dist/canvas/SceneCanvas/defaultNodeProperties.js +3 -4
  55. package/dist/canvas/SceneCanvas/defaultNodeRouting.js +1 -2
  56. package/dist/canvas/SceneCanvas/defaultTextEditor.js +4 -5
  57. package/dist/canvas/SceneCanvas/describePresets.js +1 -2
  58. package/dist/canvas/SceneCanvas/dispatcherGestureBounds.js +1 -2
  59. package/dist/canvas/SceneCanvas/features.js +1 -2
  60. package/dist/canvas/SceneCanvas/insertPreviewCommands.js +1 -2
  61. package/dist/canvas/SceneCanvas/mergeLayers.js +1 -2
  62. package/dist/canvas/SceneCanvas/namedPresets.js +5 -6
  63. package/dist/canvas/SceneCanvas/poseGeometry.js +1 -2
  64. package/dist/canvas/SceneCanvas/poseRegistrars.js +1 -2
  65. package/dist/canvas/SceneCanvas/presets/arrange.js +2 -3
  66. package/dist/canvas/SceneCanvas/presets/baseline.js +1 -2
  67. package/dist/canvas/SceneCanvas/presets/chrome.js +1 -2
  68. package/dist/canvas/SceneCanvas/presets/composites.js +1 -2
  69. package/dist/canvas/SceneCanvas/presets/edit.js +4 -5
  70. package/dist/canvas/SceneCanvas/presets/ingest.js +1 -2
  71. package/dist/canvas/SceneCanvas/presets/paths.js +3 -4
  72. package/dist/canvas/SceneCanvas/presets/select.js +1 -2
  73. package/dist/canvas/SceneCanvas/presets/toolDriven.js +2 -3
  74. package/dist/canvas/SceneCanvas/presets/tools.js +1 -2
  75. package/dist/canvas/SceneCanvas/presets/transform.js +2 -3
  76. package/dist/canvas/SceneCanvas/presets/view.js +2 -3
  77. package/dist/canvas/SceneCanvas/props.js +1 -2
  78. package/dist/canvas/SceneCanvas/scenePointQuery.js +2 -3
  79. package/dist/canvas/SceneCanvas/shapeGeneratorProperties.js +1 -2
  80. package/dist/canvas/SceneCanvas/toolRegistry.js +2 -3
  81. package/dist/canvas/SceneCanvas/useActionTunings.js +1 -2
  82. package/dist/canvas/SceneCanvas/useActionsPropResolver.js +1 -2
  83. package/dist/canvas/SceneCanvas/useBakedScene.js +2 -3
  84. package/dist/canvas/SceneCanvas/useBuiltinShapeTools.js +7 -8
  85. package/dist/canvas/SceneCanvas/useBuiltinTools.js +2 -3
  86. package/dist/canvas/SceneCanvas/useCanvasCamera.js +2 -3
  87. package/dist/canvas/SceneCanvas/useCanvasDevtoolsRoot.js +1 -2
  88. package/dist/canvas/SceneCanvas/useCanvasDispatcher.js +1 -2
  89. package/dist/canvas/SceneCanvas/useCanvasSelection.js +8 -6
  90. package/dist/canvas/SceneCanvas/useCanvasSelection.js.map +1 -1
  91. package/dist/canvas/SceneCanvas/useCanvasTools.js +2 -3
  92. package/dist/canvas/SceneCanvas/useChromeAffordances.js +2 -3
  93. package/dist/canvas/SceneCanvas/useContributionRoles.js +1 -2
  94. package/dist/canvas/SceneCanvas/useDepartureGhostLayer.js +4 -5
  95. package/dist/canvas/SceneCanvas/useDispatcherOverlayLayer.js +2 -3
  96. package/dist/canvas/SceneCanvas/useHeldModifiers.js +1 -2
  97. package/dist/canvas/SceneCanvas/useMagnificationCheck.js +41 -0
  98. package/dist/canvas/SceneCanvas/useMagnificationCheck.js.map +1 -0
  99. package/dist/canvas/SceneCanvas/useNodeAtPoint.js +1 -2
  100. package/dist/canvas/SceneCanvas/useNodeKinds.js +2 -3
  101. package/dist/canvas/SceneCanvas/usePreviewGhostLayer.js +10 -11
  102. package/dist/canvas/SceneCanvas/useSceneCanvasHandle.js +1 -2
  103. package/dist/canvas/SceneCanvas/useSceneCanvasLayers.js +6 -7
  104. package/dist/canvas/SceneCanvas/useSceneCanvasPathEdit.js +1 -2
  105. package/dist/canvas/SceneCanvas/useSceneCanvasTools.js +1 -2
  106. package/dist/canvas/SceneCanvas/useSceneChrome.js +5 -6
  107. package/dist/canvas/SceneCanvas/useSceneGestureDispatcher.js +6 -7
  108. package/dist/canvas/SceneCanvas/useScenePicking.js +5 -6
  109. package/dist/canvas/SceneCanvas/useSceneRedrawSources.js +1 -2
  110. package/dist/canvas/SceneCanvas/useSceneSelectTool.js +7 -8
  111. package/dist/canvas/SceneCanvas/useSceneSlotLayers.js +2 -3
  112. package/dist/canvas/SceneCanvas/useSceneStandardActions.js +26 -18
  113. package/dist/canvas/SceneCanvas/useSceneStandardActions.js.map +1 -1
  114. package/dist/canvas/SceneCanvas/useSelectionOverlayLayer.js +2 -3
  115. package/dist/canvas/SceneCanvas/useSurfaceRouting.js +1 -2
  116. package/dist/canvas/SceneCanvas/useSurfaceViewInputs.js +1 -2
  117. package/dist/canvas/SceneCanvas/useToolKeybindings.js +1 -2
  118. package/dist/canvas/SceneCanvas/useViewportActions.js +3 -4
  119. package/dist/canvas/SceneCanvas/worldPointAt.js +1 -2
  120. package/dist/canvas/SceneCanvas.js +18 -17
  121. package/dist/canvas/SceneCanvas.js.map +1 -1
  122. package/dist/canvas/SceneViewCanvas.js +2 -3
  123. package/dist/canvas/SurfaceCanvas.js +1 -2
  124. package/dist/canvas/ViewMarker.js +1 -2
  125. package/dist/canvas/accentColor.js +1 -2
  126. package/dist/canvas/adapterDerivedPath.js +2 -3
  127. package/dist/canvas/adapterPickSource.js +1 -2
  128. package/dist/canvas/affordanceAt.js +2 -3
  129. package/dist/canvas/buildSceneLayer.js +4 -5
  130. package/dist/canvas/buildSceneTree.js +4 -5
  131. package/dist/canvas/canvasRenderer.js +1 -2
  132. package/dist/canvas/colorOverrides.js +1 -2
  133. package/dist/canvas/contextAttributes.js +1 -2
  134. package/dist/canvas/copiesAbove.js +1 -2
  135. package/dist/canvas/defaultDrawOne.js +1 -2
  136. package/dist/canvas/deps/areaSelect.js +5 -3
  137. package/dist/canvas/deps/areaSelect.js.map +1 -1
  138. package/dist/canvas/deps/booleans.js +5 -6
  139. package/dist/canvas/deps/changes.js +1 -2
  140. package/dist/canvas/deps/chromeRules.js +1 -2
  141. package/dist/canvas/deps/debug.js +1 -2
  142. package/dist/canvas/deps/dispatchSources.js +1 -2
  143. package/dist/canvas/deps/dispatcher.js +1 -2
  144. package/dist/canvas/deps/editAnchors.js +3 -4
  145. package/dist/canvas/deps/enteredGroup.js +1 -2
  146. package/dist/canvas/deps/geometryProjection.js +1 -2
  147. package/dist/canvas/deps/hitTestArea.js +4 -5
  148. package/dist/canvas/deps/ingestion.js +1 -2
  149. package/dist/canvas/deps/insert.js +3 -4
  150. package/dist/canvas/deps/insertSite.js +3 -4
  151. package/dist/canvas/deps/kitSettings.js +1 -2
  152. package/dist/canvas/deps/lassoSelect.js +5 -3
  153. package/dist/canvas/deps/lassoSelect.js.map +1 -1
  154. package/dist/canvas/deps/layout.js +1 -2
  155. package/dist/canvas/deps/modeDefaultTool.js +1 -2
  156. package/dist/canvas/deps/nodeAtPoint.js +1 -2
  157. package/dist/canvas/deps/pathEditCommits.js +4 -5
  158. package/dist/canvas/deps/pathLeaf.js +1 -2
  159. package/dist/canvas/deps/pathLeafDeps.js +2 -3
  160. package/dist/canvas/deps/poseDescriptor.js +1 -2
  161. package/dist/canvas/deps/previewPaths.js +1 -2
  162. package/dist/canvas/deps/resizePolicy.js +1 -2
  163. package/dist/canvas/deps/selectionSnapshot.js +1 -2
  164. package/dist/canvas/deps/slice.js +5 -6
  165. package/dist/canvas/deps/snap.js +3 -4
  166. package/dist/canvas/deps/surface.js +1 -2
  167. package/dist/canvas/deps/textEdit.js +1 -2
  168. package/dist/canvas/deps/transformFollowers.js +1 -2
  169. package/dist/canvas/deps/view.js +1 -2
  170. package/dist/canvas/derivedPath.js +6 -7
  171. package/dist/canvas/doubleClickTarget.js +1 -2
  172. package/dist/canvas/drawEnvelope.js +1 -2
  173. package/dist/canvas/drawnBounds.js +4 -5
  174. package/dist/canvas/getNodeAtPoint.js +1 -2
  175. package/dist/canvas/hostAnchor.js +1 -2
  176. package/dist/canvas/hud.module.js +1 -2
  177. package/dist/canvas/inheritedPaints.js +1 -2
  178. package/dist/canvas/insertPreviewExtent.js +1 -2
  179. package/dist/canvas/kitRequirements.js +1 -2
  180. package/dist/canvas/layerHover.js +1 -2
  181. package/dist/canvas/layerOrder.js +1 -2
  182. package/dist/canvas/layerSlots.js +1 -2
  183. package/dist/canvas/mountedCanvases.js +1 -2
  184. package/dist/canvas/nodeShapes/derivedPainter.js +2 -3
  185. package/dist/canvas/nodeShapes/imagePainter.js +1 -2
  186. package/dist/canvas/nodeShapes/measurePainter.js +2 -3
  187. package/dist/canvas/nodeShapes/memo.js +1 -2
  188. package/dist/canvas/nodeShapes/nodePaint.js +1 -2
  189. package/dist/canvas/nodeShapes/pathPainter.js +3 -4
  190. package/dist/canvas/nodeShapes/poseBox.js +1 -2
  191. package/dist/canvas/nodeShapes/rectFallbackPainter.js +1 -2
  192. package/dist/canvas/nodeShapes/shapePainter.js +2 -3
  193. package/dist/canvas/nodeShapes/strokedBounds.js +1 -2
  194. package/dist/canvas/nodeShapes/textPainter.js +1 -2
  195. package/dist/canvas/overChildren.js +1 -2
  196. package/dist/canvas/overlayRoleStrokes.js +1 -2
  197. package/dist/canvas/ownClip.js +1 -2
  198. package/dist/canvas/paintCull.js +1 -2
  199. package/dist/canvas/paintedCursorLayer.js +1 -2
  200. package/dist/canvas/pathOverlay.js +1 -2
  201. package/dist/canvas/pickIndex/nodeBroadBox.js +3 -4
  202. package/dist/canvas/pickIndex/scenePickIndex.js +3 -4
  203. package/dist/canvas/pickReach.js +1 -2
  204. package/dist/canvas/pickWalk.js +2 -3
  205. package/dist/canvas/planeClips.js +1 -2
  206. package/dist/canvas/poseRotation.js +1 -2
  207. package/dist/canvas/publishPreviews.js +1 -2
  208. package/dist/canvas/rasterReadback.js +1 -2
  209. package/dist/canvas/rasterToPng.js +1 -2
  210. package/dist/canvas/renderDebugSnapshot.js +1 -2
  211. package/dist/canvas/renderNeeds.js +1 -2
  212. package/dist/canvas/renderSceneToPixels.js +5 -6
  213. package/dist/canvas/sceneAdapter.js +37 -27
  214. package/dist/canvas/sceneAdapter.js.map +1 -1
  215. package/dist/canvas/sceneClipboard.js +19 -7
  216. package/dist/canvas/sceneClipboard.js.map +1 -1
  217. package/dist/canvas/sceneLayerPaint.js +1 -2
  218. package/dist/canvas/scenePickReads.js +1 -2
  219. package/dist/canvas/scenePickSource.js +5 -6
  220. package/dist/canvas/sceneSlotWiring.js +2 -3
  221. package/dist/canvas/sceneViewRender.js +5 -6
  222. package/dist/canvas/shownNodes.js +1 -2
  223. package/dist/canvas/slopsDebugLayer.js +1 -2
  224. package/dist/canvas/surfaceContribution.js +1 -2
  225. package/dist/canvas/useCanvasElements.js +1 -2
  226. package/dist/canvas/useCanvasHandle.js +1 -2
  227. package/dist/canvas/useCanvasPaint.js +2 -3
  228. package/dist/canvas/useCanvasRenderer.js +1 -2
  229. package/dist/canvas/useCanvasSurface.js +1 -2
  230. package/dist/canvas/useCanvasView.js +2 -3
  231. package/dist/canvas/useClientToWorld.js +1 -2
  232. package/dist/canvas/useExtraLayers.js +1 -2
  233. package/dist/canvas/useFrameLoop.js +1 -2
  234. package/dist/canvas/useHitObserver.js +1 -2
  235. package/dist/canvas/useHostAnchor.js +1 -2
  236. package/dist/canvas/useInFlightBounds.js +6 -6
  237. package/dist/canvas/useInFlightBounds.js.map +1 -1
  238. package/dist/canvas/useLateContentRedraw.js +1 -2
  239. package/dist/canvas/useLayerStack.js +2 -3
  240. package/dist/canvas/usePaintedCursor.js +1 -2
  241. package/dist/canvas/useRedrawOn.js +1 -2
  242. package/dist/canvas/useSceneAdapter.js +1 -2
  243. package/dist/canvas/useSceneLayerList.js +1 -2
  244. package/dist/canvas/useSurfaceInput.js +1 -2
  245. package/dist/canvas/useSurfaceSize.js +1 -2
  246. package/dist/canvas/useToolCursor.js +1 -2
  247. package/dist/canvas/useViewAim.js +2 -3
  248. package/dist/canvas/useViewHelpers.js +5 -4
  249. package/dist/canvas/useViewHelpers.js.map +1 -1
  250. package/dist/canvas/useViewLayerGate.js +1 -2
  251. package/dist/canvas/useViewNesting.js +1 -2
  252. package/dist/canvas/useViewRegistrySurface.js +1 -2
  253. package/dist/canvas/viewInputs.js +1 -2
  254. package/dist/canvas/viewMarkers.js +1 -2
  255. package/dist/canvas/viewRegistry.js +1 -2
  256. package/dist/canvas/viewSnap.js +1 -2
  257. package/dist/canvas/watchElementMove.js +1 -2
  258. package/dist/canvas/wrapNodeOutput.js +1 -2
  259. package/dist/core/adapters/testing/rootsTree.js +1 -2
  260. package/dist/core/applyOps.js +1 -2
  261. package/dist/core/device/targets.js +1 -2
  262. package/dist/core/device/useDeviceProfile.js +1 -2
  263. package/dist/core/device/useTargetBasePx.js +1 -2
  264. package/dist/core/device/watchDevicePixelRatio.js +1 -2
  265. package/dist/core/geometry/autoPoseDescriptor.js +2 -3
  266. package/dist/core/geometry/booleanOfPaths.js +1 -2
  267. package/dist/core/geometry/inkExtents.js +1 -2
  268. package/dist/core/geometry/pathPoseDescriptor.js +1 -2
  269. package/dist/core/geometry/poseDescriptor.js +1 -2
  270. package/dist/core/geometry/regionHit.js +1 -2
  271. package/dist/core/geometry/targetFrame.js +1 -2
  272. package/dist/core/geometry/unionBounds.js +1 -2
  273. package/dist/core/layers/backgroundFill.js +1 -2
  274. package/dist/core/layers/children.js +1 -2
  275. package/dist/core/layers/gateLayer.js +1 -2
  276. package/dist/core/layers/layerGroup.js +1 -2
  277. package/dist/core/layers/redrawSource.js +1 -2
  278. package/dist/core/layers/render.js +1 -2
  279. package/dist/core/layers/retain.js +1 -2
  280. package/dist/core/ops/arrange.js +1 -2
  281. package/dist/core/ops/create.js +2 -3
  282. package/dist/core/ops/createHistory.js +2 -3
  283. package/dist/core/ops/delete.js +2 -3
  284. package/dist/core/ops/nodeFlags.js +1 -2
  285. package/dist/core/ops/registry.js +1 -2
  286. package/dist/core/ops/reorder/algorithms.js +1 -2
  287. package/dist/core/ops/reorder/index.js +1 -2
  288. package/dist/core/ops/reorder/setChildOrder.js +1 -2
  289. package/dist/core/ops/reparent.js +1 -2
  290. package/dist/core/ops/select.js +1 -2
  291. package/dist/core/ops/setData.js +1 -2
  292. package/dist/core/ops/setDependsOn.js +1 -2
  293. package/dist/core/ops/setLayer.js +1 -2
  294. package/dist/core/ops/setLayout.js +1 -2
  295. package/dist/core/ops/setPath.js +1 -2
  296. package/dist/core/ops/setText.js +1 -2
  297. package/dist/core/ops/slot.js +1 -2
  298. package/dist/core/ops/transform.js +1 -2
  299. package/dist/core/ops/writtenBy.js +1 -2
  300. package/dist/core/pages/fitViewToPage.js +1 -2
  301. package/dist/core/pages/pageEdits.js +3 -4
  302. package/dist/core/pages/pages.js +1 -2
  303. package/dist/core/pages/pages.js.map +1 -1
  304. package/dist/core/pages/pagesLayer.js +1 -2
  305. package/dist/core/paint/meshKind.js +1 -2
  306. package/dist/core/paint/meshKindLazy.js +9 -18
  307. package/dist/core/paint/meshKindLazy.js.map +1 -1
  308. package/dist/core/paint/paintKindEntry.js +1 -2
  309. package/dist/core/paint/paintKinds.js +1 -2
  310. package/dist/core/paint/registerMesh.js +1 -2
  311. package/dist/core/scene/NodeProperties.js +1 -2
  312. package/dist/core/scene/NodeRouting.js +1 -2
  313. package/dist/core/scene/annotation.js +1 -2
  314. package/dist/core/scene/appliedLog.js +1 -2
  315. package/dist/core/scene/arrivalWindow.js +2 -3
  316. package/dist/core/scene/arrivals.js +1 -2
  317. package/dist/core/scene/booleanGroup.js +1 -2
  318. package/dist/core/scene/booleanOfChildren.js +1 -2
  319. package/dist/core/scene/boundOps.js +1 -2
  320. package/dist/core/scene/carryDescendants.js +2 -3
  321. package/dist/core/scene/clipNothing.js +1 -2
  322. package/dist/core/scene/composeFrame.js +1 -2
  323. package/dist/core/scene/composePose.js +1 -2
  324. package/dist/core/scene/declaredFieldSetters.js +1 -2
  325. package/dist/core/scene/depFrame.js +1 -2
  326. package/dist/core/scene/depMemo.js +1 -2
  327. package/dist/core/scene/dependents.js +1 -2
  328. package/dist/core/scene/derivedParts.js +1 -2
  329. package/dist/core/scene/derivedPath.js +2 -3
  330. package/dist/core/scene/docValues.js +1 -2
  331. package/dist/core/scene/documentOf.js +1 -2
  332. package/dist/core/scene/editMode.js +1 -2
  333. package/dist/core/scene/editPass.js +1 -2
  334. package/dist/core/scene/effectivePose.js +3 -4
  335. package/dist/core/scene/fieldEdits.js +1 -2
  336. package/dist/core/scene/fontReads.js +1 -2
  337. package/dist/core/scene/historyFacade.js +1 -2
  338. package/dist/core/scene/historyForm.js +1 -2
  339. package/dist/core/scene/inheritedPaint.js +1 -2
  340. package/dist/core/scene/kitOps.js +16 -15
  341. package/dist/core/scene/kitOps.js.map +1 -1
  342. package/dist/core/scene/kitRegistry.js +2 -3
  343. package/dist/core/scene/layerOps.js +1 -2
  344. package/dist/core/scene/layerStack.js +1 -2
  345. package/dist/core/scene/layoutPass.js +4 -5
  346. package/dist/core/scene/lockGuard.js +1 -2
  347. package/dist/core/scene/minSize.js +1 -2
  348. package/dist/core/scene/nestedHit.js +1 -2
  349. package/dist/core/scene/nodeAsShown.js +1 -2
  350. package/dist/core/scene/nodeFlags.js +1 -2
  351. package/dist/core/scene/nodeFnFields.js +1 -2
  352. package/dist/core/scene/nodeGates.js +1 -2
  353. package/dist/core/scene/nodeMemo.js +1 -2
  354. package/dist/core/scene/nodeStore.js +2 -3
  355. package/dist/core/scene/notifier.js +1 -2
  356. package/dist/core/scene/opTable.js +1 -2
  357. package/dist/core/scene/outerOps.js +1 -2
  358. package/dist/core/scene/pathEffects/blend.js +1 -2
  359. package/dist/core/scene/pathEffects/derive.js +2 -3
  360. package/dist/core/scene/pathEffects/effects.js +1 -2
  361. package/dist/core/scene/pathEffects/foundHidden.js +1 -2
  362. package/dist/core/scene/pathEffects/textAlong.js +1 -2
  363. package/dist/core/scene/pathEffects/textAlongBands.js +1 -2
  364. package/dist/core/scene/plyStacks.js +1 -2
  365. package/dist/core/scene/poseFeed.js +1 -2
  366. package/dist/core/scene/poseHold.js +1 -2
  367. package/dist/core/scene/poseOverrides.js +1 -2
  368. package/dist/core/scene/posePlies.js +1 -2
  369. package/dist/core/scene/poseRemovals.js +1 -2
  370. package/dist/core/scene/poseSnapshot.js +1 -2
  371. package/dist/core/scene/poseWrites.js +1 -2
  372. package/dist/core/scene/reconcileSpecs.js +26 -3
  373. package/dist/core/scene/reconcileSpecs.js.map +1 -1
  374. package/dist/core/scene/recorder.js +1 -2
  375. package/dist/core/scene/renderOrder.js +1 -2
  376. package/dist/core/scene/sameValue.js +1 -2
  377. package/dist/core/scene/scene.js +11 -12
  378. package/dist/core/scene/scene.js.map +1 -1
  379. package/dist/core/scene/sceneChanges.js +1 -2
  380. package/dist/core/scene/sceneEdits.js +1 -2
  381. package/dist/core/scene/sceneJournals.js +1 -2
  382. package/dist/core/scene/sceneMutators.js +2 -3
  383. package/dist/core/scene/scenePoseAdapter.js +1 -2
  384. package/dist/core/scene/sceneRecording.js +1 -2
  385. package/dist/core/scene/sceneSelection.js +8 -5
  386. package/dist/core/scene/sceneSelection.js.map +1 -1
  387. package/dist/core/scene/sceneState.js +3 -4
  388. package/dist/core/scene/scrollOffsets.js +1 -2
  389. package/dist/core/scene/serialization.js +2 -3
  390. package/dist/core/scene/staleReplay.js +1 -2
  391. package/dist/core/scene/statedFields.js +1 -2
  392. package/dist/core/scene/strategyView.js +1 -2
  393. package/dist/core/scene/treeEdits.js +2 -3
  394. package/dist/core/scene/treeOrder.js +1 -2
  395. package/dist/core/scene/treeReads.js +1 -2
  396. package/dist/core/scene/treeShape.js +1 -2
  397. package/dist/core/scene/types.js +1 -2
  398. package/dist/core/scene/types.js.map +1 -1
  399. package/dist/core/scene/unionOfChildren.js +1 -2
  400. package/dist/core/scene/unitScopes.js +20 -4
  401. package/dist/core/scene/unitScopes.js.map +1 -1
  402. package/dist/core/scene/useScene.js +2 -3
  403. package/dist/core/scene/worldSave.js +2 -3
  404. package/dist/core/selection/chromeState.js +1 -2
  405. package/dist/core/selection/outermostSelection.js +56 -0
  406. package/dist/core/selection/outermostSelection.js.map +1 -0
  407. package/dist/core/selection/readOnlySelection.js +1 -2
  408. package/dist/core/selection/selectionTarget.js +1 -2
  409. package/dist/core/selection/usePublishSceneSelection.js +1 -2
  410. package/dist/core/selection/useSelection.js +1 -2
  411. package/dist/core/shapeKinds.js +1 -2
  412. package/dist/core/stableStringify.js +1 -2
  413. package/dist/core/stylus/stylus.js +1 -2
  414. package/dist/core/stylus/usePointerStylus.js +1 -2
  415. package/dist/core/usePaintKinds.js +1 -2
  416. package/dist/core/viewport/clampView.js +1 -2
  417. package/dist/core/viewport/clientToWorld.js +1 -2
  418. package/dist/core/viewport/createVelocityTracker.js +1 -2
  419. package/dist/core/viewport/fitToBounds.js +1 -2
  420. package/dist/core/viewport/fitViewToBounds.js +1 -2
  421. package/dist/core/viewport/interpolateView.js +1 -2
  422. package/dist/core/viewport/parallax.js +1 -2
  423. package/dist/core/viewport/sceneNodeClientRect.js +1 -2
  424. package/dist/core/viewport/screenSlop.js +1 -2
  425. package/dist/core/viewport/useAutoCenter.js +1 -2
  426. package/dist/core/viewport/useCanvasSize.js +1 -2
  427. package/dist/core/viewport/useDecayLoop.js +1 -2
  428. package/dist/core/viewport/useNodeOverlayFrame.js +1 -2
  429. package/dist/core/viewport/useVelocityTracker.js +1 -2
  430. package/dist/core/viewport/useViewAnimation.js +3 -4
  431. package/dist/core/viewport/view.js +1 -2
  432. package/dist/core/viewport/viewTransform.js +1 -2
  433. package/dist/core/viewport/viewportWorldRect.js +1 -2
  434. package/dist/core/viewport/wheelHandler.js +1 -2
  435. package/dist/core/viewport/zoomAt.js +2 -3
  436. package/dist/core/viewport/zoomBounds.js +1 -2
  437. package/dist/debug/createDebugOverlayLayer.js +1 -2
  438. package/dist/debug/createDebugSink.js +1 -2
  439. package/dist/debug/defaultTheme.js +1 -2
  440. package/dist/debug/features.js +1 -2
  441. package/dist/debug/frameStats.js +1 -2
  442. package/dist/debug/overlayPanels.js +1 -2
  443. package/dist/debug/parseDebugFlags.js +1 -2
  444. package/dist/debug/useDebugSink.js +2 -3
  445. package/dist/{depSchema-ChQPzEkW.d.ts → depSchema-C7a_OMt-.d.ts} +61 -52
  446. package/dist/devtools/handlers.js +1 -2
  447. package/dist/devtools/history.js +1 -2
  448. package/dist/devtools/hook.js +1 -2
  449. package/dist/devtools/label.js +1 -2
  450. package/dist/devtools/notices.js +1 -2
  451. package/dist/devtools/protocol.js +1 -2
  452. package/dist/devtools/registry.js +1 -2
  453. package/dist/devtools/root.js +1 -2
  454. package/dist/devtools/serialize.js +1 -2
  455. package/dist/devtools/session.js +2 -3
  456. package/dist/devtools/transport.js +1 -2
  457. package/dist/devtools/useDevtoolsRoot.js +1 -2
  458. package/dist/devtools-protocol.d.ts +1 -1
  459. package/dist/devtools-protocol.js +2 -2
  460. package/dist/devtools.d.ts +1 -1
  461. package/dist/devtools.js +1 -2
  462. package/dist/domains/chrome-caps/buildChromeCtx.js +1 -2
  463. package/dist/domains/chrome-caps/conditions.js +1 -2
  464. package/dist/domains/chrome-caps/defaults.js +1 -2
  465. package/dist/domains/chrome-caps/resolve.js +2 -3
  466. package/dist/domains/chrome-caps/useChromeCaps.js +1 -2
  467. package/dist/domains/chrome-caps/useHoverTracking.js +1 -2
  468. package/dist/domains/ingestion/contentHandlers.js +1 -2
  469. package/dist/domains/ingestion/ghost.js +2 -3
  470. package/dist/domains/ingestion/imageHandler.js +1 -2
  471. package/dist/domains/ingestion/kitHandlers.js +2 -3
  472. package/dist/domains/ingestion/openFilePicker.js +1 -2
  473. package/dist/domains/ingestion/placement.js +1 -2
  474. package/dist/domains/ingestion/svgHandler.js +1 -2
  475. package/dist/domains/ingestion/textHandler.js +1 -2
  476. package/dist/domains/ingestion/useCanvasIngestion.js +1 -2
  477. package/dist/domains/ingestion/weaselJsonHandler.js +2 -3
  478. package/dist/domains/longPress/longPressFeedback.js +1 -2
  479. package/dist/domains/measure/actionIds.js +1 -2
  480. package/dist/domains/measure/measureCommands.js +6 -7
  481. package/dist/domains/measure/measureContribution.js +3 -4
  482. package/dist/domains/measure/measureEdits.js +3 -4
  483. package/dist/domains/measure/measureGestures.js +2 -3
  484. package/dist/domains/measure/measureHit.js +3 -4
  485. package/dist/domains/measure/measureLayer.js +3 -4
  486. package/dist/domains/measure/measurement.js +1 -2
  487. package/dist/domains/measure/measurements.js +1 -2
  488. package/dist/domains/modes/modeLayers.js +1 -2
  489. package/dist/domains/modes/modeTriggers.js +1 -2
  490. package/dist/domains/pathEffects/effectSources.js +2 -3
  491. package/dist/domains/pathEffects/index.js +1 -2
  492. package/dist/domains/pathEffects/readSource.js +3 -4
  493. package/dist/domains/pathEffects/textItems.js +1 -2
  494. package/dist/domains/pathEffects/useEffectSourcesLayer.js +3 -4
  495. package/dist/domains/paths/anchorData.js +1 -2
  496. package/dist/domains/paths/anchorMarkers.js +1 -2
  497. package/dist/domains/paths/editablePath.js +3 -4
  498. package/dist/domains/paths/originProjection.js +1 -2
  499. package/dist/domains/paths/pathEditExtension.js +1 -2
  500. package/dist/domains/paths/pathEditState.js +1 -2
  501. package/dist/domains/paths/pathEditingOverlayLayer.js +2 -3
  502. package/dist/domains/paths/pathLayer.js +1 -2
  503. package/dist/domains/paths/pathRepresentation.js +1 -2
  504. package/dist/domains/paths/pathSnap/glyphs.js +1 -2
  505. package/dist/domains/paths/pathSnap/pathSnapSource.js +1 -2
  506. package/dist/domains/paths/pathSnap/sceneIndex.js +1 -2
  507. package/dist/domains/paths/pathSnap/snapGeometry.js +2 -3
  508. package/dist/domains/paths/penPreviewLayer.js +1 -2
  509. package/dist/domains/paths/shapeGenerator.js +1 -2
  510. package/dist/domains/paths/strokeOutline.js +2 -3
  511. package/dist/domains/paths/useAnchorFields.js +1 -2
  512. package/dist/domains/paths/usePathEdit.js +2 -3
  513. package/dist/domains/poseRun/usePoseRun.js +1 -2
  514. package/dist/domains/selection/enteredGroupFrame.js +1 -2
  515. package/dist/domains/selection/enteredGroupScope.js +1 -2
  516. package/dist/domains/selection/enteredOperands.js +1 -2
  517. package/dist/domains/selection/handleCommands.js +2 -3
  518. package/dist/domains/selection/overlay.js +6 -7
  519. package/dist/domains/selection/selectionPose.js +2 -3
  520. package/dist/domains/snap/angle2d.js +1 -2
  521. package/dist/domains/snap/debugCandidates.js +1 -2
  522. package/dist/domains/snap/gather.js +1 -2
  523. package/dist/domains/snap/inputSubspace.js +2 -3
  524. package/dist/domains/snap/lazySession.js +1 -2
  525. package/dist/domains/snap/marks.js +1 -2
  526. package/dist/domains/snap/outcomeStore.js +1 -2
  527. package/dist/domains/snap/pointSnap.js +1 -2
  528. package/dist/domains/snap/probes2d.js +1 -2
  529. package/dist/domains/snap/readoutDraw.js +1 -2
  530. package/dist/domains/snap/readoutLayer.js +1 -2
  531. package/dist/domains/snap/registry.js +1 -2
  532. package/dist/domains/snap/resizeBox.js +1 -2
  533. package/dist/domains/snap/roles.js +1 -2
  534. package/dist/domains/snap/rotationSource.js +1 -2
  535. package/dist/domains/snap/sceneReads.js +2 -3
  536. package/dist/domains/snap/sceneSession2d.js +2 -3
  537. package/dist/domains/snap/screen.js +2 -3
  538. package/dist/domains/snap/session2d.js +4 -5
  539. package/dist/domains/snap/spanSnap.js +1 -2
  540. package/dist/domains/snap/stepAngles.js +1 -2
  541. package/dist/domains/text/editingDrawOne.js +1 -2
  542. package/dist/domains/text/hostTextEditors.js +1 -2
  543. package/dist/domains/text/sceneTextDrafts.js +1 -2
  544. package/dist/domains/text/textHitAt.js +4 -5
  545. package/dist/domains/text/textLayer.js +12 -2
  546. package/dist/domains/text/textLayer.js.map +1 -1
  547. package/dist/domains/text/useSceneTextEdit.js +4 -5
  548. package/dist/domains/viewports/aim.js +3 -4
  549. package/dist/domains/viewports/viewMarker.js +1 -2
  550. package/dist/domains/viewports/viewMarkerDrag.js +1 -2
  551. package/dist/domains/viewports/viewResolver.js +1 -2
  552. package/dist/domains/viewports/viewportLayer.js +1 -2
  553. package/dist/iconRegistry/IconRegistryProvider.js +1 -2
  554. package/dist/iconRegistry/useIconGlyph.js +1 -2
  555. package/dist/iconRegistry/useIconVariant.js +1 -2
  556. package/dist/icons.table.js +1 -2
  557. package/dist/icons2.table.js +1 -2
  558. package/dist/index.d.ts +51 -7
  559. package/dist/index.js +3 -2
  560. package/dist/input/keyState.js +1 -2
  561. package/dist/input/useKeyModifiers.js +1 -2
  562. package/dist/input/useKeyState.js +1 -2
  563. package/dist/interactions/actions/admitsChild.js +1 -2
  564. package/dist/interactions/actions/align/action.js +6 -7
  565. package/dist/interactions/actions/align/align.js +6 -7
  566. package/dist/interactions/actions/booleans/action.js +1 -2
  567. package/dist/interactions/actions/booleans/booleanGroupAction.js +2 -3
  568. package/dist/interactions/actions/booleans/booleans.js +1 -2
  569. package/dist/interactions/actions/booleans/commit.js +4 -5
  570. package/dist/interactions/actions/booleans/custom.js +2 -3
  571. package/dist/interactions/actions/booleans/keymap.js +1 -2
  572. package/dist/interactions/actions/booleans/operands.js +1 -2
  573. package/dist/interactions/actions/booleans/pieces.js +1 -2
  574. package/dist/interactions/actions/booleans/placement.js +1 -2
  575. package/dist/interactions/actions/booleans/useBooleans.js +1 -2
  576. package/dist/interactions/actions/booleans/useBooleansAdapter.js +1 -2
  577. package/dist/interactions/actions/clipboard/action.js +2 -3
  578. package/dist/interactions/actions/clipboard/clipboardOps.js +2 -3
  579. package/dist/interactions/actions/clipboard/materializePaste.js +1 -2
  580. package/dist/interactions/actions/clipboard/wireFormat.js +1 -2
  581. package/dist/interactions/actions/clone/action.js +7 -8
  582. package/dist/interactions/actions/clone/behaviors.js +4 -5
  583. package/dist/interactions/actions/defaultCommitAdapter.js +2 -3
  584. package/dist/interactions/actions/defaults/anchorEditing.js +3 -4
  585. package/dist/interactions/actions/defaults/anchorFields.js +1 -2
  586. package/dist/interactions/actions/defaults/anchorHandles.js +2 -3
  587. package/dist/interactions/actions/defaults/anchorJoin.js +2 -3
  588. package/dist/interactions/actions/defaults/areaSelect.js +6 -6
  589. package/dist/interactions/actions/defaults/areaSelect.js.map +1 -1
  590. package/dist/interactions/actions/defaults/bendSegment.js +3 -4
  591. package/dist/interactions/actions/defaults/cancelGesture.js +1 -2
  592. package/dist/interactions/actions/defaults/clearSelection.js +1 -2
  593. package/dist/interactions/actions/defaults/containerScroll.js +4 -5
  594. package/dist/interactions/actions/defaults/contextMenu.js +6 -7
  595. package/dist/interactions/actions/defaults/copySubtree.js +2 -3
  596. package/dist/interactions/actions/defaults/createPaintAction.js +3 -4
  597. package/dist/interactions/actions/defaults/delete.js +2 -3
  598. package/dist/interactions/actions/defaults/duplicate.js +5 -6
  599. package/dist/interactions/actions/defaults/enterGroup.js +2 -3
  600. package/dist/interactions/actions/defaults/enterPathEdit.js +1 -2
  601. package/dist/interactions/actions/defaults/enterTextEdit.js +1 -2
  602. package/dist/interactions/actions/defaults/escape.js +1 -2
  603. package/dist/interactions/actions/defaults/exitPathEdit.js +1 -2
  604. package/dist/interactions/actions/defaults/group.js +6 -7
  605. package/dist/interactions/actions/defaults/ingest.js +3 -4
  606. package/dist/interactions/actions/defaults/insertPathAnchor.js +2 -3
  607. package/dist/interactions/actions/defaults/nudge.js +3 -4
  608. package/dist/interactions/actions/defaults/nudgeSteps.js +2 -3
  609. package/dist/interactions/actions/defaults/nudgeSteps.js.map +1 -1
  610. package/dist/interactions/actions/defaults/pathEditMarks.js +1 -2
  611. package/dist/interactions/actions/defaults/pinchZoom.js +3 -4
  612. package/dist/interactions/actions/defaults/reorder.js +2 -3
  613. package/dist/interactions/actions/defaults/requiresSelection.js +1 -2
  614. package/dist/interactions/actions/defaults/segmentUnder.js +1 -2
  615. package/dist/interactions/actions/defaults/selectAll.js +1 -2
  616. package/dist/interactions/actions/defaults/selectDeep.js +1 -2
  617. package/dist/interactions/actions/defaults/setFill.js +1 -2
  618. package/dist/interactions/actions/defaults/setFillOpacity.js +1 -2
  619. package/dist/interactions/actions/defaults/setStroke.js +1 -2
  620. package/dist/interactions/actions/defaults/setStrokeOpacity.js +1 -2
  621. package/dist/interactions/actions/defaults/slice.js +1 -2
  622. package/dist/interactions/actions/defaults/sliceOps.js +1 -2
  623. package/dist/interactions/actions/defaults/toolActivate.js +1 -2
  624. package/dist/interactions/actions/defaults/toolResetToDefault.js +1 -2
  625. package/dist/interactions/actions/defaults/undoRedo.js +1 -2
  626. package/dist/interactions/actions/defaults/viewportDragPan.js +1 -2
  627. package/dist/interactions/actions/defaults/viewportWheelPan.js +1 -2
  628. package/dist/interactions/actions/defaults/viewportZoom.js +3 -4
  629. package/dist/interactions/actions/distribute/action.js +4 -5
  630. package/dist/interactions/actions/distribute/distribute.js +5 -6
  631. package/dist/interactions/actions/distribute/plan.js +1 -2
  632. package/dist/interactions/actions/drawnBoxes.js +4 -5
  633. package/dist/interactions/actions/dropVerdict.js +1 -2
  634. package/dist/interactions/actions/edit-anchors/action.js +4 -5
  635. package/dist/interactions/actions/edit-anchors/extensionDrags.js +1 -2
  636. package/dist/interactions/actions/edit-anchors/geometry.js +1 -2
  637. package/dist/interactions/actions/edit-anchors/handleDrag.js +1 -2
  638. package/dist/interactions/actions/edit-anchors/handles.js +1 -2
  639. package/dist/interactions/actions/edit-anchors/params.js +1 -2
  640. package/dist/interactions/actions/edit-anchors/preview.js +1 -2
  641. package/dist/interactions/actions/edit-anchors/symmetry.js +1 -2
  642. package/dist/interactions/actions/flip/action.js +8 -9
  643. package/dist/interactions/actions/flip/helpers.js +1 -2
  644. package/dist/interactions/actions/geometryProjection.js +1 -2
  645. package/dist/interactions/actions/gestureFrames.js +3 -4
  646. package/dist/interactions/actions/gestureLifecycle.js +1 -2
  647. package/dist/interactions/actions/hitSelection.js +7 -3
  648. package/dist/interactions/actions/hitSelection.js.map +1 -1
  649. package/dist/interactions/actions/insert/action.js +6 -7
  650. package/dist/interactions/actions/insert/commit.js +2 -3
  651. package/dist/interactions/actions/insert/extras.js +1 -2
  652. package/dist/interactions/actions/insert/frame.js +1 -2
  653. package/dist/interactions/actions/insert/geometry.js +1 -2
  654. package/dist/interactions/actions/insert/params.js +2 -3
  655. package/dist/interactions/actions/insert/parent.js +1 -2
  656. package/dist/interactions/actions/insert/placeAction.js +5 -6
  657. package/dist/interactions/actions/insert/repositionAction.js +1 -2
  658. package/dist/interactions/actions/insert/rotateAction.js +1 -2
  659. package/dist/interactions/actions/insert/session.js +5 -6
  660. package/dist/interactions/actions/insert/shape.js +2 -3
  661. package/dist/interactions/actions/lasso-select/action.js +9 -9
  662. package/dist/interactions/actions/lasso-select/action.js.map +1 -1
  663. package/dist/interactions/actions/lasso-select/behaviors/selectFromLasso.js +2 -3
  664. package/dist/interactions/actions/magnification.js +37 -0
  665. package/dist/interactions/actions/magnification.js.map +1 -0
  666. package/dist/interactions/actions/move/action.js +2 -3
  667. package/dist/interactions/actions/move/behaviors/layoutDrop.js +2 -3
  668. package/dist/interactions/actions/move/behaviors/reparentOnDrop.js +2 -3
  669. package/dist/interactions/actions/move/behaviors/snapBackOrDelete.js +1 -2
  670. package/dist/interactions/actions/move/behaviors/snapToContainer.js +2 -3
  671. package/dist/interactions/actions/move/capture.js +6 -7
  672. package/dist/interactions/actions/move/commit/index.js +2 -3
  673. package/dist/interactions/actions/move/commit/layoutDrop.js +4 -5
  674. package/dist/interactions/actions/move/commit/layoutRelease.js +7 -8
  675. package/dist/interactions/actions/move/commit/rebase.js +2 -3
  676. package/dist/interactions/actions/move/commit/reparent.js +5 -6
  677. package/dist/interactions/actions/move/delta.js +2 -3
  678. package/dist/interactions/actions/move/frame.js +2 -3
  679. package/dist/interactions/actions/move/gestureAdapter.js +1 -2
  680. package/dist/interactions/actions/move/landedDescendants.js +2 -3
  681. package/dist/interactions/actions/move/layout/container.js +3 -4
  682. package/dist/interactions/actions/move/layout/dragged.js +2 -3
  683. package/dist/interactions/actions/move/layout/dropPass.js +5 -6
  684. package/dist/interactions/actions/move/layout/exits.js +2 -3
  685. package/dist/interactions/actions/move/layout/glide.js +2 -3
  686. package/dist/interactions/actions/move/layout/view.js +1 -2
  687. package/dist/interactions/actions/move/refusal.js +2 -3
  688. package/dist/interactions/actions/move/session.js +4 -5
  689. package/dist/interactions/actions/move/translate.js +2 -3
  690. package/dist/interactions/actions/moveNodes.js +5 -6
  691. package/dist/interactions/actions/notices.js +1 -2
  692. package/dist/interactions/actions/outlines/createOutlines.js +1 -2
  693. package/dist/interactions/actions/outlines/createOutlinesAction.js +2 -3
  694. package/dist/interactions/actions/outlines/outlineStroke.js +2 -3
  695. package/dist/interactions/actions/outlines/outlineStrokeAction.js +2 -3
  696. package/dist/interactions/actions/outlines/replaceWithPaths.js +5 -6
  697. package/dist/interactions/actions/outlines/strokeRegion.js +1 -2
  698. package/dist/interactions/actions/outlines/useCreateOutlinesAdapter.js +1 -2
  699. package/dist/interactions/actions/pathCommands/cutJoin.js +3 -4
  700. package/dist/interactions/actions/pathCommands/livePathEdit.js +3 -4
  701. package/dist/interactions/actions/pathCommands/pathNodes.js +3 -4
  702. package/dist/interactions/actions/pathCommands/simplifyOffset.js +2 -3
  703. package/dist/interactions/actions/pathGestureTags.js +1 -2
  704. package/dist/interactions/actions/planeInput.js +2 -3
  705. package/dist/interactions/actions/pointerState.js +1 -2
  706. package/dist/interactions/actions/poseDescriptorDep.js +1 -2
  707. package/dist/interactions/actions/poseFrame.js +3 -4
  708. package/dist/interactions/actions/resize/action.js +3 -4
  709. package/dist/interactions/actions/resize/aspect.js +1 -2
  710. package/dist/interactions/actions/resize/behaviors/clampMinSize.js +1 -2
  711. package/dist/interactions/actions/resize/boxFrame.js +1 -2
  712. package/dist/interactions/actions/resize/capture.js +7 -8
  713. package/dist/interactions/actions/resize/commit.js +3 -4
  714. package/dist/interactions/actions/resize/cornerHandles.js +1 -2
  715. package/dist/interactions/actions/resize/frame.js +7 -8
  716. package/dist/interactions/actions/resize/held.js +2 -3
  717. package/dist/interactions/actions/resize/minimum.js +1 -2
  718. package/dist/interactions/actions/resize/replay.js +1 -2
  719. package/dist/interactions/actions/resize/ruleBounds.js +1 -2
  720. package/dist/interactions/actions/resize/session.js +9 -10
  721. package/dist/interactions/actions/resolveOverlays.js +1 -2
  722. package/dist/interactions/actions/resolvePreviews.js +3 -4
  723. package/dist/interactions/actions/rotate/action.js +5 -6
  724. package/dist/interactions/actions/rotate/commit.js +2 -3
  725. package/dist/interactions/actions/rotate/frame.js +3 -4
  726. package/dist/interactions/actions/rotate/geometry.js +1 -2
  727. package/dist/interactions/actions/rotate/handle.js +2 -3
  728. package/dist/interactions/actions/rotate/replay.js +2 -3
  729. package/dist/interactions/actions/rotate/session.js +10 -11
  730. package/dist/interactions/actions/selectionSubtree.js +7 -22
  731. package/dist/interactions/actions/selectionSubtree.js.map +1 -1
  732. package/dist/interactions/actions/spatialReference.js +1 -2
  733. package/dist/interactions/actions/testUtils.js +1 -2
  734. package/dist/interactions/actions/transform-again/action.js +5 -6
  735. package/dist/interactions/actions/transform-again/memory.js +1 -2
  736. package/dist/interactions/actions/transformFinish.js +1 -2
  737. package/dist/interactions/actions/useActionSet.js +1 -2
  738. package/dist/interactions/actions/useNotices.js +1 -2
  739. package/dist/interactions/actions/useStandardActions.js +1 -2
  740. package/dist/interactions/gestures/dragGesture/dragGesture.js +1 -2
  741. package/dist/interactions/gestures/dragGesture/dragPointOf.js +1 -2
  742. package/dist/interactions/gestures/dragRadial/dragRadial.js +2 -3
  743. package/dist/interactions/gestures/dragRect/dragRect.js +2 -3
  744. package/dist/interactions/gestures/handleDrag/handleDrag.js +1 -2
  745. package/dist/interactions/gestures/pointerDrag/pointerDrag.js +1 -2
  746. package/dist/interactions/gestures/shared/originProjection.js +1 -2
  747. package/dist/interactions/gestures/shared/screenTolerance.js +1 -2
  748. package/dist/interactions/gestures/thresholdDrag/thresholdDrag.js +1 -2
  749. package/dist/kitSettingsSchema.js +4 -5
  750. package/dist/test-hook/createTestHook.js +1 -2
  751. package/dist/test-hook/install.js +1 -2
  752. package/dist/test-hook/useTestHook.js +1 -2
  753. package/dist/test-seams.d.ts +4 -4
  754. package/dist/test-seams.js +2 -2
  755. package/dist/tools/builtin/anchors/anchorsTool.js +1 -2
  756. package/dist/tools/builtin/ellipse/useEllipseTool.js +2 -3
  757. package/dist/tools/builtin/eyedropper/useEyedropperTool.js +1 -2
  758. package/dist/tools/builtin/hand/dragPanContribution.js +1 -2
  759. package/dist/tools/builtin/hand/useHandTool.js +1 -2
  760. package/dist/tools/builtin/image/useImageTool.js +1 -2
  761. package/dist/tools/builtin/lasso/useLassoTool.js +1 -2
  762. package/dist/tools/builtin/line/useLineTool.js +2 -3
  763. package/dist/tools/builtin/measure/useMeasureTool.js +2 -3
  764. package/dist/tools/builtin/pen/penHandle.js +1 -2
  765. package/dist/tools/builtin/pen/usePenTool.js +6 -7
  766. package/dist/tools/builtin/pencil/usePencilTool.js +1 -2
  767. package/dist/tools/builtin/pickTopMostHit.js +1 -2
  768. package/dist/tools/builtin/polygon/usePolygonTool.js +3 -4
  769. package/dist/tools/builtin/pressTarget.js +1 -2
  770. package/dist/tools/builtin/rect/useRectTool.js +2 -3
  771. package/dist/tools/builtin/select/adapterPointQuery.js +3 -4
  772. package/dist/tools/builtin/select/collapseDeferred.js +1 -2
  773. package/dist/tools/builtin/select/groupEntry.js +2 -3
  774. package/dist/tools/builtin/select/pressDecision.js +3 -4
  775. package/dist/tools/builtin/select/pressDecision.js.map +1 -1
  776. package/dist/tools/builtin/select/selectionContributions.js +1 -2
  777. package/dist/tools/builtin/select/useSelectTool.js +5 -6
  778. package/dist/tools/builtin/shared/insertToolOptions.js +1 -2
  779. package/dist/tools/builtin/shared/pointerFollower.js +1 -2
  780. package/dist/tools/builtin/slice/useSliceTool.js +5 -6
  781. package/dist/tools/builtin/star/useStarTool.js +3 -4
  782. package/dist/tools/builtin/sticky/stickyNode.js +1 -2
  783. package/dist/tools/builtin/sticky/useStickyTool.js +2 -3
  784. package/dist/tools/builtin/text/useTextTool.js +1 -2
  785. package/dist/tools/index.js +2 -2
  786. package/dist/tools/overlayBinding.js +1 -2
  787. package/dist/tools/toolOptions.js +17 -4
  788. package/dist/tools/toolOptions.js.map +1 -1
  789. package/dist/tools/useKeybindings.js +1 -2
  790. package/dist/{types-DW14eu9B.d.ts → types-BUvUXZe5.d.ts} +3 -3
  791. package/dist/util/color.js +1 -2
  792. package/dist/util/paint.js +1 -2
  793. package/dist/version.js +2 -3
  794. package/package.json +27 -27
@@ -2,7 +2,7 @@ import { defineTool } from "../../overlayBinding.js";
2
2
  import { insertBindingBehaviors } from "../shared/insertToolOptions.js";
3
3
  import { useMemo } from "react";
4
4
 
5
- //#region src/tools/builtin/image/useImageTool.tsx
5
+ // src/tools/builtin/image/useImageTool.tsx
6
6
  /**
7
7
  * Drag-to-insert image tool. A drag-rect commits a leaf node with
8
8
  * `data: { image: { src } }` through the dispatcher's `insertAction` + the
@@ -46,6 +46,5 @@ function useImageTool(options) {
46
46
  ]);
47
47
  }
48
48
 
49
- //#endregion
50
49
  export { useImageTool };
51
50
  //# sourceMappingURL=useImageTool.js.map
@@ -2,7 +2,7 @@ import { defineTool } from "../../overlayBinding.js";
2
2
  import { useMemo } from "react";
3
3
  import { useLatest } from "@weasel-js/react";
4
4
 
5
- //#region src/tools/builtin/lasso/useLassoTool.ts
5
+ // src/tools/builtin/lasso/useLassoTool.ts
6
6
  /** Free-form polygon select Tool. Drag is handled entirely by the gesture
7
7
  * dispatcher via the `lassoSelect` action binding below; the dispatcher
8
8
  * overlay layer (`useDispatcherOverlayLayer`) paints the live polyline +
@@ -50,6 +50,5 @@ function useLassoTool(options = {}) {
50
50
  ]);
51
51
  }
52
52
 
53
- //#endregion
54
53
  export { useLassoTool };
55
54
  //# sourceMappingURL=useLassoTool.js.map
@@ -1,10 +1,10 @@
1
- import { INSERT_REPOSITION_BINDING } from "../../../interactions/actions/insert/repositionAction.js";
2
1
  import { defineTool } from "../../overlayBinding.js";
2
+ import { INSERT_REPOSITION_BINDING } from "../../../interactions/actions/insert/repositionAction.js";
3
3
  import { insertBindingBehaviors } from "../shared/insertToolOptions.js";
4
4
  import { useMemo } from "react";
5
5
  import { cursorFor } from "@weasel-js/cursor";
6
6
 
7
- //#region src/tools/builtin/line/useLineTool.tsx
7
+ // src/tools/builtin/line/useLineTool.tsx
8
8
  /**
9
9
  * Drag-to-draw line tool. The `drag` binding routes to `insertAction`, which
10
10
  * commits through the `insert` dep with `{ kind: 'line', a, b }` endpoints
@@ -38,6 +38,5 @@ function useLineTool(options = {}) {
38
38
  }), [behaviors]);
39
39
  }
40
40
 
41
- //#endregion
42
41
  export { useLineTool };
43
42
  //# sourceMappingURL=useLineTool.js.map
@@ -1,10 +1,10 @@
1
1
  import { defineTool } from "../../overlayBinding.js";
2
- import { MEASURE_ACTION_IDS } from "../../../domains/measure/actionIds.js";
3
2
  import { measureCreateAction, measurePickAtAction } from "../../../domains/measure/measureGestures.js";
3
+ import { MEASURE_ACTION_IDS } from "../../../domains/measure/actionIds.js";
4
4
  import { useMemo } from "react";
5
5
  import { useLatest } from "@weasel-js/react";
6
6
 
7
- //#region src/tools/builtin/measure/useMeasureTool.ts
7
+ // src/tools/builtin/measure/useMeasureTool.ts
8
8
  /**
9
9
  * Measure tool. A drag adds a measurement from press to release in world
10
10
  * units — both ends through the `snap` dep, Shift holding the angle to
@@ -86,6 +86,5 @@ function useMeasureTool(options) {
86
86
  ]);
87
87
  }
88
88
 
89
- //#endregion
90
89
  export { useMeasureTool };
91
90
  //# sourceMappingURL=useMeasureTool.js.map
@@ -2,7 +2,7 @@ import { SNAP_AXIS_STEP, SNAP_ROLES, snapMods } from "../../../domains/snap/role
2
2
  import { inputSession } from "../../../domains/snap/session2d.js";
3
3
  import { roleReader } from "@weasel-js/routing";
4
4
 
5
- //#region src/tools/builtin/pen/penHandle.ts
5
+ // src/tools/builtin/pen/penHandle.ts
6
6
  /** The pen's handle drag: the modifiers it reads, and where it puts the handle. */
7
7
  /** The modifiers the pen's handle drag reads on the press, every move, and
8
8
  * the release: Alt breaks the new anchor's mirror, Shift holds the handle to
@@ -53,6 +53,5 @@ function pullHandle(s, ctx, linked) {
53
53
  };
54
54
  }
55
55
 
56
- //#endregion
57
56
  export { PEN_HANDLE_ROLES, pullHandle };
58
57
  //# sourceMappingURL=penHandle.js.map
@@ -1,12 +1,12 @@
1
- import { asNodeId } from "../../../core/scene/types.js";
2
- import { defaultCommitAdapter } from "../../../interactions/actions/defaultCommitAdapter.js";
3
- import { snapMods } from "../../../domains/snap/roles.js";
4
- import { createDeleteOp } from "../../../core/ops/delete.js";
5
- import { resolveEditablePathOf } from "../../../domains/paths/editablePath.js";
6
1
  import { defineTool } from "../../overlayBinding.js";
2
+ import { asNodeId } from "../../../core/scene/types.js";
7
3
  import { createPenPreviewLayer, penReachOf } from "../../../domains/paths/penPreviewLayer.js";
4
+ import { resolveEditablePathOf } from "../../../domains/paths/editablePath.js";
5
+ import { createDeleteOp } from "../../../core/ops/delete.js";
6
+ import { defaultCommitAdapter } from "../../../interactions/actions/defaultCommitAdapter.js";
8
7
  import { PEN_HANDLE_ROLES, pullHandle } from "./penHandle.js";
9
8
  import { pointSnap } from "../../../domains/snap/pointSnap.js";
9
+ import { snapMods } from "../../../domains/snap/roles.js";
10
10
  import { createPointerFollower } from "../shared/pointerFollower.js";
11
11
  import { anchorsToPath, boundsOfPath, editAnchorSetTracked, nearestPathAnchor, pathToAnchors, pxExtent, reverseAnchors, withinPxRadius, worldCoords } from "@weasel-js/geom";
12
12
  import { useCallback, useMemo, useReducer, useRef, useState } from "react";
@@ -14,7 +14,7 @@ import { useKitSettings, useLatest } from "@weasel-js/react";
14
14
  import { ActionDisabledReason } from "@weasel-js/routing";
15
15
  import { cursorFor } from "@weasel-js/cursor";
16
16
 
17
- //#region src/tools/builtin/pen/usePenTool.ts
17
+ // src/tools/builtin/pen/usePenTool.ts
18
18
  function freshScratch() {
19
19
  return {
20
20
  finishedSubpaths: [],
@@ -617,6 +617,5 @@ function samePath(a, b) {
617
617
  return ac.every((v, i) => v === bc[i]);
618
618
  }
619
619
 
620
- //#endregion
621
620
  export { usePenTool };
622
621
  //# sourceMappingURL=usePenTool.js.map
@@ -3,7 +3,7 @@ import { insertBindingBehaviors } from "../shared/insertToolOptions.js";
3
3
  import { useMemo } from "react";
4
4
  import { cursorFor } from "@weasel-js/cursor";
5
5
 
6
- //#region src/tools/builtin/pencil/usePencilTool.tsx
6
+ // src/tools/builtin/pencil/usePencilTool.tsx
7
7
  /**
8
8
  * Freehand pencil tool. The `drag` binding routes to `insertAction`,
9
9
  * which accumulates the pointer trail and commits it as
@@ -38,6 +38,5 @@ function usePencilTool(options = {}) {
38
38
  }), [behaviors]);
39
39
  }
40
40
 
41
- //#endregion
42
41
  export { usePencilTool };
43
42
  //# sourceMappingURL=usePencilTool.js.map
@@ -1,4 +1,4 @@
1
- //#region src/tools/builtin/pickTopMostHit.ts
1
+ // src/tools/builtin/pickTopMostHit.ts
2
2
  /** Reduce a set of hit ids to the single one a click should act on: drop any
3
3
  * id that is an ancestor of another in the set, then take the topmost of what
4
4
  * remains. A child beats its own ancestor regardless of what z the two report.
@@ -57,6 +57,5 @@ function zOf(getZIndex, id) {
57
57
  return typeof z === "number" && Number.isFinite(z) ? z : -Infinity;
58
58
  }
59
59
 
60
- //#endregion
61
60
  export { pickTopMostHit };
62
61
  //# sourceMappingURL=pickTopMostHit.js.map
@@ -1,11 +1,11 @@
1
- import { SHAPE_COUNT_RANGE } from "../../../domains/paths/shapeGenerator.js";
2
- import { INSERT_REPOSITION_BINDING } from "../../../interactions/actions/insert/repositionAction.js";
3
1
  import { defineTool } from "../../overlayBinding.js";
2
+ import { INSERT_REPOSITION_BINDING } from "../../../interactions/actions/insert/repositionAction.js";
3
+ import { SHAPE_COUNT_RANGE } from "../../../domains/paths/shapeGenerator.js";
4
4
  import { insertBindingBehaviors } from "../shared/insertToolOptions.js";
5
5
  import { useCallback, useMemo, useRef, useState } from "react";
6
6
  import { cursorFor } from "@weasel-js/cursor";
7
7
 
8
- //#region src/tools/builtin/polygon/usePolygonTool.tsx
8
+ // src/tools/builtin/polygon/usePolygonTool.tsx
9
9
  /**
10
10
  * Drag-from-center polygon tool. Pointerdown sets center; drag
11
11
  * determines radius + rotation; release commits via `insertAction` (the
@@ -109,6 +109,5 @@ function usePolygonTool(options = {}) {
109
109
  ]);
110
110
  }
111
111
 
112
- //#endregion
113
112
  export { usePolygonTool };
114
113
  //# sourceMappingURL=usePolygonTool.js.map
@@ -1,4 +1,4 @@
1
- //#region src/tools/builtin/pressTarget.ts
1
+ // src/tools/builtin/pressTarget.ts
2
2
  /**
3
3
  * The node a press on `hitId` selects: the outermost group above it that is
4
4
  * below `entered`, or `hitId` itself when there is none. With nothing entered
@@ -17,6 +17,5 @@ function pressTarget(tree, hitId, entered) {
17
17
  return target;
18
18
  }
19
19
 
20
- //#endregion
21
20
  export { pressTarget };
22
21
  //# sourceMappingURL=pressTarget.js.map
@@ -1,10 +1,10 @@
1
- import { INSERT_REPOSITION_BINDING } from "../../../interactions/actions/insert/repositionAction.js";
2
1
  import { defineTool } from "../../overlayBinding.js";
2
+ import { INSERT_REPOSITION_BINDING } from "../../../interactions/actions/insert/repositionAction.js";
3
3
  import { insertBindingBehaviors } from "../shared/insertToolOptions.js";
4
4
  import { useMemo } from "react";
5
5
  import { cursorFor } from "@weasel-js/cursor";
6
6
 
7
- //#region src/tools/builtin/rect/useRectTool.ts
7
+ // src/tools/builtin/rect/useRectTool.ts
8
8
  /**
9
9
  * Drag-to-draw rectangle tool.
10
10
  *
@@ -38,6 +38,5 @@ function useRectTool(options = {}) {
38
38
  }), [behaviors]);
39
39
  }
40
40
 
41
- //#endregion
42
41
  export { useRectTool };
43
42
  //# sourceMappingURL=useRectTool.js.map
@@ -1,10 +1,10 @@
1
- import { toPlane } from "../../../core/viewport/parallax.js";
2
- import { poseDescriptorForNode } from "../../../core/geometry/poseDescriptor.js";
3
1
  import { shapeCoversPoint } from "../../../canvas/NodeShape.js";
4
2
  import { ownClipOf } from "../../../canvas/ownClip.js";
3
+ import { poseDescriptorForNode } from "../../../core/geometry/poseDescriptor.js";
4
+ import { toPlane } from "../../../core/viewport/parallax.js";
5
5
  import { applyToPoint, boundsOfPath, meanScale, pathContainsPoint } from "@weasel-js/geom";
6
6
 
7
- //#region src/tools/builtin/select/adapterPointQuery.ts
7
+ // src/tools/builtin/select/adapterPointQuery.ts
8
8
  /**
9
9
  * The point query `useSelectTool`'s default `pickEvery` asks of a bare adapter:
10
10
  * a point at (px, py) with `t` world units of slop. AABB first (cheap), then
@@ -53,6 +53,5 @@ function adapterPointQuery(d, preciseLeaves) {
53
53
  return pointQuery;
54
54
  }
55
55
 
56
- //#endregion
57
56
  export { adapterPointQuery };
58
57
  //# sourceMappingURL=adapterPointQuery.js.map
@@ -1,6 +1,6 @@
1
1
  import { ActionDisabledReason } from "@weasel-js/routing";
2
2
 
3
- //#region src/tools/builtin/select/collapseDeferred.ts
3
+ // src/tools/builtin/select/collapseDeferred.ts
4
4
  /**
5
5
  * `select.collapseDeferred` — the release half of the deferred multi-click.
6
6
  *
@@ -35,6 +35,5 @@ function createCollapseDeferredAction(pressRef) {
35
35
  };
36
36
  }
37
37
 
38
- //#endregion
39
38
  export { createCollapseDeferredAction };
40
39
  //# sourceMappingURL=collapseDeferred.js.map
@@ -1,9 +1,9 @@
1
- import { onBody, onEmptyCanvas } from "./selectionContributions.js";
2
1
  import { createEnterGroupAction, createLeaveGroupAction } from "../../../interactions/actions/defaults/enterGroup.js";
2
+ import { onBody, onEmptyCanvas } from "./selectionContributions.js";
3
3
  import { useMemo } from "react";
4
4
  import { useLatest } from "@weasel-js/react";
5
5
 
6
- //#region src/tools/builtin/select/groupEntry.ts
6
+ // src/tools/builtin/select/groupEntry.ts
7
7
  /** Id of the entry {@link createGroupEntryContribution} builds. */
8
8
  var GROUP_ENTRY_ID = "group.entry";
9
9
  var INITIAL = [{
@@ -77,6 +77,5 @@ var GROUP_LEAVE_PRESS_BINDING = {
77
77
  opts: { id: "group.leave.press" }
78
78
  };
79
79
 
80
- //#endregion
81
80
  export { GROUP_ENTRY_ID, GROUP_LEAVE_PRESS_BINDING, createGroupEntryContribution, useGroupEntryContribution };
82
81
  //# sourceMappingURL=groupEntry.js.map
@@ -1,7 +1,7 @@
1
1
  import { isEnvelope } from "../../../core/scene/effectivePose.js";
2
- import { selectedAncestor } from "../../../interactions/actions/selectionSubtree.js";
2
+ import { holderOf } from "@weasel-js/select";
3
3
 
4
- //#region src/tools/builtin/select/pressDecision.ts
4
+ // src/tools/builtin/select/pressDecision.ts
5
5
  /**
6
6
  * Decide a press with no extend modifier on `top`, and one with it.
7
7
  *
@@ -22,11 +22,10 @@ function pressDecision(top, sel, mods, extendLocked, tree) {
22
22
  }
23
23
  function insideSelectedGroup(top, sel, tree) {
24
24
  if (sel.includes(top)) return false;
25
- const ancestor = selectedAncestor((id) => tree.getParent(id), top, new Set(sel));
25
+ const ancestor = holderOf(new Set(sel), top, (id) => tree.getParent(id));
26
26
  const node = ancestor === null ? void 0 : tree.getNode(ancestor);
27
27
  return node !== void 0 && isEnvelope(node);
28
28
  }
29
29
 
30
- //#endregion
31
30
  export { pressDecision };
32
31
  //# sourceMappingURL=pressDecision.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pressDecision.js","names":[],"sources":["../../../../src/tools/builtin/select/pressDecision.ts"],"sourcesContent":["import { isEnvelope } from 'core/scene/effectivePose';\nimport { selectedAncestor } from '../../../interactions/actions/selectionSubtree';\n\n/** The tree a press reads: who a node's parent is, and the node itself. */\nexport interface PressTree {\n getParent(id: string): string | null;\n getNode(id: string): unknown;\n}\n\n/** What a press on `top` does to the selection. */\nexport interface PressDecision {\n /** Apply the click to the selection on the press. */\n applyNow: boolean;\n /** The id the click is held back for until release, so the press can drag\n * what is already selected instead; `null` when nothing is held back. */\n deferred: string | null;\n}\n\n/**\n * Decide a press with no extend modifier on `top`, and one with it.\n *\n * Pressing a member of a multi-selection, or a node inside a selected group,\n * leaves the selection alone: the press may be the start of a drag of the\n * set, or of the group. A group here is a container whose pose derives from\n * its children; one with its own pose is a place its members sit, and a press\n * picks the member out of it.\n */\nexport function pressDecision(\n top: string,\n sel: readonly string[],\n mods: { shift: boolean; meta: boolean },\n extendLocked: () => boolean,\n tree: PressTree,\n): PressDecision {\n const isExtend = mods.shift;\n const inMultiSelection = sel.includes(top) && sel.length > 1;\n const defer = !isExtend && (inMultiSelection || insideSelectedGroup(top, sel, tree));\n return { applyNow: !defer && !(isExtend && extendLocked()), deferred: defer ? top : null };\n}\n\nfunction insideSelectedGroup(top: string, sel: readonly string[], tree: PressTree): boolean {\n if (sel.includes(top)) return false;\n const ancestor = selectedAncestor((id) => tree.getParent(id), top, new Set(sel));\n const node = ancestor === null ? undefined : tree.getNode(ancestor) as { dependsOn?: unknown; derivePose?: unknown } | undefined;\n return node !== undefined && isEnvelope(node);\n}\n"],"mappings":";;;;;;;;;;;;;AA2BA,SAAgB,cACd,KACA,KACA,MACA,cACA,MACe;CACf,MAAM,WAAW,KAAK;CACtB,MAAM,mBAAmB,IAAI,SAAS,GAAG,KAAK,IAAI,SAAS;CAC3D,MAAM,QAAQ,CAAC,aAAa,oBAAoB,oBAAoB,KAAK,KAAK,IAAI;CAClF,OAAO;EAAE,UAAU,CAAC,SAAS,EAAE,YAAY,aAAa;EAAI,UAAU,QAAQ,MAAM;CAAK;AAC3F;AAEA,SAAS,oBAAoB,KAAa,KAAwB,MAA0B;CAC1F,IAAI,IAAI,SAAS,GAAG,GAAG,OAAO;CAC9B,MAAM,WAAW,kBAAkB,OAAO,KAAK,UAAU,EAAE,GAAG,KAAK,IAAI,IAAI,GAAG,CAAC;CAC/E,MAAM,OAAO,aAAa,OAAO,SAAY,KAAK,QAAQ,QAAQ;CAClE,OAAO,SAAS,UAAa,WAAW,IAAI;AAC9C"}
1
+ {"version":3,"file":"pressDecision.js","names":[],"sources":["../../../../src/tools/builtin/select/pressDecision.ts"],"sourcesContent":["import { isEnvelope } from 'core/scene/effectivePose';\nimport { holderOf } from '@weasel-js/select';\n\n/** The tree a press reads: who a node's parent is, and the node itself. */\nexport interface PressTree {\n getParent(id: string): string | null;\n getNode(id: string): unknown;\n}\n\n/** What a press on `top` does to the selection. */\nexport interface PressDecision {\n /** Apply the click to the selection on the press. */\n applyNow: boolean;\n /** The id the click is held back for until release, so the press can drag\n * what is already selected instead; `null` when nothing is held back. */\n deferred: string | null;\n}\n\n/**\n * Decide a press with no extend modifier on `top`, and one with it.\n *\n * Pressing a member of a multi-selection, or a node inside a selected group,\n * leaves the selection alone: the press may be the start of a drag of the\n * set, or of the group. A group here is a container whose pose derives from\n * its children; one with its own pose is a place its members sit, and a press\n * picks the member out of it.\n */\nexport function pressDecision(\n top: string,\n sel: readonly string[],\n mods: { shift: boolean; meta: boolean },\n extendLocked: () => boolean,\n tree: PressTree,\n): PressDecision {\n const isExtend = mods.shift;\n const inMultiSelection = sel.includes(top) && sel.length > 1;\n const defer = !isExtend && (inMultiSelection || insideSelectedGroup(top, sel, tree));\n return { applyNow: !defer && !(isExtend && extendLocked()), deferred: defer ? top : null };\n}\n\nfunction insideSelectedGroup(top: string, sel: readonly string[], tree: PressTree): boolean {\n if (sel.includes(top)) return false;\n const ancestor = holderOf(new Set(sel), top, (id) => tree.getParent(id));\n const node = ancestor === null ? undefined : tree.getNode(ancestor) as { dependsOn?: unknown; derivePose?: unknown } | undefined;\n return node !== undefined && isEnvelope(node);\n}\n"],"mappings":";;;;;;;;;;;;;AA2BA,SAAgB,cACd,KACA,KACA,MACA,cACA,MACe;CACf,MAAM,WAAW,KAAK;CACtB,MAAM,mBAAmB,IAAI,SAAS,GAAG,KAAK,IAAI,SAAS;CAC3D,MAAM,QAAQ,CAAC,aAAa,oBAAoB,oBAAoB,KAAK,KAAK,IAAI;CAClF,OAAO;EAAE,UAAU,CAAC,SAAS,EAAE,YAAY,aAAa;EAAI,UAAU,QAAQ,MAAM;CAAK;AAC3F;AAEA,SAAS,oBAAoB,KAAa,KAAwB,MAA0B;CAC1F,IAAI,IAAI,SAAS,GAAG,GAAG,OAAO;CAC9B,MAAM,WAAW,SAAS,IAAI,IAAI,GAAG,GAAG,MAAM,OAAO,KAAK,UAAU,EAAE,CAAC;CACvE,MAAM,OAAO,aAAa,OAAO,SAAY,KAAK,QAAQ,QAAQ;CAClE,OAAO,SAAS,UAAa,WAAW,IAAI;AAC9C"}
@@ -2,7 +2,7 @@ import { gestureLifecycleParams } from "../../../interactions/actions/gestureLif
2
2
  import { isPathEditPart, isResizeHandle, isRotateHandle } from "@weasel-js/routing";
3
3
  import { hitPredicate } from "@weasel-js/gestures";
4
4
 
5
- //#region src/tools/builtin/select/selectionContributions.ts
5
+ // src/tools/builtin/select/selectionContributions.ts
6
6
  /** Id of the entry {@link selectionMoveContribution} builds. */
7
7
  var SELECTION_MOVE_ID = "selection.move";
8
8
  /** Id of the entry {@link selectionTransformContribution} builds. */
@@ -172,6 +172,5 @@ function areaSelectContribution() {
172
172
  };
173
173
  }
174
174
 
175
- //#endregion
176
175
  export { AREA_SELECT_ID, SELECTION_MOVE_ID, SELECTION_RESIZE_ID, SELECTION_ROTATE_ID, SELECTION_TRANSFORM_ID, areaSelectContribution, onBody, onEmptyCanvas, selectionMoveBindings, selectionMoveContribution, selectionResizeBindings, selectionResizeContribution, selectionRotateBindings, selectionRotateContribution, selectionTransformBindings, selectionTransformContribution };
177
176
  //# sourceMappingURL=selectionContributions.js.map
@@ -1,21 +1,21 @@
1
- import { AUTO_POSE_DESCRIPTOR } from "../../../core/geometry/autoPoseDescriptor.js";
1
+ import { pickWalk } from "../../../canvas/pickWalk.js";
2
2
  import { MULTI_RESIZE_TARGET_ID } from "../../../core/selection/selectionTarget.js";
3
3
  import { scenePlaneOf } from "../../../canvas/scenePickSource.js";
4
4
  import { adapterPickSource } from "../../../canvas/adapterPickSource.js";
5
- import { pickWalk } from "../../../canvas/pickWalk.js";
6
- import { pressTarget } from "../pressTarget.js";
7
- import { onBody, onEmptyCanvas } from "./selectionContributions.js";
8
5
  import { defineTool } from "../../overlayBinding.js";
9
6
  import { pickTopMostHit } from "../pickTopMostHit.js";
7
+ import { pressTarget } from "../pressTarget.js";
10
8
  import { pressDecision } from "./pressDecision.js";
11
9
  import { createCollapseDeferredAction } from "./collapseDeferred.js";
12
10
  import { GROUP_LEAVE_PRESS_BINDING } from "./groupEntry.js";
13
11
  import { createSelectDeepAction } from "../../../interactions/actions/defaults/selectDeep.js";
14
12
  import { adapterPointQuery } from "./adapterPointQuery.js";
13
+ import { onBody, onEmptyCanvas } from "./selectionContributions.js";
14
+ import { AUTO_POSE_DESCRIPTOR } from "../../../core/geometry/autoPoseDescriptor.js";
15
15
  import { useCallback, useMemo, useRef } from "react";
16
16
  import { useLatest } from "@weasel-js/react";
17
17
 
18
- //#region src/tools/builtin/select/useSelectTool.ts
18
+ // src/tools/builtin/select/useSelectTool.ts
19
19
  /** Active-slot Tool:
20
20
  * - `select.pick` classifies the press (pointerDown) — it runs the tool's own
21
21
  * pickBest/pickEvery so click semantics (selection replace, extend,
@@ -199,6 +199,5 @@ function useSelectTool(adapter, options) {
199
199
  ]);
200
200
  }
201
201
 
202
- //#endregion
203
202
  export { useSelectTool };
204
203
  //# sourceMappingURL=useSelectTool.js.map
@@ -1,9 +1,8 @@
1
- //#region src/tools/builtin/shared/insertToolOptions.ts
1
+ // src/tools/builtin/shared/insertToolOptions.ts
2
2
  /** The insert binding's `opts.behaviors` entry, left out when there are none. */
3
3
  function insertBindingBehaviors(behaviors) {
4
4
  return behaviors?.length ? { behaviors: [...behaviors] } : {};
5
5
  }
6
6
 
7
- //#endregion
8
7
  export { insertBindingBehaviors };
9
8
  //# sourceMappingURL=insertToolOptions.js.map
@@ -1,4 +1,4 @@
1
- //#region src/tools/builtin/shared/pointerFollower.ts
1
+ // src/tools/builtin/shared/pointerFollower.ts
2
2
  /** `onMove` runs after every change of the followed pointer. */
3
3
  function createPointerFollower(onMove) {
4
4
  let pointer = null;
@@ -19,6 +19,5 @@ function createPointerFollower(onMove) {
19
19
  };
20
20
  }
21
21
 
22
- //#endregion
23
22
  export { createPointerFollower };
24
23
  //# sourceMappingURL=pointerFollower.js.map
@@ -1,16 +1,16 @@
1
- import { viewToTransform } from "../../../core/viewport/view.js";
2
- import { worldToScreen } from "../../../core/viewport/viewTransform.js";
3
- import { OVERLAY_ROLE_STROKES } from "../../../canvas/overlayRoleStrokes.js";
4
- import { sliceAction } from "../../../interactions/actions/defaults/slice.js";
5
1
  import { defineTool } from "../../overlayBinding.js";
6
2
  import { createPointerFollower } from "../shared/pointerFollower.js";
3
+ import { sliceAction } from "../../../interactions/actions/defaults/slice.js";
4
+ import { worldToScreen } from "../../../core/viewport/viewTransform.js";
5
+ import { viewToTransform } from "../../../core/viewport/view.js";
6
+ import { OVERLAY_ROLE_STROKES } from "../../../canvas/overlayRoleStrokes.js";
7
7
  import { ellipsePath, polylineFromPoints, withinPxRadius } from "@weasel-js/geom";
8
8
  import { createEmitter } from "@weasel-js/registry";
9
9
  import { useMemo, useRef } from "react";
10
10
  import { useKitSettings, useLatest } from "@weasel-js/react";
11
11
  import { ActionDisabledReason } from "@weasel-js/routing";
12
12
 
13
- //#region src/tools/builtin/slice/useSliceTool.ts
13
+ // src/tools/builtin/slice/useSliceTool.ts
14
14
  var VERTEX_RADIUS_PX = 3;
15
15
  /** How near the first point, in screen px, a click closes the cut. */
16
16
  var SLICE_CLOSE_HIT_PX = 8;
@@ -308,6 +308,5 @@ function useSliceTool(options = {}) {
308
308
  ]);
309
309
  }
310
310
 
311
- //#endregion
312
311
  export { SLICE_CLOSE_HIT_PX, VERTEX_RADIUS_PX, useSliceTool };
313
312
  //# sourceMappingURL=useSliceTool.js.map
@@ -1,12 +1,12 @@
1
- import { SHAPE_COUNT_RANGE } from "../../../domains/paths/shapeGenerator.js";
2
- import { INSERT_REPOSITION_BINDING } from "../../../interactions/actions/insert/repositionAction.js";
3
1
  import { defineTool } from "../../overlayBinding.js";
2
+ import { INSERT_REPOSITION_BINDING } from "../../../interactions/actions/insert/repositionAction.js";
3
+ import { SHAPE_COUNT_RANGE } from "../../../domains/paths/shapeGenerator.js";
4
4
  import { insertBindingBehaviors } from "../shared/insertToolOptions.js";
5
5
  import { useCallback, useMemo, useRef, useState } from "react";
6
6
  import { useLatest } from "@weasel-js/react";
7
7
  import { cursorFor } from "@weasel-js/cursor";
8
8
 
9
- //#region src/tools/builtin/star/useStarTool.tsx
9
+ // src/tools/builtin/star/useStarTool.tsx
10
10
  /**
11
11
  * Drag-from-center star tool. Pointerdown sets center; drag determines
12
12
  * outer radius + rotation; release commits via `insertAction`. Inner
@@ -111,6 +111,5 @@ function useStarTool(options = {}) {
111
111
  ]);
112
112
  }
113
113
 
114
- //#endregion
115
114
  export { useStarTool };
116
115
  //# sourceMappingURL=useStarTool.js.map
@@ -1,6 +1,6 @@
1
1
  import { DEFAULT_TEXT_FILL } from "@weasel-js/text";
2
2
 
3
- //#region src/tools/builtin/sticky/stickyNode.ts
3
+ // src/tools/builtin/sticky/stickyNode.ts
4
4
  /** The look a sticky note takes for any field its tool leaves out. */
5
5
  var STICKY_DEFAULTS = {
6
6
  background: { paint: {
@@ -47,6 +47,5 @@ function stickyData(look) {
47
47
  * wraps it — to tag the data with a `kind`, say — under `insertNodeFactories`. */
48
48
  var stickyNodeFactory = (_bounds, extras) => ({ data: stickyData(extras) });
49
49
 
50
- //#endregion
51
50
  export { STICKY_DEFAULTS, stickyData, stickyNodeFactory };
52
51
  //# sourceMappingURL=stickyNode.js.map
@@ -1,11 +1,11 @@
1
- import { INSERT_REPOSITION_BINDING } from "../../../interactions/actions/insert/repositionAction.js";
2
1
  import { defineTool } from "../../overlayBinding.js";
2
+ import { INSERT_REPOSITION_BINDING } from "../../../interactions/actions/insert/repositionAction.js";
3
3
  import { insertBindingBehaviors } from "../shared/insertToolOptions.js";
4
4
  import { STICKY_DEFAULTS } from "./stickyNode.js";
5
5
  import { useMemo } from "react";
6
6
  import { cursorFor } from "@weasel-js/cursor";
7
7
 
8
- //#region src/tools/builtin/sticky/useStickyTool.ts
8
+ // src/tools/builtin/sticky/useStickyTool.ts
9
9
  /**
10
10
  * Sticky-note tool. A drag draws a note through `insertAction`, a click
11
11
  * places one of `size` through `placeAction`, and either drops into the new
@@ -86,6 +86,5 @@ function useStickyTool(options = {}) {
86
86
  ]);
87
87
  }
88
88
 
89
- //#endregion
90
89
  export { useStickyTool };
91
90
  //# sourceMappingURL=useStickyTool.js.map
@@ -2,7 +2,7 @@ import { defineTool } from "../../overlayBinding.js";
2
2
  import { insertBindingBehaviors } from "../shared/insertToolOptions.js";
3
3
  import { useMemo } from "react";
4
4
 
5
- //#region src/tools/builtin/text/useTextTool.ts
5
+ // src/tools/builtin/text/useTextTool.ts
6
6
  var PRESENTATION = {
7
7
  label: "Text",
8
8
  icon: /* @icon */ "core:text",
@@ -218,6 +218,5 @@ useTextTool.options = {
218
218
  }
219
219
  };
220
220
 
221
- //#endregion
222
221
  export { useTextTool };
223
222
  //# sourceMappingURL=useTextTool.js.map
@@ -24,6 +24,6 @@ import { useStarTool } from "./builtin/star/useStarTool.js";
24
24
  import { usePencilTool } from "./builtin/pencil/usePencilTool.js";
25
25
  import { useSliceTool } from "./builtin/slice/useSliceTool.js";
26
26
  import { useMeasureTool } from "./builtin/measure/useMeasureTool.js";
27
- import { createToolOptionValues, isToolSet, steppedOption, toolIdsOf as toolIdsOf$1, toolOptionParams, toolOptionSteps, toolSet as toolSet$1, toolSetHas, withoutTools } from "@weasel-js/routing";
27
+ import { createToolOptionValues, isToolSet, steppedOption, toolIdsOf as toolIdsOf$1, toolOptionParams as toolOptionParams$1, toolOptionSteps, toolSet as toolSet$1, toolSetHas, withoutTools } from "@weasel-js/routing";
28
28
 
29
- export { ANCHORS_TOOL_ID, AREA_SELECT_ID, DRAG_PAN_ID, GROUP_ENTRY_ID, SELECTION_MOVE_ID, SELECTION_RESIZE_ID, SELECTION_ROTATE_ID, SELECTION_TRANSFORM_ID, STICKY_DEFAULTS, anchorsTool, areaSelectContribution, createGroupEntryContribution, createPointerFollower, createToolOptionValues, defineTool, dragPanContribution, isToolSet, onEmptyCanvas, pickTopMostHit, selectionMoveBindings, selectionMoveContribution, selectionResizeBindings, selectionResizeContribution, selectionRotateBindings, selectionRotateContribution, selectionTransformBindings, selectionTransformContribution, steppedOption, stickyData, stickyNodeFactory, toolIdsOf$1 as toolIdsOf, toolOptionParams, toolOptionSteps, toolSet$1 as toolSet, toolSetHas, useEllipseTool, useEyedropperTool, useGroupEntryContribution, useHandTool, useImageTool, useKeybindings, useLassoTool, useLineTool, useMeasureTool, usePenTool, usePencilTool, usePolygonTool, useRectTool, useSelectTool, useSliceTool, useStarTool, useStickyTool, useTextTool, useToolOptionTunings, useToolOptionValues, useTools, withoutTools };
29
+ export { ANCHORS_TOOL_ID, AREA_SELECT_ID, DRAG_PAN_ID, GROUP_ENTRY_ID, SELECTION_MOVE_ID, SELECTION_RESIZE_ID, SELECTION_ROTATE_ID, SELECTION_TRANSFORM_ID, STICKY_DEFAULTS, anchorsTool, areaSelectContribution, createGroupEntryContribution, createPointerFollower, createToolOptionValues, defineTool, dragPanContribution, isToolSet, onEmptyCanvas, pickTopMostHit, selectionMoveBindings, selectionMoveContribution, selectionResizeBindings, selectionResizeContribution, selectionRotateBindings, selectionRotateContribution, selectionTransformBindings, selectionTransformContribution, steppedOption, stickyData, stickyNodeFactory, toolIdsOf$1 as toolIdsOf, toolOptionParams$1 as toolOptionParams, toolOptionSteps, toolSet$1 as toolSet, toolSetHas, useEllipseTool, useEyedropperTool, useGroupEntryContribution, useHandTool, useImageTool, useKeybindings, useLassoTool, useLineTool, useMeasureTool, usePenTool, usePencilTool, usePolygonTool, useRectTool, useSelectTool, useSliceTool, useStarTool, useStickyTool, useTextTool, useToolOptionTunings, useToolOptionValues, useTools, withoutTools };
@@ -1,10 +1,9 @@
1
1
  import { defineTool } from "@weasel-js/routing";
2
2
  import { useTools } from "@weasel-js/routing/react";
3
3
 
4
- //#region src/tools/overlayBinding.ts
4
+ // src/tools/overlayBinding.ts
5
5
  /** Routing's `useTools`, typed for `RenderLayer` overlays. */
6
6
  var useTools$1 = useTools;
7
7
 
8
- //#endregion
9
8
  export { defineTool, useTools$1 as useTools };
10
9
  //# sourceMappingURL=overlayBinding.js.map
@@ -1,7 +1,8 @@
1
1
  import { useEffect } from "react";
2
+ import { toolOptionParams } from "@weasel-js/routing";
2
3
  import { useDepSource, useOptionalDepRegistry } from "@weasel-js/routing/react";
3
4
 
4
- //#region src/tools/toolOptions.ts
5
+ // src/tools/toolOptions.ts
5
6
  /**
6
7
  * The canvas side of tool options (`ToolDef.options`): publishing where their
7
8
  * values live, and tuning each tool's action from them.
@@ -17,16 +18,29 @@ function heldOptions(toolId, options, values) {
17
18
  for (const key of Object.keys(options.prefs.children)) if (typeof held[key] === "number") out[key] = held[key];
18
19
  return out;
19
20
  }
21
+ /** Write each of `toolId`'s options that `params` sets to a new value into `values`. */
22
+ function keepOptions(toolId, options, values, params) {
23
+ if (!values) return;
24
+ const now = toolOptionParams(toolId, options, values);
25
+ for (const key of Object.keys(options.prefs.children)) {
26
+ const v = params[key];
27
+ if (typeof v === "number" && Number.isFinite(v) && v !== now[key]) values.set(toolId, key, v);
28
+ }
29
+ }
20
30
  /** Tune each tool's options action with the values the `toolOptionValues` dep
21
31
  * holds, read on every invocation: only those it holds, so an option it does
22
32
  * not leaves the action's own default, or another tuning's value, in place.
23
- * Returns a release. */
33
+ * The options and the action's last-operation panel are one setting: a value
34
+ * the panel sets is written back to the dep. Returns a release. */
24
35
  function tuneToolOptions(registry, deps, tools) {
25
36
  const releases = [];
26
37
  for (const tool of tools) {
27
38
  const options = tool.options;
28
39
  if (!options) continue;
29
- releases.push(registry.tune(options.actionId, { params: () => heldOptions(tool.id, options, deps?.get("toolOptionValues")) }));
40
+ releases.push(registry.tune(options.actionId, {
41
+ params: () => heldOptions(tool.id, options, deps?.get("toolOptionValues")),
42
+ keep: (params) => keepOptions(tool.id, options, deps?.get("toolOptionValues"), params)
43
+ }));
30
44
  }
31
45
  return () => {
32
46
  for (const r of releases) r();
@@ -42,6 +56,5 @@ function useToolOptionTunings(registry, tools) {
42
56
  ]);
43
57
  }
44
58
 
45
- //#endregion
46
59
  export { tuneToolOptions, useToolOptionTunings, useToolOptionValues };
47
60
  //# sourceMappingURL=toolOptions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"toolOptions.js","names":[],"sources":["../../src/tools/toolOptions.ts"],"sourcesContent":["/**\n * The canvas side of tool options (`ToolDef.options`): publishing where their\n * values live, and tuning each tool's action from them.\n */\nimport { useEffect } from 'react';\nimport type { ToolOptions, ToolOptionValues } from '@weasel-js/routing';\nimport { useDepSource, useOptionalDepRegistry, type DepRegistry } from '@weasel-js/routing/react';\nimport type { ActionsRegistry } from '@weasel-js/routing';\nimport type { Tool } from './overlayBinding';\n\n/** Publish where the host keeps its tools' option values, as the `toolOptionValues`\n * dep. Silently does nothing outside a `<DepRegistryProvider>`. */\nexport function useToolOptionValues(values: ToolOptionValues): void {\n useDepSource('toolOptionValues', () => values);\n}\n\nfunction heldOptions(toolId: string, options: ToolOptions, values: ToolOptionValues | undefined): Record<string, number> {\n const held = values?.get(toolId) ?? {};\n const out: Record<string, number> = {};\n for (const key of Object.keys(options.prefs.children)) if (typeof held[key] === 'number') out[key] = held[key];\n return out;\n}\n\n/** Tune each tool's options action with the values the `toolOptionValues` dep\n * holds, read on every invocation: only those it holds, so an option it does\n * not leaves the action's own default, or another tuning's value, in place.\n * Returns a release. */\nexport function tuneToolOptions(\n registry: Pick<ActionsRegistry, 'tune'>,\n deps: Pick<DepRegistry, 'get'> | null,\n tools: Iterable<Tool>,\n): () => void {\n const releases: Array<() => void> = [];\n for (const tool of tools) {\n const options = tool.options;\n if (!options) continue;\n releases.push(registry.tune(options.actionId, {\n params: () => heldOptions(tool.id, options, deps?.get('toolOptionValues')),\n }));\n }\n return () => { for (const r of releases) r(); };\n}\n\n/** {@link tuneToolOptions} for as long as the component is mounted. */\nexport function useToolOptionTunings(registry: Pick<ActionsRegistry, 'tune'> | null, tools: Readonly<Record<string, Tool>>): void {\n const deps = useOptionalDepRegistry();\n useEffect(() => (registry ? tuneToolOptions(registry, deps, Object.values(tools)) : undefined), [registry, deps, tools]);\n}\n"],"mappings":";;;;;;;;;;AAYA,SAAgB,oBAAoB,QAAgC;CAClE,aAAa,0BAA0B,MAAM;AAC/C;AAEA,SAAS,YAAY,QAAgB,SAAsB,QAA8D;CACvH,MAAM,OAAO,QAAQ,IAAI,MAAM,KAAK,CAAC;CACrC,MAAM,MAA8B,CAAC;CACrC,KAAK,MAAM,OAAO,OAAO,KAAK,QAAQ,MAAM,QAAQ,GAAG,IAAI,OAAO,KAAK,SAAS,UAAU,IAAI,OAAO,KAAK;CAC1G,OAAO;AACT;;;;;AAMA,SAAgB,gBACd,UACA,MACA,OACY;CACZ,MAAM,WAA8B,CAAC;CACrC,KAAK,MAAM,QAAQ,OAAO;EACxB,MAAM,UAAU,KAAK;EACrB,IAAI,CAAC,SAAS;EACd,SAAS,KAAK,SAAS,KAAK,QAAQ,UAAU,EAC5C,cAAc,YAAY,KAAK,IAAI,SAAS,MAAM,IAAI,kBAAkB,CAAC,EAC3E,CAAC,CAAC;CACJ;CACA,aAAa;EAAE,KAAK,MAAM,KAAK,UAAU,EAAE;CAAG;AAChD;;AAGA,SAAgB,qBAAqB,UAAgD,OAA6C;CAChI,MAAM,OAAO,uBAAuB;CACpC,gBAAiB,WAAW,gBAAgB,UAAU,MAAM,OAAO,OAAO,KAAK,CAAC,IAAI,QAAY;EAAC;EAAU;EAAM;CAAK,CAAC;AACzH"}
1
+ {"version":3,"file":"toolOptions.js","names":[],"sources":["../../src/tools/toolOptions.ts"],"sourcesContent":["/**\n * The canvas side of tool options (`ToolDef.options`): publishing where their\n * values live, and tuning each tool's action from them.\n */\nimport { useEffect } from 'react';\nimport { toolOptionParams, type ToolOptions, type ToolOptionValues } from '@weasel-js/routing';\nimport { useDepSource, useOptionalDepRegistry, type DepRegistry } from '@weasel-js/routing/react';\nimport type { ActionsRegistry } from '@weasel-js/routing';\nimport type { Tool } from './overlayBinding';\n\n/** Publish where the host keeps its tools' option values, as the `toolOptionValues`\n * dep. Silently does nothing outside a `<DepRegistryProvider>`. */\nexport function useToolOptionValues(values: ToolOptionValues): void {\n useDepSource('toolOptionValues', () => values);\n}\n\nfunction heldOptions(toolId: string, options: ToolOptions, values: ToolOptionValues | undefined): Record<string, number> {\n const held = values?.get(toolId) ?? {};\n const out: Record<string, number> = {};\n for (const key of Object.keys(options.prefs.children)) if (typeof held[key] === 'number') out[key] = held[key];\n return out;\n}\n\n/** Write each of `toolId`'s options that `params` sets to a new value into `values`. */\nfunction keepOptions(toolId: string, options: ToolOptions, values: ToolOptionValues | undefined, params: Readonly<Record<string, unknown>>): void {\n if (!values) return;\n const now = toolOptionParams(toolId, options, values);\n for (const key of Object.keys(options.prefs.children)) {\n const v = params[key];\n if (typeof v === 'number' && Number.isFinite(v) && v !== now[key]) values.set(toolId, key, v);\n }\n}\n\n/** Tune each tool's options action with the values the `toolOptionValues` dep\n * holds, read on every invocation: only those it holds, so an option it does\n * not leaves the action's own default, or another tuning's value, in place.\n * The options and the action's last-operation panel are one setting: a value\n * the panel sets is written back to the dep. Returns a release. */\nexport function tuneToolOptions(\n registry: Pick<ActionsRegistry, 'tune'>,\n deps: Pick<DepRegistry, 'get'> | null,\n tools: Iterable<Tool>,\n): () => void {\n const releases: Array<() => void> = [];\n for (const tool of tools) {\n const options = tool.options;\n if (!options) continue;\n releases.push(registry.tune(options.actionId, {\n params: () => heldOptions(tool.id, options, deps?.get('toolOptionValues')),\n keep: (params) => keepOptions(tool.id, options, deps?.get('toolOptionValues'), params),\n }));\n }\n return () => { for (const r of releases) r(); };\n}\n\n/** {@link tuneToolOptions} for as long as the component is mounted. */\nexport function useToolOptionTunings(registry: Pick<ActionsRegistry, 'tune'> | null, tools: Readonly<Record<string, Tool>>): void {\n const deps = useOptionalDepRegistry();\n useEffect(() => (registry ? tuneToolOptions(registry, deps, Object.values(tools)) : undefined), [registry, deps, tools]);\n}\n"],"mappings":";;;;;;;;;;;AAYA,SAAgB,oBAAoB,QAAgC;CAClE,aAAa,0BAA0B,MAAM;AAC/C;AAEA,SAAS,YAAY,QAAgB,SAAsB,QAA8D;CACvH,MAAM,OAAO,QAAQ,IAAI,MAAM,KAAK,CAAC;CACrC,MAAM,MAA8B,CAAC;CACrC,KAAK,MAAM,OAAO,OAAO,KAAK,QAAQ,MAAM,QAAQ,GAAG,IAAI,OAAO,KAAK,SAAS,UAAU,IAAI,OAAO,KAAK;CAC1G,OAAO;AACT;;AAGA,SAAS,YAAY,QAAgB,SAAsB,QAAsC,QAAiD;CAChJ,IAAI,CAAC,QAAQ;CACb,MAAM,MAAM,iBAAiB,QAAQ,SAAS,MAAM;CACpD,KAAK,MAAM,OAAO,OAAO,KAAK,QAAQ,MAAM,QAAQ,GAAG;EACrD,MAAM,IAAI,OAAO;EACjB,IAAI,OAAO,MAAM,YAAY,OAAO,SAAS,CAAC,KAAK,MAAM,IAAI,MAAM,OAAO,IAAI,QAAQ,KAAK,CAAC;CAC9F;AACF;;;;;;AAOA,SAAgB,gBACd,UACA,MACA,OACY;CACZ,MAAM,WAA8B,CAAC;CACrC,KAAK,MAAM,QAAQ,OAAO;EACxB,MAAM,UAAU,KAAK;EACrB,IAAI,CAAC,SAAS;EACd,SAAS,KAAK,SAAS,KAAK,QAAQ,UAAU;GAC5C,cAAc,YAAY,KAAK,IAAI,SAAS,MAAM,IAAI,kBAAkB,CAAC;GACzE,OAAO,WAAW,YAAY,KAAK,IAAI,SAAS,MAAM,IAAI,kBAAkB,GAAG,MAAM;EACvF,CAAC,CAAC;CACJ;CACA,aAAa;EAAE,KAAK,MAAM,KAAK,UAAU,EAAE;CAAG;AAChD;;AAGA,SAAgB,qBAAqB,UAAgD,OAA6C;CAChI,MAAM,OAAO,uBAAuB;CACpC,gBAAiB,WAAW,gBAAgB,UAAU,MAAM,OAAO,OAAO,KAAK,CAAC,IAAI,QAAY;EAAC;EAAU;EAAM;CAAK,CAAC;AACzH"}
@@ -5,7 +5,7 @@ import { useLatest } from "@weasel-js/react";
5
5
  import { useActionsRegistry } from "@weasel-js/routing/react";
6
6
  import { eligibleForMode } from "@weasel-js/modes";
7
7
 
8
- //#region src/tools/useKeybindings.ts
8
+ // src/tools/useKeybindings.ts
9
9
  /** Wire the single-key tool-activation shortcuts (V, P, T, …) and Escape to
10
10
  * return to the default tool. Activation is gated on what the active mode
11
11
  * allows, so a key cannot reach a tool the palette greys out. */
@@ -67,6 +67,5 @@ function useKeybindings(tools, options = {}) {
67
67
  ]);
68
68
  }
69
69
 
70
- //#endregion
71
70
  export { useKeybindings };
72
71
  //# sourceMappingURL=useKeybindings.js.map
@@ -861,9 +861,9 @@ interface NodeBase<TData, TLayer extends string, TPose> {
861
861
  * undo entry as the change. A drag reads it too: it is the layout `move`
862
862
  * reflows and drops against. */
863
863
  layout?: LayoutStrategy<TPose>;
864
- /** The units its children are shown, typed and snapped in (their poses stay
865
- * in world units), and what one base unit is worth in the enclosing scope's.
866
- * It covers the children, not the node; `sceneUnitScopes` reads the chain. */
864
+ /** The units its children are shown, typed and snapped in (poses stay in the root's base units), their
865
+ * worth in the enclosing scope's, and the magnification they are drawn at (`drawnAt`). It covers the
866
+ * children, not the node; `sceneUnitScopes` reads the chain. */
867
867
  units?: UnitScope;
868
868
  }
869
869
  /** A node that is drawn and picked as one thing — a shape, a label, an image.