@weasel-js/core 1.7.0 → 1.7.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +794 -0
- package/README.md +14 -8
- package/dist/WeaselProvider.js +15 -0
- package/dist/WeaselProvider.js.map +1 -0
- package/dist/affordances/composeAffordanceLayer.js +224 -0
- package/dist/affordances/composeAffordanceLayer.js.map +1 -0
- package/dist/affordances/cornerResize.js +69 -0
- package/dist/affordances/cornerResize.js.map +1 -0
- package/dist/affordances/hitAffordanceRegions.js +138 -0
- package/dist/affordances/hitAffordanceRegions.js.map +1 -0
- package/dist/affordances/pathAnchors.js +66 -0
- package/dist/affordances/pathAnchors.js.map +1 -0
- package/dist/affordances/rotationHandle.js +103 -0
- package/dist/affordances/rotationHandle.js.map +1 -0
- package/dist/animation/behaviors/momentum.js +118 -0
- package/dist/animation/behaviors/momentum.js.map +1 -0
- package/dist/animation/colorHelpers.js +135 -0
- package/dist/animation/colorHelpers.js.map +1 -0
- package/dist/animation/colorRegistry.js +37 -0
- package/dist/animation/colorRegistry.js.map +1 -0
- package/dist/animation/index.js +20 -0
- package/dist/animation/loop.js +62 -0
- package/dist/animation/loop.js.map +1 -0
- package/dist/animation/observe.js +23 -0
- package/dist/animation/observe.js.map +1 -0
- package/dist/animation/poseHelpers.js +50 -0
- package/dist/animation/poseHelpers.js.map +1 -0
- package/dist/animation/reflow.js +121 -0
- package/dist/animation/reflow.js.map +1 -0
- package/dist/animation/rig/bindRig.js +74 -0
- package/dist/animation/rig/bindRig.js.map +1 -0
- package/dist/animation/rig/blendPoses.js +43 -0
- package/dist/animation/rig/blendPoses.js.map +1 -0
- package/dist/animation/rig/mirrorPose.js +19 -0
- package/dist/animation/rig/mirrorPose.js.map +1 -0
- package/dist/animation/rig/resolveSkeleton.js +33 -0
- package/dist/animation/rig/resolveSkeleton.js.map +1 -0
- package/dist/animation/rig/solveIk.js +103 -0
- package/dist/animation/rig/solveIk.js.map +1 -0
- package/dist/animation/rig/types.js +12 -0
- package/dist/animation/rig/types.js.map +1 -0
- package/dist/animation/rig/useRig.js +23 -0
- package/dist/animation/rig/useRig.js.map +1 -0
- package/dist/animation/slew.js +27 -0
- package/dist/animation/slew.js.map +1 -0
- package/dist/animation/stagger.js +138 -0
- package/dist/animation/stagger.js.map +1 -0
- package/dist/animation/timeline/booking.js +106 -0
- package/dist/animation/timeline/booking.js.map +1 -0
- package/dist/animation/timeline/createTimeline.js +116 -0
- package/dist/animation/timeline/createTimeline.js.map +1 -0
- package/dist/animation/timeline/sampleTrack.js +29 -0
- package/dist/animation/timeline/sampleTrack.js.map +1 -0
- package/dist/animation/useAnimator.js +329 -0
- package/dist/animation/useAnimator.js.map +1 -0
- package/dist/animation/wrappers/animateLifecycle.js +40 -0
- package/dist/animation/wrappers/animateLifecycle.js.map +1 -0
- package/dist/animation/wrappers/animateOnSetPose.js +44 -0
- package/dist/animation/wrappers/animateOnSetPose.js.map +1 -0
- package/dist/{autoPoseDescriptor-_XOyF7t4.d.ts → autoPoseDescriptor-vCdt55xm.d.ts} +2 -2
- package/dist/{builtins-DLn2lCr_.d.ts → builtins-C-gRyVRx.d.ts} +742 -513
- package/dist/canvas/Canvas.js +608 -0
- package/dist/canvas/Canvas.js.map +1 -0
- package/dist/canvas/CanvasView.js +255 -0
- package/dist/canvas/CanvasView.js.map +1 -0
- package/dist/canvas/CursorCoordsHud.js +102 -0
- package/dist/canvas/CursorCoordsHud.js.map +1 -0
- package/dist/canvas/DrawCanvas.js +67 -0
- package/dist/canvas/DrawCanvas.js.map +1 -0
- package/dist/canvas/MinimapCanvas.js +139 -0
- package/dist/canvas/MinimapCanvas.js.map +1 -0
- package/dist/canvas/ModalityHud.js +66 -0
- package/dist/canvas/ModalityHud.js.map +1 -0
- package/dist/canvas/NodeShape.js +391 -0
- package/dist/canvas/NodeShape.js.map +1 -0
- package/dist/canvas/PickHud.js +93 -0
- package/dist/canvas/PickHud.js.map +1 -0
- package/dist/canvas/SceneCanvas/ActionsProviderIfRoot.js +10 -0
- package/dist/canvas/SceneCanvas/ActionsProviderIfRoot.js.map +1 -0
- package/dist/canvas/SceneCanvas/DepRegistryProviderIfRoot.js +10 -0
- package/dist/canvas/SceneCanvas/DepRegistryProviderIfRoot.js.map +1 -0
- package/dist/canvas/SceneCanvas/PointerProviderIfRoot.js +51 -0
- package/dist/canvas/SceneCanvas/PointerProviderIfRoot.js.map +1 -0
- package/dist/canvas/SceneCanvas/contributionFrameHooks.js +42 -0
- package/dist/canvas/SceneCanvas/contributionFrameHooks.js.map +1 -0
- package/dist/canvas/SceneCanvas/defaultNodeProperties.js +549 -0
- package/dist/canvas/SceneCanvas/defaultNodeProperties.js.map +1 -0
- package/dist/canvas/SceneCanvas/defaultNodeRouting.js +26 -0
- package/dist/canvas/SceneCanvas/defaultNodeRouting.js.map +1 -0
- package/dist/canvas/SceneCanvas/dispatcherGestureBounds.js +69 -0
- package/dist/canvas/SceneCanvas/dispatcherGestureBounds.js.map +1 -0
- package/dist/canvas/SceneCanvas/features.js +97 -0
- package/dist/canvas/SceneCanvas/features.js.map +1 -0
- package/dist/canvas/SceneCanvas/poseGeometry.js +46 -0
- package/dist/canvas/SceneCanvas/poseGeometry.js.map +1 -0
- package/dist/canvas/SceneCanvas/useActionsPropResolver.js +48 -0
- package/dist/canvas/SceneCanvas/useActionsPropResolver.js.map +1 -0
- package/dist/canvas/SceneCanvas/useBuiltinShapeTools.js +70 -0
- package/dist/canvas/SceneCanvas/useBuiltinShapeTools.js.map +1 -0
- package/dist/canvas/SceneCanvas/useContributionRoles.js +75 -0
- package/dist/canvas/SceneCanvas/useContributionRoles.js.map +1 -0
- package/dist/canvas/SceneCanvas/useDispatcherOverlayLayer.js +172 -0
- package/dist/canvas/SceneCanvas/useDispatcherOverlayLayer.js.map +1 -0
- package/dist/canvas/SceneCanvas/usePreviewGhostLayer.js +69 -0
- package/dist/canvas/SceneCanvas/usePreviewGhostLayer.js.map +1 -0
- package/dist/canvas/SceneCanvas/useSceneSelectTool.js +127 -0
- package/dist/canvas/SceneCanvas/useSceneSelectTool.js.map +1 -0
- package/dist/canvas/SceneCanvas/useViewportActions.js +30 -0
- package/dist/canvas/SceneCanvas/useViewportActions.js.map +1 -0
- package/dist/canvas/SceneCanvas.js +992 -0
- package/dist/canvas/SceneCanvas.js.map +1 -0
- package/dist/canvas/SceneViewCanvas.js +54 -0
- package/dist/canvas/SceneViewCanvas.js.map +1 -0
- package/dist/canvas/accentColor.js +9 -0
- package/dist/canvas/accentColor.js.map +1 -0
- package/dist/canvas/affordanceAt.js +63 -0
- package/dist/canvas/affordanceAt.js.map +1 -0
- package/dist/canvas/buildSceneTree.js +65 -0
- package/dist/canvas/buildSceneTree.js.map +1 -0
- package/dist/canvas/canvasRenderer.js +89 -0
- package/dist/canvas/canvasRenderer.js.map +1 -0
- package/dist/canvas/colorOverrides.js +16 -0
- package/dist/canvas/colorOverrides.js.map +1 -0
- package/dist/canvas/defaultDrawOne.js +43 -0
- package/dist/canvas/defaultDrawOne.js.map +1 -0
- package/dist/canvas/deps/areaSelect.js +19 -0
- package/dist/canvas/deps/areaSelect.js.map +1 -0
- package/dist/canvas/deps/debug.js +9 -0
- package/dist/canvas/deps/debug.js.map +1 -0
- package/dist/canvas/deps/dispatcher.js +11 -0
- package/dist/canvas/deps/dispatcher.js.map +1 -0
- package/dist/canvas/deps/editAnchors.js +101 -0
- package/dist/canvas/deps/editAnchors.js.map +1 -0
- package/dist/canvas/deps/geometryProjection.js +11 -0
- package/dist/canvas/deps/geometryProjection.js.map +1 -0
- package/dist/canvas/deps/hitTestArea.js +51 -0
- package/dist/canvas/deps/hitTestArea.js.map +1 -0
- package/dist/canvas/deps/ingestion.js +31 -0
- package/dist/canvas/deps/ingestion.js.map +1 -0
- package/dist/canvas/deps/insert.js +116 -0
- package/dist/canvas/deps/insert.js.map +1 -0
- package/dist/canvas/deps/lassoSelect.js +20 -0
- package/dist/canvas/deps/lassoSelect.js.map +1 -0
- package/dist/canvas/deps/layout.js +34 -0
- package/dist/canvas/deps/layout.js.map +1 -0
- package/dist/canvas/deps/nodeAtPoint.js +19 -0
- package/dist/canvas/deps/nodeAtPoint.js.map +1 -0
- package/dist/canvas/deps/poseComposition.js +11 -0
- package/dist/canvas/deps/poseComposition.js.map +1 -0
- package/dist/canvas/deps/poseDescriptor.js +12 -0
- package/dist/canvas/deps/poseDescriptor.js.map +1 -0
- package/dist/canvas/deps/resizePolicy.js +35 -0
- package/dist/canvas/deps/resizePolicy.js.map +1 -0
- package/dist/canvas/deps/slice.js +99 -0
- package/dist/canvas/deps/slice.js.map +1 -0
- package/dist/canvas/deps/snap.js +11 -0
- package/dist/canvas/deps/snap.js.map +1 -0
- package/dist/canvas/deps/textEdit.js +21 -0
- package/dist/canvas/deps/textEdit.js.map +1 -0
- package/dist/canvas/deps/view.js +43 -0
- package/dist/canvas/deps/view.js.map +1 -0
- package/dist/canvas/derivedPath.js +47 -0
- package/dist/canvas/derivedPath.js.map +1 -0
- package/dist/canvas/drawEnvelope.js +22 -0
- package/dist/canvas/drawEnvelope.js.map +1 -0
- package/dist/canvas/getNodeAtPoint.js +18 -0
- package/dist/canvas/getNodeAtPoint.js.map +1 -0
- package/dist/canvas/hostAnchor.js +29 -0
- package/dist/canvas/hostAnchor.js.map +1 -0
- package/dist/canvas/hud.module.js +18 -0
- package/dist/canvas/hud.module.js.map +1 -0
- package/dist/canvas/insertPreviewExtent.js +103 -0
- package/dist/canvas/insertPreviewExtent.js.map +1 -0
- package/dist/canvas/kitRequirements.js +177 -0
- package/dist/canvas/kitRequirements.js.map +1 -0
- package/dist/canvas/layerOrder.js +66 -0
- package/dist/canvas/layerOrder.js.map +1 -0
- package/dist/canvas/layerSlots.js +14 -0
- package/dist/canvas/layerSlots.js.map +1 -0
- package/dist/canvas/minimapMath.js +80 -0
- package/dist/canvas/minimapMath.js.map +1 -0
- package/dist/canvas/mountedCanvases.js +20 -0
- package/dist/canvas/mountedCanvases.js.map +1 -0
- package/dist/canvas/overlayRoleStrokes.js +17 -0
- package/dist/canvas/overlayRoleStrokes.js.map +1 -0
- package/dist/canvas/paintCull.js +20 -0
- package/dist/canvas/paintCull.js.map +1 -0
- package/dist/canvas/pickWalk.js +158 -0
- package/dist/canvas/pickWalk.js.map +1 -0
- package/dist/canvas/planeClips.js +30 -0
- package/dist/canvas/planeClips.js.map +1 -0
- package/dist/canvas/poseRotation.js +35 -0
- package/dist/canvas/poseRotation.js.map +1 -0
- package/dist/canvas/rasterToPng.js +21 -0
- package/dist/canvas/rasterToPng.js.map +1 -0
- package/dist/canvas/renderDebugSnapshot.js +32 -0
- package/dist/canvas/renderDebugSnapshot.js.map +1 -0
- package/dist/canvas/renderNeeds.js +25 -0
- package/dist/canvas/renderNeeds.js.map +1 -0
- package/dist/canvas/renderSceneToPixels.js +143 -0
- package/dist/canvas/renderSceneToPixels.js.map +1 -0
- package/dist/canvas/sceneAdapter.js +270 -0
- package/dist/canvas/sceneAdapter.js.map +1 -0
- package/dist/canvas/sceneLayerPaint.js +37 -0
- package/dist/canvas/sceneLayerPaint.js.map +1 -0
- package/dist/canvas/sceneSlotWiring.js +20 -0
- package/dist/canvas/sceneSlotWiring.js.map +1 -0
- package/dist/canvas/sceneViewRender.js +72 -0
- package/dist/canvas/sceneViewRender.js.map +1 -0
- package/dist/canvas/slopsDebugLayer.js +61 -0
- package/dist/canvas/slopsDebugLayer.js.map +1 -0
- package/dist/canvas/surfaceContribution.js +15 -0
- package/dist/canvas/surfaceContribution.js.map +1 -0
- package/dist/canvas/toolPreview.js +39 -0
- package/dist/canvas/toolPreview.js.map +1 -0
- package/dist/canvas/useCanvasRenderer.js +11 -0
- package/dist/canvas/useCanvasRenderer.js.map +1 -0
- package/dist/canvas/useFrameLoop.js +60 -0
- package/dist/canvas/useFrameLoop.js.map +1 -0
- package/dist/canvas/useHostAnchor.js +71 -0
- package/dist/canvas/useHostAnchor.js.map +1 -0
- package/dist/canvas/useLateContentRedraw.js +21 -0
- package/dist/canvas/useLateContentRedraw.js.map +1 -0
- package/dist/canvas/useRedrawOn.js +21 -0
- package/dist/canvas/useRedrawOn.js.map +1 -0
- package/dist/canvas/useViewHelpers.js +120 -0
- package/dist/canvas/useViewHelpers.js.map +1 -0
- package/dist/canvas/viewInputs.js +17 -0
- package/dist/canvas/viewInputs.js.map +1 -0
- package/dist/canvas/viewRegistry.js +61 -0
- package/dist/canvas/viewRegistry.js.map +1 -0
- package/dist/canvas/wrapNodeOutput.js +14 -0
- package/dist/canvas/wrapNodeOutput.js.map +1 -0
- package/dist/clipboard.d.ts +10 -5
- package/dist/clipboard.js +3 -5
- package/dist/clone.d.ts +3 -3
- package/dist/clone.js +2 -5
- package/dist/core/adapters/arrayAdapter.js +85 -0
- package/dist/core/adapters/arrayAdapter.js.map +1 -0
- package/dist/core/adapters/useArrayAdapter.js +13 -0
- package/dist/core/adapters/useArrayAdapter.js.map +1 -0
- package/dist/core/applyOps.js +12 -0
- package/dist/core/applyOps.js.map +1 -0
- package/dist/core/device/index.js +4 -0
- package/dist/core/device/targets.js +17 -0
- package/dist/core/device/targets.js.map +1 -0
- package/dist/core/device/useDeviceProfile.js +75 -0
- package/dist/core/device/useDeviceProfile.js.map +1 -0
- package/dist/core/fillInPoseFrame.js +102 -0
- package/dist/core/fillInPoseFrame.js.map +1 -0
- package/dist/core/geometry/poseDescriptor.js +93 -0
- package/dist/core/geometry/poseDescriptor.js.map +1 -0
- package/dist/core/geometry/poseRotation.js +58 -0
- package/dist/core/geometry/poseRotation.js.map +1 -0
- package/dist/core/geometry/regionHit.js +102 -0
- package/dist/core/geometry/regionHit.js.map +1 -0
- package/dist/core/geometry/unionBounds.js +60 -0
- package/dist/core/geometry/unionBounds.js.map +1 -0
- package/dist/core/gradient.js +136 -0
- package/dist/core/gradient.js.map +1 -0
- package/dist/core/isPlainObject.js +11 -0
- package/dist/core/isPlainObject.js.map +1 -0
- package/dist/core/layers/render.js +150 -0
- package/dist/core/layers/render.js.map +1 -0
- package/dist/core/markerInset.js +24 -0
- package/dist/core/markerInset.js.map +1 -0
- package/dist/core/mixed.js +6 -0
- package/dist/core/mixed.js.map +1 -0
- package/dist/core/ops/arrange.js +31 -0
- package/dist/core/ops/arrange.js.map +1 -0
- package/dist/core/ops/create.js +32 -0
- package/dist/core/ops/create.js.map +1 -0
- package/dist/core/ops/createHistory.js +20 -0
- package/dist/core/ops/createHistory.js.map +1 -0
- package/dist/core/ops/delete.js +89 -0
- package/dist/core/ops/delete.js.map +1 -0
- package/dist/core/ops/registry.js +17 -0
- package/dist/core/ops/registry.js.map +1 -0
- package/dist/core/ops/reorder/algorithms.js +55 -0
- package/dist/core/ops/reorder/algorithms.js.map +1 -0
- package/dist/core/ops/reorder/index.js +140 -0
- package/dist/core/ops/reorder/index.js.map +1 -0
- package/dist/core/ops/reparent.js +52 -0
- package/dist/core/ops/reparent.js.map +1 -0
- package/dist/core/ops/select.js +34 -0
- package/dist/core/ops/select.js.map +1 -0
- package/dist/core/ops/setData.js +34 -0
- package/dist/core/ops/setData.js.map +1 -0
- package/dist/core/ops/setLayer.js +34 -0
- package/dist/core/ops/setLayer.js.map +1 -0
- package/dist/core/ops/setLayout.js +31 -0
- package/dist/core/ops/setLayout.js.map +1 -0
- package/dist/core/ops/setPath.js +57 -0
- package/dist/core/ops/setPath.js.map +1 -0
- package/dist/core/ops/setText.js +34 -0
- package/dist/core/ops/setText.js.map +1 -0
- package/dist/core/ops/slot.js +37 -0
- package/dist/core/ops/slot.js.map +1 -0
- package/dist/core/ops/transform.js +42 -0
- package/dist/core/ops/transform.js.map +1 -0
- package/dist/core/paintKinds.js +156 -0
- package/dist/core/paintKinds.js.map +1 -0
- package/dist/core/scene/NodeProperties.js +20 -0
- package/dist/core/scene/NodeProperties.js.map +1 -0
- package/dist/core/scene/NodeRouting.js +24 -0
- package/dist/core/scene/NodeRouting.js.map +1 -0
- package/dist/core/scene/arrivals.js +12 -0
- package/dist/core/scene/arrivals.js.map +1 -0
- package/dist/core/scene/composeFrame.js +29 -0
- package/dist/core/scene/composeFrame.js.map +1 -0
- package/dist/core/scene/depMemo.js +18 -0
- package/dist/core/scene/depMemo.js.map +1 -0
- package/dist/core/scene/dependents.js +66 -0
- package/dist/core/scene/dependents.js.map +1 -0
- package/dist/core/scene/derivedPath.js +31 -0
- package/dist/core/scene/derivedPath.js.map +1 -0
- package/dist/core/scene/effectivePose.js +78 -0
- package/dist/core/scene/effectivePose.js.map +1 -0
- package/dist/core/scene/kitRegistry.js +33 -0
- package/dist/core/scene/kitRegistry.js.map +1 -0
- package/dist/core/scene/layoutPass.js +96 -0
- package/dist/core/scene/layoutPass.js.map +1 -0
- package/dist/core/scene/nodeFnFields.js +83 -0
- package/dist/core/scene/nodeFnFields.js.map +1 -0
- package/dist/core/scene/nodeMemo.js +28 -0
- package/dist/core/scene/nodeMemo.js.map +1 -0
- package/dist/core/scene/poseFeed.js +87 -0
- package/dist/core/scene/poseFeed.js.map +1 -0
- package/dist/core/scene/poseOverrides.js +52 -0
- package/dist/core/scene/poseOverrides.js.map +1 -0
- package/dist/core/scene/poseSnapshot.js +54 -0
- package/dist/core/scene/poseSnapshot.js.map +1 -0
- package/dist/core/scene/scene.js +1271 -0
- package/dist/core/scene/scene.js.map +1 -0
- package/dist/core/scene/types.js +6 -0
- package/dist/core/scene/types.js.map +1 -0
- package/dist/core/scene/useScene.js +32 -0
- package/dist/core/scene/useScene.js.map +1 -0
- package/dist/core/selection/chromeState.js +31 -0
- package/dist/core/selection/chromeState.js.map +1 -0
- package/dist/core/selection/selectionTarget.js +6 -0
- package/dist/core/selection/selectionTarget.js.map +1 -0
- package/dist/core/selection/useSelection.js +71 -0
- package/dist/core/selection/useSelection.js.map +1 -0
- package/dist/core/shapeKinds.js +54 -0
- package/dist/core/shapeKinds.js.map +1 -0
- package/dist/core/strokeMarkerShapes.js +139 -0
- package/dist/core/strokeMarkerShapes.js.map +1 -0
- package/dist/core/strokeMarkers.js +28 -0
- package/dist/core/strokeMarkers.js.map +1 -0
- package/dist/core/stylus/stylus.js +39 -0
- package/dist/core/stylus/stylus.js.map +1 -0
- package/dist/core/stylus/usePointerStylus.js +51 -0
- package/dist/core/stylus/usePointerStylus.js.map +1 -0
- package/dist/core/usePaintKinds.js +17 -0
- package/dist/core/usePaintKinds.js.map +1 -0
- package/dist/core/viewport/clampView.js +24 -0
- package/dist/core/viewport/clampView.js.map +1 -0
- package/dist/core/viewport/clientToWorld.js +8 -0
- package/dist/core/viewport/clientToWorld.js.map +1 -0
- package/dist/core/viewport/createVelocityTracker.js +39 -0
- package/dist/core/viewport/createVelocityTracker.js.map +1 -0
- package/dist/core/viewport/fitToBounds.js +18 -0
- package/dist/core/viewport/fitToBounds.js.map +1 -0
- package/dist/core/viewport/fitViewToBounds.js +36 -0
- package/dist/core/viewport/fitViewToBounds.js.map +1 -0
- package/dist/core/viewport/interpolateView.js +34 -0
- package/dist/core/viewport/interpolateView.js.map +1 -0
- package/dist/core/viewport/meanScale.js +8 -0
- package/dist/core/viewport/meanScale.js.map +1 -0
- package/dist/core/viewport/parallax.js +111 -0
- package/dist/core/viewport/parallax.js.map +1 -0
- package/dist/core/viewport/pxExtent.js +42 -0
- package/dist/core/viewport/pxExtent.js.map +1 -0
- package/dist/core/viewport/sceneNodeClientRect.js +18 -0
- package/dist/core/viewport/sceneNodeClientRect.js.map +1 -0
- package/dist/core/viewport/screenSlop.js +27 -0
- package/dist/core/viewport/screenSlop.js.map +1 -0
- package/dist/core/viewport/useAutoCenter.js +32 -0
- package/dist/core/viewport/useAutoCenter.js.map +1 -0
- package/dist/core/viewport/useCanvasSize.js +29 -0
- package/dist/core/viewport/useCanvasSize.js.map +1 -0
- package/dist/core/viewport/useDecayLoop.js +63 -0
- package/dist/core/viewport/useDecayLoop.js.map +1 -0
- package/dist/core/viewport/useVelocityTracker.js +10 -0
- package/dist/core/viewport/useVelocityTracker.js.map +1 -0
- package/dist/core/viewport/useViewAnimation.js +63 -0
- package/dist/core/viewport/useViewAnimation.js.map +1 -0
- package/dist/core/viewport/view.js +37 -0
- package/dist/core/viewport/view.js.map +1 -0
- package/dist/core/viewport/viewTransform.js +11 -0
- package/dist/core/viewport/viewTransform.js.map +1 -0
- package/dist/core/viewport/viewportWorldRect.js +13 -0
- package/dist/core/viewport/viewportWorldRect.js.map +1 -0
- package/dist/core/viewport/wheelHandler.js +30 -0
- package/dist/core/viewport/wheelHandler.js.map +1 -0
- package/dist/core/viewport/zoomAt.js +22 -0
- package/dist/core/viewport/zoomAt.js.map +1 -0
- package/dist/core/viewport/zoomBounds.js +20 -0
- package/dist/core/viewport/zoomBounds.js.map +1 -0
- package/dist/{pointSnapToGrid-Dp2IxLGb.d.ts → cornerHandles-BCrDp_mH.d.ts} +3 -13
- package/dist/debug/createDebugOverlayLayer.js +358 -0
- package/dist/debug/createDebugOverlayLayer.js.map +1 -0
- package/dist/debug/createDebugSink.js +83 -0
- package/dist/debug/createDebugSink.js.map +1 -0
- package/dist/debug/defaultTheme.js +31 -0
- package/dist/debug/defaultTheme.js.map +1 -0
- package/dist/debug/flag.js +41 -0
- package/dist/debug/flag.js.map +1 -0
- package/dist/debug/frameStats.js +16 -0
- package/dist/debug/frameStats.js.map +1 -0
- package/dist/debug/parseDebugFlags.js +32 -0
- package/dist/debug/parseDebugFlags.js.map +1 -0
- package/dist/features/chrome-caps/buildChromeCtx.js +16 -0
- package/dist/features/chrome-caps/buildChromeCtx.js.map +1 -0
- package/dist/features/chrome-caps/conditions.js +36 -0
- package/dist/features/chrome-caps/conditions.js.map +1 -0
- package/dist/features/chrome-caps/defaults.js +26 -0
- package/dist/features/chrome-caps/defaults.js.map +1 -0
- package/dist/features/chrome-caps/index.js +7 -0
- package/dist/features/chrome-caps/resolve.js +23 -0
- package/dist/features/chrome-caps/resolve.js.map +1 -0
- package/dist/features/chrome-caps/useHoverTracking.js +27 -0
- package/dist/features/chrome-caps/useHoverTracking.js.map +1 -0
- package/dist/features/cursor/paintedCursorLayer.js +60 -0
- package/dist/features/cursor/paintedCursorLayer.js.map +1 -0
- package/dist/features/focus/gateLayer.js +14 -0
- package/dist/features/focus/gateLayer.js.map +1 -0
- package/dist/features/focus/useCanvasFocus.js +29 -0
- package/dist/features/focus/useCanvasFocus.js.map +1 -0
- package/dist/features/groups/children.js +23 -0
- package/dist/features/groups/children.js.map +1 -0
- package/dist/features/groups/composePose.js +67 -0
- package/dist/features/groups/composePose.js.map +1 -0
- package/dist/features/groups/nestedHit.js +40 -0
- package/dist/features/groups/nestedHit.js.map +1 -0
- package/dist/features/groups/unionOfChildren.js +15 -0
- package/dist/features/groups/unionOfChildren.js.map +1 -0
- package/dist/features/images/imageCache.js +94 -0
- package/dist/features/images/imageCache.js.map +1 -0
- package/dist/features/ingestion/contentHandlers.js +37 -0
- package/dist/features/ingestion/contentHandlers.js.map +1 -0
- package/dist/features/ingestion/imageHandler.js +45 -0
- package/dist/features/ingestion/imageHandler.js.map +1 -0
- package/dist/features/ingestion/index.js +8 -0
- package/dist/features/ingestion/openFilePicker.js +15 -0
- package/dist/features/ingestion/openFilePicker.js.map +1 -0
- package/dist/features/ingestion/registerKitHandlers.js +26 -0
- package/dist/features/ingestion/registerKitHandlers.js.map +1 -0
- package/dist/features/ingestion/svgHandler.js +58 -0
- package/dist/features/ingestion/svgHandler.js.map +1 -0
- package/dist/features/ingestion/weaselJsonHandler.js +39 -0
- package/dist/features/ingestion/weaselJsonHandler.js.map +1 -0
- package/dist/features/longPress/longPressFeedback.js +96 -0
- package/dist/features/longPress/longPressFeedback.js.map +1 -0
- package/dist/features/meshPaint/bake.js +79 -0
- package/dist/features/meshPaint/bake.js.map +1 -0
- package/dist/features/meshPaint/bakeCache.js +59 -0
- package/dist/features/meshPaint/bakeCache.js.map +1 -0
- package/dist/features/meshPaint/handles.js +86 -0
- package/dist/features/meshPaint/handles.js.map +1 -0
- package/dist/features/meshPaint/lazyKind.js +1298 -0
- package/dist/features/meshPaint/lazyKind.js.map +1 -0
- package/dist/features/meshPaint/meshPaint.js +236 -0
- package/dist/features/meshPaint/meshPaint.js.map +1 -0
- package/dist/features/meshPaint/meshShader.js +6 -0
- package/dist/features/meshPaint/meshShader.js.map +1 -0
- package/dist/features/meshPaint/register.js +7 -0
- package/dist/features/meshPaint/register.js.map +1 -0
- package/dist/features/meshPaint/surface.js +110 -0
- package/dist/features/meshPaint/surface.js.map +1 -0
- package/dist/features/minimap/actions.js +53 -0
- package/dist/features/minimap/actions.js.map +1 -0
- package/dist/features/minimap/createMinimapContribution.js +96 -0
- package/dist/features/minimap/createMinimapContribution.js.map +1 -0
- package/dist/features/minimap/layers.js +103 -0
- package/dist/features/minimap/layers.js.map +1 -0
- package/dist/features/modes/modeLayers.js +113 -0
- package/dist/features/modes/modeLayers.js.map +1 -0
- package/dist/features/overlays/useNodeOverlayFrame.js +103 -0
- package/dist/features/overlays/useNodeOverlayFrame.js.map +1 -0
- package/dist/features/parallax/createParallaxLayer.js +26 -0
- package/dist/features/parallax/createParallaxLayer.js.map +1 -0
- package/dist/features/parallax/createParallaxPlane.js +26 -0
- package/dist/features/parallax/createParallaxPlane.js.map +1 -0
- package/dist/features/paths/anchorEdits.js +156 -0
- package/dist/features/paths/anchorEdits.js.map +1 -0
- package/dist/features/paths/anchors.js +154 -0
- package/dist/features/paths/anchors.js.map +1 -0
- package/dist/features/paths/booleans.js +2 -0
- package/dist/features/paths/index.js +15 -0
- package/dist/features/paths/markerCommands.js +116 -0
- package/dist/features/paths/markerCommands.js.map +1 -0
- package/dist/features/paths/markerSites.js +59 -0
- package/dist/features/paths/markerSites.js.map +1 -0
- package/dist/features/paths/markers.js +95 -0
- package/dist/features/paths/markers.js.map +1 -0
- package/dist/features/paths/nearestAnchor.js +36 -0
- package/dist/features/paths/nearestAnchor.js.map +1 -0
- package/dist/features/paths/originProjection.js +16 -0
- package/dist/features/paths/originProjection.js.map +1 -0
- package/dist/features/paths/pathEditingOverlayLayer.js +137 -0
- package/dist/features/paths/pathEditingOverlayLayer.js.map +1 -0
- package/dist/features/paths/pathInWorld.js +41 -0
- package/dist/features/paths/pathInWorld.js.map +1 -0
- package/dist/features/paths/pathLayer.js +44 -0
- package/dist/features/paths/pathLayer.js.map +1 -0
- package/dist/features/paths/penPreviewLayer.js +220 -0
- package/dist/features/paths/penPreviewLayer.js.map +1 -0
- package/dist/features/paths/poseDescriptor.js +39 -0
- package/dist/features/paths/poseDescriptor.js.map +1 -0
- package/dist/features/paths/tessellate/stroke.js +230 -0
- package/dist/features/paths/tessellate/stroke.js.map +1 -0
- package/dist/features/patterns/index.js +23 -0
- package/dist/features/patterns/index.js.map +1 -0
- package/dist/features/patterns/patterns-builtin.js +38 -0
- package/dist/features/patterns/patterns-builtin.js.map +1 -0
- package/dist/features/patterns/resolveSpec.js +57 -0
- package/dist/features/patterns/resolveSpec.js.map +1 -0
- package/dist/features/patterns/tileGeometry.js +158 -0
- package/dist/features/patterns/tileGeometry.js.map +1 -0
- package/dist/features/pointer/PointerContext.js +45 -0
- package/dist/features/pointer/PointerContext.js.map +1 -0
- package/dist/features/poseRun/usePoseRun.js +70 -0
- package/dist/features/poseRun/usePoseRun.js.map +1 -0
- package/dist/features/selection/SelectionContext.js +46 -0
- package/dist/features/selection/SelectionContext.js.map +1 -0
- package/dist/features/selection/overlay.js +442 -0
- package/dist/features/selection/overlay.js.map +1 -0
- package/dist/features/simulation/createSimulation.js +61 -0
- package/dist/features/simulation/createSimulation.js.map +1 -0
- package/dist/features/simulation/types.js +6 -0
- package/dist/features/simulation/types.js.map +1 -0
- package/dist/features/simulation/useSimulation.js +74 -0
- package/dist/features/simulation/useSimulation.js.map +1 -0
- package/dist/features/text/domRuns.js +258 -0
- package/dist/features/text/domRuns.js.map +1 -0
- package/dist/features/text/fitTextPose.js +38 -0
- package/dist/features/text/fitTextPose.js.map +1 -0
- package/dist/features/text/hitTest.js +45 -0
- package/dist/features/text/hitTest.js.map +1 -0
- package/dist/features/text/renderLabel.js +14 -0
- package/dist/features/text/renderLabel.js.map +1 -0
- package/dist/features/text/runs/effectiveRangeStyle.js +66 -0
- package/dist/features/text/runs/effectiveRangeStyle.js.map +1 -0
- package/dist/features/text/runs/flagRange.js +53 -0
- package/dist/features/text/runs/flagRange.js.map +1 -0
- package/dist/features/text/runs/rangeStyle.js +135 -0
- package/dist/features/text/runs/rangeStyle.js.map +1 -0
- package/dist/features/text/textCommand.js +59 -0
- package/dist/features/text/textCommand.js.map +1 -0
- package/dist/features/text/textLayer.js +35 -0
- package/dist/features/text/textLayer.js.map +1 -0
- package/dist/features/text/textToPath.js +181 -0
- package/dist/features/text/textToPath.js.map +1 -0
- package/dist/features/text/useSceneTextEdit.js +138 -0
- package/dist/features/text/useSceneTextEdit.js.map +1 -0
- package/dist/features/text/useTextEdit.js +465 -0
- package/dist/features/text/useTextEdit.js.map +1 -0
- package/dist/features/tiling/createTiledLayer.js +63 -0
- package/dist/features/tiling/createTiledLayer.js.map +1 -0
- package/dist/features/tiling/tiledProject.js +14 -0
- package/dist/features/tiling/tiledProject.js.map +1 -0
- package/dist/features/viewports/viewResolver.js +59 -0
- package/dist/features/viewports/viewResolver.js.map +1 -0
- package/dist/features/viewports/viewportLayer.js +58 -0
- package/dist/features/viewports/viewportLayer.js.map +1 -0
- package/dist/icons/ArrowIcon.js +23 -0
- package/dist/icons/ArrowIcon.js.map +1 -0
- package/dist/icons/EllipseIcon.js +21 -0
- package/dist/icons/EllipseIcon.js.map +1 -0
- package/dist/icons/EyedropperIcon.js +49 -0
- package/dist/icons/EyedropperIcon.js.map +1 -0
- package/dist/icons/HandIcon.js +59 -0
- package/dist/icons/HandIcon.js.map +1 -0
- package/dist/icons/ImageIcon.js +34 -0
- package/dist/icons/ImageIcon.js.map +1 -0
- package/dist/icons/LassoIcon.js +22 -0
- package/dist/icons/LassoIcon.js.map +1 -0
- package/dist/icons/LineIcon.js +22 -0
- package/dist/icons/LineIcon.js.map +1 -0
- package/dist/icons/PenIcon.js +36 -0
- package/dist/icons/PenIcon.js.map +1 -0
- package/dist/icons/PencilIcon.js +25 -0
- package/dist/icons/PencilIcon.js.map +1 -0
- package/dist/icons/PolygonIcon.js +19 -0
- package/dist/icons/PolygonIcon.js.map +1 -0
- package/dist/icons/RectIcon.js +37 -0
- package/dist/icons/RectIcon.js.map +1 -0
- package/dist/icons/SelectIcon.js +20 -0
- package/dist/icons/SelectIcon.js.map +1 -0
- package/dist/icons/StarIcon.js +19 -0
- package/dist/icons/StarIcon.js.map +1 -0
- package/dist/icons/TextIcon.js +19 -0
- package/dist/icons/TextIcon.js.map +1 -0
- package/dist/icons/UnknownIcon.js +33 -0
- package/dist/icons/UnknownIcon.js.map +1 -0
- package/dist/icons/_base.js +12 -0
- package/dist/icons/_base.js.map +1 -0
- package/dist/index.d.ts +1960 -1891
- package/dist/index.js +312 -13
- package/dist/input/keyState.js +76 -0
- package/dist/input/keyState.js.map +1 -0
- package/dist/input/useKeyState.js +22 -0
- package/dist/input/useKeyState.js.map +1 -0
- package/dist/interactions/actions/actionShortcuts.js +32 -0
- package/dist/interactions/actions/actionShortcuts.js.map +1 -0
- package/dist/interactions/actions/align/align.js +81 -0
- package/dist/interactions/actions/align/align.js.map +1 -0
- package/dist/interactions/actions/booleans/booleans.js +120 -0
- package/dist/interactions/actions/booleans/booleans.js.map +1 -0
- package/dist/interactions/actions/booleans/useBooleans.js +20 -0
- package/dist/interactions/actions/booleans/useBooleans.js.map +1 -0
- package/dist/interactions/actions/booleans/useBooleansAdapter.js +9 -0
- package/dist/interactions/actions/booleans/useBooleansAdapter.js.map +1 -0
- package/dist/interactions/actions/clipboard/clipboardOps.js +94 -0
- package/dist/interactions/actions/clipboard/clipboardOps.js.map +1 -0
- package/dist/interactions/actions/clipboard/materializePaste.js +25 -0
- package/dist/interactions/actions/clipboard/materializePaste.js.map +1 -0
- package/dist/interactions/actions/clipboard/wireFormat.js +43 -0
- package/dist/interactions/actions/clipboard/wireFormat.js.map +1 -0
- package/dist/interactions/actions/clone/behaviors/cloneByAltDrag.js +26 -0
- package/dist/interactions/actions/clone/behaviors/cloneByAltDrag.js.map +1 -0
- package/dist/interactions/actions/defaultCommitAdapter.js +42 -0
- package/dist/interactions/actions/defaultCommitAdapter.js.map +1 -0
- package/dist/interactions/actions/defaults/align.js +71 -0
- package/dist/interactions/actions/defaults/align.js.map +1 -0
- package/dist/interactions/actions/defaults/anchorEditing.js +235 -0
- package/dist/interactions/actions/defaults/anchorEditing.js.map +1 -0
- package/dist/interactions/actions/defaults/areaSelect.js +75 -0
- package/dist/interactions/actions/defaults/areaSelect.js.map +1 -0
- package/dist/interactions/actions/defaults/booleans.js +52 -0
- package/dist/interactions/actions/defaults/booleans.js.map +1 -0
- package/dist/interactions/actions/defaults/cancelGesture.js +24 -0
- package/dist/interactions/actions/defaults/cancelGesture.js.map +1 -0
- package/dist/interactions/actions/defaults/clearSelection.js +19 -0
- package/dist/interactions/actions/defaults/clearSelection.js.map +1 -0
- package/dist/interactions/actions/defaults/clipboard.js +78 -0
- package/dist/interactions/actions/defaults/clipboard.js.map +1 -0
- package/dist/interactions/actions/defaults/clone.js +107 -0
- package/dist/interactions/actions/defaults/clone.js.map +1 -0
- package/dist/interactions/actions/defaults/createOutlines.js +47 -0
- package/dist/interactions/actions/defaults/createOutlines.js.map +1 -0
- package/dist/interactions/actions/defaults/createPaintAction.js +85 -0
- package/dist/interactions/actions/defaults/createPaintAction.js.map +1 -0
- package/dist/interactions/actions/defaults/delete.js +61 -0
- package/dist/interactions/actions/defaults/delete.js.map +1 -0
- package/dist/interactions/actions/defaults/distribute.js +66 -0
- package/dist/interactions/actions/defaults/distribute.js.map +1 -0
- package/dist/interactions/actions/defaults/duplicate.js +83 -0
- package/dist/interactions/actions/defaults/duplicate.js.map +1 -0
- package/dist/interactions/actions/defaults/editAnchors.js +100 -0
- package/dist/interactions/actions/defaults/editAnchors.js.map +1 -0
- package/dist/interactions/actions/defaults/enterPathEdit.js +29 -0
- package/dist/interactions/actions/defaults/enterPathEdit.js.map +1 -0
- package/dist/interactions/actions/defaults/enterTextEdit.js +20 -0
- package/dist/interactions/actions/defaults/enterTextEdit.js.map +1 -0
- package/dist/interactions/actions/defaults/escape.js +26 -0
- package/dist/interactions/actions/defaults/escape.js.map +1 -0
- package/dist/interactions/actions/defaults/exitPathEdit.js +22 -0
- package/dist/interactions/actions/defaults/exitPathEdit.js.map +1 -0
- package/dist/interactions/actions/defaults/flip.js +119 -0
- package/dist/interactions/actions/defaults/flip.js.map +1 -0
- package/dist/interactions/actions/defaults/freshNodeId.js +10 -0
- package/dist/interactions/actions/defaults/freshNodeId.js.map +1 -0
- package/dist/interactions/actions/defaults/group.js +131 -0
- package/dist/interactions/actions/defaults/group.js.map +1 -0
- package/dist/interactions/actions/defaults/icons/actionGlyphIcons.js +40 -0
- package/dist/interactions/actions/defaults/icons/actionGlyphIcons.js.map +1 -0
- package/dist/interactions/actions/defaults/icons/actionGlyphs.js +10 -0
- package/dist/interactions/actions/defaults/icons/actionGlyphs.js.map +1 -0
- package/dist/interactions/actions/defaults/icons/alignIcons.js +173 -0
- package/dist/interactions/actions/defaults/icons/alignIcons.js.map +1 -0
- package/dist/interactions/actions/defaults/icons/booleanIcons.js +171 -0
- package/dist/interactions/actions/defaults/icons/booleanIcons.js.map +1 -0
- package/dist/interactions/actions/defaults/icons/distributeIcons.js +63 -0
- package/dist/interactions/actions/defaults/icons/distributeIcons.js.map +1 -0
- package/dist/interactions/actions/defaults/icons/editIcons.js +280 -0
- package/dist/interactions/actions/defaults/icons/editIcons.js.map +1 -0
- package/dist/interactions/actions/defaults/icons/outlineIcons.js +53 -0
- package/dist/interactions/actions/defaults/icons/outlineIcons.js.map +1 -0
- package/dist/interactions/actions/defaults/ingest.js +58 -0
- package/dist/interactions/actions/defaults/ingest.js.map +1 -0
- package/dist/interactions/actions/defaults/insert.js +288 -0
- package/dist/interactions/actions/defaults/insert.js.map +1 -0
- package/dist/interactions/actions/defaults/insertPathAnchor.js +50 -0
- package/dist/interactions/actions/defaults/insertPathAnchor.js.map +1 -0
- package/dist/interactions/actions/defaults/lassoSelect.js +156 -0
- package/dist/interactions/actions/defaults/lassoSelect.js.map +1 -0
- package/dist/interactions/actions/defaults/move.js +760 -0
- package/dist/interactions/actions/defaults/move.js.map +1 -0
- package/dist/interactions/actions/defaults/nudge.js +110 -0
- package/dist/interactions/actions/defaults/nudge.js.map +1 -0
- package/dist/interactions/actions/defaults/pinchZoom.js +63 -0
- package/dist/interactions/actions/defaults/pinchZoom.js.map +1 -0
- package/dist/interactions/actions/defaults/reorder.js +143 -0
- package/dist/interactions/actions/defaults/reorder.js.map +1 -0
- package/dist/interactions/actions/defaults/requiresSelection.js +10 -0
- package/dist/interactions/actions/defaults/requiresSelection.js.map +1 -0
- package/dist/interactions/actions/defaults/resize.js +335 -0
- package/dist/interactions/actions/defaults/resize.js.map +1 -0
- package/dist/interactions/actions/defaults/rotate.js +184 -0
- package/dist/interactions/actions/defaults/rotate.js.map +1 -0
- package/dist/interactions/actions/defaults/selectAll.js +27 -0
- package/dist/interactions/actions/defaults/selectAll.js.map +1 -0
- package/dist/interactions/actions/defaults/setFill.js +27 -0
- package/dist/interactions/actions/defaults/setFill.js.map +1 -0
- package/dist/interactions/actions/defaults/setFillOpacity.js +15 -0
- package/dist/interactions/actions/defaults/setFillOpacity.js.map +1 -0
- package/dist/interactions/actions/defaults/setStroke.js +36 -0
- package/dist/interactions/actions/defaults/setStroke.js.map +1 -0
- package/dist/interactions/actions/defaults/setStrokeOpacity.js +21 -0
- package/dist/interactions/actions/defaults/setStrokeOpacity.js.map +1 -0
- package/dist/interactions/actions/defaults/slice.js +39 -0
- package/dist/interactions/actions/defaults/slice.js.map +1 -0
- package/dist/interactions/actions/defaults/sliceOps.js +60 -0
- package/dist/interactions/actions/defaults/sliceOps.js.map +1 -0
- package/dist/interactions/actions/defaults/toolActivate.js +35 -0
- package/dist/interactions/actions/defaults/toolActivate.js.map +1 -0
- package/dist/interactions/actions/defaults/toolResetToDefault.js +26 -0
- package/dist/interactions/actions/defaults/toolResetToDefault.js.map +1 -0
- package/dist/interactions/actions/defaults/undoRedo.js +51 -0
- package/dist/interactions/actions/defaults/undoRedo.js.map +1 -0
- package/dist/interactions/actions/defaults/viewportDragPan.js +88 -0
- package/dist/interactions/actions/defaults/viewportDragPan.js.map +1 -0
- package/dist/interactions/actions/defaults/viewportWheelPan.js +57 -0
- package/dist/interactions/actions/defaults/viewportWheelPan.js.map +1 -0
- package/dist/interactions/actions/defaults/viewportZoom.js +143 -0
- package/dist/interactions/actions/defaults/viewportZoom.js.map +1 -0
- package/dist/interactions/actions/distribute/distribute.js +42 -0
- package/dist/interactions/actions/distribute/distribute.js.map +1 -0
- package/dist/interactions/actions/distribute/plan.js +29 -0
- package/dist/interactions/actions/distribute/plan.js.map +1 -0
- package/dist/interactions/actions/edit-anchors/geometry.js +61 -0
- package/dist/interactions/actions/edit-anchors/geometry.js.map +1 -0
- package/dist/interactions/actions/edit-anchors/handles.js +43 -0
- package/dist/interactions/actions/edit-anchors/handles.js.map +1 -0
- package/dist/interactions/actions/flip/helpers.js +35 -0
- package/dist/interactions/actions/flip/helpers.js.map +1 -0
- package/dist/interactions/actions/geometryProjection.js +18 -0
- package/dist/interactions/actions/geometryProjection.js.map +1 -0
- package/dist/interactions/actions/gestureLifecycle.js +44 -0
- package/dist/interactions/actions/gestureLifecycle.js.map +1 -0
- package/dist/interactions/actions/lasso-select/behaviors/selectFromLasso.js +39 -0
- package/dist/interactions/actions/lasso-select/behaviors/selectFromLasso.js.map +1 -0
- package/dist/interactions/actions/move/behaviors/snapBackOrDelete.js +36 -0
- package/dist/interactions/actions/move/behaviors/snapBackOrDelete.js.map +1 -0
- package/dist/interactions/actions/move/behaviors/snapToContainer.js +67 -0
- package/dist/interactions/actions/move/behaviors/snapToContainer.js.map +1 -0
- package/dist/interactions/actions/move/gestureAdapter.js +37 -0
- package/dist/interactions/actions/move/gestureAdapter.js.map +1 -0
- package/dist/interactions/actions/outlines/createOutlines.js +84 -0
- package/dist/interactions/actions/outlines/createOutlines.js.map +1 -0
- package/dist/interactions/actions/outlines/useCreateOutlinesAdapter.js +9 -0
- package/dist/interactions/actions/outlines/useCreateOutlinesAdapter.js.map +1 -0
- package/dist/interactions/actions/planeInput.js +181 -0
- package/dist/interactions/actions/planeInput.js.map +1 -0
- package/dist/interactions/actions/poseDescriptorDep.js +9 -0
- package/dist/interactions/actions/poseDescriptorDep.js.map +1 -0
- package/dist/interactions/actions/poseFrame.js +38 -0
- package/dist/interactions/actions/poseFrame.js.map +1 -0
- package/dist/interactions/actions/previewOverrides.js +25 -0
- package/dist/interactions/actions/previewOverrides.js.map +1 -0
- package/dist/interactions/actions/resize/autoPoseDescriptor.js +31 -0
- package/dist/interactions/actions/resize/autoPoseDescriptor.js.map +1 -0
- package/dist/interactions/actions/resize/behaviors/clampMinSize.js +18 -0
- package/dist/interactions/actions/resize/behaviors/clampMinSize.js.map +1 -0
- package/dist/interactions/actions/resize/behaviors/index.js +8 -0
- package/dist/interactions/actions/resize/behaviors/index.js.map +1 -0
- package/dist/interactions/actions/resize/behaviors/lockAspect.js +24 -0
- package/dist/interactions/actions/resize/behaviors/lockAspect.js.map +1 -0
- package/dist/interactions/actions/resize/cornerHandles.js +72 -0
- package/dist/interactions/actions/resize/cornerHandles.js.map +1 -0
- package/dist/interactions/actions/resolveOverlays.js +60 -0
- package/dist/interactions/actions/resolveOverlays.js.map +1 -0
- package/dist/interactions/actions/resolvePreviews.js +61 -0
- package/dist/interactions/actions/resolvePreviews.js.map +1 -0
- package/dist/interactions/actions/rotate/geometry.js +46 -0
- package/dist/interactions/actions/rotate/geometry.js.map +1 -0
- package/dist/interactions/actions/rotate/handle.js +27 -0
- package/dist/interactions/actions/rotate/handle.js.map +1 -0
- package/dist/interactions/actions/spatialReference.js +42 -0
- package/dist/interactions/actions/spatialReference.js.map +1 -0
- package/dist/interactions/actions/useStandardActions.js +142 -0
- package/dist/interactions/actions/useStandardActions.js.map +1 -0
- package/dist/interactions/gestures/dragGesture/dragGesture.js +111 -0
- package/dist/interactions/gestures/dragGesture/dragGesture.js.map +1 -0
- package/dist/interactions/gestures/dragRadial/dragRadial.js +117 -0
- package/dist/interactions/gestures/dragRadial/dragRadial.js.map +1 -0
- package/dist/interactions/gestures/dragRect/dragRect.js +164 -0
- package/dist/interactions/gestures/dragRect/dragRect.js.map +1 -0
- package/dist/interactions/gestures/handleDrag/handleDrag.js +46 -0
- package/dist/interactions/gestures/handleDrag/handleDrag.js.map +1 -0
- package/dist/interactions/gestures/pointerDrag/pointerDrag.js +118 -0
- package/dist/interactions/gestures/pointerDrag/pointerDrag.js.map +1 -0
- package/dist/interactions/gestures/shared/originProjection.js +42 -0
- package/dist/interactions/gestures/shared/originProjection.js.map +1 -0
- package/dist/interactions/gestures/shared/screenTolerance.js +21 -0
- package/dist/interactions/gestures/shared/screenTolerance.js.map +1 -0
- package/dist/interactions/gestures/shared/snap.js +24 -0
- package/dist/interactions/gestures/shared/snap.js.map +1 -0
- package/dist/interactions/gestures/thresholdDrag/thresholdDrag.js +30 -0
- package/dist/interactions/gestures/thresholdDrag/thresholdDrag.js.map +1 -0
- package/dist/layout/arrivals.js +36 -0
- package/dist/layout/arrivals.js.map +1 -0
- package/dist/{math-MCQcf_gc.d.ts → math-Drrw4ewZ.d.ts} +8 -116
- package/dist/math.d.ts +4 -5
- package/dist/math.js +6 -4
- package/dist/mesh.d.ts +268 -0
- package/dist/mesh.js +7 -0
- package/dist/move.d.ts +7 -49
- package/dist/move.js +3 -142
- package/dist/originProjection-DEklpDc_.d.ts +57 -0
- package/dist/patterns-builtin.js +3 -3
- package/dist/{poseDescriptor-rZa9W5hJ.d.ts → poseDescriptor-D-OH-tu5.d.ts} +0 -4
- package/dist/registerProgram-ateHDGjw.d.ts +193 -0
- package/dist/renderer/DrawCommand.js +6 -0
- package/dist/renderer/DrawCommand.js.map +1 -0
- package/dist/renderer/WeaselRenderer.js +328 -0
- package/dist/renderer/WeaselRenderer.js.map +1 -0
- package/dist/renderer/cache/GLImageCache.js +64 -0
- package/dist/renderer/cache/GLImageCache.js.map +1 -0
- package/dist/renderer/cache/GLMeshCache.js +102 -0
- package/dist/renderer/cache/GLMeshCache.js.map +1 -0
- package/dist/renderer/cache/GLTextureCache.js +51 -0
- package/dist/renderer/cache/GLTextureCache.js.map +1 -0
- package/dist/renderer/cache/GradientRampAtlas.js +82 -0
- package/dist/renderer/cache/GradientRampAtlas.js.map +1 -0
- package/dist/renderer/cache/cache.js +13 -0
- package/dist/renderer/cache/cache.js.map +1 -0
- package/dist/renderer/cache/markerCommandCache.js +59 -0
- package/dist/renderer/cache/markerCommandCache.js.map +1 -0
- package/dist/renderer/cache/outlineMeshCache.js +15 -0
- package/dist/renderer/cache/outlineMeshCache.js.map +1 -0
- package/dist/renderer/cache/outlineStrokeMeshCache.js +31 -0
- package/dist/renderer/cache/outlineStrokeMeshCache.js.map +1 -0
- package/dist/renderer/cache/strokeMeshCache.js +44 -0
- package/dist/renderer/cache/strokeMeshCache.js.map +1 -0
- package/dist/renderer/cullDrawCommands.js +89 -0
- package/dist/renderer/cullDrawCommands.js.map +1 -0
- package/dist/renderer/draw.js +1109 -0
- package/dist/renderer/draw.js.map +1 -0
- package/dist/renderer/drawBatch.js +168 -0
- package/dist/renderer/drawBatch.js.map +1 -0
- package/dist/renderer/effects/EffectTargets.js +45 -0
- package/dist/renderer/effects/EffectTargets.js.map +1 -0
- package/dist/renderer/effects/builtins.js +31 -0
- package/dist/renderer/effects/builtins.js.map +1 -0
- package/dist/renderer/effects/composite.js +9 -0
- package/dist/renderer/effects/composite.js.map +1 -0
- package/dist/renderer/effects/effectPrelude.js +10 -0
- package/dist/renderer/effects/effectPrelude.js.map +1 -0
- package/dist/renderer/effects/types.js +10 -0
- package/dist/renderer/effects/types.js.map +1 -0
- package/dist/renderer/index.js +19 -0
- package/dist/renderer/math/color.js +341 -0
- package/dist/renderer/math/color.js.map +1 -0
- package/dist/renderer/math/mat3.js +71 -0
- package/dist/renderer/math/mat3.js.map +1 -0
- package/dist/renderer/math/patternSpace.js +22 -0
- package/dist/renderer/math/patternSpace.js.map +1 -0
- package/dist/renderer/math/viewToMat3.js +19 -0
- package/dist/renderer/math/viewToMat3.js.map +1 -0
- package/dist/renderer/paintResources.js +18 -0
- package/dist/renderer/paintResources.js.map +1 -0
- package/dist/renderer/paintScratch.js +37 -0
- package/dist/renderer/paintScratch.js.map +1 -0
- package/dist/renderer/shaders/ShaderProgram.js +74 -0
- package/dist/renderer/shaders/ShaderProgram.js.map +1 -0
- package/dist/renderer/shaders/batchFill.js +118 -0
- package/dist/renderer/shaders/batchFill.js.map +1 -0
- package/dist/renderer/shaders/customPrelude.js +34 -0
- package/dist/renderer/shaders/customPrelude.js.map +1 -0
- package/dist/renderer/shaders/extractUniformNames.js +184 -0
- package/dist/renderer/shaders/extractUniformNames.js.map +1 -0
- package/dist/renderer/shaders/glyphPaint.js +61 -0
- package/dist/renderer/shaders/glyphPaint.js.map +1 -0
- package/dist/renderer/shaders/gradFill.js +30 -0
- package/dist/renderer/shaders/gradFill.js.map +1 -0
- package/dist/renderer/shaders/imageFill.js +14 -0
- package/dist/renderer/shaders/imageFill.js.map +1 -0
- package/dist/renderer/shaders/pathFill.js +13 -0
- package/dist/renderer/shaders/pathFill.js.map +1 -0
- package/dist/renderer/shaders/patternFill.js +24 -0
- package/dist/renderer/shaders/patternFill.js.map +1 -0
- package/dist/renderer/shaders/registerProgram.js +18 -0
- package/dist/renderer/shaders/registerProgram.js.map +1 -0
- package/dist/renderer/spriteSheet.js +14 -0
- package/dist/renderer/spriteSheet.js.map +1 -0
- package/dist/renderer/state/GroupState.js +77 -0
- package/dist/renderer/state/GroupState.js.map +1 -0
- package/dist/renderer/syntheticItalic.js +6 -0
- package/dist/renderer/syntheticItalic.js.map +1 -0
- package/dist/renderer/textures/registerTexture.js +14 -0
- package/dist/renderer/textures/registerTexture.js.map +1 -0
- package/dist/renderer.d.ts +11 -21
- package/dist/renderer.js +18 -13
- package/dist/resize.d.ts +10 -46
- package/dist/resize.js +7 -5
- package/dist/routing.js +2 -3
- package/dist/scheduling/useVisibleRaf.js +69 -0
- package/dist/scheduling/useVisibleRaf.js.map +1 -0
- package/dist/style.css +2 -0
- package/dist/test-hook/createTestHook.js +39 -0
- package/dist/test-hook/createTestHook.js.map +1 -0
- package/dist/test-hook/install.js +12 -0
- package/dist/test-hook/install.js.map +1 -0
- package/dist/test-seams-fYf6m5pu.d.ts +356 -0
- package/dist/test-seams.d.ts +6 -0
- package/dist/test-seams.js +3 -0
- package/dist/tools/builtin/ellipse/useEllipseTool.js +33 -0
- package/dist/tools/builtin/ellipse/useEllipseTool.js.map +1 -0
- package/dist/tools/builtin/eyedropper/useEyedropperTool.js +55 -0
- package/dist/tools/builtin/eyedropper/useEyedropperTool.js.map +1 -0
- package/dist/tools/builtin/hand/dragPanContribution.js +17 -0
- package/dist/tools/builtin/hand/dragPanContribution.js.map +1 -0
- package/dist/tools/builtin/hand/useHandTool.js +31 -0
- package/dist/tools/builtin/hand/useHandTool.js.map +1 -0
- package/dist/tools/builtin/image/useImageTool.js +41 -0
- package/dist/tools/builtin/image/useImageTool.js.map +1 -0
- package/dist/tools/builtin/lasso/useLassoTool.js +42 -0
- package/dist/tools/builtin/lasso/useLassoTool.js.map +1 -0
- package/dist/tools/builtin/line/useLineTool.js +33 -0
- package/dist/tools/builtin/line/useLineTool.js.map +1 -0
- package/dist/tools/builtin/pen/usePenTool.js +414 -0
- package/dist/tools/builtin/pen/usePenTool.js.map +1 -0
- package/dist/tools/builtin/pencil/usePencilTool.js +36 -0
- package/dist/tools/builtin/pencil/usePencilTool.js.map +1 -0
- package/dist/tools/builtin/pickTopMostHit.js +45 -0
- package/dist/tools/builtin/pickTopMostHit.js.map +1 -0
- package/dist/tools/builtin/polygon/usePolygonTool.js +81 -0
- package/dist/tools/builtin/polygon/usePolygonTool.js.map +1 -0
- package/dist/tools/builtin/rect/useRectTool.js +32 -0
- package/dist/tools/builtin/rect/useRectTool.js.map +1 -0
- package/dist/tools/builtin/select/selectionContributions.js +109 -0
- package/dist/tools/builtin/select/selectionContributions.js.map +1 -0
- package/dist/tools/builtin/select/useSelectTool.js +162 -0
- package/dist/tools/builtin/select/useSelectTool.js.map +1 -0
- package/dist/tools/builtin/shared/insertToolOptions.js +8 -0
- package/dist/tools/builtin/shared/insertToolOptions.js.map +1 -0
- package/dist/tools/builtin/slice/useSliceTool.js +263 -0
- package/dist/tools/builtin/slice/useSliceTool.js.map +1 -0
- package/dist/tools/builtin/star/useStarTool.js +82 -0
- package/dist/tools/builtin/star/useStarTool.js.map +1 -0
- package/dist/tools/builtin/text/useTextTool.js +177 -0
- package/dist/tools/builtin/text/useTextTool.js.map +1 -0
- package/dist/tools/overlayBinding.js +8 -0
- package/dist/tools/overlayBinding.js.map +1 -0
- package/dist/tools/prefs.js +47 -0
- package/dist/tools/prefs.js.map +1 -0
- package/dist/tools/useKeybindings.js +66 -0
- package/dist/tools/useKeybindings.js.map +1 -0
- package/dist/{types-D-9QWBy5.d.ts → types-A37hYkeR.d.ts} +185 -15
- package/dist/{types-qYpyTAiZ.d.ts → types-B_9g6hMM.d.ts} +32 -6
- package/dist/util/color.js +26 -0
- package/dist/util/color.js.map +1 -0
- package/dist/util/constrainTo45.js +17 -0
- package/dist/util/constrainTo45.js.map +1 -0
- package/dist/util/paint.js +72 -0
- package/dist/util/paint.js.map +1 -0
- package/dist/version.js +6 -0
- package/dist/version.js.map +1 -0
- package/package.json +31 -19
- package/dist/chunk-3TY6FHAF.js +0 -170
- package/dist/chunk-3TY6FHAF.js.map +0 -1
- package/dist/chunk-DGWNNKGD.js +0 -248
- package/dist/chunk-DGWNNKGD.js.map +0 -1
- package/dist/chunk-G4ZGQMY7.js +0 -33372
- package/dist/chunk-G4ZGQMY7.js.map +0 -1
- package/dist/chunk-L5YNZYEG.js +0 -648
- package/dist/chunk-L5YNZYEG.js.map +0 -1
- package/dist/chunk-LU4IJ52W.js +0 -111
- package/dist/chunk-LU4IJ52W.js.map +0 -1
- package/dist/chunk-M24CLARN.js +0 -28
- package/dist/chunk-M24CLARN.js.map +0 -1
- package/dist/chunk-NE27EOLP.js +0 -146
- package/dist/chunk-NE27EOLP.js.map +0 -1
- package/dist/chunk-PNNZSYRD.js +0 -318
- package/dist/chunk-PNNZSYRD.js.map +0 -1
- package/dist/chunk-UPZY4ART.js +0 -29
- package/dist/chunk-UPZY4ART.js.map +0 -1
- package/dist/chunk-WPNA6L5O.js +0 -250
- package/dist/chunk-WPNA6L5O.js.map +0 -1
- package/dist/chunk-XMAWPGTK.js +0 -128
- package/dist/chunk-XMAWPGTK.js.map +0 -1
- package/dist/clipboard.js.map +0 -1
- package/dist/clone.js.map +0 -1
- package/dist/grid-CY5UKlZh.d.ts +0 -98
- package/dist/index.css +0 -62
- package/dist/index.css.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/insert.d.ts +0 -36
- package/dist/insert.js +0 -81
- package/dist/insert.js.map +0 -1
- package/dist/math.js.map +0 -1
- package/dist/move.js.map +0 -1
- package/dist/path-JEV2c5If.d.ts +0 -48
- package/dist/patterns-builtin.js.map +0 -1
- package/dist/renderer.css +0 -62
- package/dist/renderer.css.map +0 -1
- package/dist/renderer.js.map +0 -1
- package/dist/resize.js.map +0 -1
- package/dist/routing.js.map +0 -1
- package/dist/types-D2tTKEU0.d.ts +0 -18
|
@@ -0,0 +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","KIT_STANDARD_ACTION_IDS","a","useStandardActions","optsRef","useLatest","opts","activeToolCtx","useOptionalActiveToolContext","activeToolCtxRef","depReg","useOptionalDepRegistry","unregisters","key","u","reg","useActionsRegistry","excludeKey","excluded"],"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 { clipboardCopyAction, clipboardCutAction, clipboardPasteAction } 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];\n\n/** Every id `useStandardActions` registers, in registration order. */\nexport const KIT_STANDARD_ACTION_IDS: readonly string[] =\n KIT_STANDARD_DESCRIPTORS.map((a) => a.id);\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 .map((a) => reg.register(a));\n return () => { for (const u of unregisters) u(); };\n }, [reg, depReg, excludeKey]);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiHA,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;AACF,GAGaC,KACXhE,EAAyB,KAAK,MAAMiE,EAAE,EAAE;AAiB1C,SAAgBC,GAAmB,GAAuC;CAExE,IAAMC,IAAUC,EAAUC,CAAI,GAKxBC,IAAgBC,GAA6B,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,IAAc3E,EACjB,QAAQ,MAAM,CAACiF,EAAS,IAAIhB,EAAE,EAAE,CAAC,CAAC,CAClC,KAAK,MAAMa,EAAI,SAASb,CAAC,CAAC;EAC7B,aAAa;GAAE,KAAK,IAAMY,KAAKF,GAAa,EAAE;EAAG;CACnD,GAAG;EAACG;EAAKL;EAAQO;CAAU,CAAC;AAC9B"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { useCallback as e, useMemo as t, useRef as n, useState as r } from "react";
|
|
2
|
+
import { useLatest as i } from "@weasel-js/react";
|
|
3
|
+
//#region src/interactions/gestures/dragGesture/dragGesture.ts
|
|
4
|
+
function a(a = {}) {
|
|
5
|
+
let o = i(a), s = n(null), [, c] = r(0), l = n("idle"), u = e((e) => {
|
|
6
|
+
l.current = e, c((e) => e + 1);
|
|
7
|
+
}, []), d = e(() => {
|
|
8
|
+
let e = s.current;
|
|
9
|
+
return {
|
|
10
|
+
get start() {
|
|
11
|
+
return e.start;
|
|
12
|
+
},
|
|
13
|
+
get current() {
|
|
14
|
+
return e.current;
|
|
15
|
+
},
|
|
16
|
+
get modifiers() {
|
|
17
|
+
return e.modifiers;
|
|
18
|
+
},
|
|
19
|
+
get scratch() {
|
|
20
|
+
return e.scratch;
|
|
21
|
+
},
|
|
22
|
+
get phase() {
|
|
23
|
+
return e.phase;
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
}, []), f = e((e, t) => {
|
|
27
|
+
let n = o.current, r = n.initScratch ? n.initScratch() : {}, i = n.thresholdReached ? "pending" : "active";
|
|
28
|
+
s.current = {
|
|
29
|
+
phase: i,
|
|
30
|
+
start: e,
|
|
31
|
+
current: e,
|
|
32
|
+
modifiers: t,
|
|
33
|
+
scratch: r
|
|
34
|
+
}, u(i), n.onGestureStart?.(), n.onStart?.(d());
|
|
35
|
+
}, [
|
|
36
|
+
d,
|
|
37
|
+
u,
|
|
38
|
+
o
|
|
39
|
+
]), p = e((e, t) => {
|
|
40
|
+
let n = s.current;
|
|
41
|
+
if (!n) return !1;
|
|
42
|
+
n.current = e, n.modifiers = t;
|
|
43
|
+
let r = o.current;
|
|
44
|
+
if (n.phase === "pending" && r.thresholdReached) {
|
|
45
|
+
let e = d();
|
|
46
|
+
r.thresholdReached(e) && (n.phase = "active", u("active"), r.onActivate?.(d()));
|
|
47
|
+
}
|
|
48
|
+
return r.onMove?.(d()), !0;
|
|
49
|
+
}, [
|
|
50
|
+
d,
|
|
51
|
+
u,
|
|
52
|
+
o
|
|
53
|
+
]), m = e(() => {
|
|
54
|
+
let e = s.current, t = o.current;
|
|
55
|
+
if (!e) {
|
|
56
|
+
t.onGestureEnd?.(!1);
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
let n = {
|
|
60
|
+
get start() {
|
|
61
|
+
return e.start;
|
|
62
|
+
},
|
|
63
|
+
get current() {
|
|
64
|
+
return e.current;
|
|
65
|
+
},
|
|
66
|
+
get modifiers() {
|
|
67
|
+
return e.modifiers;
|
|
68
|
+
},
|
|
69
|
+
get scratch() {
|
|
70
|
+
return e.scratch;
|
|
71
|
+
},
|
|
72
|
+
get phase() {
|
|
73
|
+
return e.phase;
|
|
74
|
+
},
|
|
75
|
+
wasSubThreshold: e.phase === "pending"
|
|
76
|
+
}, r = !1;
|
|
77
|
+
try {
|
|
78
|
+
r = t.onEnd?.(n) !== !1;
|
|
79
|
+
} finally {
|
|
80
|
+
s.current = null, u("idle"), t.onGestureEnd?.(r);
|
|
81
|
+
}
|
|
82
|
+
}, [u, o]), h = e(() => {
|
|
83
|
+
let e = s.current, t = o.current;
|
|
84
|
+
e && t.onCancel?.(d()), s.current = null, u("idle"), t.onGestureEnd?.(!1);
|
|
85
|
+
}, [
|
|
86
|
+
d,
|
|
87
|
+
u,
|
|
88
|
+
o
|
|
89
|
+
]);
|
|
90
|
+
return t(() => ({
|
|
91
|
+
start: f,
|
|
92
|
+
move: p,
|
|
93
|
+
end: m,
|
|
94
|
+
cancel: h,
|
|
95
|
+
get phase() {
|
|
96
|
+
return l.current;
|
|
97
|
+
},
|
|
98
|
+
get isActive() {
|
|
99
|
+
return l.current !== "idle";
|
|
100
|
+
}
|
|
101
|
+
}), [
|
|
102
|
+
f,
|
|
103
|
+
p,
|
|
104
|
+
m,
|
|
105
|
+
h
|
|
106
|
+
]);
|
|
107
|
+
}
|
|
108
|
+
//#endregion
|
|
109
|
+
export { a as useDragGesture };
|
|
110
|
+
|
|
111
|
+
//# sourceMappingURL=dragGesture.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dragGesture.js","names":["useDragGesture","optsRef","useLatest","options","stateRef","useRef","setPhaseTick","useState","phaseRef","bumpPhase","useCallback","next","n","buildCtx","s","start","opts","scratch","initialPhase","point","move","modifiers","ctx","end","endCtx","committed","cancel","useMemo"],"sources":["../../../../src/interactions/gestures/dragGesture/dragGesture.ts"],"sourcesContent":["import { useCallback, useMemo, useRef, useState } from 'react';\nimport { useLatest } from '@weasel-js/react';\nimport type { ModifierState } from '../types';\n\n/** Pointer position in both world (gesture-coord) and client (CSS-px) space. */\nexport interface DragGesturePoint {\n worldX: number;\n worldY: number;\n clientX: number;\n clientY: number;\n}\n\n/** Phase exposed on the public controller and inside ctx for callbacks. */\nexport type DragGesturePhase = 'idle' | 'pending' | 'active';\n\n/** Live gesture context handed to lifecycle callbacks. Within callbacks, ctx\n * reflects the moment the callback fires (e.g. ctx.phase is 'active' inside\n * onActivate, even though the move that triggered it was during 'pending'). */\nexport interface DragGestureCtx<TScratch = unknown> {\n start: DragGesturePoint;\n current: DragGesturePoint;\n modifiers: ModifierState;\n scratch: TScratch;\n /** 'pending' or 'active'. Never 'idle' inside a callback. */\n phase: 'pending' | 'active';\n}\n\n/** The context handed to `onEnd`, adding whether the gesture ever passed its\n * activation threshold. */\nexport interface DragGestureEndCtx<TScratch = unknown>\n extends DragGestureCtx<TScratch> {\n /** True if phase never reached 'active'. Wrappers without thresholdReached\n * always see false here (their gesture activates at start()). */\n wasSubThreshold: boolean;\n}\n\n/** Options for `useDragGesture`: when the gesture becomes active, and what to\n * do at each point in its lifecycle. */\nexport interface UseDragGestureOptions<TScratch = unknown> {\n initScratch?: () => TScratch;\n /** Predicate consulted on each move while phase === 'pending'. Return true\n * to transition to 'active'. The transition fires onActivate before the\n * triggering move's onMove. When omitted, gesture activates at start(). */\n thresholdReached?: (ctx: DragGestureCtx<TScratch>) => boolean;\n onStart?: (ctx: DragGestureCtx<TScratch>) => void;\n onActivate?: (ctx: DragGestureCtx<TScratch>) => void;\n onMove?: (ctx: DragGestureCtx<TScratch>) => void;\n onEnd?: (ctx: DragGestureEndCtx<TScratch>) => boolean | void;\n onCancel?: (ctx: DragGestureCtx<TScratch>) => void;\n onGestureStart?: () => void;\n onGestureEnd?: (committed: boolean) => void;\n}\n\n/** Drives a drag gesture. The owner feeds it pointer positions; it decides\n * when the drag has really begun and calls back accordingly. */\nexport interface DragGestureController {\n start(point: DragGesturePoint, modifiers: ModifierState): void;\n move(point: DragGesturePoint, modifiers: ModifierState): boolean;\n end(): void;\n cancel(): void;\n readonly phase: DragGesturePhase;\n readonly isActive: boolean;\n}\n\ninterface InternalState<TScratch> {\n phase: 'pending' | 'active';\n start: DragGesturePoint;\n current: DragGesturePoint;\n modifiers: ModifierState;\n scratch: TScratch;\n}\n\n/**\n * The base drag primitive: tracks a pointer from press to release, with an\n * optional threshold below which the gesture stays pending and commits\n * nothing.\n *\n * It is a gesture and only a gesture — it says where the pointer went, never\n * what that should do. `useDragRect` and `useDragRadial` build on it, and\n * actions decide what to make of the result.\n */\nexport function useDragGesture<TScratch = unknown>(\n options: UseDragGestureOptions<TScratch> = {},\n): DragGestureController {\n const optsRef = useLatest(options);\n const stateRef = useRef<InternalState<TScratch> | null>(null);\n const [, setPhaseTick] = useState(0);\n const phaseRef = useRef<DragGesturePhase>('idle');\n const bumpPhase = useCallback((next: DragGesturePhase) => {\n phaseRef.current = next;\n setPhaseTick((n) => n + 1);\n }, []);\n\n const buildCtx = useCallback((): DragGestureCtx<TScratch> => {\n const s = stateRef.current!;\n return {\n get start() { return s.start; },\n get current() { return s.current; },\n get modifiers() { return s.modifiers; },\n get scratch() { return s.scratch; },\n get phase() { return s.phase; },\n };\n }, []);\n\n const start = useCallback((point: DragGesturePoint, modifiers: ModifierState) => {\n const opts = optsRef.current;\n const scratch = opts.initScratch ? opts.initScratch() : ({} as TScratch);\n const initialPhase: 'pending' | 'active' = opts.thresholdReached ? 'pending' : 'active';\n stateRef.current = {\n phase: initialPhase,\n start: point,\n current: point,\n modifiers,\n scratch,\n };\n bumpPhase(initialPhase);\n opts.onGestureStart?.();\n opts.onStart?.(buildCtx());\n }, [buildCtx, bumpPhase, optsRef]);\n\n const move = useCallback((point: DragGesturePoint, modifiers: ModifierState): boolean => {\n const s = stateRef.current;\n if (!s) return false;\n s.current = point;\n s.modifiers = modifiers;\n const opts = optsRef.current;\n if (s.phase === 'pending' && opts.thresholdReached) {\n const ctx = buildCtx();\n if (opts.thresholdReached(ctx)) {\n s.phase = 'active';\n bumpPhase('active');\n opts.onActivate?.(buildCtx());\n }\n }\n opts.onMove?.(buildCtx());\n return true;\n }, [buildCtx, bumpPhase, optsRef]);\n\n const end = useCallback(() => {\n const s = stateRef.current;\n const opts = optsRef.current;\n if (!s) {\n opts.onGestureEnd?.(false);\n return;\n }\n const wasSubThreshold = s.phase === 'pending';\n const endCtx: DragGestureEndCtx<TScratch> = {\n get start() { return s.start; },\n get current() { return s.current; },\n get modifiers() { return s.modifiers; },\n get scratch() { return s.scratch; },\n get phase() { return s.phase; },\n wasSubThreshold,\n };\n let committed = false;\n try {\n const r = opts.onEnd?.(endCtx);\n committed = r !== false;\n } finally {\n stateRef.current = null;\n bumpPhase('idle');\n opts.onGestureEnd?.(committed);\n }\n }, [bumpPhase, optsRef]);\n\n const cancel = useCallback(() => {\n const s = stateRef.current;\n const opts = optsRef.current;\n if (s) opts.onCancel?.(buildCtx());\n stateRef.current = null;\n bumpPhase('idle');\n opts.onGestureEnd?.(false);\n }, [buildCtx, bumpPhase, optsRef]);\n\n return useMemo<DragGestureController>(() => ({\n start, move, end, cancel,\n get phase() { return phaseRef.current; },\n get isActive() { return phaseRef.current !== 'idle'; },\n }), [start, move, end, cancel]);\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { dlog as e } from "../../../debug/flag.js";
|
|
2
|
+
import { useDragGesture as t } from "../dragGesture/dragGesture.js";
|
|
3
|
+
import { useCallback as n, useMemo as r, useRef as i, useState as a } from "react";
|
|
4
|
+
import { useLatest as o } from "@weasel-js/react";
|
|
5
|
+
//#region src/interactions/gestures/dragRadial/dragRadial.ts
|
|
6
|
+
function s(e) {
|
|
7
|
+
let t = e.current.x - e.center.x, n = e.current.y - e.center.y;
|
|
8
|
+
return {
|
|
9
|
+
center: { ...e.center },
|
|
10
|
+
radius: Math.hypot(t, n),
|
|
11
|
+
rotation: t === 0 && n === 0 ? 0 : Math.atan2(n, t)
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
function c(c = {}) {
|
|
15
|
+
let l = o(c), [u, d] = a(null), f = i(null), p = n(() => {
|
|
16
|
+
let e = f.current;
|
|
17
|
+
e && d(s(e));
|
|
18
|
+
}, []), m = n(() => {
|
|
19
|
+
let e = f.current;
|
|
20
|
+
return {
|
|
21
|
+
...s(e),
|
|
22
|
+
modifiers: e.modifiers,
|
|
23
|
+
scratch: e.consumer
|
|
24
|
+
};
|
|
25
|
+
}, []), h = t({
|
|
26
|
+
initScratch: () => ({
|
|
27
|
+
center: {
|
|
28
|
+
x: 0,
|
|
29
|
+
y: 0
|
|
30
|
+
},
|
|
31
|
+
current: {
|
|
32
|
+
x: 0,
|
|
33
|
+
y: 0
|
|
34
|
+
},
|
|
35
|
+
modifiers: {
|
|
36
|
+
shift: !1,
|
|
37
|
+
alt: !1,
|
|
38
|
+
meta: !1,
|
|
39
|
+
ctrl: !1
|
|
40
|
+
},
|
|
41
|
+
consumer: l.current.initScratch ? l.current.initScratch() : {}
|
|
42
|
+
}),
|
|
43
|
+
onStart: (t) => {
|
|
44
|
+
let n = l.current, r = {
|
|
45
|
+
x: t.start.worldX,
|
|
46
|
+
y: t.start.worldY
|
|
47
|
+
}, i = n.snapPoint ? n.snapPoint(r) : r;
|
|
48
|
+
t.scratch.center = i, t.scratch.current = i, t.scratch.modifiers = t.modifiers, f.current = t.scratch, d({
|
|
49
|
+
center: i,
|
|
50
|
+
radius: 0,
|
|
51
|
+
rotation: 0
|
|
52
|
+
}), e("drag-radial", "start", i), n.onStart?.(m());
|
|
53
|
+
},
|
|
54
|
+
onMove: (e) => {
|
|
55
|
+
let t = l.current, n = {
|
|
56
|
+
x: e.current.worldX,
|
|
57
|
+
y: e.current.worldY
|
|
58
|
+
};
|
|
59
|
+
e.scratch.current = t.snapPoint ? t.snapPoint(n) : n, e.scratch.modifiers = e.modifiers, p(), t.onMove?.(m());
|
|
60
|
+
},
|
|
61
|
+
onEnd: (t) => {
|
|
62
|
+
let n = l.current, r = s(t.scratch), i = n.minRadius ?? 0, a = {
|
|
63
|
+
...r,
|
|
64
|
+
modifiers: t.scratch.modifiers,
|
|
65
|
+
scratch: t.scratch.consumer,
|
|
66
|
+
isSubThreshold: r.radius <= i
|
|
67
|
+
};
|
|
68
|
+
e("drag-radial", "end", {
|
|
69
|
+
radius: r.radius,
|
|
70
|
+
rotation: r.rotation,
|
|
71
|
+
isSubThreshold: a.isSubThreshold
|
|
72
|
+
});
|
|
73
|
+
let o;
|
|
74
|
+
try {
|
|
75
|
+
o = n.onEnd?.(a);
|
|
76
|
+
} finally {
|
|
77
|
+
f.current = null, d(null);
|
|
78
|
+
}
|
|
79
|
+
return o;
|
|
80
|
+
},
|
|
81
|
+
onCancel: () => {
|
|
82
|
+
e("drag-radial", "cancel"), l.current.onCancel?.(m()), f.current = null, d(null);
|
|
83
|
+
},
|
|
84
|
+
onGestureStart: () => l.current.onGestureStart?.(),
|
|
85
|
+
onGestureEnd: (e) => l.current.onGestureEnd?.(e)
|
|
86
|
+
}), g = n((e, t, n) => {
|
|
87
|
+
h.start({
|
|
88
|
+
worldX: e,
|
|
89
|
+
worldY: t,
|
|
90
|
+
clientX: e,
|
|
91
|
+
clientY: t
|
|
92
|
+
}, n);
|
|
93
|
+
}, [h]), _ = n((e, t, n) => h.move({
|
|
94
|
+
worldX: e,
|
|
95
|
+
worldY: t,
|
|
96
|
+
clientX: e,
|
|
97
|
+
clientY: t
|
|
98
|
+
}, n), [h]);
|
|
99
|
+
return r(() => ({
|
|
100
|
+
start: g,
|
|
101
|
+
move: _,
|
|
102
|
+
end: h.end,
|
|
103
|
+
cancel: h.cancel,
|
|
104
|
+
overlay: u,
|
|
105
|
+
isActive: u !== null
|
|
106
|
+
}), [
|
|
107
|
+
g,
|
|
108
|
+
_,
|
|
109
|
+
h.end,
|
|
110
|
+
h.cancel,
|
|
111
|
+
u
|
|
112
|
+
]);
|
|
113
|
+
}
|
|
114
|
+
//#endregion
|
|
115
|
+
export { c as useDragRadial };
|
|
116
|
+
|
|
117
|
+
//# sourceMappingURL=dragRadial.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dragRadial.js","names":["stateFrom","dx","s","dy","useDragRadial","optsRef","useLatest","options","overlay","setOverlay","useState","scratchRef","useRef","writeOverlay","useCallback","buildCtx","gesture","useDragGesture","opts","raw","ctx","p","dlog","state","min","endCtx","r","committed","start","worldX","worldY","modifiers","move","useMemo"],"sources":["../../../../src/interactions/gestures/dragRadial/dragRadial.ts"],"sourcesContent":["import { useCallback, useMemo, useRef, useState } from 'react';\nimport { useLatest } from '@weasel-js/react';\nimport { useDragGesture } from '../dragGesture';\nimport type { ModifierState } from '../types';\nimport { dlog } from '../../../debug/flag';\n\n/** A point in world coordinates. */\nexport interface DragRadialPoint { x: number; y: number }\n\n/** A radial drag expressed as its center and the polar coordinates of the\n * cursor relative to it. */\nexport interface DragRadialState {\n center: DragRadialPoint;\n radius: number;\n rotation: number;\n}\n\n/** Live state of a radial drag, handed to each lifecycle callback. */\nexport interface DragRadialCtx<TScratch = unknown> extends DragRadialState {\n modifiers: ModifierState;\n scratch: TScratch;\n}\n\n/** The context handed to `onEnd`, adding whether the final radius is too\n * small to be meaningful. */\nexport interface DragRadialEndCtx<TScratch = unknown> extends DragRadialCtx<TScratch> {\n /** True at end time if the radius is at or below `minRadius`. */\n isSubThreshold: boolean;\n}\n\n/** Options for `useDragRadial`. */\nexport interface UseDragRadialOptions<TScratch = unknown> {\n minRadius?: number;\n initScratch?: () => TScratch;\n onStart?: (ctx: DragRadialCtx<TScratch>) => void;\n onMove?: (ctx: DragRadialCtx<TScratch>) => void;\n onEnd?: (ctx: DragRadialEndCtx<TScratch>) => boolean | void;\n onCancel?: (ctx: DragRadialCtx<TScratch>) => void;\n onGestureStart?: () => void;\n onGestureEnd?: (committed: boolean) => void;\n /** Optional: snap world-space points to the active grid (or any other\n * snap target). Applied to both the center (on `onStart`) and the\n * current cursor (on `onMove`), so the live overlay's radius/rotation\n * is computed from snapped points instead of raw cursor positions.\n * When omitted, behavior is identical to today (identity passthrough). */\n snapPoint?: (p: DragRadialPoint) => DragRadialPoint;\n}\n\n/** Drives a radial drag and publishes the live center/radius/rotation for\n * overlay drawing. */\nexport interface DragRadialController {\n start(worldX: number, worldY: number, modifiers: ModifierState): void;\n move(worldX: number, worldY: number, modifiers: ModifierState): boolean;\n end(): void;\n cancel(): void;\n overlay: DragRadialState | null;\n readonly isActive: boolean;\n}\n\ninterface DragRadialScratch<TConsumer> {\n center: DragRadialPoint;\n current: DragRadialPoint;\n modifiers: ModifierState;\n consumer: TConsumer;\n}\n\nfunction stateFrom(s: DragRadialScratch<unknown>): DragRadialState {\n const dx = s.current.x - s.center.x;\n const dy = s.current.y - s.center.y;\n return {\n center: { ...s.center },\n radius: Math.hypot(dx, dy),\n rotation: dx === 0 && dy === 0 ? 0 : Math.atan2(dy, dx),\n };\n}\n\n/**\n * Radial gesture: pointerdown sets center, pointermove updates radius (Math.hypot\n * of delta) and rotation (Math.atan2 of delta), pointerup commits. Shared by polygon\n * and star tools. Modifier key state is read at end time from `ctx.modifiers`.\n */\nexport function useDragRadial<TScratch = unknown>(\n options: UseDragRadialOptions<TScratch> = {},\n): DragRadialController {\n const optsRef = useLatest(options);\n\n const [overlay, setOverlay] = useState<DragRadialState | null>(null);\n\n const scratchRef = useRef<DragRadialScratch<TScratch> | null>(null);\n\n const writeOverlay = useCallback(() => {\n const s = scratchRef.current;\n if (!s) return;\n setOverlay(stateFrom(s));\n }, []);\n\n const buildCtx = useCallback((): DragRadialCtx<TScratch> => {\n const s = scratchRef.current!;\n const state = stateFrom(s);\n return {\n ...state,\n modifiers: s.modifiers,\n scratch: s.consumer,\n };\n }, []);\n\n const gesture = useDragGesture<DragRadialScratch<TScratch>>({\n initScratch: () => {\n const init = optsRef.current.initScratch\n ? optsRef.current.initScratch()\n : ({} as TScratch);\n return {\n center: { x: 0, y: 0 },\n current: { x: 0, y: 0 },\n modifiers: { shift: false, alt: false, meta: false, ctrl: false },\n consumer: init,\n };\n },\n onStart: (ctx) => {\n const opts = optsRef.current;\n const raw: DragRadialPoint = { x: ctx.start.worldX, y: ctx.start.worldY };\n const p: DragRadialPoint = opts.snapPoint ? opts.snapPoint(raw) : raw;\n ctx.scratch.center = p;\n ctx.scratch.current = p;\n ctx.scratch.modifiers = ctx.modifiers;\n scratchRef.current = ctx.scratch;\n setOverlay({ center: p, radius: 0, rotation: 0 });\n dlog('drag-radial', 'start', p);\n opts.onStart?.(buildCtx());\n },\n onMove: (ctx) => {\n const opts = optsRef.current;\n const raw: DragRadialPoint = { x: ctx.current.worldX, y: ctx.current.worldY };\n ctx.scratch.current = opts.snapPoint ? opts.snapPoint(raw) : raw;\n ctx.scratch.modifiers = ctx.modifiers;\n writeOverlay();\n opts.onMove?.(buildCtx());\n },\n onEnd: (ctx) => {\n const opts = optsRef.current;\n const state = stateFrom(ctx.scratch);\n const min = opts.minRadius ?? 0;\n const endCtx: DragRadialEndCtx<TScratch> = {\n ...state,\n modifiers: ctx.scratch.modifiers,\n scratch: ctx.scratch.consumer,\n isSubThreshold: state.radius <= min,\n };\n dlog('drag-radial', 'end', { radius: state.radius, rotation: state.rotation, isSubThreshold: endCtx.isSubThreshold });\n let r: boolean | void;\n try {\n r = opts.onEnd?.(endCtx);\n } finally {\n scratchRef.current = null;\n setOverlay(null);\n }\n return r;\n },\n onCancel: () => {\n dlog('drag-radial', 'cancel');\n optsRef.current.onCancel?.(buildCtx());\n scratchRef.current = null;\n setOverlay(null);\n },\n onGestureStart: () => optsRef.current.onGestureStart?.(),\n onGestureEnd: (committed) => optsRef.current.onGestureEnd?.(committed),\n });\n\n const start = useCallback((worldX: number, worldY: number, modifiers: ModifierState) => {\n gesture.start({ worldX, worldY, clientX: worldX, clientY: worldY }, modifiers);\n }, [gesture]);\n\n const move = useCallback((worldX: number, worldY: number, modifiers: ModifierState): boolean => {\n return gesture.move({ worldX, worldY, clientX: worldX, clientY: worldY }, modifiers);\n }, [gesture]);\n\n return useMemo<DragRadialController>(() => ({\n start,\n move,\n end: gesture.end,\n cancel: gesture.cancel,\n overlay,\n isActive: overlay !== null,\n }), [start, move, gesture.end, gesture.cancel, overlay]);\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
import { dlog as e } from "../../../debug/flag.js";
|
|
2
|
+
import { useDragGesture as t } from "../dragGesture/dragGesture.js";
|
|
3
|
+
import { useCallback as n, useMemo as r, useRef as i, useState as a } from "react";
|
|
4
|
+
import { useLatest as o } from "@weasel-js/react";
|
|
5
|
+
//#region src/interactions/gestures/dragRect/dragRect.ts
|
|
6
|
+
function s(e, t) {
|
|
7
|
+
return {
|
|
8
|
+
x: Math.min(e.x, t.x),
|
|
9
|
+
y: Math.min(e.y, t.y),
|
|
10
|
+
width: Math.abs(t.x - e.x),
|
|
11
|
+
height: Math.abs(t.y - e.y)
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
function c(c = {}) {
|
|
15
|
+
let l = o(c), [u, d] = a(null), f = i(null), p = n(() => {
|
|
16
|
+
let e = f.current;
|
|
17
|
+
e && d({
|
|
18
|
+
start: e.start,
|
|
19
|
+
current: e.current,
|
|
20
|
+
bounds: s(e.start, e.current)
|
|
21
|
+
});
|
|
22
|
+
}, []), m = n(() => {
|
|
23
|
+
let e = f.current;
|
|
24
|
+
return {
|
|
25
|
+
get start() {
|
|
26
|
+
return e.start;
|
|
27
|
+
},
|
|
28
|
+
get current() {
|
|
29
|
+
return e.current;
|
|
30
|
+
},
|
|
31
|
+
get bounds() {
|
|
32
|
+
return s(e.start, e.current);
|
|
33
|
+
},
|
|
34
|
+
get modifiers() {
|
|
35
|
+
return e.modifiers;
|
|
36
|
+
},
|
|
37
|
+
get scratch() {
|
|
38
|
+
return e.consumer;
|
|
39
|
+
},
|
|
40
|
+
setStart(t) {
|
|
41
|
+
e.start = t, p();
|
|
42
|
+
},
|
|
43
|
+
setCurrent(t) {
|
|
44
|
+
e.current = t, p();
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
}, [p]), h = t({
|
|
48
|
+
initScratch: () => ({
|
|
49
|
+
start: {
|
|
50
|
+
x: 0,
|
|
51
|
+
y: 0
|
|
52
|
+
},
|
|
53
|
+
current: {
|
|
54
|
+
x: 0,
|
|
55
|
+
y: 0
|
|
56
|
+
},
|
|
57
|
+
modifiers: {
|
|
58
|
+
shift: !1,
|
|
59
|
+
alt: !1,
|
|
60
|
+
meta: !1,
|
|
61
|
+
ctrl: !1
|
|
62
|
+
},
|
|
63
|
+
consumer: l.current.initScratch ? l.current.initScratch() : {}
|
|
64
|
+
}),
|
|
65
|
+
onStart: (t) => {
|
|
66
|
+
let n = l.current, r = {
|
|
67
|
+
x: t.start.worldX,
|
|
68
|
+
y: t.start.worldY
|
|
69
|
+
}, i = n.snapPoint ? n.snapPoint(r) : r;
|
|
70
|
+
e("drag-rect", "start", i), t.scratch.start = i, t.scratch.current = i, f.current = t.scratch, t.scratch.modifiers = t.modifiers, d({
|
|
71
|
+
start: i,
|
|
72
|
+
current: i,
|
|
73
|
+
bounds: {
|
|
74
|
+
x: i.x,
|
|
75
|
+
y: i.y,
|
|
76
|
+
width: 0,
|
|
77
|
+
height: 0
|
|
78
|
+
}
|
|
79
|
+
}), n.onStart?.(m());
|
|
80
|
+
},
|
|
81
|
+
onMove: (e) => {
|
|
82
|
+
let t = l.current, n = {
|
|
83
|
+
x: e.current.worldX,
|
|
84
|
+
y: e.current.worldY
|
|
85
|
+
};
|
|
86
|
+
e.scratch.current = t.snapPoint ? t.snapPoint(n) : n, e.scratch.modifiers = e.modifiers, p(), t.onMove?.(m());
|
|
87
|
+
},
|
|
88
|
+
onEnd: (t) => {
|
|
89
|
+
let n = l.current, r = n.minBounds ?? {
|
|
90
|
+
width: 0,
|
|
91
|
+
height: 0
|
|
92
|
+
}, i = s(t.scratch.start, t.scratch.current), a = i.width <= r.width || i.height <= r.height, o = t.scratch, c = {
|
|
93
|
+
get start() {
|
|
94
|
+
return o.start;
|
|
95
|
+
},
|
|
96
|
+
get current() {
|
|
97
|
+
return o.current;
|
|
98
|
+
},
|
|
99
|
+
get bounds() {
|
|
100
|
+
return s(o.start, o.current);
|
|
101
|
+
},
|
|
102
|
+
get modifiers() {
|
|
103
|
+
return o.modifiers;
|
|
104
|
+
},
|
|
105
|
+
get scratch() {
|
|
106
|
+
return o.consumer;
|
|
107
|
+
},
|
|
108
|
+
setStart(e) {
|
|
109
|
+
o.start = e, p();
|
|
110
|
+
},
|
|
111
|
+
setCurrent(e) {
|
|
112
|
+
o.current = e, p();
|
|
113
|
+
},
|
|
114
|
+
isSubThreshold: a
|
|
115
|
+
};
|
|
116
|
+
e("drag-rect", "end", {
|
|
117
|
+
bounds: i,
|
|
118
|
+
isSubThreshold: a
|
|
119
|
+
});
|
|
120
|
+
let u;
|
|
121
|
+
try {
|
|
122
|
+
u = n.onEnd?.(c);
|
|
123
|
+
} finally {
|
|
124
|
+
f.current = null, d(null);
|
|
125
|
+
}
|
|
126
|
+
return u;
|
|
127
|
+
},
|
|
128
|
+
onCancel: () => {
|
|
129
|
+
e("drag-rect", "cancel"), l.current.onCancel?.(m()), f.current = null, d(null);
|
|
130
|
+
},
|
|
131
|
+
onGestureStart: () => l.current.onGestureStart?.(),
|
|
132
|
+
onGestureEnd: (e) => l.current.onGestureEnd?.(e)
|
|
133
|
+
}), g = n((e, t, n) => {
|
|
134
|
+
h.start({
|
|
135
|
+
worldX: e,
|
|
136
|
+
worldY: t,
|
|
137
|
+
clientX: e,
|
|
138
|
+
clientY: t
|
|
139
|
+
}, n);
|
|
140
|
+
}, [h]), _ = n((e, t, n) => h.move({
|
|
141
|
+
worldX: e,
|
|
142
|
+
worldY: t,
|
|
143
|
+
clientX: e,
|
|
144
|
+
clientY: t
|
|
145
|
+
}, n), [h]);
|
|
146
|
+
return r(() => ({
|
|
147
|
+
start: g,
|
|
148
|
+
move: _,
|
|
149
|
+
end: h.end,
|
|
150
|
+
cancel: h.cancel,
|
|
151
|
+
overlay: u,
|
|
152
|
+
isActive: u !== null
|
|
153
|
+
}), [
|
|
154
|
+
g,
|
|
155
|
+
_,
|
|
156
|
+
h.end,
|
|
157
|
+
h.cancel,
|
|
158
|
+
u
|
|
159
|
+
]);
|
|
160
|
+
}
|
|
161
|
+
//#endregion
|
|
162
|
+
export { c as useDragRect };
|
|
163
|
+
|
|
164
|
+
//# sourceMappingURL=dragRect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dragRect.js","names":["boundsFrom","start","current","useDragRect","optsRef","useLatest","options","overlay","setOverlay","useState","scratchRef","useRef","writeOverlay","useCallback","s","buildConsumerCtx","p","gesture","useDragGesture","opts","raw","ctx","dlog","min","b","isSubThreshold","endCtx","r","committed","worldX","worldY","modifiers","move","useMemo"],"sources":["../../../../src/interactions/gestures/dragRect/dragRect.ts"],"sourcesContent":["import { useCallback, useMemo, useRef, useState } from 'react';\nimport { useLatest } from '@weasel-js/react';\nimport { useDragGesture } from '../dragGesture';\nimport type { ModifierState } from '../types';\nimport { dlog } from '../../../debug/flag';\n\n/** A point in world coordinates. */\nexport interface DragRectPoint { x: number; y: number }\n/** The axis-aligned box between the drag's two corners, always with\n * non-negative extents regardless of drag direction. */\nexport interface DragRectBounds { x: number; y: number; width: number; height: number }\n\n/** Live state of a rectangle drag, handed to each lifecycle callback. Either\n * corner can be moved mid-gesture, which is how a tool re-anchors a drag\n * without restarting it. */\nexport interface DragRectCtx<TScratch = unknown> {\n start: DragRectPoint;\n current: DragRectPoint;\n bounds: DragRectBounds;\n modifiers: ModifierState;\n scratch: TScratch;\n /** Override the start point mid-gesture. Recomputes bounds and updates the\n * live overlay so the next move (and the end ctx) reflect the new value. */\n setStart(p: DragRectPoint): void;\n /** Override the current point mid-gesture (between start and end). */\n setCurrent(p: DragRectPoint): void;\n}\n\n/** The context handed to `onEnd`, adding whether the final box is too small\n * to be meaningful. */\nexport interface DragRectEndCtx<TScratch = unknown> extends DragRectCtx<TScratch> {\n /** True if the end-time bounds are at or below `minBounds` on either axis.\n * Present-tense state check — distinct from the base's retrospective\n * `wasSubThreshold`. Computed by this wrapper, not by `useDragGesture`. */\n isSubThreshold: boolean;\n}\n\n/** Options for `useDragRect`. */\nexport interface UseDragRectOptions<TScratch = unknown> {\n minBounds?: { width: number; height: number };\n initScratch?: () => TScratch;\n onStart?: (ctx: DragRectCtx<TScratch>) => void;\n onMove?: (ctx: DragRectCtx<TScratch>) => void;\n onEnd?: (ctx: DragRectEndCtx<TScratch>) => boolean | void;\n onCancel?: (ctx: DragRectCtx<TScratch>) => void;\n onGestureStart?: () => void;\n onGestureEnd?: (committed: boolean) => void;\n /** Optional: snap world-space points to the active grid (or any other\n * snap target). Applied to every coord the gesture ingests (start point\n * on `onStart`, current point on `onMove`), so both the live overlay\n * and the committed bounds track the snapped values. When omitted,\n * behavior is identical to today (identity passthrough). */\n snapPoint?: (p: DragRectPoint) => DragRectPoint;\n}\n\n/** Drives a rectangle drag and publishes the live box for overlay drawing. */\nexport interface DragRectController {\n start(worldX: number, worldY: number, modifiers: ModifierState): void;\n move(worldX: number, worldY: number, modifiers: ModifierState): boolean;\n end(): void;\n cancel(): void;\n overlay: { start: DragRectPoint; current: DragRectPoint; bounds: DragRectBounds } | null;\n readonly isActive: boolean;\n}\n\nfunction boundsFrom(start: DragRectPoint, current: DragRectPoint): DragRectBounds {\n return {\n x: Math.min(start.x, current.x),\n y: Math.min(start.y, current.y),\n width: Math.abs(current.x - start.x),\n height: Math.abs(current.y - start.y),\n };\n}\n\ninterface DragRectScratch<TConsumer> {\n start: DragRectPoint;\n current: DragRectPoint;\n modifiers: ModifierState;\n consumer: TConsumer;\n}\n\n/**\n * The gesture \"the user drew a rectangle\": press, drag, release, with the\n * resulting box reported live and at commit.\n *\n * It is a spatial input primitive, not an insert mechanism — what the box\n * means is entirely up to whoever consumes it. Marquee selection, cropping and\n * shape insertion all sit on top of the same gesture.\n */\nexport function useDragRect<TScratch = unknown>(\n options: UseDragRectOptions<TScratch> = {},\n): DragRectController {\n const optsRef = useLatest(options);\n\n const [overlay, setOverlay] = useState<DragRectController['overlay']>(null);\n\n const scratchRef = useRef<DragRectScratch<TScratch> | null>(null);\n\n const writeOverlay = useCallback(() => {\n const s = scratchRef.current;\n if (!s) return;\n setOverlay({\n start: s.start,\n current: s.current,\n bounds: boundsFrom(s.start, s.current),\n });\n }, []);\n\n const buildConsumerCtx = useCallback((): DragRectCtx<TScratch> => {\n const s = scratchRef.current!;\n return {\n get start() { return s.start; },\n get current() { return s.current; },\n get bounds() { return boundsFrom(s.start, s.current); },\n get modifiers() { return s.modifiers; },\n get scratch() { return s.consumer; },\n setStart(p) { s.start = p; writeOverlay(); },\n setCurrent(p) { s.current = p; writeOverlay(); },\n };\n }, [writeOverlay]);\n\n const gesture = useDragGesture<DragRectScratch<TScratch>>({\n initScratch: () => {\n const init = optsRef.current.initScratch\n ? optsRef.current.initScratch()\n : ({} as TScratch);\n return {\n start: { x: 0, y: 0 },\n current: { x: 0, y: 0 },\n modifiers: { shift: false, alt: false, meta: false, ctrl: false },\n consumer: init,\n };\n },\n onStart: (ctx) => {\n const opts = optsRef.current;\n const raw: DragRectPoint = { x: ctx.start.worldX, y: ctx.start.worldY };\n const p: DragRectPoint = opts.snapPoint ? opts.snapPoint(raw) : raw;\n dlog('drag-rect', 'start', p);\n ctx.scratch.start = p;\n ctx.scratch.current = p;\n scratchRef.current = ctx.scratch;\n ctx.scratch.modifiers = ctx.modifiers;\n setOverlay({ start: p, current: p, bounds: { x: p.x, y: p.y, width: 0, height: 0 } });\n opts.onStart?.(buildConsumerCtx());\n },\n onMove: (ctx) => {\n const opts = optsRef.current;\n const raw: DragRectPoint = { x: ctx.current.worldX, y: ctx.current.worldY };\n ctx.scratch.current = opts.snapPoint ? opts.snapPoint(raw) : raw;\n ctx.scratch.modifiers = ctx.modifiers;\n writeOverlay();\n opts.onMove?.(buildConsumerCtx());\n },\n onEnd: (ctx) => {\n const opts = optsRef.current;\n const min = opts.minBounds ?? { width: 0, height: 0 };\n const b = boundsFrom(ctx.scratch.start, ctx.scratch.current);\n const isSubThreshold = b.width <= min.width || b.height <= min.height;\n const s = ctx.scratch;\n const endCtx: DragRectEndCtx<TScratch> = {\n get start() { return s.start; },\n get current() { return s.current; },\n get bounds() { return boundsFrom(s.start, s.current); },\n get modifiers() { return s.modifiers; },\n get scratch() { return s.consumer; },\n setStart(p) { s.start = p; writeOverlay(); },\n setCurrent(p) { s.current = p; writeOverlay(); },\n isSubThreshold,\n };\n dlog('drag-rect', 'end', { bounds: b, isSubThreshold });\n let r: boolean | void;\n try {\n r = opts.onEnd?.(endCtx);\n } finally {\n scratchRef.current = null;\n setOverlay(null);\n }\n return r;\n },\n onCancel: () => {\n dlog('drag-rect', 'cancel');\n optsRef.current.onCancel?.(buildConsumerCtx());\n scratchRef.current = null;\n setOverlay(null);\n },\n onGestureStart: () => optsRef.current.onGestureStart?.(),\n onGestureEnd: (committed) => optsRef.current.onGestureEnd?.(committed),\n });\n\n const start = useCallback((worldX: number, worldY: number, modifiers: ModifierState) => {\n gesture.start({ worldX, worldY, clientX: worldX, clientY: worldY }, modifiers);\n }, [gesture]);\n\n const move = useCallback((worldX: number, worldY: number, modifiers: ModifierState): boolean => {\n return gesture.move({ worldX, worldY, clientX: worldX, clientY: worldY }, modifiers);\n }, [gesture]);\n\n return useMemo<DragRectController>(() => ({\n start,\n move,\n end: gesture.end,\n cancel: gesture.cancel,\n overlay,\n isActive: overlay !== null,\n }), [start, move, gesture.end, gesture.cancel, overlay]);\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { useCallback as e, useEffect as t, useRef as n } from "react";
|
|
2
|
+
import { clientToCanvasRect as r, openPointerSession as i } from "@weasel-js/routing";
|
|
3
|
+
//#region src/interactions/gestures/handleDrag/handleDrag.ts
|
|
4
|
+
function a(e) {
|
|
5
|
+
return e instanceof SVGElement && e.ownerSVGElement ? e.ownerSVGElement : e;
|
|
6
|
+
}
|
|
7
|
+
function o(o) {
|
|
8
|
+
let { onMove: s, onStart: c, onEnd: l, onCancel: u, getRect: d } = o, f = n(null);
|
|
9
|
+
return t(() => () => {
|
|
10
|
+
f.current?.cancel();
|
|
11
|
+
}, []), { onPointerDown: e((e) => {
|
|
12
|
+
e.preventDefault(), f.current?.cancel();
|
|
13
|
+
let t = e.currentTarget, n = (d ? d(t) : a(t)).getBoundingClientRect(), o = (e, t) => {
|
|
14
|
+
let [i, a] = r(n, e, t);
|
|
15
|
+
return {
|
|
16
|
+
x: i,
|
|
17
|
+
y: a
|
|
18
|
+
};
|
|
19
|
+
}, p = !1;
|
|
20
|
+
f.current = i(t, e, {
|
|
21
|
+
onMove: (e) => {
|
|
22
|
+
p = !0, s(o(e.clientX, e.clientY), e);
|
|
23
|
+
},
|
|
24
|
+
onEnd: (e) => {
|
|
25
|
+
f.current = null, l?.({
|
|
26
|
+
point: o(e.clientX, e.clientY),
|
|
27
|
+
moved: p,
|
|
28
|
+
event: e
|
|
29
|
+
});
|
|
30
|
+
},
|
|
31
|
+
onCancel: (e) => {
|
|
32
|
+
f.current = null, u?.(e);
|
|
33
|
+
}
|
|
34
|
+
}), c?.(o(e.clientX, e.clientY), e);
|
|
35
|
+
}, [
|
|
36
|
+
s,
|
|
37
|
+
c,
|
|
38
|
+
l,
|
|
39
|
+
u,
|
|
40
|
+
d
|
|
41
|
+
]) };
|
|
42
|
+
}
|
|
43
|
+
//#endregion
|
|
44
|
+
export { o as useHandleDrag };
|
|
45
|
+
|
|
46
|
+
//# sourceMappingURL=handleDrag.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handleDrag.js","names":["defaultRectEl","target","useHandleDrag","opts","live","useRef","useEffect","useCallback","rect","getRect","localOf","x","y","clientToCanvasRect","clientX","clientY","moved","openPointerSession","onMove","ev","onEnd","onCancel","reason","onStart"],"sources":["../../../../src/interactions/gestures/handleDrag/handleDrag.ts"],"sourcesContent":["import { useCallback, useEffect, useRef } from 'react';\nimport { clientToCanvasRect } from '@weasel-js/routing';\nimport { openPointerSession, type PointerSession, type PointerSessionCancelReason } from '@weasel-js/routing';\n\n/** A 2D point in the rect element's local coordinate space. */\nexport interface HandleDragPoint {\n x: number;\n y: number;\n}\n\n/** What a released drag reports. */\nexport interface HandleDragEnd {\n /** Where the pointer was let go, in the rect element's local space. */\n point: HandleDragPoint;\n /** False when the pointer never moved — a press, not a drag. Commit-on-end\n * consumers use this to tell an edit from a stray click. */\n moved: boolean;\n event: PointerEvent;\n}\n\n/** Options for {@link useHandleDrag}. */\nexport interface UseHandleDragOptions<T extends HTMLElement | SVGElement> {\n /** Called on every `pointermove` with coords local to the rect element (see `getRect`). */\n onMove: (p: HandleDragPoint, e: PointerEvent) => void;\n /** Called on `pointerdown` with the same local coords passed to `onMove`. */\n onStart?: (p: HandleDragPoint, e: React.PointerEvent<T>) => void;\n /** The pointer was released. Not called when the drag is cancelled — a\n * cancelled gesture is not an edit, and conflating the two made every\n * commit-on-end consumer sniff the event type to tell them apart. */\n onEnd?: (end: HandleDragEnd) => void;\n /** The drag ended without a release: the pointer was cancelled, capture was\n * lost, or the component unmounted mid-gesture. */\n onCancel?: (reason: PointerSessionCancelReason) => void;\n /**\n * Element whose `getBoundingClientRect()` defines the local coordinate\n * space. Defaults to the handle target's owning `<svg>` if it has one,\n * otherwise the target itself.\n */\n getRect?: (target: T) => Element;\n}\n\n/** Return shape of {@link useHandleDrag}. */\nexport interface UseHandleDragReturn<T extends HTMLElement | SVGElement> {\n onPointerDown: (e: React.PointerEvent<T>) => void;\n}\n\nfunction defaultRectEl(target: HTMLElement | SVGElement): Element {\n if (target instanceof SVGElement && target.ownerSVGElement) {\n return target.ownerSVGElement;\n }\n return target;\n}\n\n/**\n * Pointer drag for SVG/HTML handles. On `pointerdown` opens a\n * {@link openPointerSession | pointer session} on the handle, then forwards\n * every move to `onMove` with coordinates local to the rect-providing element\n * (defaulting to the handle's owning `<svg>`).\n *\n * The rect is measured once, at the press: a handle that moves under its own\n * drag must not shift the space its coordinates are reported in.\n */\nexport function useHandleDrag<T extends HTMLElement | SVGElement>(\n opts: UseHandleDragOptions<T>,\n): UseHandleDragReturn<T> {\n const { onMove, onStart, onEnd, onCancel, getRect } = opts;\n const live = useRef<PointerSession | null>(null);\n\n useEffect(() => () => { live.current?.cancel(); }, []);\n\n const onPointerDown = useCallback(\n (e: React.PointerEvent<T>) => {\n e.preventDefault();\n live.current?.cancel();\n\n const target = e.currentTarget;\n const rectEl = getRect ? getRect(target) : defaultRectEl(target);\n const rect = rectEl.getBoundingClientRect();\n const localOf = (clientX: number, clientY: number): HandleDragPoint => {\n const [x, y] = clientToCanvasRect(rect, clientX, clientY);\n return { x, y };\n };\n\n let moved = false;\n live.current = openPointerSession(target, e, {\n onMove: (ev) => {\n moved = true;\n onMove(localOf(ev.clientX, ev.clientY), ev);\n },\n onEnd: (ev) => {\n live.current = null;\n onEnd?.({ point: localOf(ev.clientX, ev.clientY), moved, event: ev });\n },\n onCancel: (reason) => {\n live.current = null;\n onCancel?.(reason);\n },\n });\n\n onStart?.(localOf(e.clientX, e.clientY), e);\n },\n [onMove, onStart, onEnd, onCancel, getRect],\n );\n\n return { onPointerDown };\n}\n"],"mappings":";;;AA8CA,SAASA,EAAc,GAA2C;CAIhE,OAHIC,aAAkB,cAAcA,EAAO,kBAClCA,EAAO,kBAETA;AACT;AAWA,SAAgBC,EACd,GACwB;CACxB,IAAM,EAAE,WAAQ,YAAS,UAAO,aAAU,eAAYC,GAChDC,IAAOC,EAA8B,IAAI;CAsC/C,OApCAC,cAAsB;EAAE,EAAK,SAAS,OAAO;CAAG,GAAG,CAAC,CAAC,GAoC9C,EAAE,eAlCaC,GACnB,MAA6B;EAE5B,AADA,EAAE,eAAe,GACjBH,EAAK,SAAS,OAAO;EAErB,IAAMH,IAAS,EAAE,eAEXO,KADSC,IAAUA,EAAQR,CAAM,IAAID,EAAcC,CAAM,EAAA,CAC3C,sBAAsB,GACpCS,KAAW,GAAiB,MAAqC;GACrE,IAAM,CAACC,GAAGC,KAAKC,EAAmBL,GAAMM,GAASC,CAAO;GACxD,OAAO;IAAE;IAAG;GAAE;EAChB,GAEIC,IAAQ;EAgBZ,AAfA,EAAK,UAAUC,EAAmBhB,GAAQ,GAAG;GAC3C,SAAS,MAAO;IAEd,AADA,IAAQ,IACRiB,EAAOR,EAAQS,EAAG,SAASA,EAAG,OAAO,GAAGA,CAAE;GAC5C;GACA,QAAQ,MAAO;IAEb,AADA,EAAK,UAAU,MACfC,IAAQ;KAAE,OAAOV,EAAQS,EAAG,SAASA,EAAG,OAAO;KAAG;KAAO,OAAOA;IAAG,CAAC;GACtE;GACA,WAAW,MAAW;IAEpB,AADA,EAAK,UAAU,MACfE,IAAWC,CAAM;GACnB;EACF,CAAC,GAEDC,IAAUb,EAAQ,EAAE,SAAS,EAAE,OAAO,GAAG,CAAC;CAC5C,GACA;EAACQ;EAAQK;EAASH;EAAOC;EAAUZ;CAAO,CAGnC,EAAc;AACzB"}
|