@weasel-js/core 1.15.0 → 1.15.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (838) hide show
  1. package/CHANGELOG.md +199 -0
  2. package/dist/WeaselProvider.js +4 -5
  3. package/dist/affordances/composeAffordanceLayer.js +1 -2
  4. package/dist/affordances/cornerResize.js +4 -5
  5. package/dist/affordances/hitAffordanceRegions.js +1 -2
  6. package/dist/affordances/pathAnchors.js +1 -2
  7. package/dist/affordances/rotateCursor.js +1 -2
  8. package/dist/affordances/rotationHandle.js +2 -3
  9. package/dist/animation/behaviors/coast.js +1 -2
  10. package/dist/animation/behaviors/coastByWrite.js +2 -3
  11. package/dist/animation/behaviors/coastOnTargets.js +2 -3
  12. package/dist/animation/behaviors/momentum.js +1 -2
  13. package/dist/animation/clipTargets.js +1 -2
  14. package/dist/animation/departures.js +2 -3
  15. package/dist/animation/poseHelpers.js +2 -3
  16. package/dist/animation/poseTarget.js +5 -6
  17. package/dist/animation/poseTarget.js.map +1 -1
  18. package/dist/animation/poseTransition.js +1 -2
  19. package/dist/animation/reflow.js +9 -10
  20. package/dist/animation/reflow.js.map +1 -1
  21. package/dist/animation/rewind.js +1 -2
  22. package/dist/animation/rig/bindRig.js +2 -3
  23. package/dist/animation/rig/rigNode.js +3 -4
  24. package/dist/animation/rig/rigNode.js.map +1 -1
  25. package/dist/animation/rig/rigSeat.js +1 -2
  26. package/dist/animation/rig/skinBinding.js +1 -2
  27. package/dist/animation/rig/useRig.js +2 -3
  28. package/dist/animation/wrappers/animateLifecycle.js +1 -2
  29. package/dist/animation/wrappers/animateOnSetPose.js +1 -2
  30. package/dist/animation/wrappers/instantPose.js +1 -2
  31. package/dist/animation/writtenPoseTarget.js +1 -2
  32. package/dist/barrel/input.js +2 -1
  33. package/dist/barrel/interactions.js +2 -1
  34. package/dist/barrel/paint.js +2 -2
  35. package/dist/barrel/routing.js +2 -2
  36. package/dist/barrel/scene.js +2 -2
  37. package/dist/barrel/viewport.js +3 -3
  38. package/dist/canvas/Canvas.js +5 -6
  39. package/dist/canvas/CanvasView.js +6 -7
  40. package/dist/canvas/CursorCoordsHud.js +2 -3
  41. package/dist/canvas/DrawCanvas.js +3 -4
  42. package/dist/canvas/GestureReason.js +1 -2
  43. package/dist/canvas/GestureReason.module.js +1 -2
  44. package/dist/canvas/LeanSceneCanvas.js +2 -3
  45. package/dist/canvas/ModalityHud.js +2 -3
  46. package/dist/canvas/NodeShape.js +3 -4
  47. package/dist/canvas/PickHud.js +2 -3
  48. package/dist/canvas/SceneCanvas/ActionsProviderIfRoot.js +1 -2
  49. package/dist/canvas/SceneCanvas/CanvasKitProviders.js +3 -4
  50. package/dist/canvas/SceneCanvas/DepRegistryProviderIfRoot.js +1 -2
  51. package/dist/canvas/SceneCanvas/DevHuds.js +1 -2
  52. package/dist/canvas/SceneCanvas/PointerProviderIfRoot.js +18 -66
  53. package/dist/canvas/SceneCanvas/PointerProviderIfRoot.js.map +1 -1
  54. package/dist/canvas/SceneCanvas/SceneCanvasInput.js +4 -5
  55. package/dist/canvas/SceneCanvas/SurfaceDeclarations.js +1 -2
  56. package/dist/canvas/SceneCanvas/brushOverlay.js +1 -2
  57. package/dist/canvas/SceneCanvas/builtinToolSets.js +1 -2
  58. package/dist/canvas/SceneCanvas/canvasPassThrough.js +1 -2
  59. package/dist/canvas/SceneCanvas/contributionFrameHooks.js +1 -2
  60. package/dist/canvas/SceneCanvas/coordTrace.js +1 -2
  61. package/dist/canvas/SceneCanvas/defaultNodeProperties.js +3 -4
  62. package/dist/canvas/SceneCanvas/defaultNodeRouting.js +1 -2
  63. package/dist/canvas/SceneCanvas/defaultTextEditor.js +4 -5
  64. package/dist/canvas/SceneCanvas/describePresets.js +1 -2
  65. package/dist/canvas/SceneCanvas/dispatcherGestureBounds.js +1 -2
  66. package/dist/canvas/SceneCanvas/features.js +1 -2
  67. package/dist/canvas/SceneCanvas/insertPreviewCommands.js +1 -2
  68. package/dist/canvas/SceneCanvas/mergeLayers.js +1 -2
  69. package/dist/canvas/SceneCanvas/namedPresets.js +5 -6
  70. package/dist/canvas/SceneCanvas/poseGeometry.js +1 -2
  71. package/dist/canvas/SceneCanvas/poseRegistrars.js +1 -2
  72. package/dist/canvas/SceneCanvas/presets/arrange.js +2 -3
  73. package/dist/canvas/SceneCanvas/presets/baseline.js +1 -2
  74. package/dist/canvas/SceneCanvas/presets/chrome.js +1 -2
  75. package/dist/canvas/SceneCanvas/presets/composites.js +1 -2
  76. package/dist/canvas/SceneCanvas/presets/edit.js +4 -5
  77. package/dist/canvas/SceneCanvas/presets/ingest.js +1 -2
  78. package/dist/canvas/SceneCanvas/presets/paths.js +3 -4
  79. package/dist/canvas/SceneCanvas/presets/select.js +1 -2
  80. package/dist/canvas/SceneCanvas/presets/toolDriven.js +2 -3
  81. package/dist/canvas/SceneCanvas/presets/tools.js +1 -2
  82. package/dist/canvas/SceneCanvas/presets/transform.js +2 -3
  83. package/dist/canvas/SceneCanvas/presets/view.js +2 -3
  84. package/dist/canvas/SceneCanvas/props.js +1 -2
  85. package/dist/canvas/SceneCanvas/scenePointQuery.js +2 -3
  86. package/dist/canvas/SceneCanvas/shapeGeneratorProperties.js +1 -2
  87. package/dist/canvas/SceneCanvas/toolRegistry.js +2 -3
  88. package/dist/canvas/SceneCanvas/useActionTunings.js +1 -2
  89. package/dist/canvas/SceneCanvas/useActionsPropResolver.js +1 -2
  90. package/dist/canvas/SceneCanvas/useBakedScene.js +2 -3
  91. package/dist/canvas/SceneCanvas/useBuiltinShapeTools.js +7 -8
  92. package/dist/canvas/SceneCanvas/useBuiltinTools.js +2 -3
  93. package/dist/canvas/SceneCanvas/useCanvasCamera.js +2 -3
  94. package/dist/canvas/SceneCanvas/useCanvasDevtoolsRoot.js +1 -2
  95. package/dist/canvas/SceneCanvas/useCanvasDispatcher.js +1 -2
  96. package/dist/canvas/SceneCanvas/useCanvasSelection.js +8 -6
  97. package/dist/canvas/SceneCanvas/useCanvasSelection.js.map +1 -1
  98. package/dist/canvas/SceneCanvas/useCanvasTools.js +2 -3
  99. package/dist/canvas/SceneCanvas/useChromeAffordances.js +2 -3
  100. package/dist/canvas/SceneCanvas/useContributionRoles.js +1 -2
  101. package/dist/canvas/SceneCanvas/useDepartureGhostLayer.js +4 -5
  102. package/dist/canvas/SceneCanvas/useDispatcherOverlayLayer.js +2 -3
  103. package/dist/canvas/SceneCanvas/useHeldModifiers.js +1 -2
  104. package/dist/canvas/SceneCanvas/useMagnificationCheck.js +41 -0
  105. package/dist/canvas/SceneCanvas/useMagnificationCheck.js.map +1 -0
  106. package/dist/canvas/SceneCanvas/useNodeAtPoint.js +1 -2
  107. package/dist/canvas/SceneCanvas/useNodeKinds.js +2 -3
  108. package/dist/canvas/SceneCanvas/usePreviewGhostLayer.js +10 -11
  109. package/dist/canvas/SceneCanvas/useSceneCanvasHandle.js +1 -2
  110. package/dist/canvas/SceneCanvas/useSceneCanvasLayers.js +6 -7
  111. package/dist/canvas/SceneCanvas/useSceneCanvasPathEdit.js +1 -2
  112. package/dist/canvas/SceneCanvas/useSceneCanvasTools.js +1 -2
  113. package/dist/canvas/SceneCanvas/useSceneChrome.js +5 -6
  114. package/dist/canvas/SceneCanvas/useSceneGestureDispatcher.js +6 -7
  115. package/dist/canvas/SceneCanvas/useScenePicking.js +5 -6
  116. package/dist/canvas/SceneCanvas/useSceneRedrawSources.js +1 -2
  117. package/dist/canvas/SceneCanvas/useSceneSelectTool.js +7 -8
  118. package/dist/canvas/SceneCanvas/useSceneSlotLayers.js +2 -3
  119. package/dist/canvas/SceneCanvas/useSceneStandardActions.js +26 -18
  120. package/dist/canvas/SceneCanvas/useSceneStandardActions.js.map +1 -1
  121. package/dist/canvas/SceneCanvas/useSelectionOverlayLayer.js +2 -3
  122. package/dist/canvas/SceneCanvas/useSurfaceRouting.js +1 -2
  123. package/dist/canvas/SceneCanvas/useSurfaceViewInputs.js +1 -2
  124. package/dist/canvas/SceneCanvas/useToolKeybindings.js +1 -2
  125. package/dist/canvas/SceneCanvas/useViewportActions.js +3 -4
  126. package/dist/canvas/SceneCanvas/worldPointAt.js +1 -2
  127. package/dist/canvas/SceneCanvas.js +18 -17
  128. package/dist/canvas/SceneCanvas.js.map +1 -1
  129. package/dist/canvas/SceneViewCanvas.js +2 -3
  130. package/dist/canvas/SurfaceCanvas.js +1 -2
  131. package/dist/canvas/ViewMarker.js +1 -2
  132. package/dist/canvas/accentColor.js +4 -5
  133. package/dist/canvas/accentColor.js.map +1 -1
  134. package/dist/canvas/adapterDerivedPath.js +2 -3
  135. package/dist/canvas/adapterPickSource.js +1 -2
  136. package/dist/canvas/affordanceAt.js +2 -3
  137. package/dist/canvas/buildSceneLayer.js +4 -5
  138. package/dist/canvas/buildSceneTree.js +4 -5
  139. package/dist/canvas/canvasRenderer.js +1 -2
  140. package/dist/canvas/colorOverrides.js +1 -2
  141. package/dist/canvas/contextAttributes.js +1 -2
  142. package/dist/canvas/copiesAbove.js +1 -2
  143. package/dist/canvas/defaultDrawOne.js +1 -2
  144. package/dist/canvas/deps/areaSelect.js +5 -3
  145. package/dist/canvas/deps/areaSelect.js.map +1 -1
  146. package/dist/canvas/deps/booleans.js +5 -6
  147. package/dist/canvas/deps/changes.js +1 -2
  148. package/dist/canvas/deps/chromeRules.js +1 -2
  149. package/dist/canvas/deps/debug.js +1 -2
  150. package/dist/canvas/deps/dispatchSources.js +1 -2
  151. package/dist/canvas/deps/dispatcher.js +1 -2
  152. package/dist/canvas/deps/editAnchors.js +3 -4
  153. package/dist/canvas/deps/enteredGroup.js +6 -6
  154. package/dist/canvas/deps/enteredGroup.js.map +1 -1
  155. package/dist/canvas/deps/geometryProjection.js +1 -2
  156. package/dist/canvas/deps/hitTestArea.js +4 -5
  157. package/dist/canvas/deps/ingestion.js +1 -2
  158. package/dist/canvas/deps/insert.js +3 -4
  159. package/dist/canvas/deps/insertSite.js +3 -4
  160. package/dist/canvas/deps/kitSettings.js +1 -2
  161. package/dist/canvas/deps/lassoSelect.js +5 -3
  162. package/dist/canvas/deps/lassoSelect.js.map +1 -1
  163. package/dist/canvas/deps/layout.js +1 -2
  164. package/dist/canvas/deps/modeDefaultTool.js +1 -2
  165. package/dist/canvas/deps/nodeAtPoint.js +1 -2
  166. package/dist/canvas/deps/pathEditCommits.js +4 -5
  167. package/dist/canvas/deps/pathLeaf.js +1 -2
  168. package/dist/canvas/deps/pathLeafDeps.js +2 -3
  169. package/dist/canvas/deps/poseDescriptor.js +1 -2
  170. package/dist/canvas/deps/previewPaths.js +1 -2
  171. package/dist/canvas/deps/resizePolicy.js +1 -2
  172. package/dist/canvas/deps/selectionSnapshot.js +8 -4
  173. package/dist/canvas/deps/selectionSnapshot.js.map +1 -1
  174. package/dist/canvas/deps/slice.js +5 -6
  175. package/dist/canvas/deps/snap.js +3 -4
  176. package/dist/canvas/deps/surface.js +1 -2
  177. package/dist/canvas/deps/textEdit.js +1 -2
  178. package/dist/canvas/deps/transformFollowers.js +1 -2
  179. package/dist/canvas/deps/view.js +1 -2
  180. package/dist/canvas/derivedPath.js +6 -7
  181. package/dist/canvas/doubleClickTarget.js +1 -2
  182. package/dist/canvas/drawEnvelope.js +1 -2
  183. package/dist/canvas/drawnBounds.js +4 -5
  184. package/dist/canvas/getNodeAtPoint.js +1 -2
  185. package/dist/canvas/hostAnchor.js +1 -2
  186. package/dist/canvas/hud.module.js +1 -2
  187. package/dist/canvas/inheritedPaints.js +1 -2
  188. package/dist/canvas/insertPreviewExtent.js +1 -2
  189. package/dist/canvas/kitRequirements.js +1 -2
  190. package/dist/canvas/layerHover.js +1 -2
  191. package/dist/canvas/layerOrder.js +1 -2
  192. package/dist/canvas/layerSlots.js +1 -2
  193. package/dist/canvas/mountedCanvases.js +1 -2
  194. package/dist/canvas/nodeShapes/derivedPainter.js +2 -3
  195. package/dist/canvas/nodeShapes/imagePainter.js +1 -2
  196. package/dist/canvas/nodeShapes/measurePainter.js +2 -3
  197. package/dist/canvas/nodeShapes/memo.js +1 -2
  198. package/dist/canvas/nodeShapes/nodePaint.js +1 -2
  199. package/dist/canvas/nodeShapes/pathPainter.js +3 -4
  200. package/dist/canvas/nodeShapes/poseBox.js +1 -2
  201. package/dist/canvas/nodeShapes/rectFallbackPainter.js +1 -2
  202. package/dist/canvas/nodeShapes/shapePainter.js +2 -3
  203. package/dist/canvas/nodeShapes/strokedBounds.js +1 -2
  204. package/dist/canvas/nodeShapes/textPainter.js +1 -2
  205. package/dist/canvas/overChildren.js +1 -2
  206. package/dist/canvas/overlayRoleStrokes.js +1 -2
  207. package/dist/canvas/ownClip.js +1 -2
  208. package/dist/canvas/paintCull.js +1 -2
  209. package/dist/canvas/paintedCursorLayer.js +1 -2
  210. package/dist/canvas/pathOverlay.js +1 -2
  211. package/dist/canvas/pickIndex/nodeBroadBox.js +3 -4
  212. package/dist/canvas/pickIndex/scenePickIndex.js +3 -4
  213. package/dist/canvas/pickReach.js +1 -2
  214. package/dist/canvas/pickWalk.js +2 -3
  215. package/dist/canvas/planeClips.js +1 -2
  216. package/dist/canvas/poseRotation.js +1 -2
  217. package/dist/canvas/publishPreviews.js +1 -2
  218. package/dist/canvas/rasterReadback.js +1 -2
  219. package/dist/canvas/rasterToPng.js +1 -2
  220. package/dist/canvas/renderDebugSnapshot.js +1 -2
  221. package/dist/canvas/renderNeeds.js +1 -2
  222. package/dist/canvas/renderSceneToPixels.js +5 -6
  223. package/dist/canvas/sceneAdapter.js +37 -27
  224. package/dist/canvas/sceneAdapter.js.map +1 -1
  225. package/dist/canvas/sceneClipboard.js +19 -7
  226. package/dist/canvas/sceneClipboard.js.map +1 -1
  227. package/dist/canvas/sceneLayerPaint.js +1 -2
  228. package/dist/canvas/scenePickReads.js +1 -2
  229. package/dist/canvas/scenePickSource.js +5 -6
  230. package/dist/canvas/sceneSlotWiring.js +2 -3
  231. package/dist/canvas/sceneViewRender.js +5 -6
  232. package/dist/canvas/shownNodes.js +1 -2
  233. package/dist/canvas/slopsDebugLayer.js +9 -4
  234. package/dist/canvas/slopsDebugLayer.js.map +1 -1
  235. package/dist/canvas/surfaceContribution.js +1 -2
  236. package/dist/canvas/useCanvasElements.js +1 -2
  237. package/dist/canvas/useCanvasHandle.js +1 -2
  238. package/dist/canvas/useCanvasPaint.js +2 -3
  239. package/dist/canvas/useCanvasRenderer.js +1 -2
  240. package/dist/canvas/useCanvasSurface.js +1 -2
  241. package/dist/canvas/useCanvasView.js +2 -3
  242. package/dist/canvas/useClientToWorld.js +1 -2
  243. package/dist/canvas/useExtraLayers.js +1 -2
  244. package/dist/canvas/useFrameLoop.js +1 -2
  245. package/dist/canvas/useHitObserver.js +1 -2
  246. package/dist/canvas/useHostAnchor.js +1 -2
  247. package/dist/canvas/useInFlightBounds.js +6 -6
  248. package/dist/canvas/useInFlightBounds.js.map +1 -1
  249. package/dist/canvas/useLateContentRedraw.js +1 -2
  250. package/dist/canvas/useLayerStack.js +2 -3
  251. package/dist/canvas/usePaintedCursor.js +1 -2
  252. package/dist/canvas/useRedrawOn.js +1 -2
  253. package/dist/canvas/useSceneAdapter.js +1 -2
  254. package/dist/canvas/useSceneLayerList.js +1 -2
  255. package/dist/canvas/useSurfaceInput.js +1 -2
  256. package/dist/canvas/useSurfaceSize.js +1 -2
  257. package/dist/canvas/useToolCursor.js +1 -2
  258. package/dist/canvas/useViewAim.js +2 -3
  259. package/dist/canvas/useViewHelpers.js +5 -4
  260. package/dist/canvas/useViewHelpers.js.map +1 -1
  261. package/dist/canvas/useViewLayerGate.js +1 -2
  262. package/dist/canvas/useViewNesting.js +1 -2
  263. package/dist/canvas/useViewRegistrySurface.js +7 -5
  264. package/dist/canvas/useViewRegistrySurface.js.map +1 -1
  265. package/dist/canvas/viewInputs.js +1 -2
  266. package/dist/canvas/viewMarkers.js +1 -2
  267. package/dist/canvas/viewRegistry.js +6 -7
  268. package/dist/canvas/viewRegistry.js.map +1 -1
  269. package/dist/canvas/viewSnap.js +1 -2
  270. package/dist/canvas/watchElementMove.js +1 -2
  271. package/dist/canvas/wrapNodeOutput.js +1 -2
  272. package/dist/core/adapters/testing/rootsTree.js +1 -2
  273. package/dist/core/applyOps.js +1 -2
  274. package/dist/core/device/targets.js +1 -2
  275. package/dist/core/device/useDeviceProfile.js +1 -2
  276. package/dist/core/device/useTargetBasePx.js +1 -2
  277. package/dist/core/device/watchDevicePixelRatio.js +1 -2
  278. package/dist/core/geometry/autoPoseDescriptor.js +2 -3
  279. package/dist/core/geometry/booleanOfPaths.js +1 -2
  280. package/dist/core/geometry/inkExtents.js +1 -2
  281. package/dist/core/geometry/pathPoseDescriptor.js +1 -2
  282. package/dist/core/geometry/poseDescriptor.js +1 -2
  283. package/dist/core/geometry/regionHit.js +1 -2
  284. package/dist/core/geometry/targetFrame.js +1 -2
  285. package/dist/core/geometry/unionBounds.js +1 -2
  286. package/dist/core/layers/backgroundFill.js +1 -2
  287. package/dist/core/layers/children.js +1 -2
  288. package/dist/core/layers/gateLayer.js +1 -2
  289. package/dist/core/layers/layerGroup.js +1 -2
  290. package/dist/core/layers/redrawSource.js +1 -2
  291. package/dist/core/layers/render.js +1 -2
  292. package/dist/core/layers/retain.js +1 -2
  293. package/dist/core/ops/arrange.js +1 -2
  294. package/dist/core/ops/create.js +2 -3
  295. package/dist/core/ops/createHistory.js +2 -3
  296. package/dist/core/ops/delete.js +2 -3
  297. package/dist/core/ops/nodeFlags.js +1 -2
  298. package/dist/core/ops/registry.js +1 -2
  299. package/dist/core/ops/reorder/algorithms.js +1 -2
  300. package/dist/core/ops/reorder/index.js +3 -8
  301. package/dist/core/ops/reorder/index.js.map +1 -1
  302. package/dist/core/ops/reorder/setChildOrder.js +1 -2
  303. package/dist/core/ops/reparent.js +1 -2
  304. package/dist/core/ops/select.js +1 -2
  305. package/dist/core/ops/setData.js +1 -2
  306. package/dist/core/ops/setDependsOn.js +1 -2
  307. package/dist/core/ops/setLayer.js +1 -2
  308. package/dist/core/ops/setLayout.js +1 -2
  309. package/dist/core/ops/setPath.js +1 -2
  310. package/dist/core/ops/setText.js +1 -2
  311. package/dist/core/ops/slot.js +1 -2
  312. package/dist/core/ops/transform.js +1 -2
  313. package/dist/core/ops/writtenBy.js +1 -2
  314. package/dist/core/pages/fitViewToPage.js +3 -9
  315. package/dist/core/pages/fitViewToPage.js.map +1 -1
  316. package/dist/core/pages/pageEdits.js +3 -4
  317. package/dist/core/pages/pages.js +4 -11
  318. package/dist/core/pages/pages.js.map +1 -1
  319. package/dist/core/pages/pagesLayer.js +1 -2
  320. package/dist/core/paint/meshKind.js +1 -2
  321. package/dist/core/paint/meshKindLazy.js +18 -23
  322. package/dist/core/paint/meshKindLazy.js.map +1 -1
  323. package/dist/core/paint/paintKindEntry.js +1 -2
  324. package/dist/core/paint/paintKinds.js +1 -2
  325. package/dist/core/paint/registerMesh.js +1 -2
  326. package/dist/core/scene/NodeProperties.js +1 -2
  327. package/dist/core/scene/NodeRouting.js +1 -2
  328. package/dist/core/scene/annotation.js +1 -2
  329. package/dist/core/scene/appliedLog.js +1 -2
  330. package/dist/core/scene/arrivalWindow.js +2 -3
  331. package/dist/core/scene/arrivals.js +1 -2
  332. package/dist/core/scene/booleanGroup.js +1 -2
  333. package/dist/core/scene/booleanOfChildren.js +1 -2
  334. package/dist/core/scene/boundOps.js +1 -2
  335. package/dist/core/scene/carryDescendants.js +2 -3
  336. package/dist/core/scene/clipNothing.js +1 -2
  337. package/dist/core/scene/composeFrame.js +1 -2
  338. package/dist/core/scene/composePose.js +1 -2
  339. package/dist/core/scene/declaredFieldSetters.js +1 -2
  340. package/dist/core/scene/depFrame.js +1 -2
  341. package/dist/core/scene/depMemo.js +1 -2
  342. package/dist/core/scene/dependents.js +1 -2
  343. package/dist/core/scene/derivedParts.js +1 -2
  344. package/dist/core/scene/derivedPath.js +2 -3
  345. package/dist/core/scene/docValues.js +1 -2
  346. package/dist/core/scene/documentOf.js +1 -2
  347. package/dist/core/scene/editMode.js +1 -2
  348. package/dist/core/scene/editPass.js +1 -2
  349. package/dist/core/scene/effectivePose.js +3 -4
  350. package/dist/core/scene/fieldEdits.js +1 -2
  351. package/dist/core/scene/fontReads.js +1 -2
  352. package/dist/core/scene/historyFacade.js +1 -2
  353. package/dist/core/scene/historyForm.js +1 -2
  354. package/dist/core/scene/inheritedPaint.js +1 -2
  355. package/dist/core/scene/kitOps.js +16 -15
  356. package/dist/core/scene/kitOps.js.map +1 -1
  357. package/dist/core/scene/kitRegistry.js +2 -3
  358. package/dist/core/scene/layerOps.js +1 -2
  359. package/dist/core/scene/layerStack.js +1 -2
  360. package/dist/core/scene/layoutPass.js +4 -5
  361. package/dist/core/scene/lockGuard.js +1 -2
  362. package/dist/core/scene/minSize.js +1 -2
  363. package/dist/core/scene/nestedHit.js +1 -2
  364. package/dist/core/scene/nodeAsShown.js +1 -2
  365. package/dist/core/scene/nodeFlags.js +1 -2
  366. package/dist/core/scene/nodeFnFields.js +1 -2
  367. package/dist/core/scene/nodeGates.js +1 -2
  368. package/dist/core/scene/nodeMemo.js +1 -2
  369. package/dist/core/scene/nodeStore.js +2 -3
  370. package/dist/core/scene/notifier.js +1 -2
  371. package/dist/core/scene/opTable.js +1 -2
  372. package/dist/core/scene/outerOps.js +1 -2
  373. package/dist/core/scene/pathEffects/blend.js +3 -4
  374. package/dist/core/scene/pathEffects/blend.js.map +1 -1
  375. package/dist/core/scene/pathEffects/derive.js +2 -3
  376. package/dist/core/scene/pathEffects/effects.js +1 -2
  377. package/dist/core/scene/pathEffects/foundHidden.js +1 -2
  378. package/dist/core/scene/pathEffects/textAlong.js +6 -6
  379. package/dist/core/scene/pathEffects/textAlong.js.map +1 -1
  380. package/dist/core/scene/pathEffects/textAlongBands.js +1 -2
  381. package/dist/core/scene/plyStacks.js +1 -2
  382. package/dist/core/scene/poseFeed.js +1 -2
  383. package/dist/core/scene/poseHold.js +1 -2
  384. package/dist/core/scene/poseOverrides.js +1 -2
  385. package/dist/core/scene/posePlies.js +1 -2
  386. package/dist/core/scene/poseRemovals.js +1 -2
  387. package/dist/core/scene/poseSnapshot.js +1 -2
  388. package/dist/core/scene/poseWrites.js +1 -2
  389. package/dist/core/scene/reconcileSpecs.js +26 -3
  390. package/dist/core/scene/reconcileSpecs.js.map +1 -1
  391. package/dist/core/scene/recorder.js +1 -2
  392. package/dist/core/scene/renderOrder.js +1 -2
  393. package/dist/core/scene/sameValue.js +1 -2
  394. package/dist/core/scene/scene.js +23 -13
  395. package/dist/core/scene/scene.js.map +1 -1
  396. package/dist/core/scene/sceneChanges.js +1 -2
  397. package/dist/core/scene/sceneEdits.js +1 -2
  398. package/dist/core/scene/sceneJournals.js +1 -2
  399. package/dist/core/scene/sceneMutators.js +2 -3
  400. package/dist/core/scene/scenePoseAdapter.js +1 -2
  401. package/dist/core/scene/sceneRecording.js +1 -2
  402. package/dist/core/scene/sceneSelection.js +8 -5
  403. package/dist/core/scene/sceneSelection.js.map +1 -1
  404. package/dist/core/scene/sceneState.js +3 -4
  405. package/dist/core/scene/scrollOffsets.js +1 -2
  406. package/dist/core/scene/serialization.js +2 -3
  407. package/dist/core/scene/staleReplay.js +1 -2
  408. package/dist/core/scene/statedFields.js +1 -2
  409. package/dist/core/scene/strategyView.js +1 -2
  410. package/dist/core/scene/treeEdits.js +2 -3
  411. package/dist/core/scene/treeOrder.js +1 -2
  412. package/dist/core/scene/treeReads.js +1 -2
  413. package/dist/core/scene/treeShape.js +1 -2
  414. package/dist/core/scene/types.js +1 -2
  415. package/dist/core/scene/types.js.map +1 -1
  416. package/dist/core/scene/unionOfChildren.js +1 -2
  417. package/dist/core/scene/unitScopes.js +20 -4
  418. package/dist/core/scene/unitScopes.js.map +1 -1
  419. package/dist/core/scene/useScene.js +2 -3
  420. package/dist/core/scene/worldSave.js +2 -3
  421. package/dist/core/selection/chromeState.js +1 -2
  422. package/dist/core/selection/outermostSelection.js +56 -0
  423. package/dist/core/selection/outermostSelection.js.map +1 -0
  424. package/dist/core/selection/readOnlySelection.js +1 -2
  425. package/dist/core/selection/selectionTarget.js +1 -2
  426. package/dist/core/selection/usePublishSceneSelection.js +1 -2
  427. package/dist/core/selection/useSelection.js +1 -2
  428. package/dist/core/shapeKinds.js +1 -2
  429. package/dist/core/stableStringify.js +1 -2
  430. package/dist/core/stylus/stylus.js +1 -2
  431. package/dist/core/stylus/usePointerStylus.js +1 -2
  432. package/dist/core/usePaintKinds.js +1 -2
  433. package/dist/core/viewport/clampView.js +1 -2
  434. package/dist/core/viewport/clientToWorld.js +8 -3
  435. package/dist/core/viewport/clientToWorld.js.map +1 -1
  436. package/dist/core/viewport/createVelocityTracker.js +1 -2
  437. package/dist/core/viewport/fitToBounds.js +1 -2
  438. package/dist/core/viewport/fitViewToBounds.js +1 -2
  439. package/dist/core/viewport/interpolateView.js +1 -2
  440. package/dist/core/viewport/parallax.js +1 -2
  441. package/dist/core/viewport/sceneNodeClientRect.js +1 -2
  442. package/dist/core/viewport/screenSlop.js +1 -2
  443. package/dist/core/viewport/useAutoCenter.js +1 -2
  444. package/dist/core/viewport/useCanvasSize.js +1 -2
  445. package/dist/core/viewport/useDecayLoop.js +1 -2
  446. package/dist/core/viewport/useNodeOverlayFrame.js +1 -2
  447. package/dist/core/viewport/useVelocityTracker.js +1 -2
  448. package/dist/core/viewport/useViewAnimation.js +3 -4
  449. package/dist/core/viewport/view.js +1 -2
  450. package/dist/core/viewport/viewTransform.js +1 -2
  451. package/dist/core/viewport/viewportWorldRect.js +1 -2
  452. package/dist/core/viewport/wheelHandler.js +1 -2
  453. package/dist/core/viewport/zoomAt.js +7 -8
  454. package/dist/core/viewport/zoomAt.js.map +1 -1
  455. package/dist/core/viewport/zoomBounds.js +1 -2
  456. package/dist/debug/createDebugOverlayLayer.js +1 -2
  457. package/dist/debug/createDebugSink.js +1 -2
  458. package/dist/debug/defaultTheme.js +1 -2
  459. package/dist/debug/features.js +1 -2
  460. package/dist/debug/frameStats.js +1 -2
  461. package/dist/debug/overlayPanels.js +1 -2
  462. package/dist/debug/parseDebugFlags.js +1 -2
  463. package/dist/debug/useDebugSink.js +2 -3
  464. package/dist/{depSchema-ChQPzEkW.d.ts → depSchema-C7a_OMt-.d.ts} +61 -52
  465. package/dist/devtools/handlers.js +1 -2
  466. package/dist/devtools/history.js +1 -2
  467. package/dist/devtools/hook.js +1 -2
  468. package/dist/devtools/label.js +1 -2
  469. package/dist/devtools/notices.js +1 -2
  470. package/dist/devtools/protocol.js +1 -2
  471. package/dist/devtools/registry.js +1 -2
  472. package/dist/devtools/root.js +12 -6
  473. package/dist/devtools/root.js.map +1 -1
  474. package/dist/devtools/serialize.js +1 -2
  475. package/dist/devtools/session.js +2 -3
  476. package/dist/devtools/transport.js +13 -18
  477. package/dist/devtools/transport.js.map +1 -1
  478. package/dist/devtools/useDevtoolsRoot.js +1 -2
  479. package/dist/devtools-protocol.d.ts +1 -12
  480. package/dist/devtools-protocol.js +2 -2
  481. package/dist/devtools.d.ts +1 -1
  482. package/dist/devtools.js +1 -2
  483. package/dist/domains/chrome-caps/buildChromeCtx.js +1 -2
  484. package/dist/domains/chrome-caps/conditions.js +1 -2
  485. package/dist/domains/chrome-caps/defaults.js +1 -2
  486. package/dist/domains/chrome-caps/resolve.js +2 -3
  487. package/dist/domains/chrome-caps/useChromeCaps.js +1 -2
  488. package/dist/domains/chrome-caps/useHoverTracking.js +1 -2
  489. package/dist/domains/ingestion/contentHandlers.js +1 -2
  490. package/dist/domains/ingestion/ghost.js +2 -3
  491. package/dist/domains/ingestion/imageHandler.js +1 -2
  492. package/dist/domains/ingestion/kitHandlers.js +2 -3
  493. package/dist/domains/ingestion/openFilePicker.js +1 -2
  494. package/dist/domains/ingestion/placement.js +1 -2
  495. package/dist/domains/ingestion/svgHandler.js +1 -2
  496. package/dist/domains/ingestion/textHandler.js +1 -2
  497. package/dist/domains/ingestion/useCanvasIngestion.js +1 -2
  498. package/dist/domains/ingestion/weaselJsonHandler.js +2 -3
  499. package/dist/domains/longPress/longPressFeedback.js +1 -2
  500. package/dist/domains/measure/actionIds.js +1 -2
  501. package/dist/domains/measure/measureCommands.js +6 -7
  502. package/dist/domains/measure/measureContribution.js +3 -4
  503. package/dist/domains/measure/measureEdits.js +3 -4
  504. package/dist/domains/measure/measureGestures.js +2 -3
  505. package/dist/domains/measure/measureHit.js +5 -12
  506. package/dist/domains/measure/measureHit.js.map +1 -1
  507. package/dist/domains/measure/measureLayer.js +3 -4
  508. package/dist/domains/measure/measurement.js +1 -2
  509. package/dist/domains/measure/measurements.js +1 -2
  510. package/dist/domains/modes/modeLayers.js +1 -2
  511. package/dist/domains/modes/modeTriggers.js +1 -2
  512. package/dist/domains/pathEffects/effectSources.js +2 -3
  513. package/dist/domains/pathEffects/index.js +1 -2
  514. package/dist/domains/pathEffects/readSource.js +3 -4
  515. package/dist/domains/pathEffects/textItems.js +1 -2
  516. package/dist/domains/pathEffects/useEffectSourcesLayer.js +3 -4
  517. package/dist/domains/paths/anchorData.js +1 -2
  518. package/dist/domains/paths/anchorMarkers.js +6 -13
  519. package/dist/domains/paths/anchorMarkers.js.map +1 -1
  520. package/dist/domains/paths/editablePath.js +3 -4
  521. package/dist/domains/paths/originProjection.js +1 -2
  522. package/dist/domains/paths/pathEditExtension.js +1 -2
  523. package/dist/domains/paths/pathEditState.js +1 -2
  524. package/dist/domains/paths/pathEditingOverlayLayer.js +7 -12
  525. package/dist/domains/paths/pathEditingOverlayLayer.js.map +1 -1
  526. package/dist/domains/paths/pathLayer.js +1 -2
  527. package/dist/domains/paths/pathRepresentation.js +1 -2
  528. package/dist/domains/paths/pathSnap/glyphs.js +1 -2
  529. package/dist/domains/paths/pathSnap/pathSnapSource.js +1 -2
  530. package/dist/domains/paths/pathSnap/sceneIndex.js +1 -2
  531. package/dist/domains/paths/pathSnap/snapGeometry.js +2 -3
  532. package/dist/domains/paths/penPreviewLayer.js +10 -14
  533. package/dist/domains/paths/penPreviewLayer.js.map +1 -1
  534. package/dist/domains/paths/shapeGenerator.js +2 -4
  535. package/dist/domains/paths/shapeGenerator.js.map +1 -1
  536. package/dist/domains/paths/strokeOutline.js +2 -3
  537. package/dist/domains/paths/useAnchorFields.js +1 -2
  538. package/dist/domains/paths/usePathEdit.js +2 -3
  539. package/dist/domains/poseRun/usePoseRun.js +1 -2
  540. package/dist/domains/selection/enteredGroupFrame.js +1 -2
  541. package/dist/domains/selection/enteredGroupScope.js +1 -2
  542. package/dist/domains/selection/enteredOperands.js +1 -2
  543. package/dist/domains/selection/handleCommands.js +2 -3
  544. package/dist/domains/selection/overlay.js +6 -7
  545. package/dist/domains/selection/selectionPose.js +2 -3
  546. package/dist/domains/snap/angle2d.js +3 -3
  547. package/dist/domains/snap/angle2d.js.map +1 -1
  548. package/dist/domains/snap/debugCandidates.js +1 -2
  549. package/dist/domains/snap/gather.js +1 -2
  550. package/dist/domains/snap/inputSubspace.js +2 -3
  551. package/dist/domains/snap/lazySession.js +1 -2
  552. package/dist/domains/snap/marks.js +1 -2
  553. package/dist/domains/snap/outcomeStore.js +6 -10
  554. package/dist/domains/snap/outcomeStore.js.map +1 -1
  555. package/dist/domains/snap/pointSnap.js +1 -2
  556. package/dist/domains/snap/probes2d.js +1 -2
  557. package/dist/domains/snap/readoutDraw.js +1 -2
  558. package/dist/domains/snap/readoutLayer.js +1 -2
  559. package/dist/domains/snap/registry.js +1 -2
  560. package/dist/domains/snap/resizeBox.js +1 -2
  561. package/dist/domains/snap/roles.js +1 -2
  562. package/dist/domains/snap/rotationSource.js +1 -2
  563. package/dist/domains/snap/sceneReads.js +2 -3
  564. package/dist/domains/snap/sceneSession2d.js +2 -3
  565. package/dist/domains/snap/screen.js +2 -3
  566. package/dist/domains/snap/session2d.js +4 -5
  567. package/dist/domains/snap/spanSnap.js +1 -2
  568. package/dist/domains/snap/stepAngles.js +1 -2
  569. package/dist/domains/text/editingDrawOne.js +1 -2
  570. package/dist/domains/text/hostTextEditors.js +1 -2
  571. package/dist/domains/text/sceneTextDrafts.js +1 -2
  572. package/dist/domains/text/textHitAt.js +4 -5
  573. package/dist/domains/text/textLayer.js +12 -2
  574. package/dist/domains/text/textLayer.js.map +1 -1
  575. package/dist/domains/text/useSceneTextEdit.js +13 -9
  576. package/dist/domains/text/useSceneTextEdit.js.map +1 -1
  577. package/dist/domains/viewports/aim.js +6 -12
  578. package/dist/domains/viewports/aim.js.map +1 -1
  579. package/dist/domains/viewports/viewMarker.js +1 -2
  580. package/dist/domains/viewports/viewMarkerDrag.js +1 -2
  581. package/dist/domains/viewports/viewResolver.js +6 -5
  582. package/dist/domains/viewports/viewResolver.js.map +1 -1
  583. package/dist/domains/viewports/viewportLayer.js +1 -2
  584. package/dist/iconRegistry/IconRegistryProvider.js +1 -2
  585. package/dist/iconRegistry/useIconGlyph.js +1 -2
  586. package/dist/iconRegistry/useIconVariant.js +1 -2
  587. package/dist/icons.table.js +1 -2
  588. package/dist/icons2.table.js +1 -2
  589. package/dist/index.d.ts +70 -27
  590. package/dist/index.js +7 -5
  591. package/dist/input/keyState.js +1 -2
  592. package/dist/input/useKeyModifiers.js +1 -2
  593. package/dist/input/useKeyState.js +1 -2
  594. package/dist/input/usePublishPointer.js +59 -0
  595. package/dist/input/usePublishPointer.js.map +1 -0
  596. package/dist/interactions/actions/admitsChild.js +1 -2
  597. package/dist/interactions/actions/align/action.js +6 -7
  598. package/dist/interactions/actions/align/align.js +6 -7
  599. package/dist/interactions/actions/booleans/action.js +1 -2
  600. package/dist/interactions/actions/booleans/booleanGroupAction.js +2 -3
  601. package/dist/interactions/actions/booleans/booleans.js +1 -2
  602. package/dist/interactions/actions/booleans/commit.js +4 -5
  603. package/dist/interactions/actions/booleans/custom.js +2 -3
  604. package/dist/interactions/actions/booleans/keymap.js +1 -2
  605. package/dist/interactions/actions/booleans/operands.js +1 -2
  606. package/dist/interactions/actions/booleans/pieces.js +1 -2
  607. package/dist/interactions/actions/booleans/placement.js +1 -2
  608. package/dist/interactions/actions/booleans/useBooleans.js +1 -2
  609. package/dist/interactions/actions/booleans/useBooleansAdapter.js +1 -2
  610. package/dist/interactions/actions/clipboard/action.js +2 -3
  611. package/dist/interactions/actions/clipboard/clipboardOps.js +2 -3
  612. package/dist/interactions/actions/clipboard/materializePaste.js +1 -2
  613. package/dist/interactions/actions/clipboard/wireFormat.js +1 -2
  614. package/dist/interactions/actions/clone/action.js +7 -8
  615. package/dist/interactions/actions/clone/behaviors.js +4 -5
  616. package/dist/interactions/actions/defaultCommitAdapter.js +2 -3
  617. package/dist/interactions/actions/defaults/anchorEditing.js +3 -4
  618. package/dist/interactions/actions/defaults/anchorFields.js +1 -2
  619. package/dist/interactions/actions/defaults/anchorHandles.js +2 -3
  620. package/dist/interactions/actions/defaults/anchorJoin.js +2 -3
  621. package/dist/interactions/actions/defaults/areaSelect.js +6 -6
  622. package/dist/interactions/actions/defaults/areaSelect.js.map +1 -1
  623. package/dist/interactions/actions/defaults/bendSegment.js +3 -4
  624. package/dist/interactions/actions/defaults/cancelGesture.js +1 -2
  625. package/dist/interactions/actions/defaults/clearSelection.js +1 -2
  626. package/dist/interactions/actions/defaults/containerScroll.js +13 -8
  627. package/dist/interactions/actions/defaults/containerScroll.js.map +1 -1
  628. package/dist/interactions/actions/defaults/contextMenu.js +6 -7
  629. package/dist/interactions/actions/defaults/copySubtree.js +2 -3
  630. package/dist/interactions/actions/defaults/createPaintAction.js +3 -4
  631. package/dist/interactions/actions/defaults/delete.js +2 -3
  632. package/dist/interactions/actions/defaults/duplicate.js +5 -6
  633. package/dist/interactions/actions/defaults/enterGroup.js +5 -6
  634. package/dist/interactions/actions/defaults/enterGroup.js.map +1 -1
  635. package/dist/interactions/actions/defaults/enterPathEdit.js +1 -2
  636. package/dist/interactions/actions/defaults/enterTextEdit.js +1 -2
  637. package/dist/interactions/actions/defaults/escape.js +1 -2
  638. package/dist/interactions/actions/defaults/exitPathEdit.js +1 -2
  639. package/dist/interactions/actions/defaults/group.js +6 -7
  640. package/dist/interactions/actions/defaults/ingest.js +3 -4
  641. package/dist/interactions/actions/defaults/insertPathAnchor.js +2 -3
  642. package/dist/interactions/actions/defaults/nudge.js +3 -4
  643. package/dist/interactions/actions/defaults/nudgeSteps.js +2 -3
  644. package/dist/interactions/actions/defaults/nudgeSteps.js.map +1 -1
  645. package/dist/interactions/actions/defaults/pathEditMarks.js +3 -7
  646. package/dist/interactions/actions/defaults/pathEditMarks.js.map +1 -1
  647. package/dist/interactions/actions/defaults/pinchZoom.js +3 -4
  648. package/dist/interactions/actions/defaults/reorder.js +2 -3
  649. package/dist/interactions/actions/defaults/requiresSelection.js +1 -2
  650. package/dist/interactions/actions/defaults/segmentUnder.js +1 -2
  651. package/dist/interactions/actions/defaults/selectAll.js +1 -2
  652. package/dist/interactions/actions/defaults/selectDeep.js +1 -2
  653. package/dist/interactions/actions/defaults/setFill.js +1 -2
  654. package/dist/interactions/actions/defaults/setFillOpacity.js +1 -2
  655. package/dist/interactions/actions/defaults/setStroke.js +1 -2
  656. package/dist/interactions/actions/defaults/setStrokeOpacity.js +1 -2
  657. package/dist/interactions/actions/defaults/slice.js +1 -2
  658. package/dist/interactions/actions/defaults/sliceOps.js +1 -2
  659. package/dist/interactions/actions/defaults/toolActivate.js +1 -2
  660. package/dist/interactions/actions/defaults/toolResetToDefault.js +1 -2
  661. package/dist/interactions/actions/defaults/undoRedo.js +1 -2
  662. package/dist/interactions/actions/defaults/viewportDragPan.js +1 -2
  663. package/dist/interactions/actions/defaults/viewportWheelPan.js +1 -2
  664. package/dist/interactions/actions/defaults/viewportZoom.js +3 -4
  665. package/dist/interactions/actions/distribute/action.js +4 -5
  666. package/dist/interactions/actions/distribute/distribute.js +5 -6
  667. package/dist/interactions/actions/distribute/plan.js +1 -2
  668. package/dist/interactions/actions/drawnBoxes.js +4 -5
  669. package/dist/interactions/actions/dropVerdict.js +1 -2
  670. package/dist/interactions/actions/edit-anchors/action.js +4 -5
  671. package/dist/interactions/actions/edit-anchors/extensionDrags.js +1 -2
  672. package/dist/interactions/actions/edit-anchors/geometry.js +1 -2
  673. package/dist/interactions/actions/edit-anchors/handleDrag.js +5 -9
  674. package/dist/interactions/actions/edit-anchors/handleDrag.js.map +1 -1
  675. package/dist/interactions/actions/edit-anchors/handles.js +1 -2
  676. package/dist/interactions/actions/edit-anchors/params.js +1 -2
  677. package/dist/interactions/actions/edit-anchors/preview.js +1 -2
  678. package/dist/interactions/actions/edit-anchors/symmetry.js +1 -2
  679. package/dist/interactions/actions/flip/action.js +8 -9
  680. package/dist/interactions/actions/flip/helpers.js +1 -2
  681. package/dist/interactions/actions/geometryProjection.js +1 -2
  682. package/dist/interactions/actions/gestureFrames.js +3 -4
  683. package/dist/interactions/actions/gestureLifecycle.js +1 -2
  684. package/dist/interactions/actions/hitSelection.js +7 -3
  685. package/dist/interactions/actions/hitSelection.js.map +1 -1
  686. package/dist/interactions/actions/insert/action.js +6 -7
  687. package/dist/interactions/actions/insert/commit.js +2 -3
  688. package/dist/interactions/actions/insert/extras.js +1 -2
  689. package/dist/interactions/actions/insert/frame.js +1 -2
  690. package/dist/interactions/actions/insert/geometry.js +1 -2
  691. package/dist/interactions/actions/insert/params.js +2 -3
  692. package/dist/interactions/actions/insert/parent.js +1 -2
  693. package/dist/interactions/actions/insert/placeAction.js +5 -6
  694. package/dist/interactions/actions/insert/repositionAction.js +1 -2
  695. package/dist/interactions/actions/insert/rotateAction.js +1 -2
  696. package/dist/interactions/actions/insert/session.js +5 -6
  697. package/dist/interactions/actions/insert/shape.js +2 -3
  698. package/dist/interactions/actions/lasso-select/action.js +9 -9
  699. package/dist/interactions/actions/lasso-select/action.js.map +1 -1
  700. package/dist/interactions/actions/lasso-select/behaviors/selectFromLasso.js +2 -3
  701. package/dist/interactions/actions/magnification.js +37 -0
  702. package/dist/interactions/actions/magnification.js.map +1 -0
  703. package/dist/interactions/actions/move/action.js +2 -3
  704. package/dist/interactions/actions/move/behaviors/clampMove.js +42 -0
  705. package/dist/interactions/actions/move/behaviors/clampMove.js.map +1 -0
  706. package/dist/interactions/actions/move/behaviors/layoutDrop.js +2 -3
  707. package/dist/interactions/actions/move/behaviors/reparentOnDrop.js +2 -3
  708. package/dist/interactions/actions/move/behaviors/snapBackOrDelete.js +1 -2
  709. package/dist/interactions/actions/move/behaviors/snapToContainer.js +2 -3
  710. package/dist/interactions/actions/move/capture.js +6 -7
  711. package/dist/interactions/actions/move/commit/index.js +2 -3
  712. package/dist/interactions/actions/move/commit/layoutDrop.js +4 -5
  713. package/dist/interactions/actions/move/commit/layoutRelease.js +7 -8
  714. package/dist/interactions/actions/move/commit/rebase.js +2 -3
  715. package/dist/interactions/actions/move/commit/reparent.js +5 -6
  716. package/dist/interactions/actions/move/delta.js +2 -3
  717. package/dist/interactions/actions/move/frame.js +2 -3
  718. package/dist/interactions/actions/move/gestureAdapter.js +1 -2
  719. package/dist/interactions/actions/move/landedDescendants.js +2 -3
  720. package/dist/interactions/actions/move/layout/container.js +6 -10
  721. package/dist/interactions/actions/move/layout/container.js.map +1 -1
  722. package/dist/interactions/actions/move/layout/dragged.js +2 -3
  723. package/dist/interactions/actions/move/layout/dropPass.js +5 -6
  724. package/dist/interactions/actions/move/layout/exits.js +4 -5
  725. package/dist/interactions/actions/move/layout/exits.js.map +1 -1
  726. package/dist/interactions/actions/move/layout/glide.js +2 -3
  727. package/dist/interactions/actions/move/layout/view.js +1 -2
  728. package/dist/interactions/actions/move/refusal.js +2 -3
  729. package/dist/interactions/actions/move/session.js +4 -5
  730. package/dist/interactions/actions/move/translate.js +2 -3
  731. package/dist/interactions/actions/moveNodes.js +5 -6
  732. package/dist/interactions/actions/notices.js +1 -2
  733. package/dist/interactions/actions/outlines/createOutlines.js +1 -2
  734. package/dist/interactions/actions/outlines/createOutlinesAction.js +2 -3
  735. package/dist/interactions/actions/outlines/outlineStroke.js +2 -3
  736. package/dist/interactions/actions/outlines/outlineStrokeAction.js +2 -3
  737. package/dist/interactions/actions/outlines/replaceWithPaths.js +5 -6
  738. package/dist/interactions/actions/outlines/strokeRegion.js +1 -2
  739. package/dist/interactions/actions/outlines/useCreateOutlinesAdapter.js +1 -2
  740. package/dist/interactions/actions/pathCommands/cutJoin.js +3 -4
  741. package/dist/interactions/actions/pathCommands/livePathEdit.js +3 -4
  742. package/dist/interactions/actions/pathCommands/pathNodes.js +3 -4
  743. package/dist/interactions/actions/pathCommands/simplifyOffset.js +2 -3
  744. package/dist/interactions/actions/pathGestureTags.js +1 -2
  745. package/dist/interactions/actions/planeInput.js +2 -3
  746. package/dist/interactions/actions/pointerState.js +1 -2
  747. package/dist/interactions/actions/poseDescriptorDep.js +1 -2
  748. package/dist/interactions/actions/poseFrame.js +3 -4
  749. package/dist/interactions/actions/resize/action.js +3 -4
  750. package/dist/interactions/actions/resize/aspect.js +1 -2
  751. package/dist/interactions/actions/resize/behaviors/clampMinSize.js +1 -2
  752. package/dist/interactions/actions/resize/boxFrame.js +1 -2
  753. package/dist/interactions/actions/resize/capture.js +7 -8
  754. package/dist/interactions/actions/resize/commit.js +3 -4
  755. package/dist/interactions/actions/resize/cornerHandles.js +1 -2
  756. package/dist/interactions/actions/resize/frame.js +7 -8
  757. package/dist/interactions/actions/resize/held.js +2 -3
  758. package/dist/interactions/actions/resize/minimum.js +1 -2
  759. package/dist/interactions/actions/resize/replay.js +1 -2
  760. package/dist/interactions/actions/resize/ruleBounds.js +1 -2
  761. package/dist/interactions/actions/resize/session.js +9 -10
  762. package/dist/interactions/actions/resolveOverlays.js +1 -2
  763. package/dist/interactions/actions/resolvePreviews.js +3 -4
  764. package/dist/interactions/actions/rotate/action.js +5 -6
  765. package/dist/interactions/actions/rotate/commit.js +2 -3
  766. package/dist/interactions/actions/rotate/frame.js +3 -4
  767. package/dist/interactions/actions/rotate/geometry.js +1 -2
  768. package/dist/interactions/actions/rotate/handle.js +2 -3
  769. package/dist/interactions/actions/rotate/replay.js +2 -3
  770. package/dist/interactions/actions/rotate/session.js +10 -11
  771. package/dist/interactions/actions/selectionSubtree.js +7 -22
  772. package/dist/interactions/actions/selectionSubtree.js.map +1 -1
  773. package/dist/interactions/actions/spatialReference.js +1 -2
  774. package/dist/interactions/actions/testUtils.js +1 -2
  775. package/dist/interactions/actions/transform-again/action.js +5 -6
  776. package/dist/interactions/actions/transform-again/memory.js +3 -4
  777. package/dist/interactions/actions/transform-again/memory.js.map +1 -1
  778. package/dist/interactions/actions/transformFinish.js +1 -2
  779. package/dist/interactions/actions/useActionSet.js +1 -2
  780. package/dist/interactions/actions/useNotices.js +1 -2
  781. package/dist/interactions/actions/useStandardActions.js +1 -2
  782. package/dist/interactions/gestures/dragGesture/dragGesture.js +1 -2
  783. package/dist/interactions/gestures/dragGesture/dragPointOf.js +1 -2
  784. package/dist/interactions/gestures/dragRadial/dragRadial.js +2 -3
  785. package/dist/interactions/gestures/dragRect/dragRect.js +2 -3
  786. package/dist/interactions/gestures/handleDrag/handleDrag.js +1 -2
  787. package/dist/interactions/gestures/pointerDrag/pointerDrag.js +1 -2
  788. package/dist/interactions/gestures/shared/originProjection.js +1 -2
  789. package/dist/interactions/gestures/shared/screenTolerance.js +1 -2
  790. package/dist/interactions/gestures/thresholdDrag/thresholdDrag.js +1 -2
  791. package/dist/kitSettingsSchema.js +4 -5
  792. package/dist/move.d.ts +18 -3
  793. package/dist/move.js +2 -1
  794. package/dist/test-hook/createTestHook.js +1 -2
  795. package/dist/test-hook/install.js +1 -2
  796. package/dist/test-hook/useTestHook.js +1 -2
  797. package/dist/test-seams.d.ts +4 -4
  798. package/dist/test-seams.js +2 -2
  799. package/dist/tools/builtin/anchors/anchorsTool.js +1 -2
  800. package/dist/tools/builtin/ellipse/useEllipseTool.js +2 -3
  801. package/dist/tools/builtin/eyedropper/useEyedropperTool.js +1 -2
  802. package/dist/tools/builtin/hand/dragPanContribution.js +1 -2
  803. package/dist/tools/builtin/hand/useHandTool.js +1 -2
  804. package/dist/tools/builtin/image/useImageTool.js +1 -2
  805. package/dist/tools/builtin/lasso/useLassoTool.js +1 -2
  806. package/dist/tools/builtin/line/useLineTool.js +2 -3
  807. package/dist/tools/builtin/measure/useMeasureTool.js +2 -3
  808. package/dist/tools/builtin/pen/penHandle.js +1 -2
  809. package/dist/tools/builtin/pen/usePenTool.js +6 -7
  810. package/dist/tools/builtin/pencil/usePencilTool.js +1 -2
  811. package/dist/tools/builtin/pickTopMostHit.js +1 -2
  812. package/dist/tools/builtin/polygon/usePolygonTool.js +3 -4
  813. package/dist/tools/builtin/pressTarget.js +1 -2
  814. package/dist/tools/builtin/rect/useRectTool.js +2 -3
  815. package/dist/tools/builtin/select/adapterPointQuery.js +3 -4
  816. package/dist/tools/builtin/select/collapseDeferred.js +1 -2
  817. package/dist/tools/builtin/select/groupEntry.js +2 -3
  818. package/dist/tools/builtin/select/pressDecision.js +3 -4
  819. package/dist/tools/builtin/select/pressDecision.js.map +1 -1
  820. package/dist/tools/builtin/select/selectionContributions.js +1 -2
  821. package/dist/tools/builtin/select/useSelectTool.js +5 -6
  822. package/dist/tools/builtin/shared/insertToolOptions.js +1 -2
  823. package/dist/tools/builtin/shared/pointerFollower.js +1 -2
  824. package/dist/tools/builtin/slice/useSliceTool.js +5 -6
  825. package/dist/tools/builtin/star/useStarTool.js +3 -4
  826. package/dist/tools/builtin/sticky/stickyNode.js +1 -2
  827. package/dist/tools/builtin/sticky/useStickyTool.js +2 -3
  828. package/dist/tools/builtin/text/useTextTool.js +1 -2
  829. package/dist/tools/index.js +2 -2
  830. package/dist/tools/overlayBinding.js +1 -2
  831. package/dist/tools/toolOptions.js +17 -4
  832. package/dist/tools/toolOptions.js.map +1 -1
  833. package/dist/tools/useKeybindings.js +1 -2
  834. package/dist/{types-DW14eu9B.d.ts → types-BUvUXZe5.d.ts} +3 -3
  835. package/dist/util/color.js +1 -2
  836. package/dist/util/paint.js +1 -2
  837. package/dist/version.js +2 -3
  838. package/package.json +27 -27
