@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
@@ -1,7 +1,7 @@
1
1
  import { surfaceLocal } from "../viewRegistry.js";
2
2
  import { useMemo } from "react";
3
3
 
4
- //#region src/canvas/SceneCanvas/useSurfaceRouting.ts
4
+ // src/canvas/SceneCanvas/useSurfaceRouting.ts
5
5
  /** What the gesture dispatcher reads from the surface's view registry. */
6
6
  /**
7
7
  * The dispatcher's routing to registered views, and its canvas-local mapping
@@ -24,6 +24,5 @@ function useSurfaceRouting(viewRegistry) {
24
24
  }, [viewRegistry]);
25
25
  }
26
26
 
27
- //#endregion
28
27
  export { useSurfaceRouting };
29
28
  //# sourceMappingURL=useSurfaceRouting.js.map
@@ -1,6 +1,6 @@
1
1
  import { useMemo } from "react";
2
2
 
3
- //#region src/canvas/SceneCanvas/useSurfaceViewInputs.ts
3
+ // src/canvas/SceneCanvas/useSurfaceViewInputs.ts
4
4
  /**
5
5
  * What a view needs to build its own overlay-aware state. `descriptor` is the same one handed
6
6
  * to `<Canvas>`, so the two cannot diverge.
@@ -39,6 +39,5 @@ function useSurfaceViewInputs(args) {
39
39
  ]);
40
40
  }
41
41
 
42
- //#endregion
43
42
  export { useSurfaceViewInputs };
44
43
  //# sourceMappingURL=useSurfaceViewInputs.js.map
@@ -1,7 +1,7 @@
1
1
  import { useKeybindings } from "../../tools/useKeybindings.js";
2
2
  import { useContributionRoles } from "./useContributionRoles.js";
3
3
 
4
- //#region src/canvas/SceneCanvas/useToolKeybindings.ts
4
+ // src/canvas/SceneCanvas/useToolKeybindings.ts
5
5
  /**
6
6
  * Runs `useKeybindings`, whose `tool.activate` / `tool.offhand` /
7
7
  * `tool.resetToDefault` registrations land in this canvas's scope.
@@ -23,6 +23,5 @@ function useToolKeybindings({ internalTools, toolsTakeover, surface, enableKeybi
23
23
  useContributionRoles(toolsTakeover ?? internalTools, canvasApi, versionCheck, surface);
24
24
  }
25
25
 
26
- //#endregion
27
26
  export { useToolKeybindings };
28
27
  //# sourceMappingURL=useToolKeybindings.js.map
@@ -1,12 +1,12 @@
1
- import { makeViewportZoomAction } from "../../interactions/actions/defaults/viewportZoom.js";
2
- import { makeViewportWheelPanAction } from "../../interactions/actions/defaults/viewportWheelPan.js";
3
1
  import { containerScrollAction } from "../../interactions/actions/defaults/containerScroll.js";
2
+ import { makeViewportWheelPanAction } from "../../interactions/actions/defaults/viewportWheelPan.js";
3
+ import { makeViewportZoomAction } from "../../interactions/actions/defaults/viewportZoom.js";
4
4
  import { makePinchZoomAction } from "../../interactions/actions/defaults/pinchZoom.js";
5
5
  import { useEffect } from "react";
6
6
  import { useLatest } from "@weasel-js/react";
7
7
  import { useActionsRegistry } from "@weasel-js/routing/react";
8
8
 
9
- //#region src/canvas/SceneCanvas/useViewportActions.ts
9
+ // src/canvas/SceneCanvas/useViewportActions.ts
10
10
  /**
11
11
  * Registers the wheel pan, zoom, and pinch zoom actions from SceneCanvas's
12
12
  * `viewport` prop, and the wheel scroll of a container whose content runs
@@ -60,6 +60,5 @@ function viewportZoomOption(zoom, animatedZoom) {
60
60
  };
61
61
  }
62
62
 
63
- //#endregion
64
63
  export { useViewportActions, viewportZoomOption };
65
64
  //# sourceMappingURL=useViewportActions.js.map
@@ -1,4 +1,4 @@
1
- //#region src/canvas/SceneCanvas/worldPointAt.ts
1
+ // src/canvas/SceneCanvas/worldPointAt.ts
2
2
  /**
3
3
  * A client point in the world of the view it resolved to. The canvas's own
4
4
  * view converts through the handle, and a declared view through the resolver,
@@ -9,6 +9,5 @@ function worldPointAt(api, target, clientX, clientY) {
9
9
  return [target.world.x, target.world.y];
10
10
  }
11
11
 
12
- //#endregion
13
12
  export { worldPointAt };
14
13
  //# sourceMappingURL=worldPointAt.js.map
@@ -1,50 +1,51 @@
1
- import { DeviceProfileProvider, useDeviceProfile } from "../core/device/useDeviceProfile.js";
2
- import { AUTO_POSE_DESCRIPTOR } from "../core/geometry/autoPoseDescriptor.js";
3
- import { ViewRegistryProvider } from "./viewRegistry.js";
4
- import { rotateAroundAABBCenter } from "./poseRotation.js";
5
- import { defaultDrawOne } from "./defaultDrawOne.js";
6
- import { useChromeColor } from "./accentColor.js";
7
- import { ANCHOR_TOOLS, BUILTIN_TOOLS, BUILTIN_TOOL_GROUPS, BUILTIN_TOOL_IDS, DRAW_TOOLS, PAGE_TOOLS, SELECT_TOOLS, SHAPE_TOOLS, TOOL_GROUP_ORDER, TYPE_TOOLS, VIEW_TOOLS } from "./SceneCanvas/builtinToolSets.js";
8
- import { CORE_PRESET_SOURCE } from "./SceneCanvas/namedPresets.js";
9
- import { useGroupEntryContribution } from "../tools/builtin/select/groupEntry.js";
10
1
  import { useCanvasCamera } from "./SceneCanvas/useCanvasCamera.js";
11
2
  import { useHeldModifiers } from "./SceneCanvas/useHeldModifiers.js";
12
3
  import { useCanvasIngestion } from "../domains/ingestion/useCanvasIngestion.js";
4
+ import { rotateAroundAABBCenter } from "./poseRotation.js";
5
+ import { defaultDrawOne } from "./defaultDrawOne.js";
6
+ import { AUTO_POSE_DESCRIPTOR } from "../core/geometry/autoPoseDescriptor.js";
7
+ import { ANCHOR_TOOLS, BUILTIN_TOOLS, BUILTIN_TOOL_GROUPS, BUILTIN_TOOL_IDS, DRAW_TOOLS, PAGE_TOOLS, SELECT_TOOLS, SHAPE_TOOLS, TOOL_GROUP_ORDER, TYPE_TOOLS, VIEW_TOOLS } from "./SceneCanvas/builtinToolSets.js";
8
+ import { DeviceProfileProvider, useDeviceProfile } from "../core/device/useDeviceProfile.js";
13
9
  import { Canvas } from "./Canvas.js";
14
10
  import { DevHuds, canvasDebug } from "./SceneCanvas/DevHuds.js";
15
11
  import { GestureReason } from "./GestureReason.js";
16
12
  import { CanvasKitProviders } from "./SceneCanvas/CanvasKitProviders.js";
17
13
  import { canvasPassThrough } from "./SceneCanvas/canvasPassThrough.js";
18
- import { useDevtoolsOverride } from "../devtools/useDevtoolsRoot.js";
19
- import { contributionEntries } from "./SceneCanvas/useContributionRoles.js";
20
14
  import { SceneCanvasInput } from "./SceneCanvas/SceneCanvasInput.js";
15
+ import { CORE_PRESET_SOURCE } from "./SceneCanvas/namedPresets.js";
21
16
  import { useBakedScene } from "./SceneCanvas/useBakedScene.js";
22
17
  import { useCanvasDispatcher } from "./SceneCanvas/useCanvasDispatcher.js";
23
18
  import { publishPreviews } from "./publishPreviews.js";
24
19
  import { useCanvasSelection } from "./SceneCanvas/useCanvasSelection.js";
25
- import { SCENE_CANVAS_FEATURES } from "./SceneCanvas/features.js";
26
- import { DEFAULT_HANDLE_SIZE } from "./SceneCanvas/props.js";
27
20
  import { useEnabledFeatures } from "./SceneCanvas/useCanvasTools.js";
21
+ import { contributionEntries } from "./SceneCanvas/useContributionRoles.js";
28
22
  import { SurfaceDeclarations } from "./SceneCanvas/SurfaceDeclarations.js";
29
23
  import { useAddedViews, useSceneCanvasHandle } from "./SceneCanvas/useSceneCanvasHandle.js";
30
- import { mergeLayersWithDefaults } from "./SceneCanvas/mergeLayers.js";
31
- import { ENTERED_FRAME_COLOR, ENTERED_FRAME_TOKEN } from "../domains/selection/enteredGroupFrame.js";
32
24
  import { useSceneCanvasLayers } from "./SceneCanvas/useSceneCanvasLayers.js";
25
+ import { SCENE_CANVAS_FEATURES } from "./SceneCanvas/features.js";
26
+ import { DEFAULT_HANDLE_SIZE } from "./SceneCanvas/props.js";
33
27
  import { useSceneCanvasPathEdit } from "./SceneCanvas/useSceneCanvasPathEdit.js";
34
28
  import { useSceneCanvasTools } from "./SceneCanvas/useSceneCanvasTools.js";
35
29
  import { hiddenChromeOf, useSceneCanvasChrome } from "./SceneCanvas/useSceneChrome.js";
30
+ import { mergeLayersWithDefaults } from "./SceneCanvas/mergeLayers.js";
31
+ import { useDevtoolsOverride } from "../devtools/useDevtoolsRoot.js";
36
32
  import { useSceneRedrawSources } from "./SceneCanvas/useSceneRedrawSources.js";
37
33
  import { useScenePicking } from "./SceneCanvas/useScenePicking.js";
34
+ import { useGroupEntryContribution } from "../tools/builtin/select/groupEntry.js";
38
35
  import { useNodeKinds } from "./SceneCanvas/useNodeKinds.js";
36
+ import { useMagnificationCheck } from "./SceneCanvas/useMagnificationCheck.js";
39
37
  import { DefaultTextEditDep, useCanvasTextEditor } from "./SceneCanvas/defaultTextEditor.js";
40
38
  import { useSurfaceViewInputs } from "./SceneCanvas/useSurfaceViewInputs.js";
39
+ import { ViewRegistryProvider } from "./viewRegistry.js";
40
+ import { useChromeColor } from "./accentColor.js";
41
+ import { ENTERED_FRAME_COLOR, ENTERED_FRAME_TOKEN } from "../domains/selection/enteredGroupFrame.js";
41
42
  import { forwardRef, useEffect, useMemo, useRef } from "react";
42
43
  import { useLatest } from "@weasel-js/react";
43
44
  import { jsx, jsxs } from "react/jsx-runtime";
44
45
  import { InputScope, useActionsRegistry } from "@weasel-js/routing/react";
45
46
  import { getActiveModeFor } from "@weasel-js/modes";
46
47
 
47
- //#region src/canvas/SceneCanvas.tsx
48
+ // src/canvas/SceneCanvas.tsx
48
49
  /**
49
50
  * `<SceneCanvas>` — `<Canvas>` wired to a `Scene` primitive. Bare, it only renders: behavior
50
51
  * comes from the `features` presets (`canvas/SceneCanvas/features.ts`), each of which turns on
@@ -122,6 +123,7 @@ function SceneCanvasInner(props, ref) {
122
123
  const actionsRegistry = useActionsRegistry();
123
124
  const { dispatcher, gestureSource, previewIdsExtra, previewPoseExtra } = useCanvasDispatcher(actionsRegistry);
124
125
  useEffect(() => publishPreviews(scene, dispatcher), [scene, dispatcher]);
126
+ useMagnificationCheck(scene);
125
127
  const frameColor = useChromeColor(internalCanvasRef, ENTERED_FRAME_TOKEN, ENTERED_FRAME_COLOR);
126
128
  const { editor: textEditor, layers } = useCanvasTextEditor(scene, internalCanvasRef, props);
127
129
  const layered = useSceneCanvasLayers({
@@ -317,6 +319,5 @@ function SceneCanvasWrapper(props, ref) {
317
319
  */
