@weasel-js/core 1.9.4 → 1.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +750 -0
- package/README.md +5 -3
- package/dist/WeaselProvider.js +5 -7
- package/dist/WeaselProvider.js.map +1 -1
- package/dist/affordances/composeAffordanceLayer.js +91 -83
- package/dist/affordances/composeAffordanceLayer.js.map +1 -1
- package/dist/affordances/cornerResize.js +3 -2
- package/dist/affordances/cornerResize.js.map +1 -1
- package/dist/affordances/hitAffordanceRegions.js +54 -100
- package/dist/affordances/hitAffordanceRegions.js.map +1 -1
- package/dist/affordances/pathAnchors.js.map +1 -1
- package/dist/affordances/rotationHandle.js +5 -4
- package/dist/affordances/rotationHandle.js.map +1 -1
- package/dist/animation/behaviors/coast.js +21 -0
- package/dist/animation/behaviors/coast.js.map +1 -0
- package/dist/animation/behaviors/coastByWrite.js +107 -0
- package/dist/animation/behaviors/coastByWrite.js.map +1 -0
- package/dist/animation/behaviors/coastOnTargets.js +94 -0
- package/dist/animation/behaviors/coastOnTargets.js.map +1 -0
- package/dist/animation/behaviors/momentum.js +48 -136
- package/dist/animation/behaviors/momentum.js.map +1 -1
- package/dist/animation/clipTargets.js +12 -0
- package/dist/animation/clipTargets.js.map +1 -0
- package/dist/animation/index.js +15 -20
- package/dist/animation/poseHelpers.js +112 -33
- package/dist/animation/poseHelpers.js.map +1 -1
- package/dist/animation/poseTarget.js +115 -0
- package/dist/animation/poseTarget.js.map +1 -0
- package/dist/animation/reflow.js +113 -83
- package/dist/animation/reflow.js.map +1 -1
- package/dist/animation/rewind.js +66 -0
- package/dist/animation/rewind.js.map +1 -0
- package/dist/animation/rig/bindRig.js +85 -53
- package/dist/animation/rig/bindRig.js.map +1 -1
- package/dist/animation/rig/rigNode.js +93 -0
- package/dist/animation/rig/rigNode.js.map +1 -0
- package/dist/animation/rig/rigSeat.js +26 -0
- package/dist/animation/rig/rigSeat.js.map +1 -0
- package/dist/animation/rig/skinBinding.js +56 -0
- package/dist/animation/rig/skinBinding.js.map +1 -0
- package/dist/animation/rig/useRig.js +31 -16
- package/dist/animation/rig/useRig.js.map +1 -1
- package/dist/animation/wrappers/animateLifecycle.js +8 -7
- package/dist/animation/wrappers/animateLifecycle.js.map +1 -1
- package/dist/animation/wrappers/animateOnSetPose.js +31 -31
- package/dist/animation/wrappers/animateOnSetPose.js.map +1 -1
- package/dist/animation/wrappers/instantPose.js.map +1 -1
- package/dist/animation/writtenPoseTarget.js +33 -0
- package/dist/animation/writtenPoseTarget.js.map +1 -0
- package/dist/autoPoseDescriptor-DHg5KqaJ.d.ts +27 -0
- package/dist/barrel/canvas.js +31 -0
- package/dist/barrel/chrome.js +10 -10
- package/dist/barrel/input.js +16 -17
- package/dist/barrel/interactions.js +35 -39
- package/dist/barrel/paint.js +11 -18
- package/dist/barrel/paths.js +12 -19
- package/dist/barrel/renderer.js +14 -20
- package/dist/barrel/routing.js +42 -36
- package/dist/barrel/scene.js +37 -0
- package/dist/barrel/text.js +9 -18
- package/dist/barrel/viewport.js +41 -51
- package/dist/canvas/Canvas.js +281 -475
- package/dist/canvas/Canvas.js.map +1 -1
- package/dist/canvas/CanvasView.js +169 -188
- package/dist/canvas/CanvasView.js.map +1 -1
- package/dist/canvas/CursorCoordsHud.js +22 -23
- package/dist/canvas/CursorCoordsHud.js.map +1 -1
- package/dist/canvas/DrawCanvas.js +39 -56
- package/dist/canvas/DrawCanvas.js.map +1 -1
- package/dist/canvas/ModalityHud.js.map +1 -1
- package/dist/canvas/NodeShape.js +28 -29
- package/dist/canvas/NodeShape.js.map +1 -1
- package/dist/canvas/PickHud.js.map +1 -1
- package/dist/canvas/SceneCanvas/DevHuds.js +40 -0
- package/dist/canvas/SceneCanvas/DevHuds.js.map +1 -0
- package/dist/canvas/SceneCanvas/GestureDispatcherMounter.js +66 -107
- package/dist/canvas/SceneCanvas/GestureDispatcherMounter.js.map +1 -1
- package/dist/canvas/SceneCanvas/PointerProviderIfRoot.js +27 -31
- package/dist/canvas/SceneCanvas/PointerProviderIfRoot.js.map +1 -1
- package/dist/canvas/SceneCanvas/StandardActionsRegistrar.js +51 -54
- package/dist/canvas/SceneCanvas/StandardActionsRegistrar.js.map +1 -1
- package/dist/canvas/SceneCanvas/ToolKeybindingsMounter.js +3 -3
- package/dist/canvas/SceneCanvas/ToolKeybindingsMounter.js.map +1 -1
- package/dist/canvas/SceneCanvas/coordTrace.js +37 -1
- package/dist/canvas/SceneCanvas/coordTrace.js.map +1 -1
- package/dist/canvas/SceneCanvas/defaultNodeProperties.js +40 -29
- package/dist/canvas/SceneCanvas/defaultNodeProperties.js.map +1 -1
- package/dist/canvas/SceneCanvas/defaultNodeRouting.js +1 -1
- package/dist/canvas/SceneCanvas/defaultNodeRouting.js.map +1 -1
- package/dist/canvas/SceneCanvas/dispatcherGestureBounds.js.map +1 -1
- package/dist/canvas/SceneCanvas/features.js +73 -43
- package/dist/canvas/SceneCanvas/features.js.map +1 -1
- package/dist/canvas/SceneCanvas/isDev.js.map +1 -1
- package/dist/canvas/SceneCanvas/poseGeometry.js +33 -37
- package/dist/canvas/SceneCanvas/poseGeometry.js.map +1 -1
- package/dist/canvas/SceneCanvas/props.js +15 -14
- package/dist/canvas/SceneCanvas/props.js.map +1 -1
- package/dist/canvas/SceneCanvas/toolRegistry.js +23 -0
- package/dist/canvas/SceneCanvas/toolRegistry.js.map +1 -0
- package/dist/canvas/SceneCanvas/useActionsPropResolver.js +6 -1
- package/dist/canvas/SceneCanvas/useActionsPropResolver.js.map +1 -1
- package/dist/canvas/SceneCanvas/useBuiltinShapeTools.js.map +1 -1
- package/dist/canvas/SceneCanvas/useBuiltinTools.js +21 -0
- package/dist/canvas/SceneCanvas/useBuiltinTools.js.map +1 -0
- package/dist/canvas/SceneCanvas/useCanvasCamera.js +38 -0
- package/dist/canvas/SceneCanvas/useCanvasCamera.js.map +1 -0
- package/dist/canvas/SceneCanvas/useCanvasDispatcher.js +20 -0
- package/dist/canvas/SceneCanvas/useCanvasDispatcher.js.map +1 -0
- package/dist/canvas/SceneCanvas/useCanvasSelection.js +16 -0
- package/dist/canvas/SceneCanvas/useCanvasSelection.js.map +1 -0
- package/dist/canvas/SceneCanvas/useCanvasTools.js +67 -0
- package/dist/canvas/SceneCanvas/useCanvasTools.js.map +1 -0
- package/dist/canvas/SceneCanvas/useDispatcherOverlayLayer.js +29 -29
- package/dist/canvas/SceneCanvas/useDispatcherOverlayLayer.js.map +1 -1
- package/dist/canvas/SceneCanvas/useHeldModifiers.js +20 -0
- package/dist/canvas/SceneCanvas/useHeldModifiers.js.map +1 -0
- package/dist/canvas/SceneCanvas/useNodeAtPoint.js +26 -0
- package/dist/canvas/SceneCanvas/useNodeAtPoint.js.map +1 -0
- package/dist/canvas/SceneCanvas/useNodeKinds.js +26 -0
- package/dist/canvas/SceneCanvas/useNodeKinds.js.map +1 -0
- package/dist/canvas/SceneCanvas/usePreviewGhostLayer.js +39 -37
- package/dist/canvas/SceneCanvas/usePreviewGhostLayer.js.map +1 -1
- package/dist/canvas/SceneCanvas/useSceneCanvasHandle.js +47 -0
- package/dist/canvas/SceneCanvas/useSceneCanvasHandle.js.map +1 -0
- package/dist/canvas/SceneCanvas/useSceneCanvasLayers.js +66 -0
- package/dist/canvas/SceneCanvas/useSceneCanvasLayers.js.map +1 -0
- package/dist/canvas/SceneCanvas/useSceneChrome.js +59 -0
- package/dist/canvas/SceneCanvas/useSceneChrome.js.map +1 -0
- package/dist/canvas/SceneCanvas/useSceneRedrawSources.js +23 -0
- package/dist/canvas/SceneCanvas/useSceneRedrawSources.js.map +1 -0
- package/dist/canvas/SceneCanvas/useSceneSelectTool.js +76 -80
- package/dist/canvas/SceneCanvas/useSceneSelectTool.js.map +1 -1
- package/dist/canvas/SceneCanvas/useSceneSlotLayers.js +37 -0
- package/dist/canvas/SceneCanvas/useSceneSlotLayers.js.map +1 -0
- package/dist/canvas/SceneCanvas/useSelectionOverlayLayer.js +38 -0
- package/dist/canvas/SceneCanvas/useSelectionOverlayLayer.js.map +1 -0
- package/dist/canvas/SceneCanvas/useViewLayerGate.js +20 -0
- package/dist/canvas/SceneCanvas/useViewLayerGate.js.map +1 -0
- package/dist/canvas/SceneCanvas/useViewportActions.js +9 -1
- package/dist/canvas/SceneCanvas/useViewportActions.js.map +1 -1
- package/dist/canvas/SceneCanvas/worldPointAt.js +9 -0
- package/dist/canvas/SceneCanvas/worldPointAt.js.map +1 -0
- package/dist/canvas/SceneCanvas.js +303 -707
- package/dist/canvas/SceneCanvas.js.map +1 -1
- package/dist/canvas/SceneViewCanvas.js +41 -47
- package/dist/canvas/SceneViewCanvas.js.map +1 -1
- package/dist/canvas/adapterDerivedPath.js +26 -0
- package/dist/canvas/adapterDerivedPath.js.map +1 -0
- package/dist/canvas/affordanceAt.js +11 -1
- package/dist/canvas/affordanceAt.js.map +1 -1
- package/dist/canvas/buildSceneLayer.js +81 -61
- package/dist/canvas/buildSceneLayer.js.map +1 -1
- package/dist/canvas/buildSceneTree.js.map +1 -1
- package/dist/canvas/canvasRenderer.js +40 -44
- package/dist/canvas/canvasRenderer.js.map +1 -1
- package/dist/canvas/colorOverrides.js.map +1 -1
- package/dist/canvas/defaultDrawOne.js +12 -12
- package/dist/canvas/defaultDrawOne.js.map +1 -1
- package/dist/canvas/deps/areaSelect.js +4 -4
- package/dist/canvas/deps/areaSelect.js.map +1 -1
- package/dist/canvas/deps/debug.js.map +1 -1
- package/dist/canvas/deps/editAnchors.js +49 -68
- package/dist/canvas/deps/editAnchors.js.map +1 -1
- package/dist/canvas/deps/geometryProjection.js.map +1 -1
- package/dist/canvas/deps/hitTestArea.js +31 -26
- package/dist/canvas/deps/hitTestArea.js.map +1 -1
- package/dist/canvas/deps/insert.js +65 -54
- package/dist/canvas/deps/insert.js.map +1 -1
- package/dist/canvas/deps/lassoSelect.js +5 -5
- package/dist/canvas/deps/lassoSelect.js.map +1 -1
- package/dist/canvas/deps/poseDescriptor.js +1 -1
- package/dist/canvas/deps/poseDescriptor.js.map +1 -1
- package/dist/canvas/deps/resizePolicy.js.map +1 -1
- package/dist/canvas/deps/slice.js +44 -45
- package/dist/canvas/deps/slice.js.map +1 -1
- package/dist/canvas/deps/textEdit.js +8 -8
- package/dist/canvas/deps/textEdit.js.map +1 -1
- package/dist/canvas/deps/view.js.map +1 -1
- package/dist/canvas/derivedPath.js +43 -41
- package/dist/canvas/derivedPath.js.map +1 -1
- package/dist/canvas/drawEnvelope.js +8 -4
- package/dist/canvas/drawEnvelope.js.map +1 -1
- package/dist/canvas/getNodeAtPoint.js +2 -6
- package/dist/canvas/getNodeAtPoint.js.map +1 -1
- package/dist/canvas/hud.module.js.map +1 -1
- package/dist/canvas/insertPreviewExtent.js.map +1 -1
- package/dist/canvas/layerOrder.js.map +1 -1
- package/dist/canvas/layerSlots.js +6 -1
- package/dist/canvas/layerSlots.js.map +1 -1
- package/dist/canvas/nodeShapes/derivedPainter.js +12 -12
- package/dist/canvas/nodeShapes/derivedPainter.js.map +1 -1
- package/dist/canvas/nodeShapes/imagePainter.js +10 -10
- package/dist/canvas/nodeShapes/imagePainter.js.map +1 -1
- package/dist/canvas/nodeShapes/memo.js.map +1 -1
- package/dist/canvas/nodeShapes/nodePaint.js +34 -23
- package/dist/canvas/nodeShapes/nodePaint.js.map +1 -1
- package/dist/canvas/nodeShapes/pathPainter.js +23 -22
- package/dist/canvas/nodeShapes/pathPainter.js.map +1 -1
- package/dist/canvas/nodeShapes/poseBox.js +6 -6
- package/dist/canvas/nodeShapes/poseBox.js.map +1 -1
- package/dist/canvas/nodeShapes/rectFallbackPainter.js +8 -8
- package/dist/canvas/nodeShapes/rectFallbackPainter.js.map +1 -1
- package/dist/canvas/nodeShapes/shapePainter.js +16 -16
- package/dist/canvas/nodeShapes/shapePainter.js.map +1 -1
- package/dist/canvas/nodeShapes/textPainter.js +1 -1
- package/dist/canvas/nodeShapes/textPainter.js.map +1 -1
- package/dist/canvas/overlayRoleStrokes.js.map +1 -1
- package/dist/canvas/paintCull.js +6 -8
- package/dist/canvas/paintCull.js.map +1 -1
- package/dist/{features/cursor → canvas}/paintedCursorLayer.js +2 -2
- package/dist/canvas/paintedCursorLayer.js.map +1 -0
- package/dist/canvas/pickWalk.js +52 -50
- package/dist/canvas/pickWalk.js.map +1 -1
- package/dist/canvas/planeClips.js +18 -19
- package/dist/canvas/planeClips.js.map +1 -1
- package/dist/canvas/poseCascade.js +41 -0
- package/dist/canvas/poseCascade.js.map +1 -0
- package/dist/canvas/poseRotation.js +1 -3
- package/dist/canvas/poseRotation.js.map +1 -1
- package/dist/canvas/rasterReadback.js +22 -0
- package/dist/canvas/rasterReadback.js.map +1 -0
- package/dist/canvas/renderDebugSnapshot.js +12 -12
- package/dist/canvas/renderDebugSnapshot.js.map +1 -1
- package/dist/canvas/renderNeeds.js +3 -3
- package/dist/canvas/renderNeeds.js.map +1 -1
- package/dist/canvas/renderSceneToPixels.js +64 -83
- package/dist/canvas/renderSceneToPixels.js.map +1 -1
- package/dist/canvas/sceneAdapter.js +68 -132
- package/dist/canvas/sceneAdapter.js.map +1 -1
- package/dist/canvas/sceneClipboard.js +1 -1
- package/dist/canvas/sceneClipboard.js.map +1 -1
- package/dist/canvas/sceneLayerPaint.js +4 -4
- package/dist/canvas/sceneLayerPaint.js.map +1 -1
- package/dist/canvas/sceneSlotWiring.js +4 -4
- package/dist/canvas/sceneSlotWiring.js.map +1 -1
- package/dist/canvas/sceneViewRender.js +36 -35
- package/dist/canvas/sceneViewRender.js.map +1 -1
- package/dist/canvas/slopsDebugLayer.js +4 -4
- package/dist/canvas/slopsDebugLayer.js.map +1 -1
- package/dist/canvas/surface.module.js +6 -0
- package/dist/canvas/surface.module.js.map +1 -0
- package/dist/canvas/surfaceBox.js +16 -0
- package/dist/canvas/surfaceBox.js.map +1 -0
- package/dist/canvas/useCanvasRenderer.js +23 -11
- package/dist/canvas/useCanvasRenderer.js.map +1 -1
- package/dist/canvas/useCanvasSurface.js +31 -0
- package/dist/canvas/useCanvasSurface.js.map +1 -0
- package/dist/canvas/useCanvasView.js +46 -37
- package/dist/canvas/useCanvasView.js.map +1 -1
- package/dist/canvas/useFrameLoop.js +11 -12
- package/dist/canvas/useFrameLoop.js.map +1 -1
- package/dist/canvas/useHostAnchor.js +35 -33
- package/dist/canvas/useHostAnchor.js.map +1 -1
- package/dist/canvas/useLateContentRedraw.js +8 -8
- package/dist/canvas/useLateContentRedraw.js.map +1 -1
- package/dist/canvas/useSceneLayerList.js +4 -14
- package/dist/canvas/useSceneLayerList.js.map +1 -1
- package/dist/canvas/useSurfaceInput.js +42 -0
- package/dist/canvas/useSurfaceInput.js.map +1 -0
- package/dist/canvas/useToolCursor.js +29 -0
- package/dist/canvas/useToolCursor.js.map +1 -0
- package/dist/canvas/useViewHelpers.js +46 -85
- package/dist/canvas/useViewHelpers.js.map +1 -1
- package/dist/canvas/viewInputs.js.map +1 -1
- package/dist/canvas/viewRegistry.js +25 -27
- package/dist/canvas/viewRegistry.js.map +1 -1
- package/dist/canvas/watchElementMove.js +43 -0
- package/dist/canvas/watchElementMove.js.map +1 -0
- package/dist/canvas/wrapNodeOutput.js.map +1 -1
- package/dist/clipboard.d.ts +7 -14
- package/dist/{types-B4iJRHC3.d.ts → clone-2a5hVbBd.d.ts} +122 -77
- package/dist/clone.d.ts +4 -8
- package/dist/clone.js +0 -2
- package/dist/core/device/targets.js.map +1 -1
- package/dist/core/device/useDeviceProfile.js +13 -13
- package/dist/core/device/useDeviceProfile.js.map +1 -1
- package/dist/{interactions/actions/resize → core/geometry}/autoPoseDescriptor.js +8 -7
- package/dist/core/geometry/autoPoseDescriptor.js.map +1 -0
- package/dist/core/geometry/pathPoseDescriptor.js +88 -0
- package/dist/core/geometry/pathPoseDescriptor.js.map +1 -0
- package/dist/core/geometry/poseDescriptor.js +61 -14
- package/dist/core/geometry/poseDescriptor.js.map +1 -1
- package/dist/core/geometry/regionHit.js +35 -37
- package/dist/core/geometry/regionHit.js.map +1 -1
- package/dist/core/geometry/targetFrame.js +94 -0
- package/dist/core/geometry/targetFrame.js.map +1 -0
- package/dist/core/geometry/unionBounds.js +4 -5
- package/dist/core/geometry/unionBounds.js.map +1 -1
- package/dist/core/layers/backgroundFill.js +31 -0
- package/dist/core/layers/backgroundFill.js.map +1 -0
- package/dist/{features/groups → core/layers}/children.js +1 -1
- package/dist/core/layers/children.js.map +1 -0
- package/dist/{features/focus → core/layers}/gateLayer.js +2 -2
- package/dist/core/layers/gateLayer.js.map +1 -0
- package/dist/core/layers/layerGroup.js +40 -0
- package/dist/core/layers/layerGroup.js.map +1 -0
- package/dist/core/layers/render.js +50 -76
- package/dist/core/layers/render.js.map +1 -1
- package/dist/core/ops/createHistory.js +9 -9
- package/dist/core/ops/createHistory.js.map +1 -1
- package/dist/core/ops/delete.js.map +1 -1
- package/dist/core/paint/meshKind.js +16 -0
- package/dist/core/paint/meshKind.js.map +1 -0
- package/dist/{features/meshPaint/lazyKind.js → core/paint/meshKindLazy.js} +103 -92
- package/dist/core/paint/meshKindLazy.js.map +1 -0
- package/dist/core/paint/paintKindEntry.js +8 -0
- package/dist/core/paint/paintKindEntry.js.map +1 -0
- package/dist/core/paint/paintKinds.js +144 -0
- package/dist/core/paint/paintKinds.js.map +1 -0
- package/dist/core/paint/registerMesh.js +7 -0
- package/dist/core/paint/registerMesh.js.map +1 -0
- package/dist/core/scene/NodeProperties.js.map +1 -1
- package/dist/core/scene/NodeRouting.js.map +1 -1
- package/dist/core/scene/arrivalWindow.js +65 -64
- package/dist/core/scene/arrivalWindow.js.map +1 -1
- package/dist/core/scene/boundOps.js +40 -0
- package/dist/core/scene/boundOps.js.map +1 -0
- package/dist/core/scene/composeFrame.js +9 -6
- package/dist/core/scene/composeFrame.js.map +1 -1
- package/dist/{features/groups → core/scene}/composePose.js +18 -18
- package/dist/core/scene/composePose.js.map +1 -0
- package/dist/core/scene/depMemo.js +31 -6
- package/dist/core/scene/depMemo.js.map +1 -1
- package/dist/core/scene/derivedPath.js +19 -20
- package/dist/core/scene/derivedPath.js.map +1 -1
- package/dist/core/scene/editMode.js +26 -0
- package/dist/core/scene/editMode.js.map +1 -0
- package/dist/core/scene/effectivePose.js +38 -39
- package/dist/core/scene/effectivePose.js.map +1 -1
- package/dist/core/scene/fieldEdits.js +98 -0
- package/dist/core/scene/fieldEdits.js.map +1 -0
- package/dist/core/scene/historyFacade.js +116 -70
- package/dist/core/scene/historyFacade.js.map +1 -1
- package/dist/core/scene/historyForm.js +6 -0
- package/dist/core/scene/historyForm.js.map +1 -0
- package/dist/core/scene/kitOps.js +83 -71
- package/dist/core/scene/kitOps.js.map +1 -1
- package/dist/core/scene/kitRegistry.js.map +1 -1
- package/dist/core/scene/layerStack.js +105 -12
- package/dist/core/scene/layerStack.js.map +1 -1
- package/dist/core/scene/layoutPass.js +58 -59
- package/dist/core/scene/layoutPass.js.map +1 -1
- package/dist/{features/groups → core/scene}/nestedHit.js +3 -3
- package/dist/core/scene/nestedHit.js.map +1 -0
- package/dist/core/scene/nodeFnFields.js +9 -9
- package/dist/core/scene/nodeFnFields.js.map +1 -1
- package/dist/core/scene/nodeMemo.js.map +1 -1
- package/dist/core/scene/nodeStore.js +72 -71
- package/dist/core/scene/nodeStore.js.map +1 -1
- package/dist/core/scene/notifier.js +37 -0
- package/dist/core/scene/notifier.js.map +1 -0
- package/dist/core/scene/opTable.js +50 -0
- package/dist/core/scene/opTable.js.map +1 -0
- package/dist/core/scene/outerOps.js +66 -0
- package/dist/core/scene/outerOps.js.map +1 -0
- package/dist/core/scene/poseHold.js +39 -0
- package/dist/core/scene/poseHold.js.map +1 -0
- package/dist/core/scene/poseOverrides.js +44 -36
- package/dist/core/scene/poseOverrides.js.map +1 -1
- package/dist/core/scene/poseSnapshot.js.map +1 -1
- package/dist/core/scene/reconcileSpecs.js +3 -2
- package/dist/core/scene/reconcileSpecs.js.map +1 -1
- package/dist/core/scene/recorder.js +86 -0
- package/dist/core/scene/recorder.js.map +1 -0
- package/dist/core/scene/renderOrder.js.map +1 -1
- package/dist/core/scene/scene.js +81 -690
- package/dist/core/scene/scene.js.map +1 -1
- package/dist/core/scene/sceneEdits.js +58 -0
- package/dist/core/scene/sceneEdits.js.map +1 -0
- package/dist/core/scene/sceneMutators.js +49 -0
- package/dist/core/scene/sceneMutators.js.map +1 -0
- package/dist/core/scene/scenePoseAdapter.js +16 -0
- package/dist/core/scene/scenePoseAdapter.js.map +1 -0
- package/dist/core/scene/sceneRecording.js +90 -0
- package/dist/core/scene/sceneRecording.js.map +1 -0
- package/dist/core/scene/sceneSelection.js +28 -0
- package/dist/core/scene/sceneSelection.js.map +1 -0
- package/dist/core/scene/sceneState.js +49 -0
- package/dist/core/scene/sceneState.js.map +1 -0
- package/dist/core/scene/serialization.js +8 -5
- package/dist/core/scene/serialization.js.map +1 -1
- package/dist/core/scene/staleReplay.js +51 -0
- package/dist/core/scene/staleReplay.js.map +1 -0
- package/dist/core/scene/statedFields.js +9 -0
- package/dist/core/scene/statedFields.js.map +1 -0
- package/dist/core/scene/treeEdits.js +127 -0
- package/dist/core/scene/treeEdits.js.map +1 -0
- package/dist/core/scene/treeReads.js +26 -0
- package/dist/core/scene/treeReads.js.map +1 -0
- package/dist/core/scene/types.js.map +1 -1
- package/dist/{features/groups → core/scene}/unionOfChildren.js +3 -3
- package/dist/core/scene/unionOfChildren.js.map +1 -0
- package/dist/core/scene/unitScopes.js +13 -0
- package/dist/core/scene/unitScopes.js.map +1 -0
- package/dist/core/scene/useScene.js.map +1 -1
- package/dist/core/selection/readOnlySelection.js +32 -0
- package/dist/core/selection/readOnlySelection.js.map +1 -0
- package/dist/core/selection/usePublishSceneSelection.js +26 -0
- package/dist/core/selection/usePublishSceneSelection.js.map +1 -0
- package/dist/core/selection/useSelection.js +34 -25
- package/dist/core/selection/useSelection.js.map +1 -1
- package/dist/core/shapeKinds.js.map +1 -1
- package/dist/core/stylus/stylus.js.map +1 -1
- package/dist/core/stylus/usePointerStylus.js.map +1 -1
- package/dist/core/usePaintKinds.js +1 -1
- package/dist/core/usePaintKinds.js.map +1 -1
- package/dist/core/viewport/clientToWorld.js.map +1 -1
- package/dist/core/viewport/fitViewToBounds.js.map +1 -1
- package/dist/core/viewport/parallax.js.map +1 -1
- package/dist/core/viewport/screenSlop.js +11 -11
- package/dist/core/viewport/screenSlop.js.map +1 -1
- package/dist/core/viewport/useCanvasSize.js.map +1 -1
- package/dist/core/viewport/useDecayLoop.js +8 -8
- package/dist/core/viewport/useDecayLoop.js.map +1 -1
- package/dist/core/viewport/useNodeOverlayFrame.js +84 -0
- package/dist/core/viewport/useNodeOverlayFrame.js.map +1 -0
- package/dist/core/viewport/useViewAnimation.js +102 -43
- package/dist/core/viewport/useViewAnimation.js.map +1 -1
- package/dist/core/viewport/view.js +7 -7
- package/dist/core/viewport/view.js.map +1 -1
- package/dist/core/viewport/wheelHandler.js.map +1 -1
- package/dist/{cornerHandles-CtCb8a3G.d.ts → cornerHandles-BEshc4z3.d.ts} +11 -24
- package/dist/debug/createDebugOverlayLayer.js +100 -100
- package/dist/debug/createDebugOverlayLayer.js.map +1 -1
- package/dist/debug/createDebugSink.js.map +1 -1
- package/dist/debug/frameStats.js.map +1 -1
- package/dist/debug/useDebugSink.js +52 -0
- package/dist/debug/useDebugSink.js.map +1 -0
- package/dist/features/chrome-caps/buildChromeCtx.js.map +1 -1
- package/dist/features/chrome-caps/conditions.js.map +1 -1
- package/dist/features/chrome-caps/defaults.js.map +1 -1
- package/dist/features/chrome-caps/resolve.js.map +1 -1
- package/dist/features/chrome-caps/useChromeCaps.js +54 -0
- package/dist/features/chrome-caps/useChromeCaps.js.map +1 -0
- package/dist/features/chrome-caps/useHoverTracking.js.map +1 -1
- package/dist/features/ingestion/contentHandlers.js +25 -19
- package/dist/features/ingestion/contentHandlers.js.map +1 -1
- package/dist/features/ingestion/imageHandler.js +21 -24
- package/dist/features/ingestion/imageHandler.js.map +1 -1
- package/dist/features/ingestion/openFilePicker.js.map +1 -1
- package/dist/features/ingestion/placement.js +16 -0
- package/dist/features/ingestion/placement.js.map +1 -0
- package/dist/features/ingestion/svgHandler.js +5 -0
- package/dist/features/ingestion/svgHandler.js.map +1 -1
- package/dist/features/ingestion/textHandler.js +28 -0
- package/dist/features/ingestion/textHandler.js.map +1 -0
- package/dist/features/ingestion/useCanvasIngestion.js +48 -0
- package/dist/features/ingestion/useCanvasIngestion.js.map +1 -0
- package/dist/features/ingestion/weaselJsonHandler.js +5 -0
- package/dist/features/ingestion/weaselJsonHandler.js.map +1 -1
- package/dist/features/longPress/longPressFeedback.js.map +1 -1
- package/dist/features/modes/modeLayers.js +7 -7
- package/dist/features/modes/modeLayers.js.map +1 -1
- package/dist/features/paths/editablePath.js +47 -0
- package/dist/features/paths/editablePath.js.map +1 -0
- package/dist/features/paths/index.js +9 -16
- package/dist/features/paths/pathEditState.js +41 -0
- package/dist/features/paths/pathEditState.js.map +1 -0
- package/dist/features/paths/pathEditingOverlayLayer.js +36 -38
- package/dist/features/paths/pathEditingOverlayLayer.js.map +1 -1
- package/dist/features/paths/pathLayer.js +3 -2
- package/dist/features/paths/pathLayer.js.map +1 -1
- package/dist/features/paths/penPreviewLayer.js +86 -88
- package/dist/features/paths/penPreviewLayer.js.map +1 -1
- package/dist/features/paths/usePathEdit.js +34 -0
- package/dist/features/paths/usePathEdit.js.map +1 -0
- package/dist/features/poseRun/usePoseRun.js +42 -55
- package/dist/features/poseRun/usePoseRun.js.map +1 -1
- package/dist/features/selection/overlay.js +170 -178
- package/dist/features/selection/overlay.js.map +1 -1
- package/dist/features/text/index.js +6 -0
- package/dist/features/text/textLayer.js +1 -1
- package/dist/features/text/textLayer.js.map +1 -1
- package/dist/features/text/useSceneTextEdit.js +95 -82
- package/dist/features/text/useSceneTextEdit.js.map +1 -1
- package/dist/features/viewports/viewportLayer.js +25 -36
- package/dist/features/viewports/viewportLayer.js.map +1 -1
- package/dist/index.d.ts +4507 -8459
- package/dist/index.js +275 -320
- package/dist/input/keyState.js +14 -14
- package/dist/interactions/actions/actionShortcuts.js.map +1 -1
- package/dist/interactions/actions/{defaults/align.js → align/action.js} +15 -16
- package/dist/interactions/actions/align/action.js.map +1 -0
- package/dist/interactions/actions/align/align.js +23 -23
- package/dist/interactions/actions/align/align.js.map +1 -1
- package/dist/interactions/actions/booleans/action.js +65 -0
- package/dist/interactions/actions/booleans/action.js.map +1 -0
- package/dist/interactions/actions/booleans/booleans.js +69 -78
- package/dist/interactions/actions/booleans/booleans.js.map +1 -1
- package/dist/interactions/actions/booleans/operands.js +40 -0
- package/dist/interactions/actions/booleans/operands.js.map +1 -0
- package/dist/interactions/actions/booleans/pieces.js +45 -0
- package/dist/interactions/actions/booleans/pieces.js.map +1 -0
- package/dist/interactions/actions/booleans/placement.js +24 -0
- package/dist/interactions/actions/booleans/placement.js.map +1 -0
- package/dist/interactions/actions/booleans/useBooleans.js +11 -9
- package/dist/interactions/actions/booleans/useBooleans.js.map +1 -1
- package/dist/interactions/actions/booleans/useBooleansAdapter.js.map +1 -1
- package/dist/interactions/actions/{defaults/clipboard.js → clipboard/action.js} +19 -19
- package/dist/interactions/actions/clipboard/action.js.map +1 -0
- package/dist/interactions/actions/clipboard/clipboardOps.js +15 -15
- package/dist/interactions/actions/clipboard/clipboardOps.js.map +1 -1
- package/dist/interactions/actions/clipboard/wireFormat.js.map +1 -1
- package/dist/interactions/actions/clone/action.js +98 -0
- package/dist/interactions/actions/clone/action.js.map +1 -0
- package/dist/interactions/actions/clone/behaviors.js +52 -0
- package/dist/interactions/actions/clone/behaviors.js.map +1 -0
- package/dist/interactions/actions/defaultCommitAdapter.js +10 -37
- package/dist/interactions/actions/defaultCommitAdapter.js.map +1 -1
- package/dist/interactions/actions/defaults/anchorEditing.js +41 -43
- package/dist/interactions/actions/defaults/anchorEditing.js.map +1 -1
- package/dist/interactions/actions/defaults/areaSelect.js.map +1 -1
- package/dist/interactions/actions/defaults/cancelGesture.js.map +1 -1
- package/dist/interactions/actions/defaults/clearSelection.js.map +1 -1
- package/dist/interactions/actions/defaults/createPaintAction.js.map +1 -1
- package/dist/interactions/actions/defaults/delete.js.map +1 -1
- package/dist/interactions/actions/defaults/duplicate.js +19 -19
- package/dist/interactions/actions/defaults/duplicate.js.map +1 -1
- package/dist/interactions/actions/defaults/enterTextEdit.js.map +1 -1
- package/dist/interactions/actions/defaults/group.js +35 -40
- package/dist/interactions/actions/defaults/group.js.map +1 -1
- package/dist/interactions/actions/defaults/icons/booleanIcons.js +24 -1
- package/dist/interactions/actions/defaults/icons/booleanIcons.js.map +1 -1
- package/dist/interactions/actions/defaults/icons/outlineIcons.js +39 -1
- package/dist/interactions/actions/defaults/icons/outlineIcons.js.map +1 -1
- package/dist/interactions/actions/defaults/ingest.js +19 -15
- package/dist/interactions/actions/defaults/ingest.js.map +1 -1
- package/dist/interactions/actions/defaults/insertPathAnchor.js +14 -15
- package/dist/interactions/actions/defaults/insertPathAnchor.js.map +1 -1
- package/dist/interactions/actions/defaults/nudge.js +30 -31
- package/dist/interactions/actions/defaults/nudge.js.map +1 -1
- package/dist/interactions/actions/defaults/pinchZoom.js.map +1 -1
- package/dist/interactions/actions/defaults/requiresSelection.js.map +1 -1
- package/dist/interactions/actions/defaults/setFill.js +9 -3
- package/dist/interactions/actions/defaults/setFill.js.map +1 -1
- package/dist/interactions/actions/defaults/setFillOpacity.js +4 -1
- package/dist/interactions/actions/defaults/setFillOpacity.js.map +1 -1
- package/dist/interactions/actions/defaults/setStroke.js.map +1 -1
- package/dist/interactions/actions/defaults/sliceOps.js +20 -22
- package/dist/interactions/actions/defaults/sliceOps.js.map +1 -1
- package/dist/interactions/actions/defaults/toolActivate.js.map +1 -1
- package/dist/interactions/actions/defaults/toolResetToDefault.js.map +1 -1
- package/dist/interactions/actions/defaults/viewportDragPan.js +1 -1
- package/dist/interactions/actions/defaults/viewportDragPan.js.map +1 -1
- package/dist/interactions/actions/defaults/viewportWheelPan.js.map +1 -1
- package/dist/interactions/actions/defaults/viewportZoom.js.map +1 -1
- package/dist/interactions/actions/{defaults/distribute.js → distribute/action.js} +18 -19
- package/dist/interactions/actions/distribute/action.js.map +1 -0
- package/dist/interactions/actions/distribute/distribute.js +11 -11
- package/dist/interactions/actions/distribute/distribute.js.map +1 -1
- package/dist/interactions/actions/{defaults/editAnchors.js → edit-anchors/action.js} +19 -21
- package/dist/interactions/actions/edit-anchors/action.js.map +1 -0
- package/dist/interactions/actions/edit-anchors/geometry.js +2 -4
- package/dist/interactions/actions/edit-anchors/geometry.js.map +1 -1
- package/dist/interactions/actions/flip/action.js +124 -0
- package/dist/interactions/actions/flip/action.js.map +1 -0
- package/dist/interactions/actions/flip/helpers.js +1 -1
- package/dist/interactions/actions/flip/helpers.js.map +1 -1
- package/dist/interactions/actions/gestureFrames.js +18 -0
- package/dist/interactions/actions/gestureFrames.js.map +1 -0
- package/dist/interactions/actions/gestureLifecycle.js +47 -20
- package/dist/interactions/actions/gestureLifecycle.js.map +1 -1
- package/dist/interactions/actions/insert/action.js +72 -0
- package/dist/interactions/actions/insert/action.js.map +1 -0
- package/dist/interactions/actions/insert/commit.js +28 -0
- package/dist/interactions/actions/insert/commit.js.map +1 -0
- package/dist/interactions/actions/insert/extras.js +65 -0
- package/dist/interactions/actions/insert/extras.js.map +1 -0
- package/dist/interactions/actions/insert/frame.js +48 -0
- package/dist/interactions/actions/insert/frame.js.map +1 -0
- package/dist/interactions/actions/insert/geometry.js +35 -0
- package/dist/interactions/actions/insert/geometry.js.map +1 -0
- package/dist/interactions/actions/insert/rotateAction.js +21 -0
- package/dist/interactions/actions/insert/rotateAction.js.map +1 -0
- package/dist/interactions/actions/insert/session.js +59 -0
- package/dist/interactions/actions/insert/session.js.map +1 -0
- package/dist/interactions/actions/insert/shape.js +34 -0
- package/dist/interactions/actions/insert/shape.js.map +1 -0
- package/dist/interactions/actions/lasso-select/action.js +143 -0
- package/dist/interactions/actions/lasso-select/action.js.map +1 -0
- package/dist/interactions/actions/move/action.js +87 -0
- package/dist/interactions/actions/move/action.js.map +1 -0
- package/dist/interactions/actions/move/behaviors/layoutDrop.js +51 -0
- package/dist/interactions/actions/move/behaviors/layoutDrop.js.map +1 -0
- package/dist/interactions/actions/move/behaviors/reparentOnDrop.js +15 -0
- package/dist/interactions/actions/move/behaviors/reparentOnDrop.js.map +1 -0
- package/dist/interactions/actions/move/behaviors/snapToContainer.js +24 -23
- package/dist/interactions/actions/move/behaviors/snapToContainer.js.map +1 -1
- package/dist/interactions/actions/move/capture.js +99 -0
- package/dist/interactions/actions/move/capture.js.map +1 -0
- package/dist/interactions/actions/move/commit/index.js +41 -0
- package/dist/interactions/actions/move/commit/index.js.map +1 -0
- package/dist/interactions/actions/move/commit/layoutDrop.js +44 -0
- package/dist/interactions/actions/move/commit/layoutDrop.js.map +1 -0
- package/dist/interactions/actions/move/commit/layoutRelease.js +100 -0
- package/dist/interactions/actions/move/commit/layoutRelease.js.map +1 -0
- package/dist/interactions/actions/move/commit/rebase.js +18 -0
- package/dist/interactions/actions/move/commit/rebase.js.map +1 -0
- package/dist/interactions/actions/move/commit/reparent.js +65 -0
- package/dist/interactions/actions/move/commit/reparent.js.map +1 -0
- package/dist/interactions/actions/move/delta.js +51 -0
- package/dist/interactions/actions/move/delta.js.map +1 -0
- package/dist/interactions/actions/move/frame.js +59 -0
- package/dist/interactions/actions/move/frame.js.map +1 -0
- package/dist/interactions/actions/move/gestureAdapter.js +15 -40
- package/dist/interactions/actions/move/gestureAdapter.js.map +1 -1
- package/dist/interactions/actions/move/landedDescendants.js +8 -8
- package/dist/interactions/actions/move/layout/container.js +94 -0
- package/dist/interactions/actions/move/layout/container.js.map +1 -0
- package/dist/interactions/actions/move/layout/dragged.js +58 -0
- package/dist/interactions/actions/move/layout/dragged.js.map +1 -0
- package/dist/interactions/actions/move/layout/dropPass.js +122 -0
- package/dist/interactions/actions/move/layout/dropPass.js.map +1 -0
- package/dist/interactions/actions/move/layout/exits.js +38 -0
- package/dist/interactions/actions/move/layout/exits.js.map +1 -0
- package/dist/interactions/actions/move/layout/glide.js +48 -0
- package/dist/interactions/actions/move/layout/glide.js.map +1 -0
- package/dist/interactions/actions/move/session.js +63 -0
- package/dist/interactions/actions/move/session.js.map +1 -0
- package/dist/interactions/actions/move/translate.js +61 -0
- package/dist/interactions/actions/move/translate.js.map +1 -0
- package/dist/interactions/actions/outlines/createOutlines.js +17 -64
- package/dist/interactions/actions/outlines/createOutlines.js.map +1 -1
- package/dist/interactions/actions/outlines/createOutlinesAction.js +51 -0
- package/dist/interactions/actions/outlines/createOutlinesAction.js.map +1 -0
- package/dist/interactions/actions/outlines/outlineStroke.js +72 -0
- package/dist/interactions/actions/outlines/outlineStroke.js.map +1 -0
- package/dist/interactions/actions/outlines/outlineStrokeAction.js +37 -0
- package/dist/interactions/actions/outlines/outlineStrokeAction.js.map +1 -0
- package/dist/interactions/actions/outlines/replaceWithPaths.js +54 -0
- package/dist/interactions/actions/outlines/replaceWithPaths.js.map +1 -0
- package/dist/interactions/actions/outlines/strokeRegion.js +27 -0
- package/dist/interactions/actions/outlines/strokeRegion.js.map +1 -0
- package/dist/interactions/actions/planeInput.js.map +1 -1
- package/dist/interactions/actions/pointerState.js +12 -0
- package/dist/interactions/actions/pointerState.js.map +1 -0
- package/dist/interactions/actions/poseDescriptorDep.js +1 -1
- package/dist/interactions/actions/poseDescriptorDep.js.map +1 -1
- package/dist/interactions/actions/poseFrame.js +26 -26
- package/dist/interactions/actions/poseFrame.js.map +1 -1
- package/dist/interactions/actions/resize/action.js +55 -0
- package/dist/interactions/actions/resize/action.js.map +1 -0
- package/dist/interactions/actions/resize/behaviors/lockAspect.js.map +1 -1
- package/dist/interactions/actions/resize/boxFrame.js +16 -0
- package/dist/interactions/actions/resize/boxFrame.js.map +1 -0
- package/dist/interactions/actions/resize/capture.js +85 -0
- package/dist/interactions/actions/resize/capture.js.map +1 -0
- package/dist/interactions/actions/resize/commit.js +69 -0
- package/dist/interactions/actions/resize/commit.js.map +1 -0
- package/dist/interactions/actions/resize/frame.js +74 -0
- package/dist/interactions/actions/resize/frame.js.map +1 -0
- package/dist/interactions/actions/resize/pointSnap.js +111 -0
- package/dist/interactions/actions/resize/pointSnap.js.map +1 -0
- package/dist/interactions/actions/resize/ruleBounds.js +9 -0
- package/dist/interactions/actions/resize/ruleBounds.js.map +1 -0
- package/dist/interactions/actions/resize/session.js +49 -0
- package/dist/interactions/actions/resize/session.js.map +1 -0
- package/dist/interactions/actions/resolveOverlays.js.map +1 -1
- package/dist/interactions/actions/resolvePreviews.js.map +1 -1
- package/dist/interactions/actions/rotate/action.js +56 -0
- package/dist/interactions/actions/rotate/action.js.map +1 -0
- package/dist/interactions/actions/rotate/behaviors/index.js +7 -0
- package/dist/interactions/actions/rotate/behaviors/index.js.map +1 -0
- package/dist/interactions/actions/rotate/behaviors/snapRotation.js +12 -0
- package/dist/interactions/actions/rotate/behaviors/snapRotation.js.map +1 -0
- package/dist/interactions/actions/rotate/commit.js +40 -0
- package/dist/interactions/actions/rotate/commit.js.map +1 -0
- package/dist/interactions/actions/rotate/frame.js +65 -0
- package/dist/interactions/actions/rotate/frame.js.map +1 -0
- package/dist/interactions/actions/rotate/handle.js +12 -12
- package/dist/interactions/actions/rotate/handle.js.map +1 -1
- package/dist/interactions/actions/rotate/session.js +92 -0
- package/dist/interactions/actions/rotate/session.js.map +1 -0
- package/dist/interactions/actions/spatialReference.js.map +1 -1
- package/dist/interactions/actions/useStandardActions.js +77 -72
- package/dist/interactions/actions/useStandardActions.js.map +1 -1
- package/dist/interactions/gestures/pointerDrag/pointerDrag.js +61 -42
- package/dist/interactions/gestures/pointerDrag/pointerDrag.js.map +1 -1
- package/dist/interactions/gestures/shared/originProjection.js +1 -1
- package/dist/interactions/gestures/shared/originProjection.js.map +1 -1
- package/dist/interactions/gestures/shared/screenTolerance.js +8 -2
- package/dist/interactions/gestures/shared/screenTolerance.js.map +1 -1
- package/dist/interactions/gestures/shared/snap.js.map +1 -1
- package/dist/layout/arrivals.js +20 -23
- package/dist/layout/arrivals.js.map +1 -1
- package/dist/math-CYUjoyyU.d.ts +33 -0
- package/dist/math.d.ts +5 -2
- package/dist/math.js +6 -6
- package/dist/mesh.d.ts +4 -268
- package/dist/mesh.js +3 -7
- package/dist/move.d.ts +6 -4
- package/dist/{originProjection-gHnOup4e.d.ts → originProjection-PPT88jZv.d.ts} +1 -1
- package/dist/patterns-builtin.d.ts +1 -118
- package/dist/patterns-builtin.js +2 -3
- package/dist/poseDescriptor-Bqk-11Rl.d.ts +73 -0
- package/dist/renderer.d.ts +1 -92
- package/dist/renderer.js +2 -19
- package/dist/resize.d.ts +11 -22
- package/dist/resize.js +1 -1
- package/dist/style.css +1 -1
- package/dist/test-hook/install.js.map +1 -1
- package/dist/test-hook/useTestHook.js +22 -0
- package/dist/test-hook/useTestHook.js.map +1 -0
- package/dist/test-seams-D0pyV3pR.d.ts +149 -0
- package/dist/test-seams.d.ts +4 -4
- package/dist/test-seams.js +2 -2
- package/dist/tools/builtin/bone/boneActions.js +130 -0
- package/dist/tools/builtin/bone/boneActions.js.map +1 -0
- package/dist/tools/builtin/bone/boneOverlay.js +58 -0
- package/dist/tools/builtin/bone/boneOverlay.js.map +1 -0
- package/dist/tools/builtin/bone/placedRig.js +24 -0
- package/dist/tools/builtin/bone/placedRig.js.map +1 -0
- package/dist/tools/builtin/bone/rigEditState.js +21 -0
- package/dist/tools/builtin/bone/rigEditState.js.map +1 -0
- package/dist/tools/builtin/bone/useBoneTool.js +98 -0
- package/dist/tools/builtin/bone/useBoneTool.js.map +1 -0
- package/dist/tools/builtin/ellipse/useEllipseTool.js.map +1 -1
- package/dist/tools/builtin/eyedropper/useEyedropperTool.js.map +1 -1
- package/dist/tools/builtin/hand/useHandTool.js.map +1 -1
- package/dist/tools/builtin/image/useImageTool.js.map +1 -1
- package/dist/tools/builtin/lasso/useLassoTool.js.map +1 -1
- package/dist/tools/builtin/line/useLineTool.js.map +1 -1
- package/dist/tools/builtin/pen/usePenTool.js +161 -163
- package/dist/tools/builtin/pen/usePenTool.js.map +1 -1
- package/dist/tools/builtin/pencil/usePencilTool.js.map +1 -1
- package/dist/tools/builtin/pickTopMostHit.js.map +1 -1
- package/dist/tools/builtin/polygon/usePolygonTool.js.map +1 -1
- package/dist/tools/builtin/rect/useRectTool.js.map +1 -1
- package/dist/tools/builtin/select/adapterPointQuery.js +36 -0
- package/dist/tools/builtin/select/adapterPointQuery.js.map +1 -0
- package/dist/tools/builtin/select/selectionContributions.js +4 -4
- package/dist/tools/builtin/select/selectionContributions.js.map +1 -1
- package/dist/tools/builtin/select/useSelectTool.js +43 -71
- package/dist/tools/builtin/select/useSelectTool.js.map +1 -1
- package/dist/tools/builtin/shared/pointerFollower.js.map +1 -1
- package/dist/tools/builtin/slice/useSliceTool.js +67 -72
- package/dist/tools/builtin/slice/useSliceTool.js.map +1 -1
- package/dist/tools/builtin/star/useStarTool.js.map +1 -1
- package/dist/tools/builtin/text/useTextTool.js +8 -0
- package/dist/tools/builtin/text/useTextTool.js.map +1 -1
- package/dist/tools/builtin/weight/useWeightTool.js +77 -0
- package/dist/tools/builtin/weight/useWeightTool.js.map +1 -0
- package/dist/tools/builtin/weight/weightActions.js +112 -0
- package/dist/tools/builtin/weight/weightActions.js.map +1 -0
- package/dist/tools/builtin/weight/weightOverlay.js +61 -0
- package/dist/tools/builtin/weight/weightOverlay.js.map +1 -0
- package/dist/tools/overlayBinding.js.map +1 -1
- package/dist/tools/useKeybindings.js +20 -14
- package/dist/tools/useKeybindings.js.map +1 -1
- package/dist/{types-k-5Oqh-U.d.ts → types-CIKDwlsP.d.ts} +84 -164
- package/dist/util/paint.js +1 -1
- package/dist/util/paint.js.map +1 -1
- package/dist/version.js +1 -1
- package/package.json +26 -21
- package/dist/animation/colorHelpers.js +0 -135
- package/dist/animation/colorHelpers.js.map +0 -1
- package/dist/animation/colorRegistry.js +0 -37
- package/dist/animation/colorRegistry.js.map +0 -1
- package/dist/animation/engine/axes.js +0 -36
- package/dist/animation/engine/axes.js.map +0 -1
- package/dist/animation/engine/codec.js +0 -170
- package/dist/animation/engine/codec.js.map +0 -1
- package/dist/animation/engine/integrator.js +0 -12
- package/dist/animation/engine/integrator.js.map +0 -1
- package/dist/animation/loop.js +0 -60
- package/dist/animation/loop.js.map +0 -1
- package/dist/animation/observe.js +0 -23
- package/dist/animation/observe.js.map +0 -1
- package/dist/animation/rig/blendPoses.js +0 -43
- package/dist/animation/rig/blendPoses.js.map +0 -1
- package/dist/animation/rig/mirrorPose.js +0 -19
- package/dist/animation/rig/mirrorPose.js.map +0 -1
- package/dist/animation/rig/resolveSkeleton.js +0 -33
- package/dist/animation/rig/resolveSkeleton.js.map +0 -1
- package/dist/animation/rig/solveIk.js +0 -103
- package/dist/animation/rig/solveIk.js.map +0 -1
- package/dist/animation/rig/types.js +0 -12
- package/dist/animation/rig/types.js.map +0 -1
- package/dist/animation/slew.js +0 -27
- package/dist/animation/slew.js.map +0 -1
- package/dist/animation/stagger.js +0 -146
- package/dist/animation/stagger.js.map +0 -1
- package/dist/animation/timeline/booking.js +0 -114
- package/dist/animation/timeline/booking.js.map +0 -1
- package/dist/animation/timeline/createTimeline.js +0 -125
- package/dist/animation/timeline/createTimeline.js.map +0 -1
- package/dist/animation/timeline/sampleTrack.js +0 -79
- package/dist/animation/timeline/sampleTrack.js.map +0 -1
- package/dist/animation/useAnimator.js +0 -388
- package/dist/animation/useAnimator.js.map +0 -1
- package/dist/autoPoseDescriptor-Ct7yqivU.d.ts +0 -108
- package/dist/builtins-DPcdghtB.d.ts +0 -1223
- package/dist/canvas/MinimapCanvas.js +0 -140
- package/dist/canvas/MinimapCanvas.js.map +0 -1
- package/dist/canvas/deps/poseComposition.js +0 -11
- package/dist/canvas/deps/poseComposition.js.map +0 -1
- package/dist/canvas/minimapMath.js +0 -82
- package/dist/canvas/minimapMath.js.map +0 -1
- package/dist/canvas/toolPreview.js +0 -39
- package/dist/canvas/toolPreview.js.map +0 -1
- package/dist/core/adapters/arrayAdapter.js +0 -94
- package/dist/core/adapters/arrayAdapter.js.map +0 -1
- package/dist/core/adapters/useArrayAdapter.js +0 -13
- package/dist/core/adapters/useArrayAdapter.js.map +0 -1
- package/dist/core/fillInPoseFrame.js +0 -102
- package/dist/core/fillInPoseFrame.js.map +0 -1
- package/dist/core/geometry/poseFrame.js +0 -44
- package/dist/core/geometry/poseFrame.js.map +0 -1
- package/dist/core/geometry/poseRotation.js +0 -58
- package/dist/core/geometry/poseRotation.js.map +0 -1
- package/dist/core/gradient.js +0 -136
- package/dist/core/gradient.js.map +0 -1
- package/dist/core/markerInset.js +0 -24
- package/dist/core/markerInset.js.map +0 -1
- package/dist/core/mixed.js +0 -6
- package/dist/core/mixed.js.map +0 -1
- package/dist/core/paintKinds.js +0 -156
- package/dist/core/paintKinds.js.map +0 -1
- package/dist/core/scene/pickability.js +0 -6
- package/dist/core/scene/pickability.js.map +0 -1
- package/dist/core/strokeMarkerShapes.js +0 -139
- package/dist/core/strokeMarkerShapes.js.map +0 -1
- package/dist/core/strokeMarkers.js +0 -28
- package/dist/core/strokeMarkers.js.map +0 -1
- package/dist/core/viewport/meanScale.js +0 -8
- package/dist/core/viewport/meanScale.js.map +0 -1
- package/dist/core/viewport/pxExtent.js +0 -42
- package/dist/core/viewport/pxExtent.js.map +0 -1
- package/dist/features/cursor/paintedCursorLayer.js.map +0 -1
- package/dist/features/focus/gateLayer.js.map +0 -1
- package/dist/features/focus/useCanvasFocus.js +0 -29
- package/dist/features/focus/useCanvasFocus.js.map +0 -1
- package/dist/features/groups/children.js.map +0 -1
- package/dist/features/groups/composePose.js.map +0 -1
- package/dist/features/groups/nestedHit.js.map +0 -1
- package/dist/features/groups/unionOfChildren.js.map +0 -1
- package/dist/features/images/imageCache.js +0 -104
- package/dist/features/images/imageCache.js.map +0 -1
- package/dist/features/ingestion/index.js +0 -8
- package/dist/features/meshPaint/bake.js +0 -79
- package/dist/features/meshPaint/bake.js.map +0 -1
- package/dist/features/meshPaint/bakeCache.js +0 -59
- package/dist/features/meshPaint/bakeCache.js.map +0 -1
- package/dist/features/meshPaint/handles.js +0 -86
- package/dist/features/meshPaint/handles.js.map +0 -1
- package/dist/features/meshPaint/lazyKind.js.map +0 -1
- package/dist/features/meshPaint/meshPaint.js +0 -239
- package/dist/features/meshPaint/meshPaint.js.map +0 -1
- package/dist/features/meshPaint/meshShader.js +0 -6
- package/dist/features/meshPaint/meshShader.js.map +0 -1
- package/dist/features/meshPaint/register.js +0 -7
- package/dist/features/meshPaint/register.js.map +0 -1
- package/dist/features/meshPaint/surface.js +0 -110
- package/dist/features/meshPaint/surface.js.map +0 -1
- package/dist/features/minimap/actions.js +0 -53
- package/dist/features/minimap/actions.js.map +0 -1
- package/dist/features/minimap/createMinimapContribution.js +0 -96
- package/dist/features/minimap/createMinimapContribution.js.map +0 -1
- package/dist/features/minimap/layers.js +0 -85
- package/dist/features/minimap/layers.js.map +0 -1
- package/dist/features/overlays/useNodeOverlayFrame.js +0 -103
- package/dist/features/overlays/useNodeOverlayFrame.js.map +0 -1
- package/dist/features/parallax/createParallaxLayer.js +0 -26
- package/dist/features/parallax/createParallaxLayer.js.map +0 -1
- package/dist/features/parallax/createParallaxPlane.js +0 -22
- package/dist/features/parallax/createParallaxPlane.js.map +0 -1
- package/dist/features/paths/anchorEdits.js +0 -167
- package/dist/features/paths/anchorEdits.js.map +0 -1
- package/dist/features/paths/anchors.js +0 -159
- package/dist/features/paths/anchors.js.map +0 -1
- package/dist/features/paths/booleans.js +0 -2
- package/dist/features/paths/markerCommands.js +0 -149
- package/dist/features/paths/markerCommands.js.map +0 -1
- package/dist/features/paths/markerSites.js +0 -59
- package/dist/features/paths/markerSites.js.map +0 -1
- package/dist/features/paths/markers.js +0 -95
- package/dist/features/paths/markers.js.map +0 -1
- package/dist/features/paths/nearestAnchor.js +0 -36
- package/dist/features/paths/nearestAnchor.js.map +0 -1
- package/dist/features/paths/pathInWorld.js +0 -41
- package/dist/features/paths/pathInWorld.js.map +0 -1
- package/dist/features/paths/poseDescriptor.js +0 -39
- package/dist/features/paths/poseDescriptor.js.map +0 -1
- package/dist/features/paths/strokeToPath.js +0 -40
- package/dist/features/paths/strokeToPath.js.map +0 -1
- package/dist/features/paths/tessellate/dash.js +0 -52
- package/dist/features/paths/tessellate/dash.js.map +0 -1
- package/dist/features/paths/tessellate/insets.js +0 -32
- package/dist/features/paths/tessellate/insets.js.map +0 -1
- package/dist/features/paths/tessellate/metric.js +0 -72
- package/dist/features/paths/tessellate/metric.js.map +0 -1
- package/dist/features/paths/tessellate/stroke.js +0 -170
- package/dist/features/paths/tessellate/stroke.js.map +0 -1
- package/dist/features/paths/tessellate/vertexWidths.js +0 -32
- package/dist/features/paths/tessellate/vertexWidths.js.map +0 -1
- package/dist/features/patterns/commandPaint.js +0 -18
- package/dist/features/patterns/commandPaint.js.map +0 -1
- package/dist/features/patterns/index.js +0 -11
- package/dist/features/patterns/index.js.map +0 -1
- package/dist/features/patterns/patterns-builtin.js +0 -38
- package/dist/features/patterns/patterns-builtin.js.map +0 -1
- package/dist/features/patterns/rasterizeTile.js +0 -17
- package/dist/features/patterns/rasterizeTile.js.map +0 -1
- package/dist/features/patterns/resolveSpec.js +0 -65
- package/dist/features/patterns/resolveSpec.js.map +0 -1
- package/dist/features/patterns/tileGeometry.js +0 -158
- package/dist/features/patterns/tileGeometry.js.map +0 -1
- package/dist/features/pointer/PointerContext.js +0 -45
- package/dist/features/pointer/PointerContext.js.map +0 -1
- package/dist/features/selection/SelectionContext.js +0 -51
- package/dist/features/selection/SelectionContext.js.map +0 -1
- package/dist/features/simulation/createSimulation.js +0 -61
- package/dist/features/simulation/createSimulation.js.map +0 -1
- package/dist/features/simulation/types.js +0 -6
- package/dist/features/simulation/types.js.map +0 -1
- package/dist/features/simulation/useSimulation.js +0 -74
- package/dist/features/simulation/useSimulation.js.map +0 -1
- package/dist/features/text/domOffsets.js +0 -82
- package/dist/features/text/domOffsets.js.map +0 -1
- package/dist/features/text/domRuns.js +0 -230
- package/dist/features/text/domRuns.js.map +0 -1
- package/dist/features/text/fitTextPose.js +0 -38
- package/dist/features/text/fitTextPose.js.map +0 -1
- package/dist/features/text/hitTest.js +0 -48
- package/dist/features/text/hitTest.js.map +0 -1
- package/dist/features/text/isTextData.js +0 -8
- package/dist/features/text/isTextData.js.map +0 -1
- package/dist/features/text/overlayDirection.js +0 -15
- package/dist/features/text/overlayDirection.js.map +0 -1
- package/dist/features/text/renderLabel.js +0 -14
- package/dist/features/text/renderLabel.js.map +0 -1
- package/dist/features/text/runs/effectiveRangeStyle.js +0 -66
- package/dist/features/text/runs/effectiveRangeStyle.js.map +0 -1
- package/dist/features/text/runs/flagRange.js +0 -53
- package/dist/features/text/runs/flagRange.js.map +0 -1
- package/dist/features/text/runs/rangeStyle.js +0 -133
- package/dist/features/text/runs/rangeStyle.js.map +0 -1
- package/dist/features/text/textCommand.js +0 -60
- package/dist/features/text/textCommand.js.map +0 -1
- package/dist/features/text/textToPath.js +0 -181
- package/dist/features/text/textToPath.js.map +0 -1
- package/dist/features/text/useTextEdit.js +0 -491
- package/dist/features/text/useTextEdit.js.map +0 -1
- package/dist/features/tiling/createTiledLayer.js +0 -65
- package/dist/features/tiling/createTiledLayer.js.map +0 -1
- package/dist/features/tiling/tiledProject.js +0 -14
- package/dist/features/tiling/tiledProject.js.map +0 -1
- package/dist/interactions/actions/clone/behaviors/cloneByAltDrag.js +0 -26
- package/dist/interactions/actions/clone/behaviors/cloneByAltDrag.js.map +0 -1
- package/dist/interactions/actions/defaults/align.js.map +0 -1
- package/dist/interactions/actions/defaults/booleans.js +0 -52
- package/dist/interactions/actions/defaults/booleans.js.map +0 -1
- package/dist/interactions/actions/defaults/clipboard.js.map +0 -1
- package/dist/interactions/actions/defaults/clone.js +0 -91
- package/dist/interactions/actions/defaults/clone.js.map +0 -1
- package/dist/interactions/actions/defaults/createOutlines.js +0 -47
- package/dist/interactions/actions/defaults/createOutlines.js.map +0 -1
- package/dist/interactions/actions/defaults/distribute.js.map +0 -1
- package/dist/interactions/actions/defaults/editAnchors.js.map +0 -1
- package/dist/interactions/actions/defaults/flip.js +0 -125
- package/dist/interactions/actions/defaults/flip.js.map +0 -1
- package/dist/interactions/actions/defaults/insert.js +0 -287
- package/dist/interactions/actions/defaults/insert.js.map +0 -1
- package/dist/interactions/actions/defaults/lassoSelect.js +0 -153
- package/dist/interactions/actions/defaults/lassoSelect.js.map +0 -1
- package/dist/interactions/actions/defaults/move.js +0 -778
- package/dist/interactions/actions/defaults/move.js.map +0 -1
- package/dist/interactions/actions/defaults/resize.js +0 -341
- package/dist/interactions/actions/defaults/resize.js.map +0 -1
- package/dist/interactions/actions/defaults/rotate.js +0 -185
- package/dist/interactions/actions/defaults/rotate.js.map +0 -1
- package/dist/interactions/actions/previewOverrides.js +0 -25
- package/dist/interactions/actions/previewOverrides.js.map +0 -1
- package/dist/interactions/actions/resize/autoPoseDescriptor.js.map +0 -1
- package/dist/math-J-ACHyEg.d.ts +0 -159
- package/dist/registerProgram-T9S_PfAX.d.ts +0 -208
- package/dist/renderer/DrawCommand.js +0 -6
- package/dist/renderer/DrawCommand.js.map +0 -1
- package/dist/renderer/WeaselRenderer.js +0 -333
- package/dist/renderer/WeaselRenderer.js.map +0 -1
- package/dist/renderer/batchClip.js +0 -46
- package/dist/renderer/batchClip.js.map +0 -1
- package/dist/renderer/cache/GLImageCache.js +0 -74
- package/dist/renderer/cache/GLImageCache.js.map +0 -1
- package/dist/renderer/cache/GLMeshCache.js +0 -102
- package/dist/renderer/cache/GLMeshCache.js.map +0 -1
- package/dist/renderer/cache/GLTextureCache.js +0 -68
- package/dist/renderer/cache/GLTextureCache.js.map +0 -1
- package/dist/renderer/cache/GradientRampAtlas.js +0 -82
- package/dist/renderer/cache/GradientRampAtlas.js.map +0 -1
- package/dist/renderer/cache/cache.js +0 -13
- package/dist/renderer/cache/cache.js.map +0 -1
- package/dist/renderer/cache/markerCommandCache.js +0 -63
- package/dist/renderer/cache/markerCommandCache.js.map +0 -1
- package/dist/renderer/cache/outlineMeshCache.js +0 -15
- package/dist/renderer/cache/outlineMeshCache.js.map +0 -1
- package/dist/renderer/cache/outlineStrokeMeshCache.js +0 -36
- package/dist/renderer/cache/outlineStrokeMeshCache.js.map +0 -1
- package/dist/renderer/cache/strokeMeshCache.js +0 -55
- package/dist/renderer/cache/strokeMeshCache.js.map +0 -1
- package/dist/renderer/cullDrawCommands.js +0 -90
- package/dist/renderer/cullDrawCommands.js.map +0 -1
- package/dist/renderer/draw/batch.js +0 -133
- package/dist/renderer/draw/batch.js.map +0 -1
- package/dist/renderer/draw/clip.js +0 -89
- package/dist/renderer/draw/clip.js.map +0 -1
- package/dist/renderer/draw/customShader.js +0 -230
- package/dist/renderer/draw/customShader.js.map +0 -1
- package/dist/renderer/draw/drawTriangles.js +0 -8
- package/dist/renderer/draw/drawTriangles.js.map +0 -1
- package/dist/renderer/draw/effects.js +0 -28
- package/dist/renderer/draw/effects.js.map +0 -1
- package/dist/renderer/draw/flushBatch.js +0 -35
- package/dist/renderer/draw/flushBatch.js.map +0 -1
- package/dist/renderer/draw/gradient.js +0 -90
- package/dist/renderer/draw/gradient.js.map +0 -1
- package/dist/renderer/draw/image.js +0 -38
- package/dist/renderer/draw/image.js.map +0 -1
- package/dist/renderer/draw/mesh.js +0 -16
- package/dist/renderer/draw/mesh.js.map +0 -1
- package/dist/renderer/draw/paintBind.js +0 -70
- package/dist/renderer/draw/paintBind.js.map +0 -1
- package/dist/renderer/draw/pathPaint.js +0 -142
- package/dist/renderer/draw/pathPaint.js.map +0 -1
- package/dist/renderer/draw/scratchPass.js +0 -83
- package/dist/renderer/draw/scratchPass.js.map +0 -1
- package/dist/renderer/draw/stencil.js +0 -28
- package/dist/renderer/draw/stencil.js.map +0 -1
- package/dist/renderer/draw/text.js +0 -167
- package/dist/renderer/draw/text.js.map +0 -1
- package/dist/renderer/draw/uniforms.js +0 -77
- package/dist/renderer/draw/uniforms.js.map +0 -1
- package/dist/renderer/draw.js +0 -79
- package/dist/renderer/draw.js.map +0 -1
- package/dist/renderer/drawBatch.js +0 -198
- package/dist/renderer/drawBatch.js.map +0 -1
- package/dist/renderer/effects/EffectTargets.js +0 -48
- package/dist/renderer/effects/EffectTargets.js.map +0 -1
- package/dist/renderer/effects/builtins.js +0 -31
- package/dist/renderer/effects/builtins.js.map +0 -1
- package/dist/renderer/effects/composite.js +0 -11
- package/dist/renderer/effects/composite.js.map +0 -1
- package/dist/renderer/effects/effectPrelude.js +0 -10
- package/dist/renderer/effects/effectPrelude.js.map +0 -1
- package/dist/renderer/effects/types.js +0 -10
- package/dist/renderer/effects/types.js.map +0 -1
- package/dist/renderer/glyphOutlineMesh.js +0 -67
- package/dist/renderer/glyphOutlineMesh.js.map +0 -1
- package/dist/renderer/index.js +0 -20
- package/dist/renderer/math/color.js +0 -321
- package/dist/renderer/math/color.js.map +0 -1
- package/dist/renderer/math/mat3.js +0 -80
- package/dist/renderer/math/mat3.js.map +0 -1
- package/dist/renderer/math/patternSpace.js +0 -22
- package/dist/renderer/math/patternSpace.js.map +0 -1
- package/dist/renderer/math/viewToMat3.js +0 -19
- package/dist/renderer/math/viewToMat3.js.map +0 -1
- package/dist/renderer/paintResources.js +0 -18
- package/dist/renderer/paintResources.js.map +0 -1
- package/dist/renderer/paintScratch.js +0 -37
- package/dist/renderer/paintScratch.js.map +0 -1
- package/dist/renderer/shaders/ShaderProgram.js +0 -74
- package/dist/renderer/shaders/ShaderProgram.js.map +0 -1
- package/dist/renderer/shaders/batchFill.js +0 -119
- package/dist/renderer/shaders/batchFill.js.map +0 -1
- package/dist/renderer/shaders/customPrelude.js +0 -34
- package/dist/renderer/shaders/customPrelude.js.map +0 -1
- package/dist/renderer/shaders/extractUniformNames.js +0 -184
- package/dist/renderer/shaders/extractUniformNames.js.map +0 -1
- package/dist/renderer/shaders/glyphPaint.js +0 -61
- package/dist/renderer/shaders/glyphPaint.js.map +0 -1
- package/dist/renderer/shaders/gradFill.js +0 -31
- package/dist/renderer/shaders/gradFill.js.map +0 -1
- package/dist/renderer/shaders/pathFill.js +0 -14
- package/dist/renderer/shaders/pathFill.js.map +0 -1
- package/dist/renderer/shaders/patternFill.js +0 -25
- package/dist/renderer/shaders/patternFill.js.map +0 -1
- package/dist/renderer/shaders/registerProgram.js +0 -18
- package/dist/renderer/shaders/registerProgram.js.map +0 -1
- package/dist/renderer/spriteSheet.js +0 -14
- package/dist/renderer/spriteSheet.js.map +0 -1
- package/dist/renderer/state/GroupState.js +0 -77
- package/dist/renderer/state/GroupState.js.map +0 -1
- package/dist/renderer/strokeLengths.js +0 -50
- package/dist/renderer/strokeLengths.js.map +0 -1
- package/dist/renderer/syntheticItalic.js +0 -6
- package/dist/renderer/syntheticItalic.js.map +0 -1
- package/dist/renderer/textures/registerTexture.js +0 -34
- package/dist/renderer/textures/registerTexture.js.map +0 -1
- package/dist/scheduling/useVisibleRaf.js +0 -69
- package/dist/scheduling/useVisibleRaf.js.map +0 -1
- package/dist/test-seams-DM2B87-g.d.ts +0 -356
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { ROTATION_HANDLE_BASE_PX as e } from "../../../core/device/targets.js";
|
|
2
|
+
import { localToWorld as t, normalToWorld as n, targetTransformOf as r } from "../../../core/geometry/targetFrame.js";
|
|
3
|
+
import { standoff as i } from "@weasel-js/geom";
|
|
4
4
|
//#region src/interactions/actions/rotate/handle.ts
|
|
5
|
-
var
|
|
6
|
-
function
|
|
7
|
-
let
|
|
8
|
-
x:
|
|
9
|
-
y: -
|
|
10
|
-
},
|
|
5
|
+
var a = e;
|
|
6
|
+
function o(e, o = a, c = s) {
|
|
7
|
+
let l = r(e), u = t(l, e.x + e.width / 2, e.y), d = i(u, n(l, {
|
|
8
|
+
x: 0,
|
|
9
|
+
y: -1
|
|
10
|
+
}), o, c);
|
|
11
11
|
return {
|
|
12
12
|
cx: d.x,
|
|
13
13
|
cy: d.y,
|
|
14
14
|
angle: Math.atan2(d.nx, -d.ny)
|
|
15
15
|
};
|
|
16
16
|
}
|
|
17
|
-
var
|
|
17
|
+
var s = {
|
|
18
18
|
x: 1,
|
|
19
19
|
y: 1
|
|
20
20
|
};
|
|
21
|
-
function
|
|
21
|
+
function c(e, t, n, r) {
|
|
22
22
|
return Math.abs(t - e.cx) <= r && Math.abs(n - e.cy) <= r;
|
|
23
23
|
}
|
|
24
24
|
//#endregion
|
|
25
|
-
export {
|
|
25
|
+
export { a as DEFAULT_ROTATION_HANDLE_DISTANCE, c as hitRotationHandle, o as rotationHandle };
|
|
26
26
|
|
|
27
27
|
//# sourceMappingURL=handle.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handle.js","names":["DEFAULT_ROTATION_HANDLE_DISTANCE","ROTATION_HANDLE_BASE_PX","rotationHandle","UNIT_SCALE","
|
|
1
|
+
{"version":3,"file":"handle.js","names":["DEFAULT_ROTATION_HANDLE_DISTANCE","ROTATION_HANDLE_BASE_PX","rotationHandle","UNIT_SCALE","xf","targetTransformOf","pose","top","localToWorld","p","standoff","normalToWorld","distance","scale","hitRotationHandle","px","handle","radius","py"],"sources":["../../../../src/interactions/actions/rotate/handle.ts"],"sourcesContent":["import { localToWorld, normalToWorld, targetTransformOf } from 'core/geometry/targetFrame';\nimport { ROTATION_HANDLE_BASE_PX } from 'core/device/targets';\nimport { standoff, type PoseLinear, type Scale2 } from '@weasel-js/geom';\n\n/** Default world-space distance from the rect's top edge to the rotation\n * handle's center. Matches the demo's visual default; consumers can\n * override per-call. Unscaled — kit-internal use sites multiply by\n * `DeviceProfile.targetScale`. */\nexport const DEFAULT_ROTATION_HANDLE_DISTANCE = ROTATION_HANDLE_BASE_PX;\n\n/** Rotation handle position in world coords. */\nexport interface RotationHandle {\n /** Handle center in world coords. */\n cx: number;\n cy: number;\n /** How far the handle is turned on screen, radians: the angle from screen\n * up to the top edge's outward normal as it lands there. Equals the pose\n * rotation under uniform zoom. */\n angle: number;\n}\n\n/** Rotation handle for a box as its frame draws it: `distance` pixels off the\n * top edge's midpoint, along that edge's outward normal as it lands on a\n * screen whose per-axis zoom is `scale`. With no `scale`, a pixel is a world\n * unit. */\nexport function rotationHandle(\n pose: { x: number; y: number; width: number; height: number; rotation?: number; transform?: PoseLinear },\n distance: number = DEFAULT_ROTATION_HANDLE_DISTANCE,\n scale: Scale2 = UNIT_SCALE,\n): RotationHandle {\n const xf = targetTransformOf(pose);\n const top = localToWorld(xf, pose.x + pose.width / 2, pose.y);\n const p = standoff(top, normalToWorld(xf, { x: 0, y: -1 }), distance, scale);\n return { cx: p.x, cy: p.y, angle: Math.atan2(p.nx, -p.ny) };\n}\n\nconst UNIT_SCALE: Scale2 = { x: 1, y: 1 };\n\n/** Square hit-test: returns true if `(px, py)` is within `radius` of the\n * handle's center on both axes. Mirrors `hitCornerHandle`. */\nexport function hitRotationHandle(\n handle: Pick<RotationHandle, 'cx' | 'cy'>,\n px: number,\n py: number,\n radius: number,\n): boolean {\n return Math.abs(px - handle.cx) <= radius && Math.abs(py - handle.cy) <= radius;\n}\n"],"mappings":";;;;AAQA,IAAaA,IAAmCC;AAiBhD,SAAgBC,EACd,GACA,IAAmBF,GACnB,IAAgBG,GACA;CAChB,IAAMC,IAAKC,EAAkBC,CAAI,GAC3BC,IAAMC,EAAaJ,GAAIE,EAAK,IAAIA,EAAK,QAAQ,GAAGA,EAAK,CAAC,GACtDG,IAAIC,EAASH,GAAKI,EAAcP,GAAI;EAAE,GAAG;EAAG,GAAG;CAAG,CAAC,GAAGQ,GAAUC,CAAK;CAC3E,OAAO;EAAE,IAAIJ,EAAE;EAAG,IAAIA,EAAE;EAAG,OAAO,KAAK,MAAMA,EAAE,IAAI,CAACA,EAAE,EAAE;CAAE;AAC5D;AAEA,IAAMN,IAAqB;CAAE,GAAG;CAAG,GAAG;AAAE;AAIxC,SAAgBW,EACd,GACA,GACA,GACA,GACS;CACT,OAAO,KAAK,IAAIC,IAAKC,EAAO,EAAE,KAAKC,KAAU,KAAK,IAAIC,IAAKF,EAAO,EAAE,KAAKC;AAC3E"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { unionAABB as e } from "../../../core/geometry/unionBounds.js";
|
|
2
|
+
import { visualBoundsViaDescriptor as t } from "../../../core/geometry/poseDescriptor.js";
|
|
3
|
+
import { readGestureLifecycle as n } from "../gestureLifecycle.js";
|
|
4
|
+
import { carryPose as r, invertPlane as i, planeOf as a } from "../planeInput.js";
|
|
5
|
+
import { gestureReaders as o } from "../../gestures/shared/screenTolerance.js";
|
|
6
|
+
import { nodeDescriptors as s, poseDescriptorOf as c } from "../poseDescriptorDep.js";
|
|
7
|
+
import { shapeSources as l } from "../selectionSubtree.js";
|
|
8
|
+
import { pointerStateOf as u } from "../pointerState.js";
|
|
9
|
+
import { scenePoseFrame as d } from "../poseFrame.js";
|
|
10
|
+
import { sceneGestureFrames as f } from "../gestureFrames.js";
|
|
11
|
+
import { moveGestureAdapter as p } from "../move/gestureAdapter.js";
|
|
12
|
+
import { DEFAULT_ROTATE_BEHAVIORS as m } from "./behaviors/index.js";
|
|
13
|
+
import { resolveParams as h } from "@weasel-js/routing";
|
|
14
|
+
//#region src/interactions/actions/rotate/session.ts
|
|
15
|
+
function g(e, n, o, s, c) {
|
|
16
|
+
let l = /* @__PURE__ */ new Map(), u = /* @__PURE__ */ new Map(), d = [];
|
|
17
|
+
for (let f of o) {
|
|
18
|
+
let o = n.get(f);
|
|
19
|
+
if (!o) continue;
|
|
20
|
+
let p = s(f);
|
|
21
|
+
if (!p.withRotation || p.supportsRotation?.(o.pose) === !1) continue;
|
|
22
|
+
l.set(f, o.pose);
|
|
23
|
+
let m = r(p, c.world(f), i(a(e.deps.view, o.layer))), h = p.getBounds(m);
|
|
24
|
+
u.set(f, {
|
|
25
|
+
world: m,
|
|
26
|
+
center: {
|
|
27
|
+
x: h.x + h.width / 2,
|
|
28
|
+
y: h.y + h.height / 2
|
|
29
|
+
},
|
|
30
|
+
rotation: p.getRotation?.(m) ?? 0
|
|
31
|
+
}), d.push(t(m, p));
|
|
32
|
+
}
|
|
33
|
+
return {
|
|
34
|
+
originPoses: l,
|
|
35
|
+
origins: u,
|
|
36
|
+
visual: d
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
function _(e, t, n, r, i) {
|
|
40
|
+
return {
|
|
41
|
+
draggedIds: [...n.keys()],
|
|
42
|
+
origin: new Map([...n].map(([e, t]) => [e, t.world])),
|
|
43
|
+
current: new Map([...n].map(([e, t]) => [e, t.world])),
|
|
44
|
+
snap: null,
|
|
45
|
+
modifiers: { ...e.modifiers },
|
|
46
|
+
pointer: u(e.world, e),
|
|
47
|
+
view: r.view(),
|
|
48
|
+
plane: r.plane(),
|
|
49
|
+
frames: f(t, e.deps.view),
|
|
50
|
+
adapter: p(t, void 0, i),
|
|
51
|
+
scratch: {}
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
function v(t, r) {
|
|
55
|
+
let i = t.deps.selection, a = t.deps.scene, u = h(r?.params), f = r?.behaviors ?? m;
|
|
56
|
+
if (!i || !a) return null;
|
|
57
|
+
let p = l(a, i.get());
|
|
58
|
+
if (p.length === 0) return null;
|
|
59
|
+
let v = s(a, c(t.deps.poseDescriptor)), y = d(a), { originPoses: b, origins: x, visual: S } = g(t, a, p, v, y);
|
|
60
|
+
if (b.size === 0) return null;
|
|
61
|
+
let C = e(S), w = {
|
|
62
|
+
x: C.x + C.width / 2,
|
|
63
|
+
y: C.y + C.height / 2
|
|
64
|
+
}, T = o(t.deps), E = _(t, a, x, T, i.adapterMethods);
|
|
65
|
+
for (let e of f) e.onStart?.(E);
|
|
66
|
+
return {
|
|
67
|
+
session: {
|
|
68
|
+
scene: a,
|
|
69
|
+
ids: p,
|
|
70
|
+
turn: {
|
|
71
|
+
origins: x,
|
|
72
|
+
pivot: w,
|
|
73
|
+
useUnionPivot: p.length > 1 && u?.pivot !== "each",
|
|
74
|
+
descriptorOf: v
|
|
75
|
+
},
|
|
76
|
+
poseFrame: y,
|
|
77
|
+
view: t.deps.view,
|
|
78
|
+
originPoses: b,
|
|
79
|
+
startPointerAngle: Math.atan2(t.world.y - w.y, t.world.x - w.x),
|
|
80
|
+
behaviors: f,
|
|
81
|
+
gestureCtx: E,
|
|
82
|
+
applyOps: t.deps.applyOps,
|
|
83
|
+
selectionMethods: i.adapterMethods,
|
|
84
|
+
lifecycle: n(u, "Rotate", f)
|
|
85
|
+
},
|
|
86
|
+
readers: T
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
//#endregion
|
|
90
|
+
export { v as beginRotate };
|
|
91
|
+
|
|
92
|
+
//# sourceMappingURL=session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.js","names":["captureOrigins","originPoses","origins","visual","id","ids","node","scene","g","descriptorOf","world","carryPose","poseFrame","invertPlane","planeOf","ctx","b","visualBoundsViaDescriptor","buildGestureContext","o","pointerStateOf","readers","sceneGestureFrames","moveGestureAdapter","selectionMethods","beginRotate","selection","params","resolveParams","opts","behaviors","DEFAULT_ROTATE_BEHAVIORS","shapeSources","nodeDescriptors","poseDescriptorOf","scenePoseFrame","union","unionAABB","pivot","gestureReaders","gestureCtx","\"pivot\"","readGestureLifecycle"],"sources":["../../../../src/interactions/actions/rotate/session.ts"],"sourcesContent":["import type { BindingOpts, InvocationCtx } from '@weasel-js/routing';\nimport { pointerStateOf } from '../pointerState';\nimport { sceneGestureFrames } from '../gestureFrames';\nimport { resolveParams } from '@weasel-js/routing';\nimport { unionAABB } from 'core/geometry/unionBounds';\nimport type { Op } from 'core/ops/types';\nimport type { NodeId, Scene } from 'core/scene/types';\nimport type { SelectionApi } from 'core/selection/useSelection';\nimport type { Bounds } from 'core/viewport/fitViewToBounds';\nimport { gestureReaders, type GestureReaders } from '../../gestures/shared/screenTolerance';\nimport type { GestureContext, RotateBehavior } from '../../gestures/types';\nimport { readGestureLifecycle, type GestureLifecycle } from '../gestureLifecycle';\nimport { DEFAULT_ROTATE_BEHAVIORS } from './behaviors';\nimport { moveGestureAdapter } from '../move/gestureAdapter';\nimport { carryPose, invertPlane, planeOf } from '../planeInput';\nimport { nodeDescriptors, poseDescriptorOf } from '../poseDescriptorDep';\nimport { scenePoseFrame, type PoseFrame } from '../poseFrame';\nimport { visualBoundsViaDescriptor, type PoseDescriptor } from '../resize/geometry';\nimport { shapeSources } from '../selectionSubtree';\n\n/** One rotated node as the press found it, in the plane the pointer's angle\n * is read in. */\nexport interface TurnOrigin {\n readonly world: unknown;\n /** Center of `world`'s bounds. */\n readonly center: { x: number; y: number };\n readonly rotation: number;\n}\n\n/** What a turn by some delta is computed from. */\nexport interface Turn {\n readonly origins: ReadonlyMap<NodeId, TurnOrigin>;\n /** The point the pointer orbits: the center of what the selection draws. */\n readonly pivot: { x: number; y: number };\n /** Orbit each node's center around `pivot`, for a multi-selection. Off,\n * each node turns about its own center. */\n readonly useUnionPivot: boolean;\n readonly descriptorOf: (id: NodeId) => PoseDescriptor<unknown>;\n}\n\n/** What a rotate captured at press. Nothing here changes during the drag. */\nexport interface RotateSession {\n readonly scene: Scene<unknown, string, unknown>;\n readonly ids: readonly NodeId[];\n readonly turn: Turn;\n /** World reads and local writes over the scene's composition strategy. */\n readonly poseFrame: PoseFrame<unknown>;\n readonly view: unknown;\n /** Each rotated node's pose as stored: the `from` of its op. */\n readonly originPoses: ReadonlyMap<NodeId, unknown>;\n /** Pointer angle around the pivot at press. */\n readonly startPointerAngle: number;\n readonly behaviors: readonly RotateBehavior<unknown>[];\n /** Reused across the drag; behaviors mutate its `scratch`. */\n readonly gestureCtx: GestureContext<unknown>;\n readonly applyOps?: (ops: Op[], label: string) => void;\n readonly selectionMethods: SelectionApi['adapterMethods'] | undefined;\n readonly lifecycle: GestureLifecycle;\n}\n\n/** What one `onMove` produced. Replaced, not mutated, by the next. */\nexport interface RotateFrame {\n /** Radians turned since press, as the behaviors shaped it. */\n readonly delta: number;\n /** Stored-frame pose of every rotated id; empty at a zero delta. */\n readonly previews: Map<NodeId, unknown>;\n}\n\nfunction captureOrigins(\n ctx: InvocationCtx,\n scene: Scene<unknown, string, unknown>,\n ids: readonly NodeId[],\n descriptorOf: (id: NodeId) => PoseDescriptor<unknown>,\n poseFrame: PoseFrame<unknown>,\n): { originPoses: Map<NodeId, unknown>; origins: Map<NodeId, TurnOrigin>; visual: Bounds[] } {\n const originPoses = new Map<NodeId, unknown>();\n const origins = new Map<NodeId, TurnOrigin>();\n const visual: Bounds[] = [];\n for (const id of ids) {\n const node = scene.get(id);\n if (!node) continue;\n const g = descriptorOf(id);\n if (!g.withRotation || g.supportsRotation?.(node.pose) === false) continue;\n originPoses.set(id, node.pose);\n // The pivot is a world point, so every measurement the gesture orbits\n // is taken from the world pose, not the stored one — carried into the\n // plane the edit is measured in, where the pointer's angle is read.\n const world = carryPose(g, poseFrame.world(id), invertPlane(planeOf(ctx.deps.view, node.layer)));\n const b = g.getBounds(world);\n origins.set(id, {\n world,\n center: { x: b.x + b.width / 2, y: b.y + b.height / 2 },\n rotation: g.getRotation?.(world) ?? 0,\n });\n visual.push(visualBoundsViaDescriptor(world, g));\n }\n return { originPoses, origins, visual };\n}\n\nfunction buildGestureContext(\n ctx: InvocationCtx,\n scene: Scene<unknown, string, unknown>,\n origins: ReadonlyMap<NodeId, TurnOrigin>,\n readers: GestureReaders,\n selectionMethods: SelectionApi['adapterMethods'],\n): GestureContext<unknown> {\n return {\n draggedIds: [...origins.keys()] as string[],\n origin: new Map([...origins].map(([id, o]) => [id as string, o.world])),\n current: new Map([...origins].map(([id, o]) => [id as string, o.world])),\n snap: null,\n modifiers: { ...ctx.modifiers },\n pointer: pointerStateOf(ctx.world, ctx),\n view: readers.view(),\n plane: readers.plane(),\n frames: sceneGestureFrames(scene, ctx.deps.view),\n adapter: moveGestureAdapter(scene, undefined, selectionMethods) as unknown as GestureContext<unknown>['adapter'],\n scratch: {},\n };\n}\n\n/** Capture a rotate at press. Null when nothing selected can turn. Runs each\n * behavior's `onStart`. */\nexport function beginRotate(\n ctx: InvocationCtx,\n opts: BindingOpts | undefined,\n): { session: RotateSession; readers: GestureReaders } | null {\n const selection = ctx.deps.selection;\n const scene = ctx.deps.scene;\n const params = resolveParams(opts?.params);\n const behaviors = (opts?.behaviors ?? DEFAULT_ROTATE_BEHAVIORS) as readonly RotateBehavior<unknown>[];\n\n if (!selection || !scene) return null;\n\n // A group whose pose derives from its children turns by turning them.\n const ids = shapeSources(scene, selection.get()) as NodeId[];\n if (ids.length === 0) return null;\n\n const descriptorOf = nodeDescriptors(scene, poseDescriptorOf(ctx.deps.poseDescriptor));\n // The pivot the pointer orbits is a world point, so every pose the\n // gesture turns is a world pose. Each turned result is stored back in\n // the node's own parent frame at preview and commit alike.\n const poseFrame = scenePoseFrame(scene);\n const { originPoses, origins, visual } = captureOrigins(ctx, scene, ids, descriptorOf, poseFrame);\n if (originPoses.size === 0) return null;\n\n const union = unionAABB(visual)!;\n const pivot = { x: union.x + union.width / 2, y: union.y + union.height / 2 };\n const readers = gestureReaders(ctx.deps);\n const gestureCtx = buildGestureContext(ctx, scene, origins, readers, selection.adapterMethods);\n for (const b of behaviors) b.onStart?.(gestureCtx);\n\n const session: RotateSession = {\n scene,\n ids,\n turn: {\n origins,\n pivot,\n useUnionPivot: ids.length > 1 && params?.['pivot'] !== 'each',\n descriptorOf,\n },\n poseFrame,\n view: ctx.deps.view,\n originPoses,\n startPointerAngle: Math.atan2(ctx.world.y - pivot.y, ctx.world.x - pivot.x),\n behaviors,\n gestureCtx,\n applyOps: ctx.deps.applyOps,\n selectionMethods: selection.adapterMethods,\n lifecycle: readGestureLifecycle(params, 'Rotate', behaviors),\n };\n return { session, readers };\n}\n"],"mappings":";;;;;;;;;;;;;;AAoEA,SAASA,EACP,GACA,GACA,GACA,GACA,GAC2F;CAC3F,IAAMC,oBAAc,IAAI,IAAqB,GACvCC,oBAAU,IAAI,IAAwB,GACtCC,IAAmB,CAAC;CAC1B,KAAK,IAAMC,KAAMC,GAAK;EACpB,IAAMC,IAAOC,EAAM,IAAIH,CAAE;EACzB,IAAI,CAACE,GAAM;EACX,IAAME,IAAIC,EAAaL,CAAE;EACzB,IAAI,CAACI,EAAE,gBAAgBA,EAAE,mBAAmBF,EAAK,IAAI,MAAM,IAAO;EAClE,EAAY,IAAIF,GAAIE,EAAK,IAAI;EAI7B,IAAMI,IAAQC,EAAUH,GAAGI,EAAU,MAAMR,CAAE,GAAGS,EAAYC,EAAQC,EAAI,KAAK,MAAMT,EAAK,KAAK,CAAC,CAAC,GACzFU,IAAIR,EAAE,UAAUE,CAAK;EAM3B,AALAR,EAAQ,IAAIE,GAAI;GACd;GACA,QAAQ;IAAE,GAAGY,EAAE,IAAIA,EAAE,QAAQ;IAAG,GAAGA,EAAE,IAAIA,EAAE,SAAS;GAAE;GACtD,UAAUR,EAAE,cAAcE,CAAK,KAAK;EACtC,CAAC,GACDP,EAAO,KAAKc,EAA0BP,GAAOF,CAAC,CAAC;CACjD;CACA,OAAO;EAAE;EAAa;EAAS;CAAO;AACxC;AAEA,SAASU,EACP,GACA,GACA,GACA,GACA,GACyB;CACzB,OAAO;EACL,YAAY,CAAC,GAAGhB,EAAQ,KAAK,CAAC;EAC9B,QAAQ,IAAI,IAAI,CAAC,GAAGA,CAAO,CAAC,CAAC,KAAK,CAACE,GAAIe,OAAO,CAACf,GAAce,EAAE,KAAK,CAAC,CAAC;EACtE,SAAS,IAAI,IAAI,CAAC,GAAGjB,CAAO,CAAC,CAAC,KAAK,CAACE,GAAIe,OAAO,CAACf,GAAce,EAAE,KAAK,CAAC,CAAC;EACvE,MAAM;EACN,WAAW,EAAE,GAAGJ,EAAI,UAAU;EAC9B,SAASK,EAAeL,EAAI,OAAOA,CAAG;EACtC,MAAMM,EAAQ,KAAK;EACnB,OAAOA,EAAQ,MAAM;EACrB,QAAQC,EAAmBf,GAAOQ,EAAI,KAAK,IAAI;EAC/C,SAASQ,EAAmBhB,GAAO,KAAA,GAAWiB,CAAgB;EAC9D,SAAS,CAAC;CACZ;AACF;AAIA,SAAgBC,EACd,GACA,GAC4D;CAC5D,IAAMC,IAAYX,EAAI,KAAK,WACrBR,IAAQQ,EAAI,KAAK,OACjBY,IAASC,EAAcC,GAAM,MAAM,GACnCC,IAAaD,GAAM,aAAaE;CAEtC,IAAI,CAACL,KAAa,CAACnB,GAAO,OAAO;CAGjC,IAAMF,IAAM2B,EAAazB,GAAOmB,EAAU,IAAI,CAAC;CAC/C,IAAIrB,EAAI,WAAW,GAAG,OAAO;CAE7B,IAAMI,IAAewB,EAAgB1B,GAAO2B,EAAiBnB,EAAI,KAAK,cAAc,CAAC,GAI/EH,IAAYuB,EAAe5B,CAAK,GAChC,EAAE,gBAAa,YAAS,cAAWP,EAAee,GAAKR,GAAOF,GAAKI,GAAcG,CAAS;CAChG,IAAIX,EAAY,SAAS,GAAG,OAAO;CAEnC,IAAMmC,IAAQC,EAAUlC,CAAM,GACxBmC,IAAQ;EAAE,GAAGF,EAAM,IAAIA,EAAM,QAAQ;EAAG,GAAGA,EAAM,IAAIA,EAAM,SAAS;CAAE,GACtEf,IAAUkB,EAAexB,EAAI,IAAI,GACjCyB,IAAatB,EAAoBH,GAAKR,GAAOL,GAASmB,GAASK,EAAU,cAAc;CAC7F,KAAK,IAAMV,KAAKc,GAAW,EAAE,UAAUU,CAAU;CAqBjD,OAAO;EAAE,SAAA;GAlBP;GACA;GACA,MAAM;IACJ;IACA;IACA,eAAenC,EAAI,SAAS,KAAKsB,GAASc,UAAa;IACvD;GACF;GACA;GACA,MAAM1B,EAAI,KAAK;GACf;GACA,mBAAmB,KAAK,MAAMA,EAAI,MAAM,IAAIuB,EAAM,GAAGvB,EAAI,MAAM,IAAIuB,EAAM,CAAC;GAC1E;GACA;GACA,UAAUvB,EAAI,KAAK;GACnB,kBAAkBW,EAAU;GAC5B,WAAWgB,EAAqBf,GAAQ,UAAUG,CAAS;EAEpD;EAAS;CAAQ;AAC5B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spatialReference.js","names":["resolveSpatialReference","ref","p","src","r","actionReferenceSources","params","pointer","scene","id","visualBoundsViaDescriptor","frame","geom"],"sources":["../../../src/interactions/actions/spatialReference.ts"],"sourcesContent":["import type { NodeId, Scene } from 'core/scene/types';\nimport type { Bounds } from 'core/viewport/fitViewToBounds';\nimport type { PointerContextValue } from '
|
|
1
|
+
{"version":3,"file":"spatialReference.js","names":["resolveSpatialReference","ref","p","src","r","actionReferenceSources","params","pointer","scene","id","visualBoundsViaDescriptor","frame","geom"],"sources":["../../../src/interactions/actions/spatialReference.ts"],"sourcesContent":["import type { NodeId, Scene } from 'core/scene/types';\nimport type { Bounds } from 'core/viewport/fitViewToBounds';\nimport type { PointerContextValue } from '@weasel-js/routing/react';\nimport type { PoseDescriptor } from './resize/geometry';\nimport { visualBoundsViaDescriptor } from './resize/geometry';\nimport type { PoseFrame } from './poseFrame';\n\n/**\n * @experimental\n * A world-space place a selection transform lines up against — what align\n * aligns to, what flip mirrors about — other than the selection itself:\n *\n * - `'pointer'` — where the pointer is: the click's world point when a click\n * invoked the action, otherwise the latest position in the `pointer` dep.\n * - `{ x, y, width?, height? }` — a world point, or a world rect when it has\n * extent.\n * - `{ node }` — that node's visual bounds (a key object; it does not move).\n */\nexport type SpatialReference =\n | 'pointer'\n | { x: number; y: number; width?: number; height?: number }\n | { node: NodeId };\n\n/** @experimental Where `resolveSpatialReference` reads a reference's inputs. */\nexport interface SpatialReferenceSources {\n /** The pointer's world position, or `null` when it is over no canvas. */\n pointer(): { x: number; y: number } | null;\n /** A node's world visual bounds, or `null` when it is not in the scene. */\n nodeBounds(id: NodeId): Bounds | null;\n}\n\n/**\n * @experimental\n * The world bounds `ref` names — a point comes back as a zero-size rect — or\n * `null` when it names nothing right now (no pointer, a missing node, a\n * malformed value).\n */\nexport function resolveSpatialReference(\n ref: SpatialReference | unknown,\n src: SpatialReferenceSources,\n): Bounds | null {\n if (ref === 'pointer') {\n const p = src.pointer();\n return p ? { x: p.x, y: p.y, width: 0, height: 0 } : null;\n }\n if (typeof ref !== 'object' || ref === null) return null;\n if ('node' in ref) return src.nodeBounds((ref as { node: NodeId }).node);\n const r = ref as { x?: unknown; y?: unknown; width?: unknown; height?: unknown };\n if (typeof r.x !== 'number' || typeof r.y !== 'number') return null;\n return {\n x: r.x,\n y: r.y,\n width: typeof r.width === 'number' ? r.width : 0,\n height: typeof r.height === 'number' ? r.height : 0,\n };\n}\n\n/** The sources an immediate action resolves a reference from. A click's\n * `worldX`/`worldY` params outrank the `pointer` dep. */\nexport function actionReferenceSources(\n params: Record<string, unknown> | undefined,\n pointer: PointerContextValue | undefined,\n scene: Scene<unknown, string, unknown>,\n frame: PoseFrame<unknown>,\n geom: PoseDescriptor<unknown>,\n): SpatialReferenceSources {\n return {\n pointer: () => {\n if (typeof params?.worldX === 'number' && typeof params.worldY === 'number') {\n return { x: params.worldX, y: params.worldY };\n }\n const p = pointer?.get();\n return p ? { x: p.worldX, y: p.worldY } : null;\n },\n nodeBounds: (id) => (scene.get(id) === undefined\n ? null\n : visualBoundsViaDescriptor(frame.world(id), geom)),\n };\n}\n"],"mappings":";;AAqCA,SAAgBA,EACd,GACA,GACe;CACf,IAAIC,MAAQ,WAAW;EACrB,IAAMC,IAAIC,EAAI,QAAQ;EACtB,OAAOD,IAAI;GAAE,GAAGA,EAAE;GAAG,GAAGA,EAAE;GAAG,OAAO;GAAG,QAAQ;EAAE,IAAI;CACvD;CACA,IAAI,OAAOD,KAAQ,aAAYA,GAAc,OAAO;CACpD,IAAI,UAAUA,GAAK,OAAOE,EAAI,WAAYF,EAAyB,IAAI;CACvE,IAAMG,IAAIH;CAEV,OADI,OAAOG,EAAE,KAAM,YAAY,OAAOA,EAAE,KAAM,WAAiB,OACxD;EACL,GAAGA,EAAE;EACL,GAAGA,EAAE;EACL,OAAO,OAAOA,EAAE,SAAU,WAAWA,EAAE,QAAQ;EAC/C,QAAQ,OAAOA,EAAE,UAAW,WAAWA,EAAE,SAAS;CACpD;AACF;AAIA,SAAgBC,EACd,GACA,GACA,GACA,GACA,GACyB;CACzB,OAAO;EACL,eAAe;GACb,IAAI,OAAOC,GAAQ,UAAW,YAAY,OAAOA,EAAO,UAAW,UACjE,OAAO;IAAE,GAAGA,EAAO;IAAQ,GAAGA,EAAO;GAAO;GAE9C,IAAMJ,IAAIK,GAAS,IAAI;GACvB,OAAOL,IAAI;IAAE,GAAGA,EAAE;IAAQ,GAAGA,EAAE;GAAO,IAAI;EAC5C;EACA,aAAa,MAAQM,EAAM,IAAIC,CAAE,MAAM,KAAA,IACnC,OACAC,EAA0BC,EAAM,MAAMF,CAAE,GAAGG,CAAI;CACrD;AACF"}
|
|
@@ -1,112 +1,117 @@
|
|
|
1
|
-
import { moveAction as e } from "./
|
|
2
|
-
import { resizeAction as t } from "./
|
|
3
|
-
import { rotateAction as n } from "./
|
|
1
|
+
import { moveAction as e } from "./move/action.js";
|
|
2
|
+
import { resizeAction as t } from "./resize/action.js";
|
|
3
|
+
import { rotateAction as n } from "./rotate/action.js";
|
|
4
4
|
import { areaSelectAction as r } from "./defaults/areaSelect.js";
|
|
5
|
-
import { insertAction as i
|
|
6
|
-
import { clearSelectionAction as
|
|
7
|
-
import { cloneAction as
|
|
8
|
-
import { viewportDragPanAction as
|
|
9
|
-
import { editAnchorsAction as
|
|
10
|
-
import { lassoSelectAction as
|
|
11
|
-
import { pinchZoomAction as
|
|
12
|
-
import { deleteAction as
|
|
13
|
-
import { ingestAction as
|
|
14
|
-
import { clipboardCopyAction as
|
|
15
|
-
import { enterTextEditAction as
|
|
16
|
-
import { escapeAction as
|
|
17
|
-
import { cancelGestureAction as
|
|
18
|
-
import { selectAllAction as
|
|
19
|
-
import { duplicateAction as
|
|
20
|
-
import { groupAction as
|
|
21
|
-
import { redoAction as
|
|
22
|
-
import { flipAction as
|
|
23
|
-
import { nudgeDownAction as
|
|
24
|
-
import { reorderBackwardAction as
|
|
25
|
-
import { alignBottomAction as
|
|
26
|
-
import { distributeHorizontalAction as F, distributeVerticalAction as I } from "./
|
|
27
|
-
import { pathfinderCropAction as L, pathfinderDivideAction as R, pathfinderExcludeAction as z, pathfinderIntersectAction as B,
|
|
28
|
-
import { createOutlinesAction as
|
|
29
|
-
import {
|
|
30
|
-
import {
|
|
31
|
-
import {
|
|
32
|
-
import {
|
|
33
|
-
import {
|
|
34
|
-
import {
|
|
35
|
-
import {
|
|
36
|
-
import {
|
|
5
|
+
import { insertAction as i } from "./insert/action.js";
|
|
6
|
+
import { clearSelectionAction as a } from "./defaults/clearSelection.js";
|
|
7
|
+
import { cloneAction as o } from "./clone/action.js";
|
|
8
|
+
import { viewportDragPanAction as ee } from "./defaults/viewportDragPan.js";
|
|
9
|
+
import { editAnchorsAction as te } from "./edit-anchors/action.js";
|
|
10
|
+
import { lassoSelectAction as ne } from "./lasso-select/action.js";
|
|
11
|
+
import { pinchZoomAction as re } from "./defaults/pinchZoom.js";
|
|
12
|
+
import { deleteAction as s } from "./defaults/delete.js";
|
|
13
|
+
import { ingestAction as c } from "./defaults/ingest.js";
|
|
14
|
+
import { clipboardCopyAction as l, clipboardCutAction as u, clipboardPasteAction as d, clipboardPasteEventAction as f } from "./clipboard/action.js";
|
|
15
|
+
import { enterTextEditAction as p } from "./defaults/enterTextEdit.js";
|
|
16
|
+
import { escapeAction as m } from "./defaults/escape.js";
|
|
17
|
+
import { cancelGestureAction as h } from "./defaults/cancelGesture.js";
|
|
18
|
+
import { selectAllAction as g } from "./defaults/selectAll.js";
|
|
19
|
+
import { duplicateAction as _ } from "./defaults/duplicate.js";
|
|
20
|
+
import { groupAction as v, ungroupAction as y } from "./defaults/group.js";
|
|
21
|
+
import { redoAction as b, undoAction as x } from "./defaults/undoRedo.js";
|
|
22
|
+
import { flipAction as S } from "./flip/action.js";
|
|
23
|
+
import { nudgeDownAction as C, nudgeLeftAction as w, nudgeRightAction as T, nudgeUpAction as E } from "./defaults/nudge.js";
|
|
24
|
+
import { reorderBackwardAction as D, reorderForwardAction as O } from "./defaults/reorder.js";
|
|
25
|
+
import { alignBottomAction as k, alignCenterXAction as A, alignCenterYAction as j, alignLeftAction as M, alignRightAction as N, alignTopAction as P } from "./align/action.js";
|
|
26
|
+
import { distributeHorizontalAction as F, distributeVerticalAction as I } from "./distribute/action.js";
|
|
27
|
+
import { pathfinderCropAction as L, pathfinderDivideAction as R, pathfinderExcludeAction as z, pathfinderIntersectAction as B, pathfinderMergeAction as V, pathfinderSubtractAction as H, pathfinderTrimAction as ie, pathfinderUnionAction as U } from "./booleans/action.js";
|
|
28
|
+
import { createOutlinesAction as W } from "./outlines/createOutlinesAction.js";
|
|
29
|
+
import { outlineStrokeAction as G } from "./outlines/outlineStrokeAction.js";
|
|
30
|
+
import { insertRotateAction as K } from "./insert/rotateAction.js";
|
|
31
|
+
import { enterPathEditAction as q } from "./defaults/enterPathEdit.js";
|
|
32
|
+
import { exitPathEditAction as J } from "./defaults/exitPathEdit.js";
|
|
33
|
+
import { insertPathAnchorAction as Y } from "./defaults/insertPathAnchor.js";
|
|
34
|
+
import { cutPathAtAnchorAction as ae, deleteAnchorsAction as oe, marqueeAnchorsAction as se, nudgeAnchorsDownAction as ce, nudgeAnchorsLeftAction as le, nudgeAnchorsRightAction as ue, nudgeAnchorsUpAction as de, selectAnchorAction as fe } from "./defaults/anchorEditing.js";
|
|
35
|
+
import { setFillAction as pe } from "./defaults/setFill.js";
|
|
36
|
+
import { setStrokeAction as me } from "./defaults/setStroke.js";
|
|
37
|
+
import { setFillOpacityAction as he } from "./defaults/setFillOpacity.js";
|
|
38
|
+
import { setStrokeOpacityAction as ge } from "./defaults/setStrokeOpacity.js";
|
|
37
39
|
import { useEffect as X } from "react";
|
|
38
40
|
import { useLatest as Z } from "@weasel-js/react";
|
|
39
41
|
import "@weasel-js/routing";
|
|
40
|
-
import { useActionsRegistry as
|
|
42
|
+
import { useActionsRegistry as _e, useOptionalActiveToolContext as Q, useOptionalDepRegistry as ve } from "@weasel-js/routing/react";
|
|
41
43
|
//#region src/interactions/actions/useStandardActions.ts
|
|
42
44
|
var $ = [
|
|
45
|
+
m,
|
|
43
46
|
h,
|
|
44
47
|
g,
|
|
45
48
|
_,
|
|
49
|
+
s,
|
|
46
50
|
v,
|
|
47
|
-
c,
|
|
48
51
|
y,
|
|
52
|
+
x,
|
|
49
53
|
b,
|
|
50
54
|
S,
|
|
51
|
-
|
|
55
|
+
E,
|
|
52
56
|
C,
|
|
53
|
-
D,
|
|
54
57
|
w,
|
|
55
58
|
T,
|
|
56
|
-
E,
|
|
57
|
-
k,
|
|
58
59
|
O,
|
|
59
|
-
|
|
60
|
-
j,
|
|
61
|
-
P,
|
|
62
|
-
ie,
|
|
60
|
+
D,
|
|
63
61
|
M,
|
|
64
62
|
A,
|
|
63
|
+
N,
|
|
64
|
+
P,
|
|
65
|
+
j,
|
|
66
|
+
k,
|
|
65
67
|
F,
|
|
66
68
|
I,
|
|
69
|
+
U,
|
|
67
70
|
H,
|
|
68
|
-
V,
|
|
69
71
|
B,
|
|
70
72
|
z,
|
|
71
73
|
R,
|
|
72
74
|
L,
|
|
73
|
-
|
|
75
|
+
ie,
|
|
76
|
+
V,
|
|
77
|
+
W,
|
|
78
|
+
G,
|
|
74
79
|
e,
|
|
75
80
|
t,
|
|
76
81
|
n,
|
|
77
82
|
r,
|
|
78
83
|
i,
|
|
79
|
-
a,
|
|
80
|
-
ee,
|
|
81
|
-
ne,
|
|
82
|
-
W,
|
|
83
|
-
G,
|
|
84
84
|
K,
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
oe,
|
|
88
|
-
se,
|
|
89
|
-
J,
|
|
85
|
+
o,
|
|
86
|
+
te,
|
|
90
87
|
q,
|
|
88
|
+
J,
|
|
91
89
|
Y,
|
|
90
|
+
de,
|
|
91
|
+
ce,
|
|
92
92
|
le,
|
|
93
|
-
re,
|
|
94
|
-
s,
|
|
95
|
-
te,
|
|
96
|
-
o,
|
|
97
|
-
m,
|
|
98
93
|
ue,
|
|
99
|
-
|
|
94
|
+
oe,
|
|
95
|
+
ae,
|
|
96
|
+
se,
|
|
100
97
|
fe,
|
|
98
|
+
ne,
|
|
99
|
+
re,
|
|
100
|
+
ee,
|
|
101
|
+
a,
|
|
102
|
+
p,
|
|
101
103
|
pe,
|
|
104
|
+
me,
|
|
105
|
+
he,
|
|
106
|
+
ge,
|
|
107
|
+
c,
|
|
108
|
+
u,
|
|
102
109
|
l,
|
|
103
110
|
d,
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
function ve(e) {
|
|
109
|
-
let t = Z(e), n = Q(), r = Z(n), i = he();
|
|
111
|
+
f
|
|
112
|
+
], ye = $.map((e) => e.id), be = { "clipboard.pasteEvent": "ingest" };
|
|
113
|
+
function xe(e) {
|
|
114
|
+
let t = Z(e), n = Q(), r = Z(n), i = ve();
|
|
110
115
|
X(() => {
|
|
111
116
|
if (!i) return;
|
|
112
117
|
let e = [];
|
|
@@ -124,11 +129,11 @@ function ve(e) {
|
|
|
124
129
|
t,
|
|
125
130
|
r
|
|
126
131
|
]);
|
|
127
|
-
let a =
|
|
132
|
+
let a = _e(), o = e.exclude ? [...e.exclude].join("\0") : "";
|
|
128
133
|
X(() => {
|
|
129
134
|
if (!a || !i) return;
|
|
130
135
|
let e = new Set(o ? o.split("\0") : []), t = $.filter((t) => !e.has(t.id)).filter((t) => {
|
|
131
|
-
let n =
|
|
136
|
+
let n = be[t.id];
|
|
132
137
|
return n === void 0 || e.has(n);
|
|
133
138
|
}).map((e) => a.register(e));
|
|
134
139
|
return () => {
|
|
@@ -141,6 +146,6 @@ function ve(e) {
|
|
|
141
146
|
]);
|
|
142
147
|
}
|
|
143
148
|
//#endregion
|
|
144
|
-
export {
|
|
149
|
+
export { ye as KIT_STANDARD_ACTION_IDS, xe as useStandardActions };
|
|
145
150
|
|
|
146
151
|
//# sourceMappingURL=useStandardActions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useStandardActions.js","names":["KIT_STANDARD_DESCRIPTORS","escapeAction","cancelGestureAction","selectAllAction","duplicateAction","deleteAction","groupAction","ungroupAction","undoAction","redoAction","flipAction","nudgeUpAction","nudgeDownAction","nudgeLeftAction","nudgeRightAction","reorderForwardAction","reorderBackwardAction","alignLeftAction","alignCenterXAction","alignRightAction","alignTopAction","alignCenterYAction","alignBottomAction","distributeHorizontalAction","distributeVerticalAction","pathfinderUnionAction","pathfinderSubtractAction","pathfinderIntersectAction","pathfinderExcludeAction","pathfinderDivideAction","pathfinderCropAction","createOutlinesAction","moveAction","resizeAction","rotateAction","areaSelectAction","insertAction","insertRotateAction","cloneAction","editAnchorsAction","enterPathEditAction","exitPathEditAction","insertPathAnchorAction","nudgeAnchorsUpAction","nudgeAnchorsDownAction","nudgeAnchorsLeftAction","nudgeAnchorsRightAction","deleteAnchorsAction","cutPathAtAnchorAction","marqueeAnchorsAction","selectAnchorAction","lassoSelectAction","pinchZoomAction","viewportDragPanAction","clearSelectionAction","enterTextEditAction","setFillAction","setStrokeAction","setFillOpacityAction","setStrokeOpacityAction","ingestAction","clipboardCutAction","clipboardCopyAction","clipboardPasteAction","clipboardPasteEventAction","KIT_STANDARD_ACTION_IDS","a","YIELDS_TO","useStandardActions","optsRef","useLatest","opts","activeToolCtx","useOptionalActiveToolContext","activeToolCtxRef","depReg","useOptionalDepRegistry","unregisters","key","u","reg","useActionsRegistry","excludeKey","excluded","over"],"sources":["../../../src/interactions/actions/useStandardActions.ts"],"sourcesContent":["/**\n * @experimental\n * `useStandardActions` — register the kit-standard action descriptors into the\n * nearest `<ActionsProvider>` and publish dep sources into the nearest\n * `<DepRegistryProvider>`.\n *\n * Instead of calling closure-style factories, this hook registers each dep as\n * a live source and each kit-standard descriptor's `invoker` directly.\n *\n * Falls back silently to a no-op when no `<ActionsProvider>` or\n * `<DepRegistryProvider>` is in scope.\n */\nimport { useEffect } from 'react';\nimport type { Action } from '@weasel-js/routing';\nimport { useActionsRegistry } from '@weasel-js/routing/react';\nimport { useLatest } from '@weasel-js/react';\nimport { type DepName, type DepSchema } from '@weasel-js/routing';\nimport { useOptionalDepRegistry } from '@weasel-js/routing/react';\n// Reaches depSchema.ts so tsup's per-entry dts compiler resolves `DepSchema['selection']`\n// here; `tsc --noEmit` happens to pick it up via test files, tsup does not. It MUST be\n// `import type` — a bare `import './depSchema'` makes esbuild emit a runtime import that it\n// then drops under the package's `sideEffects: false`, warning on every build.\nimport type {} from './depSchema';\nimport { useOptionalActiveToolContext } from '@weasel-js/routing/react';\n\nimport { escapeAction } from './defaults/escape';\nimport { cancelGestureAction } from './defaults/cancelGesture';\nimport { selectAllAction } from './defaults/selectAll';\nimport { deleteAction } from './defaults/delete';\nimport { duplicateAction } from './defaults/duplicate';\nimport { groupAction, ungroupAction } from './defaults/group';\nimport { undoAction, redoAction } from './defaults/undoRedo';\nimport { flipAction } from './defaults/flip';\nimport {\n nudgeUpAction, nudgeDownAction, nudgeLeftAction, nudgeRightAction,\n} from './defaults/nudge';\nimport { reorderForwardAction, reorderBackwardAction } from './defaults/reorder';\nimport {\n alignLeftAction, alignRightAction, alignTopAction, alignBottomAction,\n alignCenterXAction, alignCenterYAction,\n} from './defaults/align';\nimport {\n distributeHorizontalAction, distributeVerticalAction,\n} from './defaults/distribute';\nimport {\n pathfinderUnionAction, pathfinderSubtractAction, pathfinderIntersectAction,\n pathfinderExcludeAction, pathfinderDivideAction, pathfinderCropAction,\n} from './defaults/booleans';\nimport { createOutlinesAction } from './defaults/createOutlines';\nimport { moveAction } from './defaults/move';\nimport { resizeAction } from './defaults/resize';\nimport { rotateAction } from './defaults/rotate';\nimport { areaSelectAction } from './defaults/areaSelect';\nimport { insertAction, insertRotateAction } from './defaults/insert';\nimport { clearSelectionAction } from './defaults/clearSelection';\nimport { cloneAction } from './defaults/clone';\nimport { editAnchorsAction } from './defaults/editAnchors';\nimport { enterPathEditAction } from './defaults/enterPathEdit';\nimport { exitPathEditAction } from './defaults/exitPathEdit';\nimport { insertPathAnchorAction } from './defaults/insertPathAnchor';\nimport {\n nudgeAnchorsUpAction,\n nudgeAnchorsDownAction,\n nudgeAnchorsLeftAction,\n nudgeAnchorsRightAction,\n deleteAnchorsAction,\n cutPathAtAnchorAction,\n marqueeAnchorsAction,\n selectAnchorAction,\n} from './defaults/anchorEditing';\nimport { lassoSelectAction } from './defaults/lassoSelect';\nimport { pinchZoomAction } from './defaults/pinchZoom';\nimport { viewportDragPanAction } from './defaults/viewportDragPan';\nimport { enterTextEditAction } from './defaults/enterTextEdit';\nimport { setFillAction } from './defaults/setFill';\nimport { setStrokeAction } from './defaults/setStroke';\nimport { setFillOpacityAction } from './defaults/setFillOpacity';\nimport { setStrokeOpacityAction } from './defaults/setStrokeOpacity';\nimport { ingestAction } from './defaults/ingest';\nimport {\n clipboardCopyAction, clipboardCutAction, clipboardPasteAction, clipboardPasteEventAction,\n} from './defaults/clipboard';\n\n// viewportWheelPanAction / viewportZoomAction are NOT in KIT_STANDARD_DESCRIPTORS.\n// They are wired conditionally by SceneCanvas via `useViewportActions`\n// based on the `viewport.pan` / `viewport.zoom` flags.\n\n/** @experimental */\nexport interface UseStandardActionsOptions {\n /** Kit selection state — ids of currently selected nodes. */\n selection?: DepSchema['selection'];\n /** Current viewport — camera position + scale. */\n view?: DepSchema['view'];\n /** Scene tree — structural reads + undoable mutations. */\n scene?: DepSchema['scene'];\n /** Undo/redo history bound to the current scene. */\n history?: DepSchema['history'];\n /** Currently active tool id + hotkey-hold stack. */\n activeTool?: DepSchema['activeTool'];\n /**\n * Ids of kit-standard actions to leave unregistered, so a consumer can bind\n * its own. Ids that name no kit action are ignored;\n * `KIT_STANDARD_ACTION_IDS` is the full list.\n */\n exclude?: Iterable<string>;\n}\n\n/**\n * The ordered list of all kit-standard action descriptors. Each descriptor\n * carries an `invoker` that reads from the dep registry at dispatch time.\n *\n * `viewport.pan` and `viewport.zoom` are NOT in this list — they're registered\n * conditionally by SceneCanvas's `useViewportActions` based on the\n * `viewport.pan` / `viewport.zoom` flags. See `src/canvas/SceneCanvas/useViewportActions.ts`.\n */\nconst KIT_STANDARD_DESCRIPTORS: Action[] = [\n escapeAction,\n cancelGestureAction,\n selectAllAction,\n duplicateAction,\n deleteAction,\n groupAction,\n ungroupAction,\n undoAction,\n redoAction,\n flipAction,\n nudgeUpAction,\n nudgeDownAction,\n nudgeLeftAction,\n nudgeRightAction,\n reorderForwardAction,\n reorderBackwardAction,\n alignLeftAction,\n alignCenterXAction,\n alignRightAction,\n alignTopAction,\n alignCenterYAction,\n alignBottomAction,\n distributeHorizontalAction,\n distributeVerticalAction,\n pathfinderUnionAction,\n pathfinderSubtractAction,\n pathfinderIntersectAction,\n pathfinderExcludeAction,\n pathfinderDivideAction,\n pathfinderCropAction,\n createOutlinesAction,\n moveAction,\n resizeAction,\n rotateAction,\n areaSelectAction,\n insertAction,\n insertRotateAction,\n cloneAction,\n editAnchorsAction,\n enterPathEditAction,\n exitPathEditAction,\n insertPathAnchorAction,\n nudgeAnchorsUpAction,\n nudgeAnchorsDownAction,\n nudgeAnchorsLeftAction,\n nudgeAnchorsRightAction,\n deleteAnchorsAction,\n cutPathAtAnchorAction,\n marqueeAnchorsAction,\n selectAnchorAction,\n lassoSelectAction,\n pinchZoomAction,\n viewportDragPanAction,\n clearSelectionAction,\n enterTextEditAction,\n setFillAction,\n setStrokeAction,\n setFillOpacityAction,\n setStrokeOpacityAction,\n ingestAction,\n clipboardCutAction,\n clipboardCopyAction,\n clipboardPasteAction,\n clipboardPasteEventAction,\n];\n\n/** Every id `useStandardActions` can register, in registration order. It\n * holds `clipboard.pasteEvent` back unless `ingest` is excluded. */\nexport const KIT_STANDARD_ACTION_IDS: readonly string[] =\n KIT_STANDARD_DESCRIPTORS.map((a) => a.id);\n\n/**\n * Kit-standard actions that stay unregistered while another one is\n * registered, because that one binds the same gesture and does everything\n * this one does: both answering it would act twice. Keyed by the action that\n * yields.\n */\nconst YIELDS_TO: Readonly<Record<string, string>> = {\n 'clipboard.pasteEvent': 'ingest',\n};\n\n/**\n * @experimental\n * Register each kit-standard dep source and action descriptor into the\n * surrounding providers.\n *\n * **Provider requirements:** both `<ActionsProvider>` and\n * `<DepRegistryProvider>` must be in scope (typically provided by\n * `<SceneCanvas>`). The hook falls back silently to a no-op when either\n * provider is absent.\n *\n * **Dep registration:** each non-undefined option is published as a live source\n * in the dep registry under its canonical name (`selection`, `scene`, …). The\n * source thunk reads the latest option value at invocation time via a ref, so\n * consumers don't have to memoize their dep objects.\n */\nexport function useStandardActions(opts: UseStandardActionsOptions): void {\n // --- Stabilize opts via ref ---\n const optsRef = useLatest(opts);\n\n // --- activeTool fallback: read from context when not supplied in opts ---\n // Falls back to null when no <ActiveToolContextProvider> is in scope\n // (preserves silent-no-op contract for consumers that mount without SceneCanvas).\n const activeToolCtx = useOptionalActiveToolContext();\n const activeToolCtxRef = useLatest(activeToolCtx);\n\n // --- Dep source registration ---\n // Must be unconditional (rules of hooks). Each effect only registers when a\n // provider is present (depReg !== null guard is inside the effect body).\n const depReg = useOptionalDepRegistry();\n\n useEffect(() => {\n if (!depReg) return;\n const unregisters: Array<() => void> = [];\n const keys = ['selection', 'view', 'scene', 'history'] as const;\n for (const key of keys) {\n unregisters.push(\n depReg.register(key as DepName, () => optsRef.current[key] as DepSchema[DepName]),\n );\n }\n // activeTool: prefer the explicit opt; fall back to the context value so\n // SceneCanvas doesn't need to thread it through StandardActionsRegistrar.\n unregisters.push(\n depReg.register('activeTool' as DepName, () =>\n (optsRef.current.activeTool ?? activeToolCtxRef.current) as DepSchema[DepName],\n ),\n );\n return () => { for (const u of unregisters) u(); };\n }, [depReg, optsRef, activeToolCtxRef]);\n\n // --- Action descriptor registration with legacy run bridge ---\n const reg = useActionsRegistry();\n\n // Joined so a fresh array of the same ids does not re-register every render.\n const excludeKey = opts.exclude ? [...opts.exclude].join('\\u0000') : '';\n\n useEffect(() => {\n if (!reg || !depReg) return;\n // `withLegacyRunBridge` is gone. Kit-standard descriptors\n // register their `invoker` directly. `registry.trigger(id)` reads from the\n // dep registry to build deps when calling `invoker.run` (so ActionBar /\n // palette callers still work without a per-action `run` thunk).\n const excluded = new Set(excludeKey ? excludeKey.split('\\u0000') : []);\n const unregisters = KIT_STANDARD_DESCRIPTORS\n .filter((a) => !excluded.has(a.id))\n .filter((a) => {\n const over = YIELDS_TO[a.id];\n return over === undefined || excluded.has(over);\n })\n .map((a) => reg.register(a));\n return () => { for (const u of unregisters) u(); };\n }, [reg, depReg, excludeKey]);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmHA,IAAMA,IAAqC;CACzCC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;AACF,GAIaC,KACXjE,EAAyB,KAAK,MAAMkE,EAAE,EAAE,GAQpCC,KAA8C,EAClD,wBAAwB,SAC1B;AAiBA,SAAgBC,GAAmB,GAAuC;CAExE,IAAMC,IAAUC,EAAUC,CAAI,GAKxBC,IAAgBC,EAA6B,GAC7CC,IAAmBJ,EAAUE,CAAa,GAK1CG,IAASC,GAAuB;CAEtC,QAAgB;EACd,IAAI,CAACD,GAAQ;EACb,IAAME,IAAiC,CAAC;EAExC,KAAK,IAAMC,KAAO;GADJ;GAAa;GAAQ;GAAS;EAC1B,GAChB,EAAY,KACVH,EAAO,SAASG,SAAsBT,EAAQ,QAAQS,EAA0B,CAClF;EASF,OALAD,EAAY,KACVF,EAAO,SAAS,oBACbN,EAAQ,QAAQ,cAAcK,EAAiB,OAClD,CACF,SACa;GAAE,KAAK,IAAMK,KAAKF,GAAa,EAAE;EAAG;CACnD,GAAG;EAACF;EAAQN;EAASK;CAAgB,CAAC;CAGtC,IAAMM,IAAMC,GAAmB,GAGzBC,IAAaX,EAAK,UAAU,CAAC,GAAGA,EAAK,OAAO,CAAC,CAAC,KAAK,IAAQ,IAAI;CAErE,QAAgB;EACd,IAAI,CAACS,KAAO,CAACL,GAAQ;EAKrB,IAAMQ,IAAW,IAAI,IAAID,IAAaA,EAAW,MAAM,IAAQ,IAAI,CAAC,CAAC,GAC/DL,IAAc7E,EACjB,QAAQ,MAAM,CAACmF,EAAS,IAAIjB,EAAE,EAAE,CAAC,CAAC,CAClC,QAAQ,MAAM;GACb,IAAMkB,IAAOjB,GAAUD,EAAE;GACzB,OAAOkB,MAAS,KAAA,KAAaD,EAAS,IAAIC,CAAI;EAChD,CAAC,CAAC,CACD,KAAK,MAAMJ,EAAI,SAASd,CAAC,CAAC;EAC7B,aAAa;GAAE,KAAK,IAAMa,KAAKF,GAAa,EAAE;EAAG;CACnD,GAAG;EAACG;EAAKL;EAAQO;CAAU,CAAC;AAC9B"}
|
|
1
|
+
{"version":3,"file":"useStandardActions.js","names":["KIT_STANDARD_DESCRIPTORS","escapeAction","cancelGestureAction","selectAllAction","duplicateAction","deleteAction","groupAction","ungroupAction","undoAction","redoAction","flipAction","nudgeUpAction","nudgeDownAction","nudgeLeftAction","nudgeRightAction","reorderForwardAction","reorderBackwardAction","alignLeftAction","alignCenterXAction","alignRightAction","alignTopAction","alignCenterYAction","alignBottomAction","distributeHorizontalAction","distributeVerticalAction","pathfinderUnionAction","pathfinderSubtractAction","pathfinderIntersectAction","pathfinderExcludeAction","pathfinderDivideAction","pathfinderCropAction","pathfinderTrimAction","pathfinderMergeAction","createOutlinesAction","outlineStrokeAction","moveAction","resizeAction","rotateAction","areaSelectAction","insertAction","insertRotateAction","cloneAction","editAnchorsAction","enterPathEditAction","exitPathEditAction","insertPathAnchorAction","nudgeAnchorsUpAction","nudgeAnchorsDownAction","nudgeAnchorsLeftAction","nudgeAnchorsRightAction","deleteAnchorsAction","cutPathAtAnchorAction","marqueeAnchorsAction","selectAnchorAction","lassoSelectAction","pinchZoomAction","viewportDragPanAction","clearSelectionAction","enterTextEditAction","setFillAction","setStrokeAction","setFillOpacityAction","setStrokeOpacityAction","ingestAction","clipboardCutAction","clipboardCopyAction","clipboardPasteAction","clipboardPasteEventAction","KIT_STANDARD_ACTION_IDS","a","YIELDS_TO","useStandardActions","optsRef","useLatest","opts","activeToolCtx","useOptionalActiveToolContext","activeToolCtxRef","depReg","useOptionalDepRegistry","unregisters","key","u","reg","useActionsRegistry","excludeKey","excluded","over"],"sources":["../../../src/interactions/actions/useStandardActions.ts"],"sourcesContent":["/**\n * @experimental\n * `useStandardActions` — register the kit-standard action descriptors into the\n * nearest `<ActionsProvider>` and publish dep sources into the nearest\n * `<DepRegistryProvider>`. Falls back silently to a no-op when either is\n * not in scope.\n */\nimport { useEffect } from 'react';\nimport type { Action } from '@weasel-js/routing';\nimport { useActionsRegistry } from '@weasel-js/routing/react';\nimport { useLatest } from '@weasel-js/react';\nimport { type DepName, type DepSchema } from '@weasel-js/routing';\nimport { useOptionalDepRegistry } from '@weasel-js/routing/react';\n// Reaches depSchema.ts so tsup's per-entry dts compiler resolves `DepSchema['selection']`\n// here; `tsc --noEmit` happens to pick it up via test files, tsup does not. It MUST be\n// `import type` — a bare `import './depSchema'` makes esbuild emit a runtime import that it\n// then drops under the package's `sideEffects: false`, warning on every build.\nimport type {} from './depSchema';\nimport { useOptionalActiveToolContext } from '@weasel-js/routing/react';\n\nimport { escapeAction } from './defaults/escape';\nimport { cancelGestureAction } from './defaults/cancelGesture';\nimport { selectAllAction } from './defaults/selectAll';\nimport { deleteAction } from './defaults/delete';\nimport { duplicateAction } from './defaults/duplicate';\nimport { groupAction, ungroupAction } from './defaults/group';\nimport { undoAction, redoAction } from './defaults/undoRedo';\nimport { flipAction } from './flip/action';\nimport {\n nudgeUpAction, nudgeDownAction, nudgeLeftAction, nudgeRightAction,\n} from './defaults/nudge';\nimport { reorderForwardAction, reorderBackwardAction } from './defaults/reorder';\nimport {\n alignLeftAction, alignRightAction, alignTopAction, alignBottomAction,\n alignCenterXAction, alignCenterYAction,\n} from './align/action';\nimport {\n distributeHorizontalAction, distributeVerticalAction,\n} from './distribute/action';\nimport {\n pathfinderUnionAction, pathfinderSubtractAction, pathfinderIntersectAction,\n pathfinderExcludeAction, pathfinderDivideAction, pathfinderCropAction,\n pathfinderTrimAction, pathfinderMergeAction,\n} from './booleans/action';\nimport { createOutlinesAction } from './outlines/createOutlinesAction';\nimport { outlineStrokeAction } from './outlines/outlineStrokeAction';\nimport { moveAction } from './move/action';\nimport { resizeAction } from './resize/action';\nimport { rotateAction } from './rotate/action';\nimport { areaSelectAction } from './defaults/areaSelect';\nimport { insertAction } from './insert/action';\nimport { insertRotateAction } from './insert/rotateAction';\nimport { clearSelectionAction } from './defaults/clearSelection';\nimport { cloneAction } from './clone/action';\nimport { editAnchorsAction } from './edit-anchors/action';\nimport { enterPathEditAction } from './defaults/enterPathEdit';\nimport { exitPathEditAction } from './defaults/exitPathEdit';\nimport { insertPathAnchorAction } from './defaults/insertPathAnchor';\nimport {\n nudgeAnchorsUpAction,\n nudgeAnchorsDownAction,\n nudgeAnchorsLeftAction,\n nudgeAnchorsRightAction,\n deleteAnchorsAction,\n cutPathAtAnchorAction,\n marqueeAnchorsAction,\n selectAnchorAction,\n} from './defaults/anchorEditing';\nimport { lassoSelectAction } from './lasso-select/action';\nimport { pinchZoomAction } from './defaults/pinchZoom';\nimport { viewportDragPanAction } from './defaults/viewportDragPan';\nimport { enterTextEditAction } from './defaults/enterTextEdit';\nimport { setFillAction } from './defaults/setFill';\nimport { setStrokeAction } from './defaults/setStroke';\nimport { setFillOpacityAction } from './defaults/setFillOpacity';\nimport { setStrokeOpacityAction } from './defaults/setStrokeOpacity';\nimport { ingestAction } from './defaults/ingest';\nimport {\n clipboardCopyAction, clipboardCutAction, clipboardPasteAction, clipboardPasteEventAction,\n} from './clipboard/action';\n\n/** @experimental */\nexport interface UseStandardActionsOptions {\n /** Kit selection state — ids of currently selected nodes. */\n selection?: DepSchema['selection'];\n /** Current viewport — camera position + scale. */\n view?: DepSchema['view'];\n /** Scene tree — structural reads + undoable mutations. */\n scene?: DepSchema['scene'];\n /** Undo/redo history bound to the current scene. */\n history?: DepSchema['history'];\n /** Currently active tool id + hotkey-hold stack. */\n activeTool?: DepSchema['activeTool'];\n /**\n * Ids of kit-standard actions to leave unregistered, so a consumer can bind\n * its own. Ids that name no kit action are ignored;\n * `KIT_STANDARD_ACTION_IDS` is the full list.\n */\n exclude?: Iterable<string>;\n}\n\n/**\n * The ordered list of all kit-standard action descriptors. `viewport.pan`\n * and `viewport.zoom` are NOT in this list — they're registered conditionally\n * by SceneCanvas's `useViewportActions` based on the `viewport.pan` /\n * `viewport.zoom` flags.\n */\nconst KIT_STANDARD_DESCRIPTORS: Action[] = [\n escapeAction,\n cancelGestureAction,\n selectAllAction,\n duplicateAction,\n deleteAction,\n groupAction,\n ungroupAction,\n undoAction,\n redoAction,\n flipAction,\n nudgeUpAction,\n nudgeDownAction,\n nudgeLeftAction,\n nudgeRightAction,\n reorderForwardAction,\n reorderBackwardAction,\n alignLeftAction,\n alignCenterXAction,\n alignRightAction,\n alignTopAction,\n alignCenterYAction,\n alignBottomAction,\n distributeHorizontalAction,\n distributeVerticalAction,\n pathfinderUnionAction,\n pathfinderSubtractAction,\n pathfinderIntersectAction,\n pathfinderExcludeAction,\n pathfinderDivideAction,\n pathfinderCropAction,\n pathfinderTrimAction,\n pathfinderMergeAction,\n createOutlinesAction,\n outlineStrokeAction,\n moveAction,\n resizeAction,\n rotateAction,\n areaSelectAction,\n insertAction,\n insertRotateAction,\n cloneAction,\n editAnchorsAction,\n enterPathEditAction,\n exitPathEditAction,\n insertPathAnchorAction,\n nudgeAnchorsUpAction,\n nudgeAnchorsDownAction,\n nudgeAnchorsLeftAction,\n nudgeAnchorsRightAction,\n deleteAnchorsAction,\n cutPathAtAnchorAction,\n marqueeAnchorsAction,\n selectAnchorAction,\n lassoSelectAction,\n pinchZoomAction,\n viewportDragPanAction,\n clearSelectionAction,\n enterTextEditAction,\n setFillAction,\n setStrokeAction,\n setFillOpacityAction,\n setStrokeOpacityAction,\n ingestAction,\n clipboardCutAction,\n clipboardCopyAction,\n clipboardPasteAction,\n clipboardPasteEventAction,\n];\n\n/** Every id `useStandardActions` can register, in registration order. It\n * holds `clipboard.pasteEvent` back unless `ingest` is excluded. */\nexport const KIT_STANDARD_ACTION_IDS: readonly string[] =\n KIT_STANDARD_DESCRIPTORS.map((a) => a.id);\n\n/**\n * Kit-standard actions that stay unregistered while another one is\n * registered, because that one binds the same gesture and does everything\n * this one does: both answering it would act twice. Keyed by the action that\n * yields.\n */\nconst YIELDS_TO: Readonly<Record<string, string>> = {\n 'clipboard.pasteEvent': 'ingest',\n};\n\n/**\n * @experimental\n * Register each kit-standard dep source and action descriptor into the\n * surrounding `<ActionsProvider>` and `<DepRegistryProvider>` (typically\n * provided by `<SceneCanvas>`); a silent no-op when either is absent.\n *\n * Each option is published as a live source in the dep registry under its\n * canonical name (`selection`, `scene`, …). The source reads the latest\n * option value at invocation time, so consumers don't have to memoize their\n * dep objects.\n */\nexport function useStandardActions(opts: UseStandardActionsOptions): void {\n // --- Stabilize opts via ref ---\n const optsRef = useLatest(opts);\n\n // --- activeTool fallback: read from context when not supplied in opts ---\n const activeToolCtx = useOptionalActiveToolContext();\n const activeToolCtxRef = useLatest(activeToolCtx);\n\n // --- Dep source registration ---\n const depReg = useOptionalDepRegistry();\n\n useEffect(() => {\n if (!depReg) return;\n const unregisters: Array<() => void> = [];\n const keys = ['selection', 'view', 'scene', 'history'] as const;\n for (const key of keys) {\n unregisters.push(\n depReg.register(key as DepName, () => optsRef.current[key] as DepSchema[DepName]),\n );\n }\n // activeTool: prefer the explicit opt; fall back to the context value so\n // SceneCanvas doesn't need to thread it through StandardActionsRegistrar.\n unregisters.push(\n depReg.register('activeTool' as DepName, () =>\n (optsRef.current.activeTool ?? activeToolCtxRef.current) as DepSchema[DepName],\n ),\n );\n return () => { for (const u of unregisters) u(); };\n }, [depReg, optsRef, activeToolCtxRef]);\n\n // --- Action descriptor registration ---\n const reg = useActionsRegistry();\n\n // Joined so a fresh array of the same ids does not re-register every render.\n const excludeKey = opts.exclude ? [...opts.exclude].join('\\u0000') : '';\n\n useEffect(() => {\n if (!reg || !depReg) return;\n const excluded = new Set(excludeKey ? excludeKey.split('\\u0000') : []);\n const unregisters = KIT_STANDARD_DESCRIPTORS\n .filter((a) => !excluded.has(a.id))\n .filter((a) => {\n const over = YIELDS_TO[a.id];\n return over === undefined || excluded.has(over);\n })\n .map((a) => reg.register(a));\n return () => { for (const u of unregisters) u(); };\n }, [reg, depReg, excludeKey]);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2GA,IAAMA,IAAqC;CACzCC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;AACF,GAIaC,KACXpE,EAAyB,KAAK,MAAMqE,EAAE,EAAE,GAQpCC,KAA8C,EAClD,wBAAwB,SAC1B;AAaA,SAAgBC,GAAmB,GAAuC;CAExE,IAAMC,IAAUC,EAAUC,CAAI,GAGxBC,IAAgBC,EAA6B,GAC7CC,IAAmBJ,EAAUE,CAAa,GAG1CG,IAASC,GAAuB;CAEtC,QAAgB;EACd,IAAI,CAACD,GAAQ;EACb,IAAME,IAAiC,CAAC;EAExC,KAAK,IAAMC,KAAO;GADJ;GAAa;GAAQ;GAAS;EAC1B,GAChB,EAAY,KACVH,EAAO,SAASG,SAAsBT,EAAQ,QAAQS,EAA0B,CAClF;EASF,OALAD,EAAY,KACVF,EAAO,SAAS,oBACbN,EAAQ,QAAQ,cAAcK,EAAiB,OAClD,CACF,SACa;GAAE,KAAK,IAAMK,KAAKF,GAAa,EAAE;EAAG;CACnD,GAAG;EAACF;EAAQN;EAASK;CAAgB,CAAC;CAGtC,IAAMM,IAAMC,GAAmB,GAGzBC,IAAaX,EAAK,UAAU,CAAC,GAAGA,EAAK,OAAO,CAAC,CAAC,KAAK,IAAQ,IAAI;CAErE,QAAgB;EACd,IAAI,CAACS,KAAO,CAACL,GAAQ;EACrB,IAAMQ,IAAW,IAAI,IAAID,IAAaA,EAAW,MAAM,IAAQ,IAAI,CAAC,CAAC,GAC/DL,IAAchF,EACjB,QAAQ,MAAM,CAACsF,EAAS,IAAIjB,EAAE,EAAE,CAAC,CAAC,CAClC,QAAQ,MAAM;GACb,IAAMkB,IAAOjB,GAAUD,EAAE;GACzB,OAAOkB,MAAS,KAAA,KAAaD,EAAS,IAAIC,CAAI;EAChD,CAAC,CAAC,CACD,KAAK,MAAMJ,EAAI,SAASd,CAAC,CAAC;EAC7B,aAAa;GAAE,KAAK,IAAMa,KAAKF,GAAa,EAAE;EAAG;CACnD,GAAG;EAACG;EAAKL;EAAQO;CAAU,CAAC;AAC9B"}
|