package/CHANGELOG.md CHANGED
@@ -1,5 +1,204 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.15.2
4
+
5
+ ### Patch Changes
6
+
7
+ - 946faff: `clampMove({ bounds })` from `@weasel-js/core/move` is a move behavior that keeps the dragged nodes inside a
8
+ world rect: the drag's translation is clamped so the box around every dragged node stays in `bounds`, in
9
+ the preview and the commit alike. `bounds` can be a function, read each frame, for a rect that changes
10
+ size.
11
+ - 507f539: paint exports `relativeLuminance` and `luminanceContrast`, the WCAG luminance and ratio `contrastRatio` is built on; core re-exports both. theme's `luminance`/`contrast`, its test helpers, ui's painted-contrast helpers and forge's pixel contrast readout now use them.
12
+
13
+ Color strings that theme's `withAlpha`/`atAlpha`, ui's `TokenPanel` hex conversion and diagram-formats' DOT and Mermaid writers read are parsed by paint's `parseColor`. The `TokenPanel` color input now converts float and percent `rgb()` channels, named colors and `hsl()` without a browser, and diagram-formats writes percent `rgb()` channels as hex instead of passing them through. diagram-formats now depends on `@weasel-js/paint`.
14
+
15
+ labkit's loupe and ui's `Timeline` ruler and lane graph measure their element with core's `useElementSize`.
16
+ - a4138b6: `@weasel-js/geom` states the nearest point of a segment, point distance and lerp once, in any
17
+ dimension, and every tier answers through that one rule.
18
+
19
+ - `@weasel-js/geom/nd` adds `segmentT`, `closestPointOnSegment`, `pointSegmentDist`,
20
+ `pointSegmentDist2`, `distance`, `distance2` and `lerp` over plain number arrays.
21
+ - The root barrel adds `segmentT` and `pointSegmentDist` over loose scalars, which allocate nothing,
22
+ beside the existing `pointSegmentDist2`; `distance`, `distance2` and `lerpPoint` over `Point`; and a
23
+ scalar `lerp`.
24
+ - `@weasel-js/geom/3d`'s `closestPointOnSegment` and `lerp` now go through the same rule, so a planar
25
+ problem gets the same numbers in 2D, 3D and `nd`.
26
+
27
+ A segment's parameter is clamped to [0, 1] and is 0 on a zero-length segment; at `t = 1` the nearest
28
+ point is the far end exactly. `nearestOnLine` and the private copies in core's measurement hit test,
29
+ animator's auto-skinning, diagram's route and label code, stroke's edge test, path-tools'
30
+ extend-to-meet and guides' layout snaps now call these, so their distances can move by a rounding
31
+ step (`Math.hypot` became a square root of the summed squares).
32
+
33
+ Corner shapes (`cornerShapePieces`) now fit the true superellipse within `CORNER_FIT_TOLERANCE` for
34
+ every finite `k`. Past `|k| ≈ 9` they strayed up to nine times the tolerance off the curve's straight
35
+ legs, because the fit stepped in an angle that crowds those legs into less than a double resolves;
36
+ it now steps evenly along each leg. The same corners draw with about a third fewer cubics.
37
+ - f1906a8: The rest of the kit's stores notify through registry's `createEmitter`: the entered group, the snap
38
+ outcome, devtools roots and transports, kit settings, the menu host and menu controller, tool
39
+ options, `RunSlots`, the seam preview, the HUD list, the effect runners, the symmetry controller,
40
+ the devtools client, and forge's loupe and CSS-variable stores. A listener that throws is logged
41
+ and no longer stops the others, and a listener unsubscribed mid-notify is no longer called; the
42
+ menu host, `RunSlots` and the HUD list used to walk their live set. diagram, diagram-formats, menu,
43
+ symmetry and devtools now depend on `@weasel-js/registry`.
44
+
45
+ Structural comparisons that went through `JSON.stringify` use `deepEqual` instead, so key order no
46
+ longer makes two equal values differ (theme baking, diagram export's style diffs, trial marks, path
47
+ constraints, unit rows, toolbar dock drops). PrefSchemaEditor's three-way merge keeps
48
+ `JSON.stringify`, because there a reordered key is an edit.
49
+
50
+ New: `sameList(a, b, same?)` in `@weasel-js/registry`, whether two lists hold equal elements in
51
+ order. `@weasel-js/react`'s `sameList` is now this function, and ui's `samePath` is an alias of it.
52
+ - e804540: **Behavior change:** `matchesKeyBinding` and `historyKey` now read `mod` the way `@weasel-js/gestures`
53
+ does: Command on an Apple platform, Ctrl elsewhere, and the other key forbidden. Before, either key
54
+ fired a `mod` binding on every platform, so Ctrl+Z undid on a Mac and Cmd+Z undid on Windows; now
55
+ neither does, and neither does Cmd+Ctrl+Z. Both take an optional `isMac` argument, defaulting to
56
+ `isApplePlatform()`. Everything built on them follows: labkit's trial chrome and `useUndoKeys`, and
57
+ the undo keys in `AssetEditor`, `LayeredCurveEditor` and forge's CSS-vars panel. A trial's snapshot
58
+ chord is Mod+S alone; Shift+Mod+S no longer takes a snapshot.
59
+
60
+ `rowKey` takes a sixth argument, `apple`, and selects all on Mod+A as above; Ctrl+A on a Mac no
61
+ longer selects all in a `Tree` or any list on `useRowNavigation`, which passes `isApplePlatform()`.
62
+ `rowKey` called without it reads `mod` as Ctrl.
63
+
64
+ `@weasel-js/react` reads the system color scheme: `systemColorScheme()`, `watchColorScheme(fn)` and
65
+ `useSystemColorScheme(follow?)`, with `DEFAULT_COLOR_SCHEME`, dark, wherever `matchMedia` is missing or
66
+ the system states no preference. Dark is the mode the theme's tokens paint at `:root`. theme's
67
+ `useResolvedColorMode`, core's `watchThemeOf` and forge's loupe conditions use it. **Behavior change:**
68
+ forge's loupe read a missing `matchMedia` as light; it now reads it as dark, as the theme always has.
69
+
70
+ `scene.mintId()`, and the id `add` gives a spec with none, now pass over any id the scene already
71
+ holds. A document reopened in a new session keeps the ids the last one minted, and a `generateId` that
72
+ starts over with the session could mint them again; a generator that gives 1000 taken ids in a row
73
+ throws.
74
+ - 2f6b10d: `usePublishPointer(elementRef, locate)` from `@weasel-js/core` publishes the pointer over an element into
75
+ the pointer store in scope, placed by `locate(pointerId, clientX, clientY)`. It is what `<SceneCanvas>`
76
+ does for its own canvas: a pointer pressed on the element keeps reporting once a drag leaves it, and a
77
+ free pointer leaving clears the store unless another view has published since. The minimap and labkit's
78
+ cameras now publish through it, so a drag that runs off a minimap or a lab stage no longer stops
79
+ reporting where the pointer is.
80
+ - 5f6111b: `@weasel-js/geom` exports `viewWorldToScreen(view, p)`, `viewScreenToWorld(view, p)` and
81
+ `viewRectToScreen(view, rect)`, which convert between world and screen through a `View` directly;
82
+ `@weasel-js/core` re-exports them. Core, guides, diagram, hud, labkit and path-tools now use them in
83
+ place of their own inline copies of the same arithmetic.
84
+
85
+ Under a flipped view (a negative `scale` axis), diagram overlays, labkit lens hit boxes and the
86
+ path-edit marquee now get a rect with a positive width and height. labkit's camera zoom keeps a
87
+ flipped axis flipped instead of turning it back to positive.
88
+ - Updated dependencies [507f539]
89
+ - Updated dependencies [c6edab2]
90
+ - Updated dependencies [a4138b6]
91
+ - Updated dependencies [5a0375b]
92
+ - Updated dependencies [f1906a8]
93
+ - Updated dependencies [e804540]
94
+ - Updated dependencies [6544399]
95
+ - Updated dependencies [5f6111b]
96
+ - @weasel-js/paint@1.15.2
97
+ - @weasel-js/geom@1.15.2
98
+ - @weasel-js/animator@1.15.2
99
+ - @weasel-js/stroke@1.15.2
100
+ - @weasel-js/react@1.15.2
101
+ - @weasel-js/routing@1.15.2
102
+ - @weasel-js/registry@1.15.2
103
+ - @weasel-js/text@1.15.2
104
+ - @weasel-js/ui-logic@1.15.2
105
+ - @weasel-js/prefs@1.15.2
106
+ - @weasel-js/renderer@1.15.2
107
+ - @weasel-js/text-dom@1.15.2
108
+ - @weasel-js/simulation@1.15.2
109
+ - @weasel-js/gestures@1.15.2
110
+ - @weasel-js/cursor@1.15.2
111
+ - @weasel-js/font@1.15.2
112
+ - @weasel-js/history@1.15.2
113
+ - @weasel-js/icons@1.15.2
114
+ - @weasel-js/modes@1.15.2
115
+ - @weasel-js/select@1.15.2
116
+ - @weasel-js/quantity@1.15.2
117
+
118
+ ## 1.15.1
119
+
120
+ ### Patch Changes
121
+
122
+ - 424ba52: The Smudge brush, the Simplify brush, a warp's control drag, and Warp Settings can be the last operation, their
123
+ settings changed after the fact in the last-operation panel. A brush stroke replays every dab from its start with the
124
+ new Size, Strength or Tolerance; text the Smudge brush converted is put back and converted again wherever the brush
125
+ at its new size meets it. A warp drag replays with the warp remade under the new Mode, Rows, Columns, Mapping or
126
+ Tolerance, the control moved as it was first, so an envelope's new grid is resampled from the mesh the drag bent.
127
+ Warp Settings shows only the settings a run changed. Each stays one undo entry.
128
+
129
+ A tool's options and its action's panel are one setting: `ActionTuning.keep` is handed the params a panel change set,
130
+ and the tuning `<SceneCanvas>` makes from `toolOptionValues` writes them back there, so an options row shows the
131
+ values the next stroke uses. `OngoingHandle.params` reports params a gesture took from what it edited rather than
132
+ from its binding, such as a held warp's own grid, which the panel shows and replay receives. A gesture that opens a
133
+ journal as it starts is now kept as the last operation. `SMUDGE_BRUSH_PARAMS` and `SIMPLIFY_BRUSH_PARAMS` are the
134
+ forms the brushes' options use, and `warpDragParams`, `configureWarpParams`, and `WARP_SETTING_FIELDS` the warps'.
135
+ - 9515681: A marquee or lasso now selects at the depth a click does. A hit inside a group that isn't entered selects the outermost such group, not the marks inside it. `AreaSelectDep` and `LassoSelectDep` take an optional `targetOf(id)` for this, and `<SceneCanvas>` wires it from the entered group.
136
+
137
+ A clone's selection outline now lands on its ghost under a parent away from the origin. A previewed pose is read in the frame the node is stored in, as the ghost and the published overrides read it. The scene adapter gains `worldOfStored(id, stored)` to carry it to world, and `getEffectivePose` now answers world during a preview as well as after it.
138
+ - 5e66a10: A unit scope can declare the magnification its frame is drawn at: `units: { system, drawnAt: 0.4 }` on a node
139
+ whose scale `transform` draws its children at 0.4×. The declaration draws nothing; it says what the transform is
140
+ meant to be, so lengths read on screen can be divided back to the size they were modeled at.
141
+
142
+ - `magnificationOf(scopes)` (quantity) multiplies the chain's `drawnAt`; `sceneMagnification(scene, ids)` and
143
+ `sceneDeclaredScopes(scene, id)` (core) read it off a scene.
144
+ - Equal-spacing snap marks and `distanceReadout` divide their lengths by the declared magnification of the nodes
145
+ they measure.
146
+ - `undeclaredMagnifications(scene)` (core) lists every container under a declared scope whose children are drawn
147
+ at a size its scopes do not declare, and `SceneCanvas` warns once per container in development: a container
148
+ drawn at 1.5× with nothing declaring it is what turns a 20″ cabinet into 30″ of board.
149
+ - `scaleBar` (quantity) picks a round length for a frame's scopes, and `<ScaleBar>` (ui) draws it, labeled in the
150
+ frame's own units and saying what size the frame is drawn at.
151
+ - 2992b55: Dependency updates: `@msb235/blits` 0.16.1 (core, animator, clock, labkit), `earcut` 3.2.4 (core, geom's peer
152
+ range, labkit), `react-aria` 3.53.1 and `react-aria-components` 1.22.1 (ui), and `magic-string` 1.4.5, `oxc-parser`
153
+ 0.156.0 and `unplugin` 3.7.0 (icons-plugin). geom's `earcut` peer is an exact pin, so a consumer installing geom
154
+ beside its own `earcut` needs 3.2.4.
155
+ - 8ad43af: A core `Page` can carry `meta`: values other packages keep on the page, each under its owner's key. Every page edit
156
+ (`addPage`, `removePage`, `movePage`, `resizePage`, `renamePage`, `setPages`) and `layoutPages` carry it, and undo
157
+ restores it with the page.
158
+
159
+ `documentSpecs` writes a graph page's `notation`, `layout`, and `direction` to its page's `meta['diagram:graph']`, and
160
+ `documentFromScene` reads them back, so a Mermaid class, state, C4, block, or other non-flowchart page drawn into a
161
+ scene exports as the same kind, a block diagram keeps its columns, spans, and spaces, and a flowchart keeps its
162
+ direction. `GRAPH_PAGE_META_KEY`, `graphPageSettingsOf`, and `GraphPageSettings` are exported. This adds API.
163
+ - 120420a: `reconcileSpecs` now puts siblings in `next`'s order wherever a parent's children there differ from `prev`'s, by an addition or a reorder. A node added among existing siblings used to land after all of them, so it could paint above a node `next` listed after it. A reorder made in the scene still stands while `next` keeps the same order, and a child no spec names keeps its place.
164
+ - e982d8a: A selection never holds a node together with its descendant: a selected node holds its whole subtree, which counts as selected and can't be selected on its own. The scene's selection keeps only the outermost of the ids written to it, whichever order they come in, and drops a node moved under a selected one. `<SceneCanvas>` applies the same rule to a `selection` kept off the scene, on every write the canvas makes. Selecting a group whose child is selected replaces the child with the group, and Shift-clicking a child of a selected group leaves the selection as it was.
165
+
166
+ `@weasel-js/select` adds `outermost(ids, parentOf)`, the ids no ancestor among them holds, and `holderOf(selected, id, parentOf)`, the selected id that holds `id`: itself or its nearest selected ancestor.
167
+ - Updated dependencies [d2110bc]
168
+ - Updated dependencies [424ba52]
169
+ - Updated dependencies [5e66a10]
170
+ - Updated dependencies [2992b55]
171
+ - Updated dependencies [3105d13]
172
+ - Updated dependencies [027c59a]
173
+ - Updated dependencies [8b52282]
174
+ - Updated dependencies [937167e]
175
+ - Updated dependencies [9c051bd]
176
+ - Updated dependencies [b6a97f4]
177
+ - Updated dependencies [e982d8a]
178
+ - Updated dependencies [fa1c9a7]
179
+ - Updated dependencies [13b0604]
180
+ - @weasel-js/font@1.15.1
181
+ - @weasel-js/text@1.15.1
182
+ - @weasel-js/routing@1.15.1
183
+ - @weasel-js/quantity@1.15.1
184
+ - @weasel-js/geom@1.15.1
185
+ - @weasel-js/animator@1.15.1
186
+ - @weasel-js/gestures@1.15.1
187
+ - @weasel-js/ui-logic@1.15.1
188
+ - @weasel-js/prefs@1.15.1
189
+ - @weasel-js/select@1.15.1
190
+ - @weasel-js/renderer@1.15.1
191
+ - @weasel-js/text-dom@1.15.1
192
+ - @weasel-js/stroke@1.15.1
193
+ - @weasel-js/simulation@1.15.1
194
+ - @weasel-js/cursor@1.15.1
195
+ - @weasel-js/history@1.15.1
196
+ - @weasel-js/icons@1.15.1
197
+ - @weasel-js/modes@1.15.1
198
+ - @weasel-js/paint@1.15.1
199
+ - @weasel-js/react@1.15.1
200
+ - @weasel-js/registry@1.15.1
201
+
3
202
  ## 1.15.0