318
320
  var SceneCanvas = /* @__PURE__ */ forwardRef(SceneCanvasWrapper);
319
321
 
320
- //#endregion
321
322
  export { ANCHOR_TOOLS, BUILTIN_TOOLS, BUILTIN_TOOL_GROUPS, BUILTIN_TOOL_IDS, DEFAULT_HANDLE_SIZE, DRAW_TOOLS, PAGE_TOOLS, SCENE_CANVAS_FEATURES, SELECT_TOOLS, SHAPE_TOOLS, SceneCanvas, TOOL_GROUP_ORDER, TYPE_TOOLS, VIEW_TOOLS, renderSceneCanvas, rotateAroundAABBCenter };
322
323
  //# sourceMappingURL=SceneCanvas.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SceneCanvas.js","names":[],"sources":["../../src/canvas/SceneCanvas.tsx"],"sourcesContent":["/**\n * `<SceneCanvas>` — `<Canvas>` wired to a `Scene` primitive. Bare, it only renders: behavior\n * comes from the `features` presets (`canvas/SceneCanvas/features.ts`), each of which turns on\n * its own actions, tools, ambient bindings, and chrome.\n *\n * A consumer needing custom tools can pass `tools={useTools(...)}` and SceneCanvas forwards it\n * as-is — the internal tool registry is ignored in that case.\n */\nimport { getActiveModeFor } from '@weasel-js/modes';\nimport { useLatest } from '@weasel-js/react';\nimport { InputScope, useActionsRegistry } from '@weasel-js/routing/react';\nimport type { NodeId, Scene } from 'core/scene/types';\nimport { useCanvasCamera } from './SceneCanvas/useCanvasCamera';\nimport { useHeldModifiers } from './SceneCanvas/useHeldModifiers';\nimport { useCanvasIngestion } from 'domains/ingestion/useCanvasIngestion';\nimport { AUTO_POSE_DESCRIPTOR } from 'core/geometry/autoPoseDescriptor';\nimport type { PoseDescriptor } from 'interactions/actions/resize/geometry';\nimport type React from 'react';\nimport { forwardRef, useEffect, useMemo, useRef } from 'react';\nimport { DeviceProfileProvider, useDeviceProfile } from '../core/device/useDeviceProfile';\nimport { Canvas } from './Canvas';\nimport { canvasDebug, DevHuds } from './SceneCanvas/DevHuds';\nimport { GestureReason } from './GestureReason';\nimport { CanvasKitProviders } from './SceneCanvas/CanvasKitProviders';\nimport { canvasPassThrough } from './SceneCanvas/canvasPassThrough';\nimport { SceneCanvasInput, type SceneCanvasInputOptions } from './SceneCanvas/SceneCanvasInput';\nimport type { PresetSource } from './SceneCanvas/features';\nimport { CORE_PRESET_SOURCE } from './SceneCanvas/namedPresets';\nimport type { BridgeAdapter, SceneCanvasProps } from './SceneCanvas/props';\nimport { useBakedScene } from './SceneCanvas/useBakedScene';\nimport { useCanvasDispatcher } from './SceneCanvas/useCanvasDispatcher';\nimport { publishPreviews } from './publishPreviews';\nimport { useCanvasSelection } from './SceneCanvas/useCanvasSelection';\nimport { useEnabledFeatures } from './SceneCanvas/useCanvasTools';\nimport { contributionEntries } from './SceneCanvas/useContributionRoles';\nimport { SurfaceDeclarations } from './SceneCanvas/SurfaceDeclarations';\nimport { useAddedViews, useSceneCanvasHandle } from './SceneCanvas/useSceneCanvasHandle';\nimport { useSceneCanvasLayers } from './SceneCanvas/useSceneCanvasLayers';\nimport { useSceneCanvasPathEdit } from './SceneCanvas/useSceneCanvasPathEdit';\nimport { useSceneCanvasTools, type SceneCanvasToolProps } from './SceneCanvas/useSceneCanvasTools';\nimport { hiddenChromeOf, useSceneCanvasChrome } from './SceneCanvas/useSceneChrome';\nimport { useDevtoolsOverride } from '../devtools/useDevtoolsRoot';\nimport { useSceneRedrawSources } from './SceneCanvas/useSceneRedrawSources';\nimport { useScenePicking } from './SceneCanvas/useScenePicking';\nimport { useGroupEntryContribution } from 'tools/builtin/select/groupEntry';\nimport { useNodeKinds } from './SceneCanvas/useNodeKinds';\nimport { DefaultTextEditDep, useCanvasTextEditor } from './SceneCanvas/defaultTextEditor';\nimport { useSurfaceViewInputs } from './SceneCanvas/useSurfaceViewInputs';\nimport type { CanvasExtensionApi, SceneCanvasApi } from './canvasExtension';\nimport { ViewRegistryProvider } from './viewRegistry';\nimport { useChromeColor } from './accentColor';\nimport { ENTERED_FRAME_COLOR, ENTERED_FRAME_TOKEN } from 'domains/selection/enteredGroupFrame';\nexport { SCENE_CANVAS_FEATURES, type Feature } from './SceneCanvas/features';\nexport type { BuiltinToolOptions } from './SceneCanvas/useBuiltinShapeTools';\nexport { defaultDrawOne } from './defaultDrawOne';\nexport { rotateAroundAABBCenter } from './poseRotation';\n\nfunction SceneCanvasInner<TData, TLayer extends string, TPose>(\n props: SceneCanvasProps<TData, TLayer, TPose> & { presetSource: PresetSource },\n ref: React.ForwardedRef<SceneCanvasApi>,\n) {\n const { selectTool: selectToolOpts, selectable = true, viewport, modes } = props;\n const devtools = useDevtoolsOverride(props.debug), { debug } = devtools;\n const descriptor = (props.poseDescriptor ?? AUTO_POSE_DESCRIPTOR) as PoseDescriptor<TPose>;\n const deviceProfile = useDeviceProfile();\n const scene = useBakedScene(props.scene);\n const getActiveMode = useMemo(() => (modes ? getActiveModeFor(modes) : undefined), [modes]);\n const heldModifiers = useHeldModifiers();\n\n // Our own refs, so input listeners attach even when the consumer forwards its own ref.\n const internalCanvasRef = useRef<HTMLElement | null>(null);\n const canvasApiRef = useRef<CanvasExtensionApi | null>(null);\n const declaredSize = useLatest({ width: props.width ?? 0, height: props.height ?? 0 });\n const { viewState, viewAnimation, camera } = useCanvasCamera({\n view: props.view, defaultView: props.defaultView, onViewChange: props.onViewChange, viewBounds: props.viewBounds,\n dims: () => canvasApiRef.current?.getSurfaceRect() ?? declaredSize.current,\n requestRedraw: () => { canvasApiRef.current?.requestRedraw(); },\n });\n const { viewRef } = viewState;\n const kinds = useNodeKinds(scene, props.routing);\n const selection = useCanvasSelection({ scene, props, selectable, kindOf: kinds.kindOf });\n const enabled = useEnabledFeatures(\n props.features, props.presetSource.named, viewport !== undefined, selectToolOpts?.rotate !== false,\n );\n const { pathEditState, selectToolWithDefaults } = useSceneCanvasPathEdit({\n host: props.pathEdit, opening: props.defaultPathEdit, getActiveMode, scene, selection,\n extensions: enabled.pathEdit, selectTool: selectToolOpts,\n });\n const picking = useScenePicking({ scene, selection, descriptor, props, viewRef, selectTool: selectToolWithDefaults, kinds });\n const { adapter, boundsOf, planeOfNode } = picking;\n const getNodeAtPointRef = useLatest(picking.getNodeAtPoint);\n const groupEntry = useGroupEntryContribution({ pickHit: picking.pickBest, tree: adapter, boxOf: boundsOf });\n const tools = useSceneCanvasTools({\n props: props as SceneCanvasToolProps, select: picking.selectTool, move: picking.moveOptions,\n enabled, presetSource: props.presetSource, groupEntry,\n });\n\n // The wrapper's `<InputScope>` provides it.\n const actionsRegistry = useActionsRegistry();\n const { dispatcher, gestureSource, previewIdsExtra, previewPoseExtra } = useCanvasDispatcher(actionsRegistry);\n useEffect(() => publishPreviews(scene, dispatcher), [scene, dispatcher]);\n\n const frameColor = useChromeColor(internalCanvasRef, ENTERED_FRAME_TOKEN, ENTERED_FRAME_COLOR);\n const { editor: textEditor, layers } = useCanvasTextEditor(scene as Scene<TData, string, unknown>, internalCanvasRef, props);\n const layered = useSceneCanvasLayers({\n layers, presetLayers: enabled.layers, targetScale: deviceProfile.targetScale, scene, adapter, poseDescriptor: descriptor,\n enteredGroup: picking.enteredGroup, frameColor, alphaFor: props.alphaFor, colorOverrides: props.animator?.colorOverrides, boundsOf, planeOfNode,\n poseTransition: props.poseTransition, previewIds: previewIdsExtra, dispatcher, snapReadout: props.snap?.readout !== false, snapReadoutStyle: props.snap?.readoutStyle, pathEditState,\n slops: debug !== undefined && debug !== false && debug.slops === true,\n boundsIncludeStroke: props.geometry?.boundsIncludeStroke ?? true, selectTool: selectToolOpts,\n });\n const redrawOn = useSceneRedrawSources({ props, scene, heldModifiers, departures: layered.departures });\n\n const chrome = useSceneCanvasChrome({\n source: {\n getMode: getActiveMode, getFocused: props.getFocused, getModifiers: heldModifiers.get,\n resizable: selectToolOpts?.resize?.resizable,\n editingAnchors: () => pathEditState.getEditingId() !== '', device: deviceProfile,\n getHiddenChrome: () => hiddenChromeOf(tools.tools),\n },\n rules: { enabled, selectable, chromeVisibility: props.chromeVisibility },\n hover: { canvasApiRef, nodeAtPointRef: getNodeAtPointRef, ...(props.onHover ? { onChange: props.onHover } : {}) },\n selection: selection.current as readonly NodeId[], viewRef, dispatcher,\n });\n\n const { ingest, clipboard: ingestionClipboard, handlers: ingestionHandlers } = useCanvasIngestion(adapter, () => actionsRegistry, props.ingestion);\n const { views: addedViews, addView, viewAt, aimOf, setAim } = useAddedViews();\n // The consumer's handle extends the primitive's with `ingest`, which needs the action stack.\n const { handleRef, ready: canvasReady } = useSceneCanvasHandle({\n ref, elementRef: internalCanvasRef, apiRef: canvasApiRef, onElement: chrome.trackHoverOn,\n ingest, viewAnimation, camera, addView, viewAt, aimOf, setAim,\n });\n const viewInputs = useSurfaceViewInputs({ picking, selection, resizeHandles: layered.resizeHandles,\n descriptor: descriptor as PoseDescriptor<unknown>, chromeCaps: chrome.chromeCaps, rotationBadge: layered.rotationBadge,\n });\n\n return (\n <CanvasKitProviders viewInputs={viewInputs}>\n <Canvas<TPose>\n ref={handleRef} adapter={adapter} selection={selection} poseDescriptor={descriptor}\n tools={tools.tools} layers={layered.layers}\n // The chrome's bounds are the picker's: a node on a parallax plane is\n // boxed where the plane draws it, and a `geometry.boundsOf` reaches both.\n boundsOf={boundsOf} boundsOfPose={picking.boundsOfPose}\n getIsVisible={chrome.getIsVisible}\n // The gesture surface behind `helpersRef.getGestureBounds()` /\n // `subscribeGestures()` — Canvas has no dispatcher of its own.\n gestureSource={gestureSource}\n previewPoseExtra={previewPoseExtra}\n {...(debug !== undefined ? { debug: canvasDebug(debug) } : {})}\n contentVersion={scene.getVersion} layerVisibility={props.layerVisibility} layerOrder={props.layerOrder}\n viewState={viewState} redrawOn={redrawOn}\n {...canvasPassThrough(props)}\n />\n <DevHuds\n cursorCoords={props.cursorCoordsHud} pick={props.pickHud} modality={props.modalityHud}\n canvasRef={internalCanvasRef} canvasApiRef={canvasApiRef}\n detachedInput={props.paintInto ? props.inputElement ?? null : undefined}\n viewRef={viewRef} pickEvery={picking.pickEvery} pickBest={picking.pickBest}\n />\n <GestureReason dispatcher={dispatcher} canvasRef={internalCanvasRef} viewRef={viewRef} />\n <SceneCanvasInput\n props={props as SceneCanvasInputOptions} scene={scene as Scene<unknown, string, unknown>}\n selection={selection} descriptor={descriptor as PoseDescriptor<unknown>}\n picking={{ ...picking, adapter: adapter as unknown as BridgeAdapter }} nodeAtPointRef={getNodeAtPointRef}\n tools={tools} viewOn={enabled.has('view')} camera={{ viewState, viewAnimation }}\n dispatcher={dispatcher} pathEdit={{ state: pathEditState }}\n chrome={chrome} overlay={layered} ingestionClipboard={ingestionClipboard} ingestionHandlers={ingestionHandlers} devtools={devtools}\n canvas={{ elementRef: internalCanvasRef, apiRef: canvasApiRef, ready: canvasReady }} snapSources={enabled.snapSources} snapStore={layered.snapStore}\n />\n <SurfaceDeclarations views={props.views} entries={contributionEntries(tools.tools)} added={addedViews} />\n <DefaultTextEditDep editor={textEditor} onDoubleClick={enabled.has('edit')} />\n {props.children}\n </CanvasKitProviders>\n );\n}\n\nconst SceneCanvasInnerForwardRef = forwardRef(SceneCanvasInner);\n\n// The canvas's input scope sits above `SceneCanvasInner`, whose own hooks\n// (`useTools` among them) must already read this canvas's tool and registries.\n// Its device profile too, so the canvas and everything under it share one.\n/** A scene canvas resolving its `features` through `source`. */\nexport function renderSceneCanvas<TData, TLayer extends string, TPose>(\n source: PresetSource,\n { device, ...props }: SceneCanvasProps<TData, TLayer, TPose>,\n ref: React.ForwardedRef<SceneCanvasApi>,\n) {\n return (\n <InputScope yoke={props.yoke}>\n <DeviceProfileProvider value={device}>\n <ViewRegistryProvider>\n <SceneCanvasInnerForwardRef {...(props as SceneCanvasProps<unknown, string, unknown>)} presetSource={source} ref={ref} />\n </ViewRegistryProvider>\n </DeviceProfileProvider>\n </InputScope>\n );\n}\n\nfunction SceneCanvasWrapper<TData, TLayer extends string, TPose>(\n props: SceneCanvasProps<TData, TLayer, TPose>, ref: React.ForwardedRef<SceneCanvasApi>,\n) {\n return renderSceneCanvas(CORE_PRESET_SOURCE, props, ref);\n}\n\n// Marked pure so a bundle using only `LeanSceneCanvas` drops it, and core's named presets with it.\n/**\n * The canvas component: renders a `Scene` and wires the interaction stack\n * around it.\n *\n * Mounted bare it renders the scene, keeps a selection no input sets, and\n * runs a gesture dispatcher for whatever bindings the consumer adds. The\n * `features` presets turn the kit's behavior on — `features={['draw']}` is the\n * whole editor: tools, standard actions and their keys, selection chrome,\n * undo. This is the intended entry point; the lower-level primitives it\n * composes are not part of the public surface.\n *\n * Its ref exposes a `SceneCanvasApi` for the imperative operations that do not\n * fit a prop (view control, hit queries, redraw requests).\n */\nexport const SceneCanvas = /* @__PURE__ */ forwardRef(SceneCanvasWrapper) as <\n TData, TLayer extends string, TPose,\n>(\n props: SceneCanvasProps<TData, TLayer, TPose> & { ref?: React.Ref<SceneCanvasApi> },\n) => ReturnType<typeof SceneCanvasInner>;\n\nexport { DEFAULT_HANDLE_SIZE, BUILTIN_TOOL_IDS } from './SceneCanvas/props';\nexport {\n BUILTIN_TOOLS, BUILTIN_TOOL_GROUPS, TOOL_GROUP_ORDER,\n SELECT_TOOLS, ANCHOR_TOOLS, VIEW_TOOLS, SHAPE_TOOLS, DRAW_TOOLS, TYPE_TOOLS, PAGE_TOOLS,\n} from './SceneCanvas/builtinToolSets';\nexport { mergeLayersWithDefaults } from './SceneCanvas/mergeLayers';\nexport type {\n SceneCanvasProps, SceneCanvasHit, SceneCanvasLayers, SceneCanvasLongPress, BuiltinToolId,\n} from './SceneCanvas/props';\nexport type { CoordTraceEntry } from './SceneCanvas/coordTrace';\n"],"mappings":"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"}
