@weasel-js/core 1.7.0 → 1.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +764 -0
- package/README.md +7 -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-BT_vp9FO.d.ts} +2 -2
- package/dist/{builtins-DLn2lCr_.d.ts → builtins-BSUfH8nU.d.ts} +738 -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 +75 -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 +98 -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-CDcZOV8h.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 +44 -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.css +2 -62
- package/dist/index.d.ts +1955 -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 +96 -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 +656 -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 +332 -0
- package/dist/interactions/actions/defaults/resize.js.map +1 -0
- package/dist/interactions/actions/defaults/rotate.js +181 -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 +168 -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 +32 -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-CUMxmZzn.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-BSn4xiEy.d.ts +57 -0
- package/dist/patterns-builtin.js +3 -3
- package/dist/{poseDescriptor-rZa9W5hJ.d.ts → poseDescriptor-CjSXMf8X.d.ts} +3 -3
- 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/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-CA54-mAZ.d.ts} +181 -13
- package/dist/{types-qYpyTAiZ.d.ts → types-DSjd6W3n.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 +29 -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.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,118 @@
|
|
|
1
|
+
import { useCallback as e, useEffect as t, useRef as n } from "react";
|
|
2
|
+
import { useLatest as r } from "@weasel-js/react";
|
|
3
|
+
import { openPointerSession as i, pastDragThreshold as a } from "@weasel-js/routing";
|
|
4
|
+
//#region src/interactions/gestures/pointerDrag/pointerDrag.ts
|
|
5
|
+
var o = /* @__PURE__ */ new Set(), s = null;
|
|
6
|
+
function c(e) {
|
|
7
|
+
return o.add(e), () => {
|
|
8
|
+
s?.lastZone === e && (s.lastZone = null), o.delete(e);
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
function l(e, t, n) {
|
|
12
|
+
let r = document.elementFromPoint(e, t);
|
|
13
|
+
if (!r) return null;
|
|
14
|
+
for (let e of o) if (e.el.contains(r) && e.accepts(n)) return e;
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
function u(e, t) {
|
|
18
|
+
let n = e.getBoundingClientRect(), r = e.cloneNode(!0);
|
|
19
|
+
if (r.style.position = "fixed", r.style.left = "0", r.style.top = "0", r.style.width = `${n.width}px`, r.style.height = `${n.height}px`, r.style.margin = "0", r.style.pointerEvents = "none", r.style.opacity = "0.85", r.style.zIndex = "10000", r.style.transition = "none", r.style.transformOrigin = "center center", t.ids.length > 1) {
|
|
20
|
+
let e = document.createElement("div");
|
|
21
|
+
e.textContent = String(t.ids.length), e.style.position = "absolute", e.style.top = "-6px", e.style.right = "-6px", e.style.background = "#FFC857", e.style.color = "#000", e.style.borderRadius = "999px", e.style.padding = "2px 8px", e.style.fontWeight = "bold", e.style.fontSize = "12px", e.style.boxShadow = "0 2px 6px rgba(0,0,0,0.4)", r.appendChild(e);
|
|
22
|
+
}
|
|
23
|
+
return r;
|
|
24
|
+
}
|
|
25
|
+
function d(e, t, n) {
|
|
26
|
+
e.style.transform = `translate(${t - e.offsetWidth / 2}px, ${n - e.offsetHeight / 2}px) scale(0.92)`;
|
|
27
|
+
}
|
|
28
|
+
function f(e, t, n, r, i) {
|
|
29
|
+
if (s) return null;
|
|
30
|
+
let a = i(t, e);
|
|
31
|
+
document.body.appendChild(a), d(a, n, r), s = {
|
|
32
|
+
payload: e,
|
|
33
|
+
ghost: a,
|
|
34
|
+
lastZone: null
|
|
35
|
+
};
|
|
36
|
+
let o = () => {
|
|
37
|
+
s?.ghost.remove(), s = null;
|
|
38
|
+
};
|
|
39
|
+
return {
|
|
40
|
+
move(t) {
|
|
41
|
+
if (!s) return;
|
|
42
|
+
d(s.ghost, t.clientX, t.clientY);
|
|
43
|
+
let n = l(t.clientX, t.clientY, e.kind);
|
|
44
|
+
n !== s.lastZone && (s.lastZone?.onOver?.(!1), n?.onOver?.(!0), s.lastZone = n), n?.onMove?.(e, t.clientX, t.clientY);
|
|
45
|
+
},
|
|
46
|
+
drop(t) {
|
|
47
|
+
if (!s) return;
|
|
48
|
+
let n = l(t.clientX, t.clientY, e.kind), r = s.payload;
|
|
49
|
+
s.lastZone?.onOver?.(!1);
|
|
50
|
+
try {
|
|
51
|
+
n && n.onDrop(r, t.clientX, t.clientY);
|
|
52
|
+
} catch (e) {
|
|
53
|
+
console.error("weasel pointerDrag: drop zone onDrop threw", e);
|
|
54
|
+
} finally {
|
|
55
|
+
o();
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
cancel() {
|
|
59
|
+
s?.lastZone?.onOver?.(!1), o();
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
function p(o, s) {
|
|
64
|
+
let c = r(s), l = n(null);
|
|
65
|
+
return t(() => () => {
|
|
66
|
+
l.current?.cancel();
|
|
67
|
+
}, []), {
|
|
68
|
+
onPointerDown: e((e) => {
|
|
69
|
+
if (e.pointerType === "mouse" && e.button !== 0) return;
|
|
70
|
+
let t = e.currentTarget;
|
|
71
|
+
if (e.target instanceof HTMLElement && e.target.closest("input, button, select, textarea")) return;
|
|
72
|
+
let n = {
|
|
73
|
+
clientX: e.clientX,
|
|
74
|
+
clientY: e.clientY
|
|
75
|
+
}, r = null, s = !1;
|
|
76
|
+
l.current = i(t, e, {
|
|
77
|
+
onMove: (e) => {
|
|
78
|
+
if (r) {
|
|
79
|
+
r.move(e);
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
if (s || !a(n, e)) return;
|
|
83
|
+
s = !0;
|
|
84
|
+
let i = o();
|
|
85
|
+
i && (t.addEventListener("click", (e) => {
|
|
86
|
+
e.stopPropagation(), e.preventDefault();
|
|
87
|
+
}, {
|
|
88
|
+
capture: !0,
|
|
89
|
+
once: !0
|
|
90
|
+
}), r = f(i, t, e.clientX, e.clientY, c.current?.createGhost ?? u));
|
|
91
|
+
},
|
|
92
|
+
onEnd: (e) => {
|
|
93
|
+
l.current = null, r?.drop(e);
|
|
94
|
+
},
|
|
95
|
+
onCancel: () => {
|
|
96
|
+
l.current = null, r?.cancel();
|
|
97
|
+
}
|
|
98
|
+
}, { capture: !1 });
|
|
99
|
+
}, [o, c]),
|
|
100
|
+
style: { touchAction: "none" }
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
function m(t) {
|
|
104
|
+
let i = r(t), a = n(null);
|
|
105
|
+
return e((e) => {
|
|
106
|
+
a.current?.(), a.current = null, e && (a.current = c({
|
|
107
|
+
el: e,
|
|
108
|
+
accepts: (e) => i.current.accepts(e),
|
|
109
|
+
onDrop: (e, t, n) => i.current.onDrop(e, t, n),
|
|
110
|
+
onOver: (e) => i.current.onOver?.(e),
|
|
111
|
+
onMove: (e, t, n) => i.current.onMove?.(e, t, n)
|
|
112
|
+
}));
|
|
113
|
+
}, [i]);
|
|
114
|
+
}
|
|
115
|
+
//#endregion
|
|
116
|
+
export { p as useDragHandle, m as useDropZone };
|
|
117
|
+
|
|
118
|
+
//# sourceMappingURL=pointerDrag.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pointerDrag.js","names":["dropZones","activeDrag","registerDropZone","zone","findZone","el","x","y","z","kind","defaultGhost","rect","source","clone","payload","badge","positionGhost","beginPointerDrag","ghost","ghostFn","startX","startY","teardown","e","dropped","err","useDragHandle","optsRef","useLatest","options","live","useRef","useEffect","useCallback","target","start","past","openPointerSession","ev","pastDragThreshold","getPayload","ce","useDropZone","opts","cleanupRef","k","p","a"],"sources":["../../../../src/interactions/gestures/pointerDrag/pointerDrag.ts"],"sourcesContent":["import { useCallback, useEffect, useRef } from 'react';\nimport { useLatest } from '@weasel-js/react';\nimport { openPointerSession, pastDragThreshold, type PointerSession } from '@weasel-js/routing';\n\n/** Payload carried by an in-flight pointer drag — `kind` routes to drop zones, `ids` lists the dragged items. */\nexport interface DragPayload {\n kind: string;\n ids: string[];\n data?: unknown;\n}\n\ninterface DropZone {\n el: HTMLElement;\n accepts: (kind: string) => boolean;\n onDrop: (payload: DragPayload, clientX: number, clientY: number) => void;\n onOver?: (active: boolean) => void;\n onMove?: (payload: DragPayload, clientX: number, clientY: number) => void;\n}\n\nconst dropZones = new Set<DropZone>();\nlet activeDrag: { payload: DragPayload; ghost: HTMLElement; lastZone: DropZone | null } | null = null;\n\nfunction registerDropZone(zone: DropZone): () => void {\n dropZones.add(zone);\n return () => {\n if (activeDrag?.lastZone === zone) activeDrag.lastZone = null;\n dropZones.delete(zone);\n };\n}\n\nfunction findZone(x: number, y: number, kind: string): DropZone | null {\n const el = document.elementFromPoint(x, y);\n if (!el) return null;\n for (const z of dropZones) {\n if (z.el.contains(el) && z.accepts(kind)) return z;\n }\n return null;\n}\n\nfunction defaultGhost(source: HTMLElement, payload: DragPayload): HTMLElement {\n const rect = source.getBoundingClientRect();\n const clone = source.cloneNode(true) as HTMLElement;\n clone.style.position = 'fixed';\n clone.style.left = '0';\n clone.style.top = '0';\n clone.style.width = `${rect.width}px`;\n clone.style.height = `${rect.height}px`;\n clone.style.margin = '0';\n clone.style.pointerEvents = 'none';\n clone.style.opacity = '0.85';\n clone.style.zIndex = '10000';\n clone.style.transition = 'none';\n clone.style.transformOrigin = 'center center';\n if (payload.ids.length > 1) {\n const badge = document.createElement('div');\n badge.textContent = String(payload.ids.length);\n badge.style.position = 'absolute';\n badge.style.top = '-6px';\n badge.style.right = '-6px';\n badge.style.background = '#FFC857';\n badge.style.color = '#000';\n badge.style.borderRadius = '999px';\n badge.style.padding = '2px 8px';\n badge.style.fontWeight = 'bold';\n badge.style.fontSize = '12px';\n badge.style.boxShadow = '0 2px 6px rgba(0,0,0,0.4)';\n clone.appendChild(badge);\n }\n return clone;\n}\n\nfunction positionGhost(el: HTMLElement, x: number, y: number) {\n el.style.transform = `translate(${x - el.offsetWidth / 2}px, ${y - el.offsetHeight / 2}px) scale(0.92)`;\n}\n\n/** The ghost-and-zones half of a drag, driven by whoever owns the pointer. */\ninterface GhostDrag {\n move: (e: PointerEvent) => void;\n drop: (e: PointerEvent) => void;\n cancel: () => void;\n}\n\nfunction beginPointerDrag(\n payload: DragPayload,\n source: HTMLElement,\n startX: number,\n startY: number,\n ghostFn: (source: HTMLElement, payload: DragPayload) => HTMLElement,\n): GhostDrag | null {\n if (activeDrag) return null;\n const ghost = ghostFn(source, payload);\n document.body.appendChild(ghost);\n positionGhost(ghost, startX, startY);\n activeDrag = { payload, ghost, lastZone: null };\n\n const teardown = () => {\n activeDrag?.ghost.remove();\n activeDrag = null;\n };\n\n return {\n move(e) {\n if (!activeDrag) return;\n positionGhost(activeDrag.ghost, e.clientX, e.clientY);\n const zone = findZone(e.clientX, e.clientY, payload.kind);\n if (zone !== activeDrag.lastZone) {\n activeDrag.lastZone?.onOver?.(false);\n zone?.onOver?.(true);\n activeDrag.lastZone = zone;\n }\n zone?.onMove?.(payload, e.clientX, e.clientY);\n },\n drop(e) {\n if (!activeDrag) return;\n const zone = findZone(e.clientX, e.clientY, payload.kind);\n const dropped = activeDrag.payload;\n activeDrag.lastZone?.onOver?.(false);\n // `activeDrag` is module state and gates every future drag, so a throwing\n // consumer `onDrop` must not be able to strand it.\n try {\n if (zone) zone.onDrop(dropped, e.clientX, e.clientY);\n } catch (err) {\n console.error('weasel pointerDrag: drop zone onDrop threw', err);\n } finally {\n teardown();\n }\n },\n cancel() {\n activeDrag?.lastZone?.onOver?.(false);\n teardown();\n },\n };\n}\n\n/** Options for `useDragHandle`; supply `createGhost` to override the default DOM-clone ghost. */\nexport interface DragHandleOptions {\n createGhost?: (source: HTMLElement, payload: DragPayload) => HTMLElement;\n}\n\n/** Attach a pointer-driven drag handle: `getPayload` is read at threshold-cross time and a ghost follows the pointer. */\nexport function useDragHandle(\n getPayload: () => DragPayload | null,\n options?: DragHandleOptions,\n) {\n const optsRef = useLatest(options);\n // One session spans the whole press, threshold and all, so a release that\n // never arrives — the row unmounts under the pointer — cannot strand the\n // ghost or its listeners. Before, the two phases owned separate listener\n // triples and only the pre-threshold one was torn down on unmount.\n const live = useRef<PointerSession | null>(null);\n useEffect(() => () => { live.current?.cancel(); }, []);\n\n const onPointerDown = useCallback((e: React.PointerEvent<HTMLElement>) => {\n if (e.pointerType === 'mouse' && e.button !== 0) return;\n const target = e.currentTarget as HTMLElement;\n if (e.target instanceof HTMLElement && e.target.closest('input, button, select, textarea')) return;\n const start = { clientX: e.clientX, clientY: e.clientY };\n let ghost: GhostDrag | null = null;\n let past = false;\n\n // No pointer capture: zones are resolved with `document.elementFromPoint`,\n // which capture would not help, and the source row is free to be removed\n // and re-rendered under the drag.\n live.current = openPointerSession(target, e, {\n onMove: (ev) => {\n if (ghost) { ghost.move(ev); return; }\n if (past) return;\n if (!pastDragThreshold(start, ev)) return;\n past = true;\n const payload = getPayload();\n if (!payload) return;\n target.addEventListener(\n 'click',\n (ce) => { ce.stopPropagation(); ce.preventDefault(); },\n { capture: true, once: true },\n );\n ghost = beginPointerDrag(\n payload, target, ev.clientX, ev.clientY,\n optsRef.current?.createGhost ?? defaultGhost,\n );\n },\n onEnd: (ev) => { live.current = null; ghost?.drop(ev); },\n onCancel: () => { live.current = null; ghost?.cancel(); },\n }, { capture: false });\n }, [getPayload, optsRef]);\n\n return { onPointerDown, style: { touchAction: 'none' as const } };\n}\n\n/** Options for `useDropZone`; `accepts` filters by `payload.kind`. */\nexport interface DropZoneOptions {\n accepts: (kind: string) => boolean;\n onDrop: (payload: DragPayload, clientX: number, clientY: number) => void;\n onOver?: (active: boolean) => void;\n onMove?: (payload: DragPayload, clientX: number, clientY: number) => void;\n}\n\n/** Register an element as a drop zone for `useDragHandle` payloads. Returns a ref-callback. */\nexport function useDropZone<T extends HTMLElement>(opts: DropZoneOptions): (el: T | null) => void {\n const optsRef = useLatest(opts);\n const cleanupRef = useRef<(() => void) | null>(null);\n return useCallback((el: T | null) => {\n cleanupRef.current?.();\n cleanupRef.current = null;\n if (!el) return;\n cleanupRef.current = registerDropZone({\n el,\n accepts: (k) => optsRef.current.accepts(k),\n onDrop: (p, x, y) => optsRef.current.onDrop(p, x, y),\n onOver: (a) => optsRef.current.onOver?.(a),\n onMove: (p, x, y) => optsRef.current.onMove?.(p, x, y),\n });\n }, [optsRef]);\n}\n"],"mappings":";;;;AAmBA,IAAMA,oBAAY,IAAI,IAAc,GAChCC,IAA6F;AAEjG,SAASC,EAAiB,GAA4B;CAEpD,OADAF,EAAU,IAAIG,CAAI,SACL;EAEX,AADIF,GAAY,aAAaE,MAAM,EAAW,WAAW,OACzDH,EAAU,OAAOG,CAAI;CACvB;AACF;AAEA,SAASC,EAAS,GAAW,GAAW,GAA+B;CACrE,IAAMC,IAAK,SAAS,iBAAiBC,GAAGC,CAAC;CACzC,IAAI,CAACF,GAAI,OAAO;CAChB,KAAK,IAAMG,KAAKR,GACd,IAAIQ,EAAE,GAAG,SAASH,CAAE,KAAKG,EAAE,QAAQC,CAAI,GAAG,OAAOD;CAEnD,OAAO;AACT;AAEA,SAASE,EAAa,GAAqB,GAAmC;CAC5E,IAAMC,IAAOC,EAAO,sBAAsB,GACpCC,IAAQD,EAAO,UAAU,EAAI;CAYnC,IAXA,EAAM,MAAM,WAAW,SACvB,EAAM,MAAM,OAAO,KACnB,EAAM,MAAM,MAAM,KAClB,EAAM,MAAM,QAAQ,GAAGD,EAAK,MAAM,KAClC,EAAM,MAAM,SAAS,GAAGA,EAAK,OAAO,KACpC,EAAM,MAAM,SAAS,KACrB,EAAM,MAAM,gBAAgB,QAC5B,EAAM,MAAM,UAAU,QACtB,EAAM,MAAM,SAAS,SACrB,EAAM,MAAM,aAAa,QACzB,EAAM,MAAM,kBAAkB,iBAC1BG,EAAQ,IAAI,SAAS,GAAG;EAC1B,IAAMC,IAAQ,SAAS,cAAc,KAAK;EAY1C,AAXA,EAAM,cAAc,OAAOD,EAAQ,IAAI,MAAM,GAC7C,EAAM,MAAM,WAAW,YACvB,EAAM,MAAM,MAAM,QAClB,EAAM,MAAM,QAAQ,QACpB,EAAM,MAAM,aAAa,WACzB,EAAM,MAAM,QAAQ,QACpB,EAAM,MAAM,eAAe,SAC3B,EAAM,MAAM,UAAU,WACtB,EAAM,MAAM,aAAa,QACzB,EAAM,MAAM,WAAW,QACvB,EAAM,MAAM,YAAY,6BACxBD,EAAM,YAAYE,CAAK;CACzB;CACA,OAAOF;AACT;AAEA,SAASG,EAAc,GAAiB,GAAW,GAAW;CAC5D,EAAG,MAAM,YAAY,aAAaV,IAAID,EAAG,cAAc,EAAE,MAAME,IAAIF,EAAG,eAAe,EAAE;AACzF;AASA,SAASY,EACP,GACA,GACA,GACA,GACA,GACkB;CAClB,IAAIhB,GAAY,OAAO;CACvB,IAAMiB,IAAQC,EAAQP,GAAQE,CAAO;CAGrC,AAFA,SAAS,KAAK,YAAYI,CAAK,GAC/BF,EAAcE,GAAOE,GAAQC,CAAM,GACnC,IAAa;EAAE;EAAS;EAAO,UAAU;CAAK;CAE9C,IAAMC,UAAiB;EAErB,AADArB,GAAY,MAAM,OAAO,GACzB,IAAa;CACf;CAEA,OAAO;EACL,KAAK,GAAG;GACN,IAAI,CAACA,GAAY;GACjB,EAAcA,EAAW,OAAOsB,EAAE,SAASA,EAAE,OAAO;GACpD,IAAMpB,IAAOC,EAASmB,EAAE,SAASA,EAAE,SAAST,EAAQ,IAAI;GAMxD,AALIX,MAASF,EAAW,aACtBA,EAAW,UAAU,SAAS,EAAK,GACnCE,GAAM,SAAS,EAAI,GACnB,EAAW,WAAWA,IAExBA,GAAM,SAASW,GAASS,EAAE,SAASA,EAAE,OAAO;EAC9C;EACA,KAAK,GAAG;GACN,IAAI,CAACtB,GAAY;GACjB,IAAME,IAAOC,EAASmB,EAAE,SAASA,EAAE,SAAST,EAAQ,IAAI,GAClDU,IAAUvB,EAAW;GAC3B,EAAW,UAAU,SAAS,EAAK;GAGnC,IAAI;IACF,AAAIE,KAAMA,EAAK,OAAOqB,GAASD,EAAE,SAASA,EAAE,OAAO;GACrD,SAASE,GAAK;IACZ,QAAQ,MAAM,8CAA8CA,CAAG;GACjE,UAAU;IACR,EAAS;GACX;EACF;EACA,SAAS;GAEP,AADAxB,GAAY,UAAU,SAAS,EAAK,GACpCqB,EAAS;EACX;CACF;AACF;AAQA,SAAgBI,EACd,GACA,GACA;CACA,IAAMC,IAAUC,EAAUC,CAAO,GAK3BC,IAAOC,EAA8B,IAAI;CAqC/C,OApCAC,cAAsB;EAAE,EAAK,SAAS,OAAO;CAAG,GAAG,CAAC,CAAC,GAoC9C;EAAE,eAlCaC,GAAa,MAAuC;GACxE,IAAI,EAAE,gBAAgB,WAAW,EAAE,WAAW,GAAG;GACjD,IAAMC,IAAS,EAAE;GACjB,IAAI,EAAE,kBAAkB,eAAe,EAAE,OAAO,QAAQ,iCAAiC,GAAG;GAC5F,IAAMC,IAAQ;IAAE,SAAS,EAAE;IAAS,SAAS,EAAE;GAAQ,GACnDjB,IAA0B,MAC1BkB,IAAO;GAKX,EAAK,UAAUC,EAAmBH,GAAQ,GAAG;IAC3C,SAAS,MAAO;KACd,IAAIhB,GAAO;MAAE,EAAM,KAAKoB,CAAE;MAAG;KAAQ;KAErC,IADIF,KACA,CAACG,EAAkBJ,GAAOG,CAAE,GAAG;KACnC,IAAO;KACP,IAAMxB,IAAU0B,EAAW;KAC3B,AAAK1B,MACLoB,EAAO,iBACL,UACC,MAAO;MAAwB,AAAtBO,EAAG,gBAAgB,GAAGA,EAAG,eAAe;KAAG,GACrD;MAAE,SAAS;MAAM,MAAM;KAAK,CAC9B,GACA,IAAQxB,EACNH,GAASoB,GAAQI,EAAG,SAASA,EAAG,SAChCX,EAAQ,SAAS,eAAejB,CAClC;IACF;IACA,QAAQ,MAAO;KAAuB,AAArB,EAAK,UAAU,MAAMQ,GAAO,KAAKoB,CAAE;IAAG;IACvD,gBAAgB;KAAuB,AAArB,EAAK,UAAU,MAAMpB,GAAO,OAAO;IAAG;GAC1D,GAAG,EAAE,SAAS,GAAM,CAAC;EACvB,GAAG,CAACsB,GAAYb,CAAO,CAEd;EAAe,OAAO,EAAE,aAAa,OAAgB;CAAE;AAClE;AAWA,SAAgBe,EAAmC,GAA+C;CAChG,IAAMf,IAAUC,EAAUe,CAAI,GACxBC,IAAab,EAA4B,IAAI;CACnD,OAAOE,GAAa,MAAiB;EAGnC,AAFAW,EAAW,UAAU,GACrB,EAAW,UAAU,MAChBvC,MACL,EAAW,UAAUH,EAAiB;GACpC;GACA,UAAU,MAAMyB,EAAQ,QAAQ,QAAQkB,CAAC;GACzC,SAAS,GAAG,GAAG,MAAMlB,EAAQ,QAAQ,OAAOmB,GAAGxC,GAAGC,CAAC;GACnD,SAAS,MAAMoB,EAAQ,QAAQ,SAASoB,CAAC;GACzC,SAAS,GAAG,GAAG,MAAMpB,EAAQ,QAAQ,SAASmB,GAAGxC,GAAGC,CAAC;EACvD,CAAC;CACH,GAAG,CAACoB,CAAO,CAAC;AACd"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { isPathLike as e } from "../../actions/resize/autoPoseDescriptor.js";
|
|
2
|
+
import { boundsOfPath as t, translatePath as n } from "@weasel-js/geom";
|
|
3
|
+
//#region src/interactions/gestures/shared/originProjection.ts
|
|
4
|
+
var r = {
|
|
5
|
+
getOrigin: (e) => ({
|
|
6
|
+
x: e.x,
|
|
7
|
+
y: e.y
|
|
8
|
+
}),
|
|
9
|
+
translate: (e, t, n) => ({
|
|
10
|
+
...e,
|
|
11
|
+
x: e.x + t,
|
|
12
|
+
y: e.y + n
|
|
13
|
+
})
|
|
14
|
+
}, i = {
|
|
15
|
+
getOrigin: (n) => {
|
|
16
|
+
if (e(n)) {
|
|
17
|
+
let e = t(n);
|
|
18
|
+
return {
|
|
19
|
+
x: e.x,
|
|
20
|
+
y: e.y
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
let r = n;
|
|
24
|
+
return {
|
|
25
|
+
x: r.x,
|
|
26
|
+
y: r.y
|
|
27
|
+
};
|
|
28
|
+
},
|
|
29
|
+
translate: (t, r, i) => {
|
|
30
|
+
if (e(t)) return n(t, r, i);
|
|
31
|
+
let a = t;
|
|
32
|
+
return {
|
|
33
|
+
...a,
|
|
34
|
+
x: a.x + r,
|
|
35
|
+
y: a.y + i
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
//#endregion
|
|
40
|
+
export { i as AUTO_ORIGIN_PROJECTION, r as RECT_ORIGIN_PROJECTION };
|
|
41
|
+
|
|
42
|
+
//# sourceMappingURL=originProjection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"originProjection.js","names":["RECT_ORIGIN_PROJECTION","p","dx","dy","AUTO_ORIGIN_PROJECTION","isPathLike","b","boundsOfPath","translatePath","r"],"sources":["../../../../src/interactions/gestures/shared/originProjection.ts"],"sourcesContent":["import { isPathLike } from 'interactions/actions/resize/autoPoseDescriptor';\nimport { boundsOfPath, translatePath, type Path } from '@weasel-js/geom';\n\n/**\n * How a snap reads and moves a pose that doesn't expose `{x,y}` directly\n * (Path, polygon, etc.): `getOrigin` gives the point a snap strategy rounds,\n * and `translate` moves the pose by the resulting delta.\n */\nexport interface OriginProjection<TPose> {\n getOrigin(pose: TPose): { x: number; y: number };\n translate(pose: TPose, dx: number, dy: number): TPose;\n}\n\n/** Identity projection for `TPose extends { x; y }`. */\nexport const RECT_ORIGIN_PROJECTION: OriginProjection<{ x: number; y: number }> = {\n getOrigin: (p) => ({ x: p.x, y: p.y }),\n translate: (p, dx, dy) => ({ ...p, x: p.x + dx, y: p.y + dy }),\n};\n\n/** Per-call dispatch: routes Path-shaped poses to the path origin/translate\n * helpers and everything else to `RECT_ORIGIN_PROJECTION`. The default for\n * `snap` and the snap strategies, so consumers with Path TPose don't have to\n * thread `pathOriginProjection` explicitly. */\nexport const AUTO_ORIGIN_PROJECTION: OriginProjection<unknown> = {\n getOrigin: (p) => {\n if (isPathLike(p)) {\n const b = boundsOfPath(p as Path);\n return { x: b.x, y: b.y };\n }\n const r = p as { x: number; y: number };\n return { x: r.x, y: r.y };\n },\n translate: (p, dx, dy) => {\n if (isPathLike(p)) return translatePath(p as Path, dx, dy);\n const r = p as { x: number; y: number };\n return { ...r, x: r.x + dx, y: r.y + dy };\n },\n};\n"],"mappings":";;;AAcA,IAAaA,IAAqE;CAChF,YAAY,OAAO;EAAE,GAAGC,EAAE;EAAG,GAAGA,EAAE;CAAE;CACpC,YAAY,GAAG,GAAI,OAAQ;EAAE,GAAGA;EAAG,GAAGA,EAAE,IAAIC;EAAI,GAAGD,EAAE,IAAIE;CAAG;AAC9D,GAMaC,IAAoD;CAC/D,YAAY,MAAM;EAChB,IAAIC,EAAWJ,CAAC,GAAG;GACjB,IAAMK,IAAIC,EAAaN,CAAS;GAChC,OAAO;IAAE,GAAGK,EAAE;IAAG,GAAGA,EAAE;GAAE;EAC1B;EACA,IAAM,IAAIL;EACV,OAAO;GAAE,GAAG,EAAE;GAAG,GAAG,EAAE;EAAE;CAC1B;CACA,YAAY,GAAG,GAAI,MAAO;EACxB,IAAII,EAAWJ,CAAC,GAAG,OAAOO,EAAcP,GAAWC,GAAIC,CAAE;EACzD,IAAMM,IAAIR;EACV,OAAO;GAAE,GAAGQ;GAAG,GAAGA,EAAE,IAAIP;GAAI,GAAGO,EAAE,IAAIN;EAAG;CAC1C;AACF"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { pxExtent as e } from "../../../core/viewport/pxExtent.js";
|
|
2
|
+
//#region src/interactions/gestures/shared/screenTolerance.ts
|
|
3
|
+
function t(t, n) {
|
|
4
|
+
let r = n.view;
|
|
5
|
+
return r ? e(t, r.scale) : {
|
|
6
|
+
x: t,
|
|
7
|
+
y: t
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
function n(e) {
|
|
11
|
+
let t = e.view;
|
|
12
|
+
return () => t?.get() ?? null;
|
|
13
|
+
}
|
|
14
|
+
function r(e) {
|
|
15
|
+
let t = e.view;
|
|
16
|
+
return () => t?.plane?.() ?? null;
|
|
17
|
+
}
|
|
18
|
+
//#endregion
|
|
19
|
+
export { r as gesturePlaneReader, n as gestureViewReader, t as screenTolerance };
|
|
20
|
+
|
|
21
|
+
//# sourceMappingURL=screenTolerance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"screenTolerance.js","names":["screenTolerance","view","ctx","pxExtent","px","gestureViewReader","api","deps","gesturePlaneReader"],"sources":["../../../../src/interactions/gestures/shared/screenTolerance.ts"],"sourcesContent":["import type { View } from 'core/viewport/view';\nimport type { PlaneMap } from 'core/viewport/parallax';\nimport { pxExtent } from 'core/viewport/pxExtent';\nimport type { GestureContext } from '../types';\nimport type { ViewApi } from 'interactions/actions/depSchema';\n\n/** A screen-pixel tolerance in world units, per axis, through the camera of\n * the view the gesture landed in. With no view, one pixel is one unit. */\nexport function screenTolerance(\n px: number,\n ctx: Pick<GestureContext<unknown>, 'view'>,\n): { x: number; y: number } {\n const view: View | null = ctx.view;\n return view ? pxExtent(px, view.scale) : { x: px, y: px };\n}\n\n/** Reads the camera the gesture's `deps.view` answers for — the routed\n * view's, when the surface hosts several. Capture it at `start`: the\n * dispatcher hands `onMove` no deps. */\nexport function gestureViewReader(deps: { view?: unknown }): () => View | null {\n const api = deps.view as ViewApi | undefined;\n return () => api?.get() ?? null;\n}\n\n/** Reads the plane the gesture edits in, off the same `deps.view` — see\n * `ViewApi.plane`. Null in the camera's own world. */\nexport function gesturePlaneReader(deps: { view?: unknown }): () => PlaneMap | null {\n const api = deps.view as ViewApi | undefined;\n return () => api?.plane?.() ?? null;\n}\n"],"mappings":";;AAQA,SAAgBA,EACd,GACA,GAC0B;CAC1B,IAAMC,IAAoBC,EAAI;CAC9B,OAAOD,IAAOE,EAASC,GAAIH,EAAK,KAAK,IAAI;EAAE,GAAGG;EAAI,GAAGA;CAAG;AAC1D;AAKA,SAAgBC,EAAkB,GAA6C;CAC7E,IAAMC,IAAMC,EAAK;CACjB,aAAaD,GAAK,IAAI,KAAK;AAC7B;AAIA,SAAgBE,EAAmB,GAAiD;CAClF,IAAMF,IAAMC,EAAK;CACjB,aAAaD,GAAK,QAAQ,KAAK;AACjC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { AUTO_ORIGIN_PROJECTION as e } from "./originProjection.js";
|
|
2
|
+
//#region src/interactions/gestures/shared/snap.ts
|
|
3
|
+
function t(t, n = {}) {
|
|
4
|
+
let { bypassKey: r } = n, i = n.origin ?? e;
|
|
5
|
+
return { onMove(e, n) {
|
|
6
|
+
if (r && e.modifiers[r] || n.kind !== "translate") return;
|
|
7
|
+
let a = e.draggedIds[0];
|
|
8
|
+
if (a === void 0) return;
|
|
9
|
+
let o = e.origin.get(a);
|
|
10
|
+
if (o === void 0) return;
|
|
11
|
+
let s = i.translate(o, n.dx, n.dy), c = t.snap(s, e);
|
|
12
|
+
if (c === null) return;
|
|
13
|
+
let l = i.getOrigin(o), u = i.getOrigin(c);
|
|
14
|
+
return { transform: {
|
|
15
|
+
kind: "translate",
|
|
16
|
+
dx: u.x - l.x,
|
|
17
|
+
dy: u.y - l.y
|
|
18
|
+
} };
|
|
19
|
+
} };
|
|
20
|
+
}
|
|
21
|
+
//#endregion
|
|
22
|
+
export { t as snap };
|
|
23
|
+
|
|
24
|
+
//# sourceMappingURL=snap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snap.js","names":["snap","opts","proj","AUTO_ORIGIN_PROJECTION","bypassKey","ctx","transform","primaryId","originPose","proposed","snapped","strategy","o0","o1"],"sources":["../../../../src/interactions/gestures/shared/snap.ts"],"sourcesContent":["import type { MoveBehavior, ModifierState, SnapStrategy } from '../types';\nimport {\n AUTO_ORIGIN_PROJECTION,\n type OriginProjection,\n} from './originProjection';\n\ntype ModKey = keyof ModifierState;\n\n/**\n * Generic snap behavior factory: wraps a `SnapStrategy` and returns a\n * `MoveBehavior` whose `onMove` returns a uniform `GroupTransform`.\n *\n * Implementation:\n * 1. Compute the primary's proposed pose by applying the gesture's\n * `transform` (translate) to `origin.get(primaryId)`.\n * 2. Call `strategy.snap(proposed)`. If null, no-op.\n * 3. Derive the snapped delta via the `OriginProjection`:\n * dx = origin(snapped).x - origin(originPose).x\n * ...so the gesture applies the same delta to every dragged id.\n *\n * The pose-shape-aware delta extraction lives here — gestures stay pose-shape\n * agnostic. Default projection reads a rect's `{x, y}` or a Path's bounds\n * origin, the same default the snap strategies use.\n * Pass `origin` for exotic poses.\n */\nexport function snap<TPose>(\n strategy: SnapStrategy<TPose>,\n opts: { bypassKey?: ModKey; origin?: OriginProjection<TPose> } = {},\n): MoveBehavior<TPose> {\n const { bypassKey } = opts;\n const proj: OriginProjection<TPose> = opts.origin\n ?? (AUTO_ORIGIN_PROJECTION as unknown as OriginProjection<TPose>);\n return {\n onMove(ctx, transform) {\n if (bypassKey && ctx.modifiers[bypassKey]) return;\n // The new contract: behaviors see a GroupTransform, not a pose. But\n // strategies still operate on poses. Reconstruct the proposed pose\n // by applying the (translate) transform to the primary's origin.\n if (transform.kind !== 'translate') return;\n const primaryId = ctx.draggedIds[0];\n if (primaryId === undefined) return;\n const originPose = ctx.origin.get(primaryId);\n if (originPose === undefined) return;\n const proposed = proj.translate(originPose, transform.dx, transform.dy);\n const snapped = strategy.snap(proposed, ctx);\n if (snapped === null) return;\n const o0 = proj.getOrigin(originPose);\n const o1 = proj.getOrigin(snapped);\n return {\n transform: { kind: 'translate', dx: o1.x - o0.x, dy: o1.y - o0.y },\n };\n },\n };\n}\n"],"mappings":";;AAyBA,SAAgBA,EACd,GACA,IAAiE,CAAC,GAC7C;CACrB,IAAM,EAAE,iBAAcC,GAChBC,IAAgCD,EAAK,UACrCE;CACN,OAAO,EACL,OAAO,GAAK,GAAW;EAKrB,IAJIC,KAAaC,EAAI,UAAUD,MAI3BE,EAAU,SAAS,aAAa;EACpC,IAAMC,IAAYF,EAAI,WAAW;EACjC,IAAIE,MAAc,KAAA,GAAW;EAC7B,IAAMC,IAAaH,EAAI,OAAO,IAAIE,CAAS;EAC3C,IAAIC,MAAe,KAAA,GAAW;EAC9B,IAAMC,IAAWP,EAAK,UAAUM,GAAYF,EAAU,IAAIA,EAAU,EAAE,GAChEI,IAAUC,EAAS,KAAKF,GAAUJ,CAAG;EAC3C,IAAIK,MAAY,MAAM;EACtB,IAAME,IAAKV,EAAK,UAAUM,CAAU,GAC9BK,IAAKX,EAAK,UAAUQ,CAAO;EACjC,OAAO,EACL,WAAW;GAAE,MAAM;GAAa,IAAIG,EAAG,IAAID,EAAG;GAAG,IAAIC,EAAG,IAAID,EAAG;EAAE,EACnE;CACF,EACF;AACF"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { openPointerSession as e, pastDragThreshold as t } from "@weasel-js/routing";
|
|
2
|
+
//#region src/interactions/gestures/thresholdDrag/thresholdDrag.ts
|
|
3
|
+
function n(n, r) {
|
|
4
|
+
let i = {
|
|
5
|
+
clientX: n.clientX,
|
|
6
|
+
clientY: n.clientY
|
|
7
|
+
}, a = !1, o = (e) => {
|
|
8
|
+
a || t(i, e, r.threshold) && (a = !0, r.onActivate?.(e));
|
|
9
|
+
}, s = e(r.origin ?? n.currentTarget, n, {
|
|
10
|
+
onMove: (e) => {
|
|
11
|
+
o(e), a && r.onMove(e);
|
|
12
|
+
},
|
|
13
|
+
onEnd: (e) => {
|
|
14
|
+
a ? r.onCommit(e) : r.onClick?.(e);
|
|
15
|
+
},
|
|
16
|
+
onCancel: () => {
|
|
17
|
+
r.onCancel?.();
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
return {
|
|
21
|
+
isDragging: () => a,
|
|
22
|
+
cancel: () => {
|
|
23
|
+
s.cancel();
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
//#endregion
|
|
28
|
+
export { n as startThresholdDrag };
|
|
29
|
+
|
|
30
|
+
//# sourceMappingURL=thresholdDrag.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"thresholdDrag.js","names":["startThresholdDrag","start","e","activated","maybeActivate","pastDragThreshold","ev","opts","session","openPointerSession"],"sources":["../../../../src/interactions/gestures/thresholdDrag/thresholdDrag.ts"],"sourcesContent":["import { openPointerSession, pastDragThreshold } from '@weasel-js/routing';\n\n/**\n * A drag that does not start until the pointer has moved far enough to mean\n * it. Below the threshold the gesture is still a click; above it, `onActivate`\n * fires once and every later move is a drag.\n *\n * The pointer lifecycle underneath — capture, pointer identity, lost-capture\n * and missed-release recovery, teardown — belongs to `openPointerSession`.\n */\nexport interface ThresholdDragOptions {\n /** Travel, in CSS pixels, that makes the press a drag. Default `DRAG_THRESHOLD_PX`. */\n threshold?: number;\n /** Element the session opens on. Defaults to `e.currentTarget`; a list must\n * pass its container, since a grabbed row unmounting drops capture. */\n origin?: Element;\n onActivate?: (e: PointerEvent) => void;\n onMove: (e: PointerEvent) => void;\n onCommit: (e: PointerEvent) => void;\n /** Released below the threshold — the click the press turned out to be. */\n onClick?: (e: PointerEvent) => void;\n /** Ended without a release: pointercancel, lost capture, or `cancel()`. */\n onCancel?: () => void;\n}\n\n/** Handle returned by `startThresholdDrag` exposing live gesture state. */\nexport interface ThresholdDragHandle {\n /** True after the pointer has moved past `threshold` and the drag is live. */\n isDragging: () => boolean;\n /** End the gesture now, as a cancel. For an unmount, an Escape, or any other\n * rule the caller owns. */\n cancel: () => void;\n}\n\n/** Begin a threshold-gated drag from a React PointerDown event; returns a handle exposing live state. */\nexport function startThresholdDrag(\n e: React.PointerEvent,\n opts: ThresholdDragOptions,\n): ThresholdDragHandle {\n const start = { clientX: e.clientX, clientY: e.clientY };\n let activated = false;\n\n const maybeActivate = (ev: PointerEvent) => {\n if (activated) return;\n if (!pastDragThreshold(start, ev, opts.threshold)) return;\n activated = true;\n opts.onActivate?.(ev);\n };\n\n const session = openPointerSession(opts.origin ?? (e.currentTarget as Element), e, {\n onMove: (ev) => {\n maybeActivate(ev);\n if (activated) opts.onMove(ev);\n },\n onEnd: (ev) => {\n if (activated) opts.onCommit(ev);\n else opts.onClick?.(ev);\n },\n onCancel: () => { opts.onCancel?.(); },\n });\n\n return {\n isDragging: () => activated,\n cancel: () => { session.cancel(); },\n };\n}\n"],"mappings":";;AAmCA,SAAgBA,EACd,GACA,GACqB;CACrB,IAAMC,IAAQ;EAAE,SAASC,EAAE;EAAS,SAASA,EAAE;CAAQ,GACnDC,IAAY,IAEVC,KAAiB,MAAqB;EAC1C,AAAID,KACCE,EAAkBJ,GAAOK,GAAIC,EAAK,SAAS,MAChD,IAAY,IACZA,EAAK,aAAaD,CAAE;CACtB,GAEME,IAAUC,EAAmBF,EAAK,UAAWL,EAAE,eAA2BA,GAAG;EACjF,SAAS,MAAO;GAEd,AADAE,EAAcE,CAAE,GACZH,KAAWI,EAAK,OAAOD,CAAE;EAC/B;EACA,QAAQ,MAAO;GACb,AAAIH,IAAWI,EAAK,SAASD,CAAE,IAC1BC,EAAK,UAAUD,CAAE;EACxB;EACA,gBAAgB;GAAE,EAAK,WAAW;EAAG;CACvC,CAAC;CAED,OAAO;EACL,kBAAkBH;EAClB,cAAc;GAAE,EAAQ,OAAO;EAAG;CACpC;AACF"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { IDENTITY_POSE_COMPOSITION as e } from "../core/scene/composeFrame.js";
|
|
2
|
+
import { poseDescriptorForNode as t } from "../core/geometry/poseDescriptor.js";
|
|
3
|
+
import { AUTO_POSE_DESCRIPTOR as n } from "../interactions/actions/resize/autoPoseDescriptor.js";
|
|
4
|
+
import { runLayoutPass as r } from "../core/scene/layoutPass.js";
|
|
5
|
+
import { useEffect as i } from "react";
|
|
6
|
+
import { useLatest as a } from "@weasel-js/react";
|
|
7
|
+
//#region src/layout/arrivals.ts
|
|
8
|
+
function o(i, a) {
|
|
9
|
+
let { layouts: o } = a, s = typeof o == "function" ? o : (e) => o[e] ?? null, c = (e) => i.layoutOf(e) ?? s(e), l = a.poseDescriptor ?? n, u = (e) => t(l, i.get(e)), d = {
|
|
10
|
+
bounds: (e, t) => u(t).getBounds(e),
|
|
11
|
+
remap: (e, t, n, r) => u(r).remapBounds(e, t, n),
|
|
12
|
+
composition: a.poseComposition ?? e
|
|
13
|
+
};
|
|
14
|
+
return (e, t, n) => r(i, c, e, t, d, n);
|
|
15
|
+
}
|
|
16
|
+
function s(e, t) {
|
|
17
|
+
let n = a(t), r = t.layouts !== void 0;
|
|
18
|
+
i(() => {
|
|
19
|
+
if (r) return e.setArrivalHandler((t, r, i) => {
|
|
20
|
+
let { layouts: a, poseDescriptor: s, poseComposition: c } = n.current;
|
|
21
|
+
return a ? o(e, {
|
|
22
|
+
layouts: a,
|
|
23
|
+
poseDescriptor: s,
|
|
24
|
+
poseComposition: c
|
|
25
|
+
})(t, r, i) : /* @__PURE__ */ new Map();
|
|
26
|
+
});
|
|
27
|
+
}, [
|
|
28
|
+
e,
|
|
29
|
+
r,
|
|
30
|
+
n
|
|
31
|
+
]);
|
|
32
|
+
}
|
|
33
|
+
//#endregion
|
|
34
|
+
export { o as layoutArrivalHandler, s as useLayoutArrivals };
|
|
35
|
+
|
|
36
|
+
//# sourceMappingURL=arrivals.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arrivals.js","names":["layoutArrivalHandler","opts","getLayout","layouts","id","layoutOf","scene","d","AUTO_POSE_DESCRIPTOR","descriptorOf","poseDescriptorForNode","frame","pose","from","to","IDENTITY_POSE_COMPOSITION","runLayoutPass","arrivals","changed","departures","useLayoutArrivals","latest","useLatest","wired"],"sources":["../../src/layout/arrivals.ts"],"sourcesContent":["import { useEffect } from 'react';\nimport { useLatest } from '@weasel-js/react';\nimport { runLayoutPass, type ResolvedLayoutFrame } from 'core/scene/layoutPass';\nimport type { NodeId, Scene, SceneArrivalHandler } from 'core/scene/types';\nimport { poseDescriptorForNode, type PoseDescriptor } from 'core/geometry/poseDescriptor';\nimport { AUTO_POSE_DESCRIPTOR } from 'interactions/actions/resize/autoPoseDescriptor';\nimport { IDENTITY_POSE_COMPOSITION, type PoseComposition } from 'features/groups/composePose';\nimport type { LayoutStrategy } from './types';\n\n/** Where a container's layout comes from: a map by container id, or a\n * resolver. The same shape `<SceneCanvas layouts>` takes. */\nexport type LayoutSource<TPose> =\n | Record<string, LayoutStrategy<TPose>>\n | ((containerId: string) => LayoutStrategy<TPose> | null);\n\n/** Options for {@link layoutArrivalHandler} and {@link useLayoutArrivals}. */\nexport interface LayoutArrivalOptions<TPose> {\n layouts: LayoutSource<TPose>;\n /** How poses are read and resized. Default `AUTO_POSE_DESCRIPTOR`. */\n poseDescriptor?: PoseDescriptor<TPose>;\n /** How a child's stored pose folds into its parent's frame. Default: the\n * absolute-pose model, where it does not. */\n poseComposition?: PoseComposition<TPose>;\n}\n\n/**\n * A scene arrival handler over `layouts`: the scene's own layout pass\n * (`depart` for children that left a container, `arrive` for children that\n * joined it, `childPoses` for any other change to its children or size),\n * measured through the canvas's pose\n * descriptor and composition. A container that declares its own layout\n * (`ContainerNode.layout`) is arranged by that one; `layouts` fills in for\n * the rest.\n */\nexport function layoutArrivalHandler<TData, TLayer extends string, TPose>(\n scene: Scene<TData, TLayer, TPose>,\n opts: LayoutArrivalOptions<TPose>,\n): SceneArrivalHandler<TPose> {\n const { layouts } = opts;\n const getLayout = typeof layouts === 'function'\n ? layouts\n : (id: string) => layouts[id] ?? null;\n const layoutOf = (id: NodeId) => scene.layoutOf(id) ?? getLayout(id as string);\n const d = (opts.poseDescriptor ?? AUTO_POSE_DESCRIPTOR) as PoseDescriptor<TPose>;\n const descriptorOf = (id: NodeId) => poseDescriptorForNode(d, scene.get(id));\n const frame: ResolvedLayoutFrame<TPose> = {\n bounds: (pose, id) => descriptorOf(id).getBounds(pose),\n remap: (pose, from, to, id) => descriptorOf(id).remapBounds(pose, from, to),\n composition: (opts.poseComposition ?? IDENTITY_POSE_COMPOSITION) as PoseComposition<TPose>,\n };\n return (arrivals, changed, departures) =>\n runLayoutPass(scene, layoutOf, arrivals, changed, frame, departures);\n}\n\n/**\n * Install {@link layoutArrivalHandler} on `scene` for as long as the calling\n * component is mounted. `<SceneCanvas layouts>` does this itself; call it\n * when a canvas is wired by hand through `sceneToAdapter({ layouts })`.\n */\nexport function useLayoutArrivals<TData, TLayer extends string, TPose>(\n scene: Scene<TData, TLayer, TPose>,\n opts: Partial<LayoutArrivalOptions<TPose>>,\n): void {\n const latest = useLatest(opts);\n const wired = opts.layouts !== undefined;\n useEffect(() => {\n if (!wired) return;\n return scene.setArrivalHandler((arrivals, changed, departures) => {\n const { layouts, poseDescriptor, poseComposition } = latest.current;\n if (!layouts) return new Map();\n return layoutArrivalHandler(scene, { layouts, poseDescriptor, poseComposition })(arrivals, changed, departures);\n });\n }, [scene, wired, latest]);\n}\n"],"mappings":";;;;;;;AAkCA,SAAgBA,EACd,GACA,GAC4B;CAC5B,IAAM,EAAE,eAAYC,GACdC,IAAY,OAAOC,KAAY,aACjCA,KACC,MAAeA,EAAQC,MAAO,MAC7BC,KAAY,MAAeC,EAAM,SAASF,CAAE,KAAKF,EAAUE,CAAY,GACvEG,IAAKN,EAAK,kBAAkBO,GAC5BC,KAAgB,MAAeC,EAAsBH,GAAGD,EAAM,IAAIF,CAAE,CAAC,GACrEO,IAAoC;EACxC,SAAS,GAAM,MAAOF,EAAaL,CAAE,CAAC,CAAC,UAAUQ,CAAI;EACrD,QAAQ,GAAM,GAAM,GAAI,MAAOH,EAAaL,CAAE,CAAC,CAAC,YAAYQ,GAAMC,GAAMC,CAAE;EAC1E,aAAcb,EAAK,mBAAmBc;CACxC;CACA,QAAQ,GAAU,GAAS,MACzBC,EAAcV,GAAOD,GAAUY,GAAUC,GAASP,GAAOQ,CAAU;AACvE;AAOA,SAAgBC,EACd,GACA,GACM;CACN,IAAMC,IAASC,EAAUrB,CAAI,GACvBsB,IAAQtB,EAAK,YAAY,KAAA;CAC/B,QAAgB;EACd,IAAKsB,GACL,OAAOjB,EAAM,mBAAmB,GAAU,GAAS,MAAe;GAChE,IAAM,EAAE,YAAS,mBAAgB,uBAAoBe,EAAO;GAE5D,OADKlB,IACEH,EAAqBM,GAAO;IAAE;IAAS;IAAgB;GAAgB,CAAC,CAAC,CAACW,GAAUC,GAASC,CAAU,oBADzF,IAAI,IAAI;EAE/B,CAAC;CACH,GAAG;EAACb;EAAOiB;EAAOF;CAAM,CAAC;AAC3B"}
|
|
@@ -1,119 +1,7 @@
|
|
|
1
|
-
import { a as PolygonPath, b as PathFillRule, R as RectPath, P as Path } from './path-JEV2c5If.js';
|
|
2
|
-
import { Point2, Bounds } from '@weasel-js/routing';
|
|
3
|
-
import { b as RotatedPose } from './poseDescriptor-rZa9W5hJ.js';
|
|
4
1
|
import '@weasel-js/geom';
|
|
5
|
-
import '
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
* Fluent builder for `PolygonPath`. Hides the `Uint8Array` / `Float32Array`
|
|
9
|
-
* encoding behind move/line/curve/close calls and a final `build()`. Use
|
|
10
|
-
* this to construct paths in tests and demos; production callers that need
|
|
11
|
-
* to mutate large paths in place should reach for the raw arrays directly.
|
|
12
|
-
*
|
|
13
|
-
* Numeric capacity grows by doubling — typical for amortized O(1) push.
|
|
14
|
-
*
|
|
15
|
-
* Also exposes `rectPath` / `polygonFromPoints` shortcuts for the common
|
|
16
|
-
* cases. `rectPath` returns the lighter `RectPath` subtype, not a polygon.
|
|
17
|
-
*/
|
|
18
|
-
|
|
19
|
-
/** Fluent builder for `PolygonPath`; hides the `Uint8Array`/`Float32Array` encoding behind move/line/curve/close calls. */
|
|
20
|
-
declare class PathBuilder {
|
|
21
|
-
private cmds;
|
|
22
|
-
private xs;
|
|
23
|
-
private fillRule;
|
|
24
|
-
/** Seed a builder with an existing `PolygonPath`. Useful for extending
|
|
25
|
-
* an in-flight path with another segment (e.g. appending a cubic to
|
|
26
|
-
* the end of a curve in response to a user action) without hand-
|
|
27
|
-
* reaching into the `commands` / `coords` typed arrays.
|
|
28
|
-
*
|
|
29
|
-
* ```ts
|
|
30
|
-
* const next = PathBuilder.fromPath(current).curveTo(...).build();
|
|
31
|
-
* ```
|
|
32
|
-
*/
|
|
33
|
-
static fromPath(path: PolygonPath): PathBuilder;
|
|
34
|
-
setFillRule(rule: PathFillRule): this;
|
|
35
|
-
moveTo(x: number, y: number): this;
|
|
36
|
-
lineTo(x: number, y: number): this;
|
|
37
|
-
/** Cubic bezier to (x, y) with control points (x1, y1) and (x2, y2). */
|
|
38
|
-
curveTo(x1: number, y1: number, x2: number, y2: number, x: number, y: number): this;
|
|
39
|
-
/** Quadratic bezier to (x, y) with control point (x1, y1). */
|
|
40
|
-
quadTo(x1: number, y1: number, x: number, y: number): this;
|
|
41
|
-
close(): this;
|
|
42
|
-
build(): PolygonPath;
|
|
43
|
-
}
|
|
44
|
-
/** Construct a `RectPath` (the fast-path subtype). */
|
|
45
|
-
declare function rectPath(x: number, y: number, width: number, height: number): RectPath;
|
|
46
|
-
/** Build an open polyline from a flat list of points — the same geometry as
|
|
47
|
-
* {@link polygonFromPoints} without the closing edge. A freehand stroke and a
|
|
48
|
-
* measurement line want this; a region wants the closed one. */
|
|
49
|
-
declare function polylineFromPoints(points: readonly {
|
|
50
|
-
x: number;
|
|
51
|
-
y: number;
|
|
52
|
-
}[]): PolygonPath | RectPath;
|
|
53
|
-
/** Build a closed polygon from a flat list of points. */
|
|
54
|
-
declare function polygonFromPoints(points: readonly {
|
|
55
|
-
x: number;
|
|
56
|
-
y: number;
|
|
57
|
-
}[], opts?: {
|
|
58
|
-
fillRule?: PathFillRule;
|
|
59
|
-
}): PolygonPath;
|
|
60
|
-
/** Closed ellipse inscribed in `bounds`, as a 4-cubic-Bezier `PolygonPath`.
|
|
61
|
-
* Matches the geometry `useEllipseTool`'s overlay paints. */
|
|
62
|
-
declare function ellipsePath(bounds: {
|
|
63
|
-
x: number;
|
|
64
|
-
y: number;
|
|
65
|
-
width: number;
|
|
66
|
-
height: number;
|
|
67
|
-
}): PolygonPath;
|
|
68
|
-
/** Closed regular n-gon centered at `center`, circumscribed by `radius`.
|
|
69
|
-
* `rotation` is in radians; default 0 puts the first vertex on the +x axis. */
|
|
70
|
-
declare function regularPolygonPath(center: {
|
|
71
|
-
x: number;
|
|
72
|
-
y: number;
|
|
73
|
-
}, radius: number, sides: number, rotation?: number): PolygonPath;
|
|
74
|
-
/** Closed n-pointed star centered at `center`, alternating `outerRadius` and
|
|
75
|
-
* `innerRadius` (default `outerRadius / 2`). `rotation` is in radians. */
|
|
76
|
-
declare function starPath(center: {
|
|
77
|
-
x: number;
|
|
78
|
-
y: number;
|
|
79
|
-
}, outerRadius: number, points?: number, innerRadius?: number, rotation?: number): PolygonPath;
|
|
80
|
-
/** Open 2-vertex polyline from `a` to `b` — strokeable, not fillable. */
|
|
81
|
-
declare function linePath(a: {
|
|
82
|
-
x: number;
|
|
83
|
-
y: number;
|
|
84
|
-
}, b: {
|
|
85
|
-
x: number;
|
|
86
|
-
y: number;
|
|
87
|
-
}): PolygonPath;
|
|
88
|
-
|
|
89
|
-
/**
|
|
90
|
-
* A station along a path: where it is at a fraction of its length, and which
|
|
91
|
-
* way it is heading there.
|
|
92
|
-
*
|
|
93
|
-
* For anything positioned *along* geometry rather than beside it — a label on a
|
|
94
|
-
* routed edge, a tick on a curve, a badge near an arrowhead. Curves are
|
|
95
|
-
* flattened first, so the fraction is arc length along the drawn shape rather
|
|
96
|
-
* than a curve parameter, which is what makes 0.5 look like the middle.
|
|
97
|
-
*/
|
|
98
|
-
|
|
99
|
-
interface PathStation {
|
|
100
|
-
point: Point2;
|
|
101
|
-
/** Unit vector along the path at `point`, pointing toward the end. */
|
|
102
|
-
tangent: Point2;
|
|
103
|
-
}
|
|
104
|
-
interface PointAlongPathOptions {
|
|
105
|
-
/** Curve flattening tolerance, in world units. Default 0.5. */
|
|
106
|
-
flattenTolerance?: number;
|
|
107
|
-
}
|
|
108
|
-
/**
|
|
109
|
-
* Where `path` is at `t` of its total length, and its heading there.
|
|
110
|
-
*
|
|
111
|
-
* `t` is clamped to 0..1. Subpaths are measured in order and treated as one
|
|
112
|
-
* run, the way a browser measures a whole `<path>`. Returns `null` for a path
|
|
113
|
-
* with no points at all; a path of zero length answers at its single point,
|
|
114
|
-
* heading along +X.
|
|
115
|
-
*/
|
|
116
|
-
declare function pointAlongPath(path: Path, t: number, opts?: PointAlongPathOptions): PathStation | null;
|
|
2
|
+
import { Bounds } from '@weasel-js/routing';
|
|
3
|
+
import { b as RotatedPose } from './poseDescriptor-CjSXMf8X.js';
|
|
4
|
+
import './autoPoseDescriptor-BT_vp9FO.js';
|
|
117
5
|
|
|
118
6
|
/**
|
|
119
7
|
* Minimal node interface for the simulation primitive. Matches d3-force's
|
|
@@ -237,6 +125,10 @@ declare const DEFAULT_VELOCITY_DECAY = 0.4;
|
|
|
237
125
|
* this one.
|
|
238
126
|
*/
|
|
239
127
|
|
|
128
|
+
/**
|
|
129
|
+
* A d3-force-compatible simulation with no clock: nothing moves until `tick()`.
|
|
130
|
+
* Nodes are mutated in place, and primed with `index`, `vx` and `vy` on creation.
|
|
131
|
+
*/
|
|
240
132
|
declare function createSimulation<TNode extends SimulationNode>(opts: SimulationOptions<TNode>): SimulationCore<TNode>;
|
|
241
133
|
|
|
242
134
|
/** AABB center of an unrotated rect — the canonical rotation pivot. */
|
|
@@ -265,4 +157,4 @@ declare function rotatedRectCorners(pose: RotatedPose): {
|
|
|
265
157
|
* rect's local frame. */
|
|
266
158
|
declare function pointInRotatedRect(pose: RotatedPose, worldX: number, worldY: number): boolean;
|
|
267
159
|
|
|
268
|
-
export { DEFAULT_ALPHA_DECAY as D,
|
|
160
|
+
export { DEFAULT_ALPHA_DECAY as D, type SimulationNode as S, type UseSimulationOptions as U, type Simulation as a, DEFAULT_ALPHA_MIN as b, DEFAULT_VELOCITY_DECAY as c, type SimulationCore as d, type SimulationForce as e, type SimulationOptions as f, aabbCenter as g, createSimulation as h, rotatePoint as i, rotatedRectCorners as j, pointInRotatedRect as p, rectCorners as r };
|
package/dist/math.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { DEFAULT_FLATTEN_TOLERANCE, PATH_C, PATH_CMD_LENGTHS, PATH_L, PATH_M, PATH_Q, PATH_Z, Path, PathBuilder, PathFillRule, PolygonPath, RectPath, flattenCubic, flattenCubicWithArcLen, flattenQuadratic, flattenQuadraticWithArcLen, pathCommandCoordCount, pointAlongPath, polygonFromPoints, polylineFromPoints, rectPath } from '@weasel-js/geom';
|
|
2
2
|
export { Point2 as Vec2 } from '@weasel-js/routing';
|
|
3
|
-
export { P as PoseDescriptor, t as translatePoseViaDescriptor } from './poseDescriptor-
|
|
4
|
-
export {
|
|
5
|
-
export {
|
|
6
|
-
export { A as AUTO_POSE_DESCRIPTOR } from './autoPoseDescriptor-_XOyF7t4.js';
|
|
3
|
+
export { P as PoseDescriptor, t as translatePoseViaDescriptor } from './poseDescriptor-CjSXMf8X.js';
|
|
4
|
+
export { a as Simulation, d as SimulationCore, e as SimulationForce, S as SimulationNode, f as SimulationOptions, h as createSimulation, i as rotatePoint } from './math-CUMxmZzn.js';
|
|
5
|
+
export { A as AUTO_POSE_DESCRIPTOR } from './autoPoseDescriptor-BT_vp9FO.js';
|
package/dist/math.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { createSimulation as e } from "./features/simulation/createSimulation.js";
|
|
2
|
+
import { translatePoseViaDescriptor as t } from "./core/geometry/poseDescriptor.js";
|
|
3
|
+
import { AUTO_POSE_DESCRIPTOR as n } from "./interactions/actions/resize/autoPoseDescriptor.js";
|
|
4
|
+
import { rotatePoint as r } from "./interactions/actions/rotate/geometry.js";
|
|
5
|
+
import { DEFAULT_FLATTEN_TOLERANCE as i, PATH_C as a, PATH_CMD_LENGTHS as o, PATH_L as s, PATH_M as c, PATH_Q as l, PATH_Z as u, PathBuilder as d, flattenCubic as f, flattenCubicWithArcLen as p, flattenQuadratic as m, flattenQuadraticWithArcLen as h, pathCommandCoordCount as g, pointAlongPath as _, polygonFromPoints as v, polylineFromPoints as y, rectPath as b } from "@weasel-js/geom";
|
|
6
|
+
export { n as AUTO_POSE_DESCRIPTOR, i as DEFAULT_FLATTEN_TOLERANCE, a as PATH_C, o as PATH_CMD_LENGTHS, s as PATH_L, c as PATH_M, l as PATH_Q, u as PATH_Z, d as PathBuilder, e as createSimulation, f as flattenCubic, p as flattenCubicWithArcLen, m as flattenQuadratic, h as flattenQuadraticWithArcLen, g as pathCommandCoordCount, _ as pointAlongPath, v as polygonFromPoints, y as polylineFromPoints, b as rectPath, r as rotatePoint, t as translatePoseViaDescriptor };
|