4
203
 
5
204
  ### Minor Changes
@@ -1,11 +1,11 @@
1
- import { PointerProviderIfRoot } from "./canvas/SceneCanvas/PointerProviderIfRoot.js";
2
- import { ActionsProviderIfRoot } from "./canvas/SceneCanvas/ActionsProviderIfRoot.js";
3
- import { DepRegistryProviderIfRoot } from "./canvas/SceneCanvas/DepRegistryProviderIfRoot.js";
4
1
  import { IconRegistryScope } from "./iconRegistry/IconRegistryProvider.js";
2
+ import { DepRegistryProviderIfRoot } from "./canvas/SceneCanvas/DepRegistryProviderIfRoot.js";
3
+ import { ActionsProviderIfRoot } from "./canvas/SceneCanvas/ActionsProviderIfRoot.js";
4
+ import { PointerProviderIfRoot } from "./canvas/SceneCanvas/PointerProviderIfRoot.js";
5
5
  import { jsx } from "react/jsx-runtime";
6
6
  import { ActionsProvider, ActiveToolContextProvider, ActiveToolContextProviderIfRoot, DepRegistryProvider, PointerContextProvider, SelectionContextProvider, SelectionContextProviderIfRoot } from "@weasel-js/routing/react";
7
7
 
8
- //#region src/WeaselProvider.tsx
8
+ // src/WeaselProvider.tsx
9
9
  /**
10
10
  * Mounts every kit-wide provider at once — deps, actions, active tool,
11
11
  * selection, and pointer — each only if one is not already in scope, or
@@ -24,6 +24,5 @@ function WeaselProvider({ children, isolate = false, icons, iconVariants }) {
24
24
  });
25
25
  }
26
26
 
27
- //#endregion
28
27
  export { WeaselProvider };
29
28
  //# sourceMappingURL=WeaselProvider.js.map
@@ -4,7 +4,7 @@ import { angleOf, isRigid, localToWorld, pxExtentIn, targetCorners } from "../co
4
4
  import { annulusSemiAxes, hitAffordanceRegions, pointRegionAnchor, pointRegionFrame, pointRegionLive, pointRegionScreenQuad, transformOf } from "./hitAffordanceRegions.js";
5
5
  import { PATH_L, PATH_M, PATH_Z, boundsOfPath } from "@weasel-js/geom";
6
6
 
7
- //#region src/affordances/composeAffordanceLayer.ts
7
+ // src/affordances/composeAffordanceLayer.ts
8
8
  /**
9
9
  * Bundle a list of Affordances into a single RenderLayer.
10
10
  *
@@ -294,6 +294,5 @@ function worldOf(region, xf, view) {
294
294
  };
295
295
  }
296
296
 
297
- //#endregion
298
297
  export { composeAffordanceLayer };
299
298
  //# sourceMappingURL=composeAffordanceLayer.js.map
@@ -1,10 +1,10 @@
1
- import { HANDLE_BASE_PX } from "../core/device/targets.js";
2
- import { angleOf, localToWorld } from "../core/geometry/targetFrame.js";
3
1
  import { RESIZE_HANDLE_ANCHORS, fixedCornerOf, handlePoint, isCornerHandle } from "../interactions/actions/resize/cornerHandles.js";
4
- import { transformOf } from "./hitAffordanceRegions.js";
2
+ import { angleOf, localToWorld } from "../core/geometry/targetFrame.js";
5
3
  import { MULTI_RESIZE_TARGET_ID } from "../core/selection/selectionTarget.js";
4
+ import { transformOf } from "./hitAffordanceRegions.js";
5
+ import { HANDLE_BASE_PX } from "../core/device/targets.js";
6
6
 
7
- //#region src/affordances/cornerResize.ts
7
+ // src/affordances/cornerResize.ts
8
8
  var DEFAULT_FILL = "#d4c4a8";
9
9
  var DEFAULT_STROKE = "#1a130d";
10
10
  /**
@@ -115,6 +115,5 @@ function pickRenderTarget(state) {
115
115
  return null;
116
116
  }
117
117
 
118
- //#endregion
119
118
  export { createCornerResizeAffordance };
120
119
  //# sourceMappingURL=cornerResize.js.map
@@ -2,7 +2,7 @@ import { IDENTITY_TARGET, angleOf, localToWorld, normalToWorld, pxExtentIn, targ
2
2
  import { edgeHandlesFit } from "../interactions/actions/resize/cornerHandles.js";
3
3
  import { multiply, scale, scaleDelta, screenAngleOf, standoff, strokeHitTest } from "@weasel-js/geom";
4
4
 
5
- //#region src/affordances/hitAffordanceRegions.ts
5
+ // src/affordances/hitAffordanceRegions.ts
6
6
  /**
7
7
  * Walk affordances for a world-space hit, topmost first.
8
8
  *
@@ -173,6 +173,5 @@ function hitRegion(region, wx, wy, xf, view) {
173
173
  return local.x >= r.x && local.x <= r.x + r.width && local.y >= r.y && local.y <= r.y + r.height;
174
174
  }
175
175
 
176
- //#endregion
177
176
  export { angleOf, annulusSemiAxes, hitAffordanceRegions, localToWorld, pointRegionAnchor, pointRegionFrame, pointRegionLive, pointRegionScreenQuad, transformOf };
178
177
  //# sourceMappingURL=hitAffordanceRegions.js.map
@@ -1,7 +1,7 @@
1
1
  import { enumerateAnchors } from "../interactions/actions/edit-anchors/geometry.js";
2
2
  import { pathToAnchors } from "@weasel-js/geom";
3
3
 
4
- //#region src/affordances/pathAnchors.ts
4
+ // src/affordances/pathAnchors.ts
5
5
  /** Chrome-caps id gating the anchor, control, and segment affordances. */