1
+ {"version":3,"file":"SceneCanvas.js","names":[],"sources":["../../src/canvas/SceneCanvas.tsx"],"sourcesContent":["/**\n * `<SceneCanvas>` — `<Canvas>` wired to a `Scene` primitive. Bare, it only renders: behavior\n * comes from the `features` presets (`canvas/SceneCanvas/features.ts`), each of which turns on\n * its own actions, tools, ambient bindings, and chrome.\n *\n * A consumer needing custom tools can pass `tools={useTools(...)}` and SceneCanvas forwards it\n * as-is — the internal tool registry is ignored in that case.\n */\nimport { getActiveModeFor } from '@weasel-js/modes';\nimport { useLatest } from '@weasel-js/react';\nimport { InputScope, useActionsRegistry } from '@weasel-js/routing/react';\nimport type { NodeId, Scene } from 'core/scene/types';\nimport { useCanvasCamera } from './SceneCanvas/useCanvasCamera';\nimport { useHeldModifiers } from './SceneCanvas/useHeldModifiers';\nimport { useCanvasIngestion } from 'domains/ingestion/useCanvasIngestion';\nimport { AUTO_POSE_DESCRIPTOR } from 'core/geometry/autoPoseDescriptor';\nimport type { PoseDescriptor } from 'interactions/actions/resize/geometry';\nimport type React from 'react';\nimport { forwardRef, useEffect, useMemo, useRef } from 'react';\nimport { DeviceProfileProvider, useDeviceProfile } from '../core/device/useDeviceProfile';\nimport { Canvas } from './Canvas';\nimport { canvasDebug, DevHuds } from './SceneCanvas/DevHuds';\nimport { GestureReason } from './GestureReason';\nimport { CanvasKitProviders } from './SceneCanvas/CanvasKitProviders';\nimport { canvasPassThrough } from './SceneCanvas/canvasPassThrough';\nimport { SceneCanvasInput, type SceneCanvasInputOptions } from './SceneCanvas/SceneCanvasInput';\nimport type { PresetSource } from './SceneCanvas/features';\nimport { CORE_PRESET_SOURCE } from './SceneCanvas/namedPresets';\nimport type { BridgeAdapter, SceneCanvasProps } from './SceneCanvas/props';\nimport { useBakedScene } from './SceneCanvas/useBakedScene';\nimport { useCanvasDispatcher } from './SceneCanvas/useCanvasDispatcher';\nimport { publishPreviews } from './publishPreviews';\nimport { useCanvasSelection } from './SceneCanvas/useCanvasSelection';\nimport { useEnabledFeatures } from './SceneCanvas/useCanvasTools';\nimport { contributionEntries } from './SceneCanvas/useContributionRoles';\nimport { SurfaceDeclarations } from './SceneCanvas/SurfaceDeclarations';\nimport { useAddedViews, useSceneCanvasHandle } from './SceneCanvas/useSceneCanvasHandle';\nimport { useSceneCanvasLayers } from './SceneCanvas/useSceneCanvasLayers';\nimport { useSceneCanvasPathEdit } from './SceneCanvas/useSceneCanvasPathEdit';\nimport { useSceneCanvasTools, type SceneCanvasToolProps } from './SceneCanvas/useSceneCanvasTools';\nimport { hiddenChromeOf, useSceneCanvasChrome } from './SceneCanvas/useSceneChrome';\nimport { useDevtoolsOverride } from '../devtools/useDevtoolsRoot';\nimport { useSceneRedrawSources } from './SceneCanvas/useSceneRedrawSources';\nimport { useScenePicking } from './SceneCanvas/useScenePicking';\nimport { useGroupEntryContribution } from 'tools/builtin/select/groupEntry';\nimport { useNodeKinds } from './SceneCanvas/useNodeKinds';\nimport { useMagnificationCheck } from './SceneCanvas/useMagnificationCheck';\nimport { DefaultTextEditDep, useCanvasTextEditor } from './SceneCanvas/defaultTextEditor';\nimport { useSurfaceViewInputs } from './SceneCanvas/useSurfaceViewInputs';\nimport type { CanvasExtensionApi, SceneCanvasApi } from './canvasExtension';\nimport { ViewRegistryProvider } from './viewRegistry';\nimport { useChromeColor } from './accentColor';\nimport { ENTERED_FRAME_COLOR, ENTERED_FRAME_TOKEN } from 'domains/selection/enteredGroupFrame';\nexport { SCENE_CANVAS_FEATURES, type Feature } from './SceneCanvas/features';\nexport type { BuiltinToolOptions } from './SceneCanvas/useBuiltinShapeTools';\nexport { defaultDrawOne } from './defaultDrawOne';\nexport { rotateAroundAABBCenter } from './poseRotation';\n\nfunction SceneCanvasInner<TData, TLayer extends string, TPose>(\n props: SceneCanvasProps<TData, TLayer, TPose> & { presetSource: PresetSource },\n ref: React.ForwardedRef<SceneCanvasApi>,\n) {\n const { selectTool: selectToolOpts, selectable = true, viewport, modes } = props;\n const devtools = useDevtoolsOverride(props.debug), { debug } = devtools;\n const descriptor = (props.poseDescriptor ?? AUTO_POSE_DESCRIPTOR) as PoseDescriptor<TPose>;\n const deviceProfile = useDeviceProfile();\n const scene = useBakedScene(props.scene);\n const getActiveMode = useMemo(() => (modes ? getActiveModeFor(modes) : undefined), [modes]);\n const heldModifiers = useHeldModifiers();\n\n // Our own refs, so input listeners attach even when the consumer forwards its own ref.\n const internalCanvasRef = useRef<HTMLElement | null>(null);\n const canvasApiRef = useRef<CanvasExtensionApi | null>(null);\n const declaredSize = useLatest({ width: props.width ?? 0, height: props.height ?? 0 });\n const { viewState, viewAnimation, camera } = useCanvasCamera({\n view: props.view, defaultView: props.defaultView, onViewChange: props.onViewChange, viewBounds: props.viewBounds,\n dims: () => canvasApiRef.current?.getSurfaceRect() ?? declaredSize.current,\n requestRedraw: () => { canvasApiRef.current?.requestRedraw(); },\n });\n const { viewRef } = viewState;\n const kinds = useNodeKinds(scene, props.routing);\n const selection = useCanvasSelection({ scene, props, selectable, kindOf: kinds.kindOf });\n const enabled = useEnabledFeatures(\n props.features, props.presetSource.named, viewport !== undefined, selectToolOpts?.rotate !== false,\n );\n const { pathEditState, selectToolWithDefaults } = useSceneCanvasPathEdit({\n host: props.pathEdit, opening: props.defaultPathEdit, getActiveMode, scene, selection,\n extensions: enabled.pathEdit, selectTool: selectToolOpts,\n });\n const picking = useScenePicking({ scene, selection, descriptor, props, viewRef, selectTool: selectToolWithDefaults, kinds });\n const { adapter, boundsOf, planeOfNode } = picking;\n const getNodeAtPointRef = useLatest(picking.getNodeAtPoint);\n const groupEntry = useGroupEntryContribution({ pickHit: picking.pickBest, tree: adapter, boxOf: boundsOf });\n const tools = useSceneCanvasTools({\n props: props as SceneCanvasToolProps, select: picking.selectTool, move: picking.moveOptions,\n enabled, presetSource: props.presetSource, groupEntry,\n });\n\n // The wrapper's `<InputScope>` provides it.\n const actionsRegistry = useActionsRegistry();\n const { dispatcher, gestureSource, previewIdsExtra, previewPoseExtra } = useCanvasDispatcher(actionsRegistry);\n useEffect(() => publishPreviews(scene, dispatcher), [scene, dispatcher]);\n useMagnificationCheck(scene as Scene<unknown, string, unknown>);\n\n const frameColor = useChromeColor(internalCanvasRef, ENTERED_FRAME_TOKEN, ENTERED_FRAME_COLOR);\n const { editor: textEditor, layers } = useCanvasTextEditor(scene as Scene<TData, string, unknown>, internalCanvasRef, props);\n const layered = useSceneCanvasLayers({\n layers, presetLayers: enabled.layers, targetScale: deviceProfile.targetScale, scene, adapter, poseDescriptor: descriptor,\n enteredGroup: picking.enteredGroup, frameColor, alphaFor: props.alphaFor, colorOverrides: props.animator?.colorOverrides, boundsOf, planeOfNode,\n poseTransition: props.poseTransition, previewIds: previewIdsExtra, dispatcher, snapReadout: props.snap?.readout !== false, snapReadoutStyle: props.snap?.readoutStyle, pathEditState,\n slops: debug !== undefined && debug !== false && debug.slops === true,\n boundsIncludeStroke: props.geometry?.boundsIncludeStroke ?? true, selectTool: selectToolOpts,\n });\n const redrawOn = useSceneRedrawSources({ props, scene, heldModifiers, departures: layered.departures });\n\n const chrome = useSceneCanvasChrome({\n source: {\n getMode: getActiveMode, getFocused: props.getFocused, getModifiers: heldModifiers.get,\n resizable: selectToolOpts?.resize?.resizable,\n editingAnchors: () => pathEditState.getEditingId() !== '', device: deviceProfile,\n getHiddenChrome: () => hiddenChromeOf(tools.tools),\n },\n rules: { enabled, selectable, chromeVisibility: props.chromeVisibility },\n hover: { canvasApiRef, nodeAtPointRef: getNodeAtPointRef, ...(props.onHover ? { onChange: props.onHover } : {}) },\n selection: selection.current as readonly NodeId[], viewRef, dispatcher,\n });\n\n const { ingest, clipboard: ingestionClipboard, handlers: ingestionHandlers } = useCanvasIngestion(adapter, () => actionsRegistry, props.ingestion);\n const { views: addedViews, addView, viewAt, aimOf, setAim } = useAddedViews();\n // The consumer's handle extends the primitive's with `ingest`, which needs the action stack.\n const { handleRef, ready: canvasReady } = useSceneCanvasHandle({\n ref, elementRef: internalCanvasRef, apiRef: canvasApiRef, onElement: chrome.trackHoverOn,\n ingest, viewAnimation, camera, addView, viewAt, aimOf, setAim,\n });\n const viewInputs = useSurfaceViewInputs({ picking, selection, resizeHandles: layered.resizeHandles,\n descriptor: descriptor as PoseDescriptor<unknown>, chromeCaps: chrome.chromeCaps, rotationBadge: layered.rotationBadge,\n });\n\n return (\n <CanvasKitProviders viewInputs={viewInputs}>\n <Canvas<TPose>\n ref={handleRef} adapter={adapter} selection={selection} poseDescriptor={descriptor}\n tools={tools.tools} layers={layered.layers}\n // The chrome's bounds are the picker's: a node on a parallax plane is\n // boxed where the plane draws it, and a `geometry.boundsOf` reaches both.\n boundsOf={boundsOf} boundsOfPose={picking.boundsOfPose}\n getIsVisible={chrome.getIsVisible}\n // The gesture surface behind `helpersRef.getGestureBounds()` /\n // `subscribeGestures()` — Canvas has no dispatcher of its own.\n gestureSource={gestureSource}\n previewPoseExtra={previewPoseExtra}\n {...(debug !== undefined ? { debug: canvasDebug(debug) } : {})}\n contentVersion={scene.getVersion} layerVisibility={props.layerVisibility} layerOrder={props.layerOrder}\n viewState={viewState} redrawOn={redrawOn}\n {...canvasPassThrough(props)}\n />\n <DevHuds\n cursorCoords={props.cursorCoordsHud} pick={props.pickHud} modality={props.modalityHud}\n canvasRef={internalCanvasRef} canvasApiRef={canvasApiRef}\n detachedInput={props.paintInto ? props.inputElement ?? null : undefined}\n viewRef={viewRef} pickEvery={picking.pickEvery} pickBest={picking.pickBest}\n />\n <GestureReason dispatcher={dispatcher} canvasRef={internalCanvasRef} viewRef={viewRef} />\n <SceneCanvasInput\n props={props as SceneCanvasInputOptions} scene={scene as Scene<unknown, string, unknown>}\n selection={selection} descriptor={descriptor as PoseDescriptor<unknown>}\n picking={{ ...picking, adapter: adapter as unknown as BridgeAdapter }} nodeAtPointRef={getNodeAtPointRef}\n tools={tools} viewOn={enabled.has('view')} camera={{ viewState, viewAnimation }}\n dispatcher={dispatcher} pathEdit={{ state: pathEditState }}\n chrome={chrome} overlay={layered} ingestionClipboard={ingestionClipboard} ingestionHandlers={ingestionHandlers} devtools={devtools}\n canvas={{ elementRef: internalCanvasRef, apiRef: canvasApiRef, ready: canvasReady }} snapSources={enabled.snapSources} snapStore={layered.snapStore}\n />\n <SurfaceDeclarations views={props.views} entries={contributionEntries(tools.tools)} added={addedViews} />\n <DefaultTextEditDep editor={textEditor} onDoubleClick={enabled.has('edit')} />\n {props.children}\n </CanvasKitProviders>\n );\n}\n\nconst SceneCanvasInnerForwardRef = forwardRef(SceneCanvasInner);\n\n// The canvas's input scope sits above `SceneCanvasInner`, whose own hooks\n// (`useTools` among them) must already read this canvas's tool and registries.\n// Its device profile too, so the canvas and everything under it share one.\n/** A scene canvas resolving its `features` through `source`. */\nexport function renderSceneCanvas<TData, TLayer extends string, TPose>(\n source: PresetSource,\n { device, ...props }: SceneCanvasProps<TData, TLayer, TPose>,\n ref: React.ForwardedRef<SceneCanvasApi>,\n) {\n return (\n <InputScope yoke={props.yoke}>\n <DeviceProfileProvider value={device}>\n <ViewRegistryProvider>\n <SceneCanvasInnerForwardRef {...(props as SceneCanvasProps<unknown, string, unknown>)} presetSource={source} ref={ref} />\n </ViewRegistryProvider>\n </DeviceProfileProvider>\n </InputScope>\n );\n}\n\nfunction SceneCanvasWrapper<TData, TLayer extends string, TPose>(\n props: SceneCanvasProps<TData, TLayer, TPose>, ref: React.ForwardedRef<SceneCanvasApi>,\n) {\n return renderSceneCanvas(CORE_PRESET_SOURCE, props, ref);\n}\n\n// Marked pure so a bundle using only `LeanSceneCanvas` drops it, and core's named presets with it.\n/**\n * The canvas component: renders a `Scene` and wires the interaction stack\n * around it.\n *\n * Mounted bare it renders the scene, keeps a selection no input sets, and\n * runs a gesture dispatcher for whatever bindings the consumer adds. The\n * `features` presets turn the kit's behavior on — `features={['draw']}` is the\n * whole editor: tools, standard actions and their keys, selection chrome,\n * undo. This is the intended entry point; the lower-level primitives it\n * composes are not part of the public surface.\n *\n * Its ref exposes a `SceneCanvasApi` for the imperative operations that do not\n * fit a prop (view control, hit queries, redraw requests).\n */\nexport const SceneCanvas = /* @__PURE__ */ forwardRef(SceneCanvasWrapper) as <\n TData, TLayer extends string, TPose,\n>(\n props: SceneCanvasProps<TData, TLayer, TPose> & { ref?: React.Ref<SceneCanvasApi> },\n) => ReturnType<typeof SceneCanvasInner>;\n\nexport { DEFAULT_HANDLE_SIZE, BUILTIN_TOOL_IDS } from './SceneCanvas/props';\nexport {\n BUILTIN_TOOLS, BUILTIN_TOOL_GROUPS, TOOL_GROUP_ORDER,\n SELECT_TOOLS, ANCHOR_TOOLS, VIEW_TOOLS, SHAPE_TOOLS, DRAW_TOOLS, TYPE_TOOLS, PAGE_TOOLS,\n} from './SceneCanvas/builtinToolSets';\nexport { mergeLayersWithDefaults } from './SceneCanvas/mergeLayers';\nexport type {\n SceneCanvasProps, SceneCanvasHit, SceneCanvasLayers, SceneCanvasLongPress, BuiltinToolId,\n} from './SceneCanvas/props';\nexport type { CoordTraceEntry } from './SceneCanvas/coordTrace';\n"],"mappings":"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"}
@@ -1,13 +1,13 @@
1
- import { normalizeView } from "../core/viewport/view.js";
2
1
  import { useCanvasSurface } from "./useCanvasSurface.js";
3
2
  import { SurfaceCanvas } from "./SurfaceCanvas.js";
4
3
  import { useSurfaceSize } from "./useSurfaceSize.js";
5
4
  import { sceneViewFrame } from "./sceneViewRender.js";
5
+ import { normalizeView } from "../core/viewport/view.js";
6
6
  import { useCallback, useEffect, useRef, useSyncExternalStore } from "react";
7
7
  import { assignRef } from "@weasel-js/react";
8
8
  import { jsx } from "react/jsx-runtime";
9
9
 
10
- //#region src/canvas/SceneViewCanvas.tsx
10
+ // src/canvas/SceneViewCanvas.tsx
11
11
  /**
12
12
  * `<SceneViewCanvas>` — pointer-inert, read-only render of a `Scene` at a
13
13
  * given `View` into its own `<canvas>` DOM element.
@@ -76,6 +76,5 @@ function SceneViewCanvasInner(props) {
76
76
  */
77
77
  var SceneViewCanvas = SceneViewCanvasInner;
78
78
 
79
- //#endregion
80
79
  export { SceneViewCanvas };
81
80
  //# sourceMappingURL=SceneViewCanvas.js.map
@@ -2,7 +2,7 @@ import { forwardRef, useCallback } from "react";
2
2
  import { adoptCssOnce, assignRef } from "@weasel-js/react";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
 