6
6
  var PATH_ANCHOR_CHROME_ID = "path-edit.anchors";
7
7
  /**
@@ -161,6 +161,5 @@ function withEdited(selection, editingId) {
161
161
  return editingId === null || selection.includes(editingId) ? selection : [...selection, editingId];
162
162
  }
163
163
 
164
- //#endregion
165
164
  export { PATH_ANCHOR_CHROME_ID, createPathAnchorAffordances };
166
165
  //# sourceMappingURL=pathAnchors.js.map
@@ -1,4 +1,4 @@
1
- //#region src/affordances/rotateCursor.ts
1
+ // src/affordances/rotateCursor.ts
2
2
  /**
3
3
  * The `rotate` glyph for a pointer at world point `at` turning something
4
4
  * about world point `pivot`, seen through a view of `scale`. The glyph's arc
@@ -13,6 +13,5 @@ function rotateCursorAt(pivot, at, scale) {
13
13
  };
14
14
  }
15
15
 
16
- //#endregion
17
16
  export { rotateCursorAt };
18
17
  //# sourceMappingURL=rotateCursor.js.map
@@ -1,9 +1,9 @@
1
1
  import { localToWorld } from "../core/geometry/targetFrame.js";
2
- import { transformOf } from "./hitAffordanceRegions.js";
3
2
  import { MULTI_RESIZE_TARGET_ID } from "../core/selection/selectionTarget.js";
3
+ import { transformOf } from "./hitAffordanceRegions.js";
4
4
  import { rotateCursorAt } from "./rotateCursor.js";
5
5
 
6
- //#region src/affordances/rotationHandle.ts
6
+ // src/affordances/rotationHandle.ts
7
7
  var isAnnulusForm = (paint) => "fill" in paint || "stroke" in paint || "insetPx" in paint;
8
8
  var DEFAULT_PAINT = {
9
9
  fill: { paint: {
@@ -119,6 +119,5 @@ function pickTarget(state) {
119
119
  return null;
120
120
  }
121
121
 
122
- //#endregion
123
122
  export { createRotationAffordance };
124
123
  //# sourceMappingURL=rotationHandle.js.map
@@ -1,4 +1,4 @@
1
- //#region src/animation/behaviors/coast.ts
1
+ // src/animation/behaviors/coast.ts
2
2
  var nextCoast = 0;
3
3
  /** A cancel key no other coast holds. */