5
- //#region src/canvas/SurfaceCanvas.tsx
5
+ // src/canvas/SurfaceCanvas.tsx
6
6
  /** The CSS size of a canvas the kit renders: its `width` and `height` props,
7
7
  * and its parent's box on an axis given neither. Zero specificity, so a class
8
8
  * the consumer passes resizes the element.
@@ -40,6 +40,5 @@ var SurfaceCanvas = forwardRef(function SurfaceCanvas({ width, height, className
40
40
  });
41
41
  });
42
42
 
43
- //#endregion
44
43
  export { SURFACE_RULE, SurfaceCanvas, adoptSurfaceRule };
45
44
  //# sourceMappingURL=SurfaceCanvas.js.map
@@ -2,7 +2,7 @@ import { useOptionalViewRegistry } from "./viewRegistry.js";
2
2
  import { useCallback, useEffect } from "react";
3
3
  import { useLatest } from "@weasel-js/react";
4
4
 
5
- //#region src/canvas/ViewMarker.tsx
5
+ // src/canvas/ViewMarker.tsx
6
6
  /**
7
7
  * `<ViewMarker>` — one view's aim, outlined inside another view's frame: a
8
8
  * minimap's indicator, a picture-in-picture's footprint on the main view.
@@ -30,6 +30,5 @@ function ViewMarker(props) {
30
30
  return null;
31
31
  }
32
32
 
33
- //#endregion
34
33
  export { ViewMarker };
35
34
  //# sourceMappingURL=ViewMarker.js.map
@@ -1,6 +1,6 @@
1
1
  import { useMemo } from "react";
2
2
 
3
- //#region src/canvas/accentColor.ts
3
+ // src/canvas/accentColor.ts
4
4
  /** The accent canvas chrome paints in when the element sits under no theme. */