4
4
  var coastKey = () => `momentum:${nextCoast++}`;
@@ -22,6 +22,5 @@ function clampCorner(bounds, x, y) {
22
22
  };
23
23
  }
24
24
 
25
- //#endregion
26
25
  export { clampCorner, coastKey, sameBounds };
27
26
  //# sourceMappingURL=coast.js.map
@@ -1,8 +1,8 @@
1
- import { translatePoseViaDescriptor } from "../../core/geometry/poseDescriptor.js";
2
1
  import { createTransformOp } from "../../core/ops/transform.js";
2
+ import { translatePoseViaDescriptor } from "../../core/geometry/poseDescriptor.js";
3
3
  import { clampCorner, coastKey, sameBounds } from "./coast.js";
4
4
 
5
- //#region src/animation/behaviors/coastByWrite.ts
5
+ // src/animation/behaviors/coastByWrite.ts
6
6
  /**
7
7
  * A coast over an adapter with no pose targets: one decay of the flick's travel, written to
8
8
  * every node it carries each frame, through `previewPoses` where the adapter has it and
@@ -130,6 +130,5 @@ function coastByWrite(a) {
130
130
  }
131
131
  }
132
132
 
133
- //#endregion
134
133
  export { coastByWrite };
135
134
  //# sourceMappingURL=coastByWrite.js.map
@@ -1,9 +1,9 @@
1
- import { translatePoseViaDescriptor } from "../../core/geometry/poseDescriptor.js";
2
1
  import { createTransformOp } from "../../core/ops/transform.js";
2
+ import { translatePoseViaDescriptor } from "../../core/geometry/poseDescriptor.js";
3
3
  import { poseKey } from "../poseHelpers.js";
4
4
  import { clampCorner, coastKey, sameBounds } from "./coast.js";
5
5
 
6
- //#region src/animation/behaviors/coastOnTargets.ts
6
+ // src/animation/behaviors/coastOnTargets.ts
7
7
  /** A world velocity as the rate of change of a pose at `at`. */