5
5
  var FALLBACK_ACCENT = "#4c8dff";
6
6
  /** Read the color custom property `name` off `el`, where the theme cascade lands on a canvas. */
@@ -43,6 +43,5 @@ function useChromeColor(ref, name, fallback) {
43
43
  ]);
44
44
  }
45
45
 
46
- //#endregion
47
46
  export { FALLBACK_ACCENT, accentColorOf, chromeColorOf, useChromeColor, watchThemeOf };
48
47
  //# sourceMappingURL=accentColor.js.map
@@ -1,7 +1,7 @@
1
- import { createNodeMemoScope } from "../core/scene/nodeMemo.js";
2
1
  import { resolveDerivedPath } from "../core/scene/derivedPath.js";
2
+ import { createNodeMemoScope } from "../core/scene/nodeMemo.js";
3
3
 
4
- //#region src/canvas/adapterDerivedPath.ts
4
+ // src/canvas/adapterDerivedPath.ts
5
5
  var scopes = /* @__PURE__ */ new WeakMap();
6
6
  /**
7
7
  * The path the node `id` computes from its dependencies, or `null` when it
@@ -36,6 +36,5 @@ function adapterDerivedPathOf(adapter) {
36
36
  return pathOf;
37
37
  }
38
38
 
39
- //#endregion
40
39
  export { adapterDerivedPathOf };
41
40
  //# sourceMappingURL=adapterDerivedPath.js.map
@@ -1,6 +1,6 @@
1
1
  import { adapterDerivedPathOf } from "./adapterDerivedPath.js";
2
2
 
3
- //#region src/canvas/adapterPickSource.ts
3
+ // src/canvas/adapterPickSource.ts
4
4
  /**
5
5
  * A source over a bare `SelectAdapter`, for consumers with no `Scene`.
6
6
  *
@@ -55,6 +55,5 @@ function adapterPickSource(adapter, gates = {}) {
55
55
  };
56
56
  }
57
57
 
58
- //#endregion
59
58
  export { adapterPickSource };
60
59
  //# sourceMappingURL=adapterPickSource.js.map
@@ -1,10 +1,10 @@
1
- import { targetSizesPx } from "../core/device/targets.js";
2
1
  import { hitAffordanceRegions } from "../affordances/hitAffordanceRegions.js";
3
2
  import { createCornerResizeAffordance } from "../affordances/cornerResize.js";
4
3
  import { createRotationAffordance } from "../affordances/rotationHandle.js";
5
4
  import { createPathAnchorAffordances } from "../affordances/pathAnchors.js";
5
+ import { targetSizesPx } from "../core/device/targets.js";
6
6
 
7
- //#region src/canvas/affordanceAt.ts
7
+ // src/canvas/affordanceAt.ts
8
8
  /**
9
9
  * The kit's selection chrome as affordances, bottom → top: rotate ring (and
10
10
  * badge), resize handles, then anchors and their controls — a corner handle
@@ -123,6 +123,5 @@ function layerAffordance(layerId, claim) {
123
123
  };
124
124
  }
125
125
 
126
- //#endregion
127
126
  export { anchorStateFrom, buildAffordanceAt, buildClassifyTarget, chromeAffordances, layerAffordance };
128
127
  //# sourceMappingURL=affordanceAt.js.map
@@ -1,12 +1,12 @@
1
- import { sceneLayerKey } from "./sceneLayerPaint.js";
2
- import { wrapNodeOutput } from "./wrapNodeOutput.js";
3
1
  import { adapterDerivedPathOf } from "./adapterDerivedPath.js";
4
2
  import { buildSceneTree } from "./buildSceneTree.js";
5
- import { paintMissesView } from "./paintCull.js";
6
3
  import { debugSinkFrom } from "./drawEnvelope.js";
4
+ import { paintMissesView } from "./paintCull.js";
5
+ import { sceneLayerKey } from "./sceneLayerPaint.js";
6
+ import { wrapNodeOutput } from "./wrapNodeOutput.js";
7
7
  import { cullDrawCommands, viewToMat3 } from "@weasel-js/renderer";
8
8
 
9
- //#region src/canvas/buildSceneLayer.ts
9
+ // src/canvas/buildSceneLayer.ts
10
10
  /**
11
11
  * `cfg`'s `drawOne` and clip lookup, resolving derived paths off the adapter
12
12
  * when nothing scene-aware filled `derivedPathOf` in.
@@ -137,6 +137,5 @@ function buildSceneLayers(cfg, adapter, boundsOfFn, hideIds) {
137
137
  }));
138
138
  }
139
139
 
140
- //#endregion
141
140
  export { buildSceneLayer, buildSceneLayers };
142
141
  //# sourceMappingURL=buildSceneLayer.js.map
@@ -1,13 +1,13 @@
1
- import { deriveParallaxView, planeMap } from "../core/viewport/parallax.js";
1
+ import { ownClipOf } from "./ownClip.js";
2
2
  import { definesFrame } from "../core/scene/effectivePose.js";
3
+ import { deriveParallaxView, planeMap } from "../core/viewport/parallax.js";
4
+ import { scenePlaneOf } from "./scenePickSource.js";
3
5
  import { clipCarrier, planeTransform } from "./planeClips.js";
4
6
  import { splitOverChildren } from "./overChildren.js";
5
- import { ownClipOf } from "./ownClip.js";
6
7
  import { hidesSubtree } from "../core/scene/nodeGates.js";
7
- import { scenePlaneOf } from "./scenePickSource.js";
8
8
  import { mat3 } from "@weasel-js/geom";
9
9
 
10
- //#region src/canvas/buildSceneTree.ts
10
+ // src/canvas/buildSceneTree.ts
11
11
  /** Wrap `cmds` in one nested group per chain entry, so the renderer intersects
12
12
  * the clips and applies each copy's transform to everything inside it.
13
13
  * Outermost group carries the ancestor-most entry; innermost holds `cmds`. */
@@ -117,6 +117,5 @@ function buildSceneTree(adapter, drawOne, view, forLayer, derivedPathOf, culled)
117
117
  return out;
118
118
  }
119
119
 
120
- //#endregion
121
120
  export { buildSceneTree };
122
121
  //# sourceMappingURL=buildSceneTree.js.map
@@ -3,7 +3,7 @@ import { WeaselRenderer } from "@weasel-js/renderer";
3
3
  import { viewToMat3 as viewToMat3$1 } from "@weasel-js/geom";
4
4
  import { createEmitter } from "@weasel-js/registry";
5
5
 
6
- //#region src/canvas/canvasRenderer.ts
6
+ // src/canvas/canvasRenderer.ts
7
7
  /**
8
8
  * The one renderer lifetime in core. Every on-screen surface holds its
9
9
  * `WeaselRenderer` through a `leaseCanvasRenderer` lease.
@@ -189,6 +189,5 @@ function releaseCanvasRenderer(canvas) {
189
189
  lease.release();
190
190
  }
191
191
 
192
- //#endregion
193
192
  export { leaseCanvasRenderer, paintCanvas, releaseCanvasRenderer, resolveDpr, shaderKeyOf };
194
193
  //# sourceMappingURL=canvasRenderer.js.map
@@ -1,4 +1,4 @@
1
- //#region src/canvas/colorOverrides.ts
1
+ // src/canvas/colorOverrides.ts
2
2
  var clock = () => typeof performance !== "undefined" ? performance.now() : Date.now();
3
3
  /**
4
4
  * Wrap a `drawOne` so a node with a live color override reaches its painter
@@ -19,6 +19,5 @@ function withColorOverrides(registry, drawOne, now = clock) {
19
19
  };
20
20
  }
21
21
 
22
- //#endregion
23
22
  export { withColorOverrides };
24
23
  //# sourceMappingURL=colorOverrides.js.map
@@ -1,4 +1,4 @@
1
- //#region src/canvas/contextAttributes.ts
1
+ // src/canvas/contextAttributes.ts
2
2
  /**
3
3
  * What a canvas's WebGL2 context is opened with. A context keeps the attributes of whoever opened it
4
4
  * first, and the renderer refuses one without a stencil buffer, so anything that may open a weasel
@@ -9,6 +9,5 @@ var CANVAS_CONTEXT_ATTRIBUTES = Object.freeze({
9
9
  stencil: true
10
10
  });
11
11
 
12
- //#endregion
13
12
  export { CANVAS_CONTEXT_ATTRIBUTES };
14
13
  //# sourceMappingURL=contextAttributes.js.map
@@ -1,6 +1,6 @@
1
1
  import { multiply } from "@weasel-js/geom";
2
2
 
3
- //#region src/canvas/copiesAbove.ts
3
+ // src/canvas/copiesAbove.ts
4
4
  /**
5
5
  * Every transform content placed in `container` is drawn under besides as
6
6
  * authored: the `copiesFromPose` of the container and of each container above
@@ -32,6 +32,5 @@ function copiesAbove(scene, id, poseOf) {
32
32
  return copiesWithin(scene, scene.get(id)?.parent ?? null, poseOf);
33
33
  }
34
34
 
35
- //#endregion
36
35
  export { copiesAbove, copiesWithin };
37
36
  //# sourceMappingURL=copiesAbove.js.map
@@ -3,7 +3,7 @@ import { overChildren } from "./overChildren.js";
3
3
  import { textCommandFromRuns } from "@weasel-js/renderer";
4
4
  import { INHERIT } from "@weasel-js/paint";
5
5
 
6
- //#region src/canvas/defaultDrawOne.ts
6
+ // src/canvas/defaultDrawOne.ts
7
7
  function pixelScaleOf(view) {
8
8
  const dpr = typeof window !== "undefined" && window.devicePixelRatio || 1;
9
9
  return Math.max(Math.abs(view.scale.x), Math.abs(view.scale.y)) * dpr;
@@ -73,6 +73,5 @@ function paintBoundsFor(drawOne) {
73
73
  return drawOne === defaultDrawOne ? defaultPaintBounds : void 0;
74
74
  }
75
75
 
76
- //#endregion
77
76
  export { defaultDrawOne, defaultPaintBounds, paintBoundsFor };
78
77
  //# sourceMappingURL=defaultDrawOne.js.map
@@ -2,7 +2,7 @@ import { hitTestArea, regionPickOptions } from "./hitTestArea.js";
2
2
  import { useLatest } from "@weasel-js/react";
3
3
  import { useDepSource } from "@weasel-js/routing/react";
4
4
 
5
- //#region src/canvas/deps/areaSelect.ts
5
+ // src/canvas/deps/areaSelect.ts
6
6
  /**
7
7
  * `useAreaSelectDepSource` — wires the `areaSelect` dep consumed by
8
8
  * `areaSelectAction`. The dep exposes:
@@ -14,27 +14,29 @@ import { useDepSource } from "@weasel-js/routing/react";
14
14
  * ref internally), so callers can pass fresh selection/scene refs without
15
15
  * triggering re-registration.
16
16
  */