8
8
  function poseVelocity(ax, d, at, vx, vy) {
9
9
  const base = ax.to(at);
@@ -137,6 +137,5 @@ function coastOnTargets(a, targets) {
137
137
  for (const r of [...riders.values()]) launch(r, ctx.current.get(r.id), a.vx, a.vy);
138
138
  }
139
139
 
140
- //#endregion
141
140
  export { coastOnTargets };
142
141
  //# sourceMappingURL=coastOnTargets.js.map
@@ -3,7 +3,7 @@ import { coastByWrite } from "./coastByWrite.js";
3
3
  import { coastOnTargets } from "./coastOnTargets.js";
4
4
  import { getScratch, scratchKey, setScratch } from "@weasel-js/routing";
5
5
 
6
- //#region src/animation/behaviors/momentum.ts
6
+ // src/animation/behaviors/momentum.ts
7
7
  var SAMPLES = scratchKey("momentum.samples");
8
8
  /**
9
9
  * Move behavior that keeps a dragged node coasting after the pointer is
@@ -98,6 +98,5 @@ function momentum(opts) {
98
98
  };
99
99
  }
100
100
 
101
- //#endregion
102
101
  export { momentum };
103
102
  //# sourceMappingURL=momentum.js.map
@@ -1,6 +1,6 @@
1
1
  import { scenePoseTarget } from "./poseTarget.js";
2
2
 
3
- //#region src/animation/clipTargets.ts
3
+ // src/animation/clipTargets.ts
4
4
  /**
5
5
  * A `ClipBinder.target` over a scene. `pose:<node id>` is that node's pose target, the one
6
6
  * `scenePoseTarget` answers, and `rig:<name>` is the target of the rig given under that
@@ -14,6 +14,5 @@ function sceneClipTargets(scene, options = {}) {
14
14
  };
15
15
  }
16
16
 
17
- //#endregion
18
17
  export { sceneClipTargets };
19
18
  //# sourceMappingURL=clipTargets.js.map
@@ -1,7 +1,7 @@
1
- import { poseAxes } from "./poseTarget.js";
2
1
  import { createPoseOverrides } from "../core/scene/poseOverrides.js";
2
+ import { poseAxes } from "./poseTarget.js";
3
3
 
4
- //#region src/animation/departures.ts
4
+ // src/animation/departures.ts
5
5
  /** `base`'s poses with an opacity riding beside them, as one more axis. */
6
6
  function fadedDescriptor(base) {
7
7
  const lerp = base.lerp;
@@ -111,6 +111,5 @@ function createDepartures() {
111
111
  };
112
112
  }
113
113
 
114
- //#endregion
115
114
  export { createDepartures, fadedDescriptor };
116
115
  //# sourceMappingURL=departures.js.map
@@ -1,8 +1,8 @@
1
- import { RECT_POSE_DESCRIPTOR } from "../core/geometry/poseDescriptor.js";
2
1
  import { createTransformOp } from "../core/ops/transform.js";
2
+ import { RECT_POSE_DESCRIPTOR } from "../core/geometry/poseDescriptor.js";
3
3
  import { rewindingSpring, rewindingTween } from "./rewind.js";
4
4
 
5
- //#region src/animation/poseHelpers.ts
5
+ // src/animation/poseHelpers.ts
6
6
  /** The cancel key every move of node `id`'s pose shares. */
7
7
  var poseKey = (id) => `pose:${id}`;
8
8
  function recordTransformOp(adapter, id, from, to, label) {
@@ -164,6 +164,5 @@ function staggerSpringPose(animator, adapter, opts) {
164
164
  });
165
165
  }