17
- function useAreaSelectDepSource(scene, selection, descriptor, alphaOf, reachable) {
17
+ function useAreaSelectDepSource(scene, selection, descriptor, alphaOf, reachable, targetOf) {
18
18
  const sceneRef = useLatest(scene);
19
19
  const selectionRef = useLatest(selection);
20
20
  const descriptorRef = useLatest(descriptor);
21
21
  const alphaOfRef = useLatest(alphaOf);
22
22
  const reachableRef = useLatest(reachable);
23
+ const targetOfRef = useLatest(targetOf);
23
24
  useDepSource("areaSelect", () => {
24
25
  const sc = sceneRef.current;
25
26
  const s = selectionRef.current;
26
27
  const d = descriptorRef.current;
27
28
  const a = alphaOfRef.current;
28
29
  const r = reachableRef.current;
30
+ const t = targetOfRef.current;
29
31
  const keep = (ids) => r ? ids.filter((id) => r(id)) : ids;
30
32
  return {
31
33
  hitTestArea: (bounds, view) => keep(hitTestArea(sc, bounds, regionPickOptions(view, a), d)),
34
+ ...t ? { targetOf: t } : {},
32
35
  getSelection: () => s.current,
33
36
  setSelection: (ids) => s.set(ids)
34
37
  };
35
38
  });
36
39
  }
37
40
 
38
- //#endregion
39
41
  export { useAreaSelectDepSource };
40
42
  //# sourceMappingURL=areaSelect.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"areaSelect.js","names":["hitTestAreaShared"],"sources":["../../../src/canvas/deps/areaSelect.ts"],"sourcesContent":["/**\n * `useAreaSelectDepSource` — wires the `areaSelect` dep consumed by\n * `areaSelectAction`. The dep exposes:\n * - `hitTestArea(bounds)` — silhouette-aware scan over `scene.renderOrderNodes()`\n * (rect poses by AABB; polygon poses by the kernel polygon-overlap test).\n * - `getSelection` / `setSelection` — passthrough to the kit selection api.\n *\n * Built once per render and stabilised by `useDepSource` (which reads via a\n * ref internally), so callers can pass fresh selection/scene refs without\n * triggering re-registration.\n */\nimport { useDepSource } from '@weasel-js/routing/react';\nimport { useLatest } from '@weasel-js/react';\nimport type { AreaSelectDep } from 'interactions/actions/depSchema';\nimport type { Scene, NodeId } from 'core/scene/types';\nimport type { SelectionApi } from 'core/selection/useSelection';\nimport type { PoseDescriptor } from 'interactions/actions/resize/geometry';\nimport { hitTestArea as hitTestAreaShared, regionPickOptions } from './hitTestArea';\n\nexport function useAreaSelectDepSource(\n scene: Scene<unknown, string, unknown>,\n selection: SelectionApi,\n descriptor?: PoseDescriptor<unknown>,\n /** The painted alpha the surface's layers apply, which every view shares. */\n alphaOf?: (id: string) => number,\n /** Whether a node can be reached at all: the canvas's one answer, which picking reads too. */\n reachable?: (id: string) => boolean,\n): void {\n const sceneRef = useLatest(scene);\n const selectionRef = useLatest(selection);\n const descriptorRef = useLatest(descriptor);\n const alphaOfRef = useLatest(alphaOf);\n const reachableRef = useLatest(reachable);\n\n useDepSource('areaSelect', (): AreaSelectDep => {\n const sc = sceneRef.current;\n const s = selectionRef.current;\n const d = descriptorRef.current;\n const a = alphaOfRef.current;\n const r = reachableRef.current;\n const keep = (ids: NodeId[]): NodeId[] => (r ? ids.filter((id) => r(id)) : ids);\n return {\n hitTestArea: (bounds, view) =>\n keep(hitTestAreaShared(sc, bounds, regionPickOptions(view, a), d)),\n getSelection: () => s.current as NodeId[],\n setSelection: (ids) => s.set(ids),\n };\n });\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAmBA,SAAgB,uBACd,OACA,WACA,YAEA,SAEA,WACM;CACN,MAAM,WAAW,UAAU,KAAK;CAChC,MAAM,eAAe,UAAU,SAAS;CACxC,MAAM,gBAAgB,UAAU,UAAU;CAC1C,MAAM,aAAa,UAAU,OAAO;CACpC,MAAM,eAAe,UAAU,SAAS;CAExC,aAAa,oBAAmC;EAC9C,MAAM,KAAK,SAAS;EACpB,MAAM,IAAI,aAAa;EACvB,MAAM,IAAI,cAAc;EACxB,MAAM,IAAI,WAAW;EACrB,MAAM,IAAI,aAAa;EACvB,MAAM,QAAQ,QAA6B,IAAI,IAAI,QAAQ,OAAO,EAAE,EAAE,CAAC,IAAI;EAC3E,OAAO;GACL,cAAc,QAAQ,SACpB,KAAKA,YAAkB,IAAI,QAAQ,kBAAkB,MAAM,CAAC,GAAG,CAAC,CAAC;GACnE,oBAAoB,EAAE;GACtB,eAAe,QAAQ,EAAE,IAAI,GAAG;EAClC;CACF,CAAC;AACH"}
1
+ {"version":3,"file":"areaSelect.js","names":["hitTestAreaShared"],"sources":["../../../src/canvas/deps/areaSelect.ts"],"sourcesContent":["/**\n * `useAreaSelectDepSource` — wires the `areaSelect` dep consumed by\n * `areaSelectAction`. The dep exposes:\n * - `hitTestArea(bounds)` — silhouette-aware scan over `scene.renderOrderNodes()`\n * (rect poses by AABB; polygon poses by the kernel polygon-overlap test).\n * - `getSelection` / `setSelection` — passthrough to the kit selection api.\n *\n * Built once per render and stabilised by `useDepSource` (which reads via a\n * ref internally), so callers can pass fresh selection/scene refs without\n * triggering re-registration.\n */\nimport { useDepSource } from '@weasel-js/routing/react';\nimport { useLatest } from '@weasel-js/react';\nimport type { AreaSelectDep } from 'interactions/actions/depSchema';\nimport type { Scene, NodeId } from 'core/scene/types';\nimport type { SelectionApi } from 'core/selection/useSelection';\nimport type { PoseDescriptor } from 'interactions/actions/resize/geometry';\nimport { hitTestArea as hitTestAreaShared, regionPickOptions } from './hitTestArea';\n\nexport function useAreaSelectDepSource(\n scene: Scene<unknown, string, unknown>,\n selection: SelectionApi,\n descriptor?: PoseDescriptor<unknown>,\n /** The painted alpha the surface's layers apply, which every view shares. */\n alphaOf?: (id: string) => number,\n /** Whether a node can be reached at all: the canvas's one answer, which picking reads too. */\n reachable?: (id: string) => boolean,\n /** The node selecting a hit selects, as a click picks. */\n targetOf?: (id: string) => string,\n): void {\n const sceneRef = useLatest(scene);\n const selectionRef = useLatest(selection);\n const descriptorRef = useLatest(descriptor);\n const alphaOfRef = useLatest(alphaOf);\n const reachableRef = useLatest(reachable);\n const targetOfRef = useLatest(targetOf);\n\n useDepSource('areaSelect', (): AreaSelectDep => {\n const sc = sceneRef.current;\n const s = selectionRef.current;\n const d = descriptorRef.current;\n const a = alphaOfRef.current;\n const r = reachableRef.current;\n const t = targetOfRef.current;\n const keep = (ids: NodeId[]): NodeId[] => (r ? ids.filter((id) => r(id)) : ids);\n return {\n hitTestArea: (bounds, view) =>\n keep(hitTestAreaShared(sc, bounds, regionPickOptions(view, a), d)),\n ...(t ? { targetOf: t } : {}),\n getSelection: () => s.current as NodeId[],\n setSelection: (ids) => s.set(ids),\n };\n });\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAmBA,SAAgB,uBACd,OACA,WACA,YAEA,SAEA,WAEA,UACM;CACN,MAAM,WAAW,UAAU,KAAK;CAChC,MAAM,eAAe,UAAU,SAAS;CACxC,MAAM,gBAAgB,UAAU,UAAU;CAC1C,MAAM,aAAa,UAAU,OAAO;CACpC,MAAM,eAAe,UAAU,SAAS;CACxC,MAAM,cAAc,UAAU,QAAQ;CAEtC,aAAa,oBAAmC;EAC9C,MAAM,KAAK,SAAS;EACpB,MAAM,IAAI,aAAa;EACvB,MAAM,IAAI,cAAc;EACxB,MAAM,IAAI,WAAW;EACrB,MAAM,IAAI,aAAa;EACvB,MAAM,IAAI,YAAY;EACtB,MAAM,QAAQ,QAA6B,IAAI,IAAI,QAAQ,OAAO,EAAE,EAAE,CAAC,IAAI;EAC3E,OAAO;GACL,cAAc,QAAQ,SACpB,KAAKA,YAAkB,IAAI,QAAQ,kBAAkB,MAAM,CAAC,GAAG,CAAC,CAAC;GACnE,GAAI,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC;GAC3B,oBAAoB,EAAE;GACtB,eAAe,QAAQ,EAAE,IAAI,GAAG;EAClC;CACF,CAAC;AACH"}
@@ -1,17 +1,17 @@
1
- import { poseDescriptorForNode } from "../../core/geometry/poseDescriptor.js";
2
- import { AUTO_POSE_DESCRIPTOR } from "../../core/geometry/autoPoseDescriptor.js";
3
1
  import { sceneInheritedPaintOf } from "../inheritedPaints.js";
4
- import { pathPaintOf } from "../nodeShapes/nodePaint.js";
5
- import { asNodeId } from "../../core/scene/types.js";
2
+ import { AUTO_POSE_DESCRIPTOR } from "../../core/geometry/autoPoseDescriptor.js";
3
+ import { poseDescriptorForNode } from "../../core/geometry/poseDescriptor.js";
6
4
  import { sceneMutators } from "../../core/scene/sceneMutators.js";
5
+ import { asNodeId } from "../../core/scene/types.js";
7
6
  import { scenePoseFrame } from "../../interactions/actions/poseFrame.js";
7
+ import { pathPaintOf } from "../nodeShapes/nodePaint.js";
8
8
  import { drawnPose, leafPath, storePiece } from "./pathLeaf.js";
9
9
  import { pathInWorld } from "@weasel-js/geom";
10
10
  import { useMemo } from "react";
11
11
  import { useLatest } from "@weasel-js/react";
12
12
  import { useDepSource } from "@weasel-js/routing/react";
13
13
 
14
- //#region src/canvas/deps/booleans.ts
14
+ // src/canvas/deps/booleans.ts
15
15
  /**
16
16
  * The kit `booleansAdapter` dep: what the Pathfinder actions, and any tool
17
17
  * reading the dep, work on over a canvas's own path leaves.
@@ -100,6 +100,5 @@ function useBooleansAdapterSource(scene, selection, adapter, poseDescriptor) {
100
100
  useDepSource("booleansAdapter", () => booleans);
101
101
  }
102
102
 
103
- //#endregion
104
103
  export { useBooleansAdapterSource };
105
104
  //# sourceMappingURL=booleans.js.map
@@ -1,7 +1,7 @@
1
1
  import { useEffect } from "react";
2
2
  import { useDepRegistry } from "@weasel-js/routing/react";
3
3
 
4
- //#region src/canvas/deps/changes.ts
4
+ // src/canvas/deps/changes.ts
5
5
  /**
6
6
  * `useDepChangeNotices` — tells the dep registry when the scene, the
7
7
  * selection, or the path-edit state changed. Sources are thunks, so nothing else lets chrome showing
@@ -16,6 +16,5 @@ function useDepChangeNotices(scene, selected, pathEdit) {
16
16
  }, [registry, selected]);
17
17
  }
18
18
 
19
- //#endregion
20
19
  export { useDepChangeNotices };
21
20
  //# sourceMappingURL=changes.js.map