166
166
 
167
- //#endregion
168
167
  export { poseKey, springPose, staggerSpringPose, tweenPose };
169
168
  //# sourceMappingURL=poseHelpers.js.map
@@ -1,8 +1,8 @@
1
- import { documentPose } from "../core/scene/effectivePose.js";
2
1
  import { RECT_POSE_DESCRIPTOR } from "../core/geometry/poseDescriptor.js";
2
+ import { documentPose } from "../core/scene/effectivePose.js";
3
3
  import { axesOf, createTarget } from "@weasel-js/animator";
4
4
 
5
- //#region src/animation/poseTarget.ts
5
+ // src/animation/poseTarget.ts
6
6
  /** How `like`'s kind of pose maps to axes: the descriptor's own mapping, else its flat numeric
7
7
  * fields. Null for a pose with neither. */
8
8
  function poseAxes(descriptor, like) {
@@ -112,7 +112,7 @@ function createPoseTarget(opts) {
112
112
  }
113
113
  var sceneTargets = /* @__PURE__ */ new WeakMap();
114
114
  /** Whether two poses hold the same fields, compared without allocating: a running target asks on every publish. */
115
- function samePose(a, b) {
115
+ function samePoseShallow(a, b) {
116
116
  if (a === b) return true;
117
117
  if (typeof a !== "object" || typeof b !== "object" || a === null || b === null) return false;
118
118
  const ra = a;
@@ -169,7 +169,7 @@ function scenePoseTarget(scene, id, descriptor) {
169
169
  if (!n) return;
170
170
  writing = true;
171
171
  try {
172
- if (!samePose(n.pose, pose)) scene.untracked(() => scene.setPose(nid, pose));
172
+ if (!samePoseShallow(n.pose, pose)) scene.untracked(() => scene.setPose(nid, pose));
173
173
  } finally {
174
174
  writing = false;
175
175
  }
@@ -180,13 +180,12 @@ function scenePoseTarget(scene, id, descriptor) {
180
180
  }, () => {
181
181
  if (writing) return false;
182
182
  const n = scene.get(nid);
183
- return !!n && mine !== void 0 && !samePose(n.pose, mine);
183
+ return !!n && mine !== void 0 && !samePoseShallow(n.pose, mine);
184
184
  });
185
185
  if (!target) return void 0;
186
186
  made.set(id, target);
187
187
  return target;
188
188
  }
189
189
 
190
- //#endregion
191
190
  export { createPoseTarget, liveAxes, poseAxes, scenePoseTarget };
192
191
  //# sourceMappingURL=poseTarget.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"poseTarget.js","names":[],"sources":["../../src/animation/poseTarget.ts"],"sourcesContent":["import { RECT_POSE_DESCRIPTOR, type PoseDescriptor } from '../core/geometry/poseDescriptor';\nimport { documentPose, type PoseSource } from '../core/scene/effectivePose';\nimport type { NodeId, PoseOverride, PoseOverrides } from '../core/scene/types';\nimport { axesOf } from '@weasel-js/animator';\nimport { createTarget, type Target, type TargetAxes } from '@weasel-js/animator';\n\n/** What {@link createPoseTarget} takes. */\nexport interface PoseTargetOptions<TPose> {\n /** The node whose pose it is. */\n id: string;\n /** The node's committed pose: where the document says it is. */\n get(): TPose;\n /** Commits a pose: an animation's destination as it starts, and where a canceled one stopped. */\n set(pose: TPose): void;\n /** Where the pose on screen is published while the node moves. */\n overrides: PoseOverrides<TPose>;\n /** Supplies the pose's axes through `PoseDescriptor.axes`. Without one, or where it answers\n * null, the pose has to be a number, an array of numbers, or an object of numeric fields. */\n descriptor?: PoseDescriptor<TPose>;\n}\n\n/** The part of a scene {@link scenePoseTarget} reads and writes. A `Scene` satisfies it. */\nexport interface PoseTargetScene<TPose> extends PoseSource<TPose> {\n readonly overrides: PoseOverrides<TPose>;\n setPose(id: NodeId, pose: TPose): void;\n untracked<T>(fn: () => T): T;\n}\n\n/** How `like`'s kind of pose maps to axes: the descriptor's own mapping, else its flat numeric\n * fields. Null for a pose with neither. */\nexport function poseAxes<TPose>(\n descriptor: PoseDescriptor<TPose> | undefined,\n like: TPose,\n): TargetAxes<TPose> | null {\n return descriptor?.axes?.(like) ?? (axesOf(like) as TargetAxes<TPose> | null);\n}\n\nconst publishers = new WeakMap<object, () => void>();\n\n/** One function per overrides table, so every target publishing into it shares one commit a frame. */\nfunction publisherOf<TPose>(overrides: PoseOverrides<TPose>): () => void {\n let publish = publishers.get(overrides);\n if (!publish) {\n publish = () => overrides.commit();\n publishers.set(overrides, publish);\n }\n return publish;\n}\n\n/**\n * `poseAxes` for the pose `get` answers, with `from` keeping the fields that are not axes as\n * that pose has them now. Reading them once would leave them stale in every pose a canceled\n * animation commits. Null where the pose has no axes.\n */\nexport function liveAxes<TPose>(\n descriptor: PoseDescriptor<TPose> | undefined,\n get: () => TPose,\n): TargetAxes<TPose> | null {\n let like = get();\n let axes = poseAxes(descriptor, like);\n if (!axes) return null;\n const { count, angles } = axes;\n const current = (): TargetAxes<TPose> => {\n const now = get();\n if (now !== like) {\n const next = poseAxes(descriptor, now);\n if (next && next.count === count) axes = next;\n like = now;\n }\n return axes!;\n };\n return {\n count,\n angles,\n to: (p) => current().to(p),\n from: (a) => current().from(a),\n add: axes.add && ((p, d) => {\n const now = current();\n if (now.add) return now.add(p, d);\n return now.from(now.to(p).map((n, i) => n + d[i]!));\n }),\n write: axes.write && ((p, out, at) => {\n const now = current();\n if (now.write) now.write(p, out, at);\n else now.to(p).forEach((n, i) => { out[at + i] = n; });\n }),\n };\n}\n\nfunction build<TPose>(\n opts: PoseTargetOptions<TPose>,\n onRest?: () => void,\n /** Whether something else has written the committed pose since an animation last did. */\n overwritten?: () => boolean,\n): Target<TPose> | null {\n const { overrides } = opts;\n const id = opts.id as NodeId;\n const axes = liveAxes(opts.descriptor, opts.get);\n if (!axes) return null;\n const entry: PoseOverride<TPose> = {};\n let installed = false;\n /** While installed, stops the run as soon as the table changes after something else wrote\n * the pose: a drag laid over the run commits and then lets go, which would show this run's\n * last frame until its next one. */\n let unwatch: (() => void) | null = null;\n const rest = (): void => {\n installed = false;\n unwatch?.();\n unwatch = null;\n overrides.clear(id, entry);\n onRest?.();\n };\n const target = createTarget<TPose>({\n get: opts.get,\n set: opts.set,\n axes,\n show(pose) {\n // The writer wins: what was left to travel belonged to a pose that is no longer committed.\n if (target.active && overwritten?.()) target.stop({ commit: false });\n if (!target.active) {\n rest();\n return;\n }\n entry.pose = pose;\n // Reinstalled where it stood if the table dropped it; an override laid over it since, a drag's, is not taken back.\n if (!overrides.has(id, entry)) overrides.set(id, entry);\n installed = true;\n if (overwritten && unwatch === null) {\n unwatch = overrides.subscribe(() => {\n if (!target.active || !overwritten()) return;\n target.stop({ commit: false });\n if (installed) rest();\n });\n }\n },\n publish: publisherOf(overrides),\n });\n return target;\n}\n\n/**\n * A {@link Target} over one node's pose. Animations on it commit their destination through\n * `set` as they start, and the pose on screen reaches the paint and pick walks as a pose\n * override: installed while the node moves and cleared when it comes to rest.\n *\n * Throws for a pose with no axes. Make one per node: two targets over one node do not add.\n * {@link scenePoseTarget} keeps that one for a scene's nodes.\n */\nexport function createPoseTarget<TPose>(opts: PoseTargetOptions<TPose>): Target<TPose> {\n const target = build(opts);\n if (!target) {\n throw new Error('createPoseTarget: this pose has no axes; give a descriptor whose `axes` maps it');\n }\n return target;\n}\n\nconst sceneTargets = new WeakMap<object, Map<string, Target<unknown>>>();\n\n/** Whether two poses hold the same fields, compared without allocating: a running target asks on every publish. */\nfunction samePose(a: unknown, b: unknown): boolean {\n if (a === b) return true;\n if (typeof a !== 'object' || typeof b !== 'object' || a === null || b === null) return false;\n const ra = a as Record<string, unknown>;\n const rb = b as Record<string, unknown>;\n let count = 0;\n for (const k in ra) {\n if (!Object.hasOwn(ra, k)) continue;\n if (!Object.hasOwn(rb, k) || ra[k] !== rb[k]) return false;\n count++;\n }\n for (const k in rb) if (Object.hasOwn(rb, k)) count--;\n return count === 0;\n}\n\n/**\n * The pose target of node `id` in `scene`: the same one on every call, so everything animating\n * the node adds. Its committed value is the node's document pose, written without recording;\n * a caller that wants the move in history records its own op first.\n *\n * Undefined for a node that is not in the scene, or whose pose has no axes. `descriptor`\n * defaults to `RECT_POSE_DESCRIPTOR`, and is read the first time a node's target is made.\n */\nexport function scenePoseTarget<TPose>(\n scene: PoseTargetScene<TPose>,\n id: string,\n descriptor?: PoseDescriptor<TPose>,\n): Target<TPose> | undefined {\n let made = sceneTargets.get(scene.overrides);\n if (!made) {\n made = new Map();\n sceneTargets.set(scene.overrides, made);\n }\n const nid = id as NodeId;\n const node = scene.get(nid);\n const by = descriptor ?? (RECT_POSE_DESCRIPTOR as unknown as PoseDescriptor<TPose>);\n const held = made.get(id) as Target<TPose> | undefined;\n // A pose that has changed shape at rest, a polygon given more points, needs axes made for it.\n const fits = !held || held.active || !node\n || poseAxes(by, documentPose(scene, node))?.count === held.axisCount;\n if (held && fits) return held;\n if (!node) return undefined;\n // A node removed mid-flight keeps answering with the last pose it had.\n let last = documentPose(scene, node);\n /** The node's pose as an animation last left it, or as it was when the first one started. */\n let mine: TPose | undefined;\n /** While this target's own commit is being written. */\n let writing = false;\n const cache = made;\n let target: Target<TPose> | null = null;\n target = build<TPose>({\n id,\n descriptor: by,\n overrides: scene.overrides,\n get() {\n const n = scene.get(nid);\n if (n) last = documentPose(scene, n);\n if (n && !target?.active) mine = n.pose;\n return last;\n },\n set(pose) {\n const n = scene.get(nid);\n if (!n) return;\n // The write runs the layout's reflow at once, and a reflow publishes glides to the overrides.\n writing = true;\n try {\n if (!samePose(n.pose, pose)) scene.untracked(() => scene.setPose(nid, pose));\n } finally {\n writing = false;\n }\n mine = scene.get(nid)?.pose;\n },\n }, () => {\n if (!scene.get(nid)) cache.delete(id);\n }, () => {\n if (writing) return false;\n const n = scene.get(nid);\n return !!n && mine !== undefined && !samePose(n.pose, mine);\n });\n if (!target) return undefined;\n made.set(id, target as Target<unknown>);\n return target;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"poseTarget.js","names":[],"sources":["../../src/animation/poseTarget.ts"],"sourcesContent":["import { RECT_POSE_DESCRIPTOR, type PoseDescriptor } from '../core/geometry/poseDescriptor';\nimport { documentPose, type PoseSource } from '../core/scene/effectivePose';\nimport type { NodeId, PoseOverride, PoseOverrides } from '../core/scene/types';\nimport { axesOf } from '@weasel-js/animator';\nimport { createTarget, type Target, type TargetAxes } from '@weasel-js/animator';\n\n/** What {@link createPoseTarget} takes. */\nexport interface PoseTargetOptions<TPose> {\n /** The node whose pose it is. */\n id: string;\n /** The node's committed pose: where the document says it is. */\n get(): TPose;\n /** Commits a pose: an animation's destination as it starts, and where a canceled one stopped. */\n set(pose: TPose): void;\n /** Where the pose on screen is published while the node moves. */\n overrides: PoseOverrides<TPose>;\n /** Supplies the pose's axes through `PoseDescriptor.axes`. Without one, or where it answers\n * null, the pose has to be a number, an array of numbers, or an object of numeric fields. */\n descriptor?: PoseDescriptor<TPose>;\n}\n\n/** The part of a scene {@link scenePoseTarget} reads and writes. A `Scene` satisfies it. */\nexport interface PoseTargetScene<TPose> extends PoseSource<TPose> {\n readonly overrides: PoseOverrides<TPose>;\n setPose(id: NodeId, pose: TPose): void;\n untracked<T>(fn: () => T): T;\n}\n\n/** How `like`'s kind of pose maps to axes: the descriptor's own mapping, else its flat numeric\n * fields. Null for a pose with neither. */\nexport function poseAxes<TPose>(\n descriptor: PoseDescriptor<TPose> | undefined,\n like: TPose,\n): TargetAxes<TPose> | null {\n return descriptor?.axes?.(like) ?? (axesOf(like) as TargetAxes<TPose> | null);\n}\n\nconst publishers = new WeakMap<object, () => void>();\n\n/** One function per overrides table, so every target publishing into it shares one commit a frame. */\nfunction publisherOf<TPose>(overrides: PoseOverrides<TPose>): () => void {\n let publish = publishers.get(overrides);\n if (!publish) {\n publish = () => overrides.commit();\n publishers.set(overrides, publish);\n }\n return publish;\n}\n\n/**\n * `poseAxes` for the pose `get` answers, with `from` keeping the fields that are not axes as\n * that pose has them now. Reading them once would leave them stale in every pose a canceled\n * animation commits. Null where the pose has no axes.\n */\nexport function liveAxes<TPose>(\n descriptor: PoseDescriptor<TPose> | undefined,\n get: () => TPose,\n): TargetAxes<TPose> | null {\n let like = get();\n let axes = poseAxes(descriptor, like);\n if (!axes) return null;\n const { count, angles } = axes;\n const current = (): TargetAxes<TPose> => {\n const now = get();\n if (now !== like) {\n const next = poseAxes(descriptor, now);\n if (next && next.count === count) axes = next;\n like = now;\n }\n return axes!;\n };\n return {\n count,\n angles,\n to: (p) => current().to(p),\n from: (a) => current().from(a),\n add: axes.add && ((p, d) => {\n const now = current();\n if (now.add) return now.add(p, d);\n return now.from(now.to(p).map((n, i) => n + d[i]!));\n }),\n write: axes.write && ((p, out, at) => {\n const now = current();\n if (now.write) now.write(p, out, at);\n else now.to(p).forEach((n, i) => { out[at + i] = n; });\n }),\n };\n}\n\nfunction build<TPose>(\n opts: PoseTargetOptions<TPose>,\n onRest?: () => void,\n /** Whether something else has written the committed pose since an animation last did. */\n overwritten?: () => boolean,\n): Target<TPose> | null {\n const { overrides } = opts;\n const id = opts.id as NodeId;\n const axes = liveAxes(opts.descriptor, opts.get);\n if (!axes) return null;\n const entry: PoseOverride<TPose> = {};\n let installed = false;\n /** While installed, stops the run as soon as the table changes after something else wrote\n * the pose: a drag laid over the run commits and then lets go, which would show this run's\n * last frame until its next one. */\n let unwatch: (() => void) | null = null;\n const rest = (): void => {\n installed = false;\n unwatch?.();\n unwatch = null;\n overrides.clear(id, entry);\n onRest?.();\n };\n const target = createTarget<TPose>({\n get: opts.get,\n set: opts.set,\n axes,\n show(pose) {\n // The writer wins: what was left to travel belonged to a pose that is no longer committed.\n if (target.active && overwritten?.()) target.stop({ commit: false });\n if (!target.active) {\n rest();\n return;\n }\n entry.pose = pose;\n // Reinstalled where it stood if the table dropped it; an override laid over it since, a drag's, is not taken back.\n if (!overrides.has(id, entry)) overrides.set(id, entry);\n installed = true;\n if (overwritten && unwatch === null) {\n unwatch = overrides.subscribe(() => {\n if (!target.active || !overwritten()) return;\n target.stop({ commit: false });\n if (installed) rest();\n });\n }\n },\n publish: publisherOf(overrides),\n });\n return target;\n}\n\n/**\n * A {@link Target} over one node's pose. Animations on it commit their destination through\n * `set` as they start, and the pose on screen reaches the paint and pick walks as a pose\n * override: installed while the node moves and cleared when it comes to rest.\n *\n * Throws for a pose with no axes. Make one per node: two targets over one node do not add.\n * {@link scenePoseTarget} keeps that one for a scene's nodes.\n */\nexport function createPoseTarget<TPose>(opts: PoseTargetOptions<TPose>): Target<TPose> {\n const target = build(opts);\n if (!target) {\n throw new Error('createPoseTarget: this pose has no axes; give a descriptor whose `axes` maps it');\n }\n return target;\n}\n\nconst sceneTargets = new WeakMap<object, Map<string, Target<unknown>>>();\n\n/** Whether two poses hold the same fields, compared without allocating: a running target asks on every publish. */\nfunction samePoseShallow(a: unknown, b: unknown): boolean {\n if (a === b) return true;\n if (typeof a !== 'object' || typeof b !== 'object' || a === null || b === null) return false;\n const ra = a as Record<string, unknown>;\n const rb = b as Record<string, unknown>;\n let count = 0;\n for (const k in ra) {\n if (!Object.hasOwn(ra, k)) continue;\n if (!Object.hasOwn(rb, k) || ra[k] !== rb[k]) return false;\n count++;\n }\n for (const k in rb) if (Object.hasOwn(rb, k)) count--;\n return count === 0;\n}\n\n/**\n * The pose target of node `id` in `scene`: the same one on every call, so everything animating\n * the node adds. Its committed value is the node's document pose, written without recording;\n * a caller that wants the move in history records its own op first.\n *\n * Undefined for a node that is not in the scene, or whose pose has no axes. `descriptor`\n * defaults to `RECT_POSE_DESCRIPTOR`, and is read the first time a node's target is made.\n */\nexport function scenePoseTarget<TPose>(\n scene: PoseTargetScene<TPose>,\n id: string,\n descriptor?: PoseDescriptor<TPose>,\n): Target<TPose> | undefined {\n let made = sceneTargets.get(scene.overrides);\n if (!made) {\n made = new Map();\n sceneTargets.set(scene.overrides, made);\n }\n const nid = id as NodeId;\n const node = scene.get(nid);\n const by = descriptor ?? (RECT_POSE_DESCRIPTOR as unknown as PoseDescriptor<TPose>);\n const held = made.get(id) as Target<TPose> | undefined;\n // A pose that has changed shape at rest, a polygon given more points, needs axes made for it.\n const fits = !held || held.active || !node\n || poseAxes(by, documentPose(scene, node))?.count === held.axisCount;\n if (held && fits) return held;\n if (!node) return undefined;\n // A node removed mid-flight keeps answering with the last pose it had.\n let last = documentPose(scene, node);\n /** The node's pose as an animation last left it, or as it was when the first one started. */\n let mine: TPose | undefined;\n /** While this target's own commit is being written. */\n let writing = false;\n const cache = made;\n let target: Target<TPose> | null = null;\n target = build<TPose>({\n id,\n descriptor: by,\n overrides: scene.overrides,\n get() {\n const n = scene.get(nid);\n if (n) last = documentPose(scene, n);\n if (n && !target?.active) mine = n.pose;\n return last;\n },\n set(pose) {\n const n = scene.get(nid);\n if (!n) return;\n // The write runs the layout's reflow at once, and a reflow publishes glides to the overrides.\n writing = true;\n try {\n if (!samePoseShallow(n.pose, pose)) scene.untracked(() => scene.setPose(nid, pose));\n } finally {\n writing = false;\n }\n mine = scene.get(nid)?.pose;\n },\n }, () => {\n if (!scene.get(nid)) cache.delete(id);\n }, () => {\n if (writing) return false;\n const n = scene.get(nid);\n return !!n && mine !== undefined && !samePoseShallow(n.pose, mine);\n });\n if (!target) return undefined;\n made.set(id, target as Target<unknown>);\n return target;\n}\n"],"mappings":";;;;;;;AA8BA,SAAgB,SACd,YACA,MAC0B;CAC1B,OAAO,YAAY,OAAO,IAAI,KAAM,OAAO,IAAI;AACjD;AAEA,IAAM,6BAAa,IAAI,QAA4B;;AAGnD,SAAS,YAAmB,WAA6C;CACvE,IAAI,UAAU,WAAW,IAAI,SAAS;CACtC,IAAI,CAAC,SAAS;EACZ,gBAAgB,UAAU,OAAO;EACjC,WAAW,IAAI,WAAW,OAAO;CACnC;CACA,OAAO;AACT;;;;;;AAOA,SAAgB,SACd,YACA,KAC0B;CAC1B,IAAI,OAAO,IAAI;CACf,IAAI,OAAO,SAAS,YAAY,IAAI;CACpC,IAAI,CAAC,MAAM,OAAO;CAClB,MAAM,EAAE,OAAO,WAAW;CAC1B,MAAM,gBAAmC;EACvC,MAAM,MAAM,IAAI;EAChB,IAAI,QAAQ,MAAM;GAChB,MAAM,OAAO,SAAS,YAAY,GAAG;GACrC,IAAI,QAAQ,KAAK,UAAU,OAAO,OAAO;GACzC,OAAO;EACT;EACA,OAAO;CACT;CACA,OAAO;EACL;EACA;EACA,KAAK,MAAM,QAAQ,CAAC,CAAC,GAAG,CAAC;EACzB,OAAO,MAAM,QAAQ,CAAC,CAAC,KAAK,CAAC;EAC7B,KAAK,KAAK,SAAS,GAAG,MAAM;GAC1B,MAAM,MAAM,QAAQ;GACpB,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,GAAG,CAAC;GAChC,OAAO,IAAI,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,MAAM,IAAI,EAAE,EAAG,CAAC;EACpD;EACA,OAAO,KAAK,WAAW,GAAG,KAAK,OAAO;GACpC,MAAM,MAAM,QAAQ;GACpB,IAAI,IAAI,OAAO,IAAI,MAAM,GAAG,KAAK,EAAE;QAC9B,IAAI,GAAG,CAAC,CAAC,CAAC,SAAS,GAAG,MAAM;IAAE,IAAI,KAAK,KAAK;GAAG,CAAC;EACvD;CACF;AACF;AAEA,SAAS,MACP,MACA,QAEA,aACsB;CACtB,MAAM,EAAE,cAAc;CACtB,MAAM,KAAK,KAAK;CAChB,MAAM,OAAO,SAAS,KAAK,YAAY,KAAK,GAAG;CAC/C,IAAI,CAAC,MAAM,OAAO;CAClB,MAAM,QAA6B,CAAC;CACpC,IAAI,YAAY;;;;CAIhB,IAAI,UAA+B;CACnC,MAAM,aAAmB;EACvB,YAAY;EACZ,UAAU;EACV,UAAU;EACV,UAAU,MAAM,IAAI,KAAK;EACzB,SAAS;CACX;CACA,MAAM,SAAS,aAAoB;EACjC,KAAK,KAAK;EACV,KAAK,KAAK;EACV;EACA,KAAK,MAAM;GAET,IAAI,OAAO,UAAU,cAAc,GAAG,OAAO,KAAK,EAAE,QAAQ,MAAM,CAAC;GACnE,IAAI,CAAC,OAAO,QAAQ;IAClB,KAAK;IACL;GACF;GACA,MAAM,OAAO;GAEb,IAAI,CAAC,UAAU,IAAI,IAAI,KAAK,GAAG,UAAU,IAAI,IAAI,KAAK;GACtD,YAAY;GACZ,IAAI,eAAe,YAAY,MAC7B,UAAU,UAAU,gBAAgB;IAClC,IAAI,CAAC,OAAO,UAAU,CAAC,YAAY,GAAG;IACtC,OAAO,KAAK,EAAE,QAAQ,MAAM,CAAC;IAC7B,IAAI,WAAW,KAAK;GACtB,CAAC;EAEL;EACA,SAAS,YAAY,SAAS;CAChC,CAAC;CACD,OAAO;AACT;;;;;;;;;AAUA,SAAgB,iBAAwB,MAA+C;CACrF,MAAM,SAAS,MAAM,IAAI;CACzB,IAAI,CAAC,QACH,MAAM,IAAI,MAAM,iFAAiF;CAEnG,OAAO;AACT;AAEA,IAAM,+BAAe,IAAI,QAA8C;;AAGvE,SAAS,gBAAgB,GAAY,GAAqB;CACxD,IAAI,MAAM,GAAG,OAAO;CACpB,IAAI,OAAO,MAAM,YAAY,OAAO,MAAM,YAAY,MAAM,QAAQ,MAAM,MAAM,OAAO;CACvF,MAAM,KAAK;CACX,MAAM,KAAK;CACX,IAAI,QAAQ;CACZ,KAAK,MAAM,KAAK,IAAI;EAClB,IAAI,CAAC,OAAO,OAAO,IAAI,CAAC,GAAG;EAC3B,IAAI,CAAC,OAAO,OAAO,IAAI,CAAC,KAAK,GAAG,OAAO,GAAG,IAAI,OAAO;EACrD;CACF;CACA,KAAK,MAAM,KAAK,IAAI,IAAI,OAAO,OAAO,IAAI,CAAC,GAAG;CAC9C,OAAO,UAAU;AACnB;;;;;;;;;AAUA,SAAgB,gBACd,OACA,IACA,YAC2B;CAC3B,IAAI,OAAO,aAAa,IAAI,MAAM,SAAS;CAC3C,IAAI,CAAC,MAAM;EACT,uBAAO,IAAI,IAAI;EACf,aAAa,IAAI,MAAM,WAAW,IAAI;CACxC;CACA,MAAM,MAAM;CACZ,MAAM,OAAO,MAAM,IAAI,GAAG;CAC1B,MAAM,KAAK,cAAe;CAC1B,MAAM,OAAO,KAAK,IAAI,EAAE;CAExB,MAAM,OAAO,CAAC,QAAQ,KAAK,UAAU,CAAC,QACjC,SAAS,IAAI,aAAa,OAAO,IAAI,CAAC,CAAC,EAAE,UAAU,KAAK;CAC7D,IAAI,QAAQ,MAAM,OAAO;CACzB,IAAI,CAAC,MAAM,OAAO;CAElB,IAAI,OAAO,aAAa,OAAO,IAAI;;CAEnC,IAAI;;CAEJ,IAAI,UAAU;CACd,MAAM,QAAQ;CACd,IAAI,SAA+B;CACnC,SAAS,MAAa;EACpB;EACA,YAAY;EACZ,WAAW,MAAM;EACjB,MAAM;GACJ,MAAM,IAAI,MAAM,IAAI,GAAG;GACvB,IAAI,GAAG,OAAO,aAAa,OAAO,CAAC;GACnC,IAAI,KAAK,CAAC,QAAQ,QAAQ,OAAO,EAAE;GACnC,OAAO;EACT;EACA,IAAI,MAAM;GACR,MAAM,IAAI,MAAM,IAAI,GAAG;GACvB,IAAI,CAAC,GAAG;GAER,UAAU;GACV,IAAI;IACF,IAAI,CAAC,gBAAgB,EAAE,MAAM,IAAI,GAAG,MAAM,gBAAgB,MAAM,QAAQ,KAAK,IAAI,CAAC;GACpF,UAAU;IACR,UAAU;GACZ;GACA,OAAO,MAAM,IAAI,GAAG,CAAC,EAAE;EACzB;CACF,SAAS;EACP,IAAI,CAAC,MAAM,IAAI,GAAG,GAAG,MAAM,OAAO,EAAE;CACtC,SAAS;EACP,IAAI,SAAS,OAAO;EACpB,MAAM,IAAI,MAAM,IAAI,GAAG;EACvB,OAAO,CAAC,CAAC,KAAK,SAAS,UAAa,CAAC,gBAAgB,EAAE,MAAM,IAAI;CACnE,CAAC;CACD,IAAI,CAAC,QAAQ,OAAO;CACpB,KAAK,IAAI,IAAI,MAAyB;CACtC,OAAO;AACT"}
@@ -2,7 +2,7 @@ import { createDepartures } from "./departures.js";
2
2
  import { useEffect, useMemo } from "react";
3
3
  import { useLatest } from "@weasel-js/react";
4
4
 
5
- //#region src/animation/poseTransition.ts
5
+ // src/animation/poseTransition.ts
6
6
  /**
7
7
  * The writes a {@link PoseTransitionSeat} glides unless told otherwise: a
8
8
  * direct scene call, an undo, and a redo. An action's commit (`'ops'`) is
@@ -59,6 +59,5 @@ function usePoseTransition(scene, seat) {
59
59
  return departures;
60
60
  }
61
61
 
62
- //#endregion
63
62
  export { bindPoseTransition, glidesByDefault, usePoseTransition };
64
63
  //# sourceMappingURL=poseTransition.js.map