@weasel-js/core 1.9.2 → 1.9.4
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 +393 -0
- package/README.md +2 -2
- package/dist/WeaselProvider.js +5 -5
- package/dist/affordances/composeAffordanceLayer.js +10 -20
- package/dist/affordances/composeAffordanceLayer.js.map +1 -1
- package/dist/affordances/cornerResize.js +25 -17
- package/dist/affordances/cornerResize.js.map +1 -1
- package/dist/affordances/hitAffordanceRegions.js +27 -20
- package/dist/affordances/hitAffordanceRegions.js.map +1 -1
- package/dist/affordances/rotationHandle.js +18 -18
- package/dist/affordances/rotationHandle.js.map +1 -1
- package/dist/animation/behaviors/momentum.js +93 -55
- package/dist/animation/behaviors/momentum.js.map +1 -1
- package/dist/animation/loop.js +10 -12
- package/dist/animation/loop.js.map +1 -1
- package/dist/animation/reflow.js +8 -8
- package/dist/animation/reflow.js.map +1 -1
- package/dist/animation/stagger.js +64 -56
- package/dist/animation/stagger.js.map +1 -1
- package/dist/animation/timeline/booking.js +62 -54
- package/dist/animation/timeline/booking.js.map +1 -1
- package/dist/animation/timeline/createTimeline.js +85 -76
- package/dist/animation/timeline/createTimeline.js.map +1 -1
- package/dist/animation/timeline/sampleTrack.js +13 -5
- package/dist/animation/timeline/sampleTrack.js.map +1 -1
- package/dist/animation/useAnimator.js +45 -35
- package/dist/animation/useAnimator.js.map +1 -1
- package/dist/animation/wrappers/animateLifecycle.js +31 -24
- package/dist/animation/wrappers/animateLifecycle.js.map +1 -1
- package/dist/animation/wrappers/animateOnSetPose.js +28 -26
- package/dist/animation/wrappers/animateOnSetPose.js.map +1 -1
- package/dist/animation/wrappers/instantPose.js +13 -0
- package/dist/animation/wrappers/instantPose.js.map +1 -0
- package/dist/{poseDescriptor-D-OH-tu5.d.ts → autoPoseDescriptor-Ct7yqivU.d.ts} +28 -3
- package/dist/barrel/chrome.js +16 -0
- package/dist/barrel/input.js +19 -0
- package/dist/barrel/interactions.js +42 -0
- package/dist/barrel/paint.js +18 -0
- package/dist/barrel/paths.js +19 -0
- package/dist/barrel/renderer.js +20 -0
- package/dist/barrel/routing.js +51 -0
- package/dist/barrel/text.js +18 -0
- package/dist/barrel/viewport.js +52 -0
- package/dist/builtins-DPcdghtB.d.ts +1223 -0
- package/dist/canvas/Canvas.js +363 -448
- package/dist/canvas/Canvas.js.map +1 -1
- package/dist/canvas/CanvasView.js +164 -165
- package/dist/canvas/CanvasView.js.map +1 -1
- package/dist/canvas/CursorCoordsHud.js +37 -32
- package/dist/canvas/CursorCoordsHud.js.map +1 -1
- package/dist/canvas/DrawCanvas.js +49 -43
- package/dist/canvas/DrawCanvas.js.map +1 -1
- package/dist/canvas/MinimapCanvas.js +26 -25
- package/dist/canvas/MinimapCanvas.js.map +1 -1
- package/dist/canvas/NodeShape.js +59 -377
- package/dist/canvas/NodeShape.js.map +1 -1
- package/dist/canvas/PickHud.js +50 -47
- package/dist/canvas/PickHud.js.map +1 -1
- package/dist/canvas/SceneCanvas/GestureDispatcherMounter.js +167 -0
- package/dist/canvas/SceneCanvas/GestureDispatcherMounter.js.map +1 -0
- package/dist/canvas/SceneCanvas/PointerProviderIfRoot.js +13 -13
- package/dist/canvas/SceneCanvas/StandardActionsRegistrar.js +67 -0
- package/dist/canvas/SceneCanvas/StandardActionsRegistrar.js.map +1 -0
- package/dist/canvas/SceneCanvas/ToolKeybindingsMounter.js +16 -0
- package/dist/canvas/SceneCanvas/ToolKeybindingsMounter.js.map +1 -0
- package/dist/canvas/SceneCanvas/coordTrace.js +10 -0
- package/dist/canvas/SceneCanvas/coordTrace.js.map +1 -0
- package/dist/canvas/SceneCanvas/defaultNodeProperties.js +146 -92
- package/dist/canvas/SceneCanvas/defaultNodeProperties.js.map +1 -1
- package/dist/canvas/SceneCanvas/defaultNodeRouting.js +9 -8
- package/dist/canvas/SceneCanvas/defaultNodeRouting.js.map +1 -1
- package/dist/canvas/SceneCanvas/features.js +1 -0
- package/dist/canvas/SceneCanvas/features.js.map +1 -1
- package/dist/canvas/SceneCanvas/isDev.js +12 -0
- package/dist/canvas/SceneCanvas/isDev.js.map +1 -0
- package/dist/canvas/SceneCanvas/poseGeometry.js +29 -28
- package/dist/canvas/SceneCanvas/poseGeometry.js.map +1 -1
- package/dist/canvas/SceneCanvas/poseRegistrars.js +13 -0
- package/dist/canvas/SceneCanvas/poseRegistrars.js.map +1 -0
- package/dist/canvas/SceneCanvas/props.js +38 -0
- package/dist/canvas/SceneCanvas/props.js.map +1 -0
- package/dist/canvas/SceneCanvas/useBuiltinShapeTools.js +21 -62
- package/dist/canvas/SceneCanvas/useBuiltinShapeTools.js.map +1 -1
- package/dist/canvas/SceneCanvas/useDispatcherOverlayLayer.js.map +1 -1
- package/dist/canvas/SceneCanvas/usePreviewGhostLayer.js +46 -48
- package/dist/canvas/SceneCanvas/usePreviewGhostLayer.js.map +1 -1
- package/dist/canvas/SceneCanvas/useSceneSelectTool.js +33 -33
- package/dist/canvas/SceneCanvas/useSceneSelectTool.js.map +1 -1
- package/dist/canvas/SceneCanvas.js +534 -788
- package/dist/canvas/SceneCanvas.js.map +1 -1
- package/dist/canvas/SceneViewCanvas.js +45 -43
- package/dist/canvas/SceneViewCanvas.js.map +1 -1
- package/dist/canvas/buildSceneLayer.js +91 -0
- package/dist/canvas/buildSceneLayer.js.map +1 -0
- package/dist/canvas/buildSceneTree.js +16 -19
- package/dist/canvas/buildSceneTree.js.map +1 -1
- package/dist/canvas/canvasRenderer.js +68 -52
- package/dist/canvas/canvasRenderer.js.map +1 -1
- package/dist/canvas/deps/changes.js +13 -0
- package/dist/canvas/deps/changes.js.map +1 -0
- package/dist/canvas/deps/editAnchors.js +28 -28
- package/dist/canvas/deps/insert.js +119 -91
- package/dist/canvas/deps/insert.js.map +1 -1
- package/dist/canvas/deps/slice.js +46 -45
- package/dist/canvas/deps/slice.js.map +1 -1
- package/dist/canvas/deps/textEdit.js +10 -9
- package/dist/canvas/deps/textEdit.js.map +1 -1
- package/dist/canvas/derivedPath.js +46 -23
- package/dist/canvas/derivedPath.js.map +1 -1
- package/dist/canvas/getNodeAtPoint.js +7 -7
- package/dist/canvas/getNodeAtPoint.js.map +1 -1
- package/dist/canvas/hud.module.js +1 -1
- package/dist/canvas/hud.module.js.map +1 -1
- package/dist/canvas/kitRequirements.js +2 -2
- package/dist/canvas/kitRequirements.js.map +1 -1
- package/dist/canvas/layerOrder.js +13 -6
- package/dist/canvas/layerOrder.js.map +1 -1
- package/dist/canvas/minimapMath.js +12 -10
- package/dist/canvas/minimapMath.js.map +1 -1
- package/dist/canvas/nodeShapes/derivedPainter.js +34 -0
- package/dist/canvas/nodeShapes/derivedPainter.js.map +1 -0
- package/dist/canvas/nodeShapes/imagePainter.js +87 -0
- package/dist/canvas/nodeShapes/imagePainter.js.map +1 -0
- package/dist/canvas/nodeShapes/memo.js +9 -0
- package/dist/canvas/nodeShapes/memo.js.map +1 -0
- package/dist/canvas/nodeShapes/nodePaint.js +57 -0
- package/dist/canvas/nodeShapes/nodePaint.js.map +1 -0
- package/dist/canvas/nodeShapes/pathPainter.js +38 -0
- package/dist/canvas/nodeShapes/pathPainter.js.map +1 -0
- package/dist/canvas/nodeShapes/poseBox.js +20 -0
- package/dist/canvas/nodeShapes/poseBox.js.map +1 -0
- package/dist/canvas/nodeShapes/rectFallbackPainter.js +38 -0
- package/dist/canvas/nodeShapes/rectFallbackPainter.js.map +1 -0
- package/dist/canvas/nodeShapes/shapePainter.js +72 -0
- package/dist/canvas/nodeShapes/shapePainter.js.map +1 -0
- package/dist/canvas/nodeShapes/textPainter.js +55 -0
- package/dist/canvas/nodeShapes/textPainter.js.map +1 -0
- package/dist/canvas/overlayRoleStrokes.js.map +1 -1
- package/dist/canvas/paintCull.js +10 -11
- package/dist/canvas/paintCull.js.map +1 -1
- package/dist/canvas/pickWalk.js +52 -63
- package/dist/canvas/pickWalk.js.map +1 -1
- package/dist/canvas/poseRotation.js +11 -23
- package/dist/canvas/poseRotation.js.map +1 -1
- package/dist/canvas/renderDebugSnapshot.js +5 -5
- package/dist/canvas/renderSceneToPixels.js +3 -1
- package/dist/canvas/renderSceneToPixels.js.map +1 -1
- package/dist/canvas/sceneAdapter.js +66 -148
- package/dist/canvas/sceneAdapter.js.map +1 -1
- package/dist/canvas/sceneClipboard.js +112 -0
- package/dist/canvas/sceneClipboard.js.map +1 -0
- package/dist/canvas/sceneSlotWiring.js +4 -4
- package/dist/canvas/sceneSlotWiring.js.map +1 -1
- package/dist/canvas/sceneViewRender.js +39 -40
- package/dist/canvas/sceneViewRender.js.map +1 -1
- package/dist/canvas/useCanvasRenderer.js +14 -6
- package/dist/canvas/useCanvasRenderer.js.map +1 -1
- package/dist/canvas/useCanvasView.js +58 -0
- package/dist/canvas/useCanvasView.js.map +1 -0
- package/dist/canvas/useFrameLoop.js +35 -26
- package/dist/canvas/useFrameLoop.js.map +1 -1
- package/dist/canvas/useSceneLayerList.js +21 -0
- package/dist/canvas/useSceneLayerList.js.map +1 -0
- package/dist/clipboard.d.ts +10 -6
- package/dist/clone.d.ts +4 -3
- package/dist/core/adapters/arrayAdapter.js +48 -39
- package/dist/core/adapters/arrayAdapter.js.map +1 -1
- package/dist/core/device/index.js +5 -4
- package/dist/core/device/useDeviceProfile.js +38 -44
- package/dist/core/device/useDeviceProfile.js.map +1 -1
- package/dist/core/device/watchDevicePixelRatio.js +17 -0
- package/dist/core/device/watchDevicePixelRatio.js.map +1 -0
- package/dist/core/fillInPoseFrame.js.map +1 -1
- package/dist/core/geometry/poseDescriptor.js +21 -19
- package/dist/core/geometry/poseDescriptor.js.map +1 -1
- package/dist/core/geometry/poseFrame.js +44 -0
- package/dist/core/geometry/poseFrame.js.map +1 -0
- package/dist/core/geometry/poseRotation.js.map +1 -1
- package/dist/core/geometry/regionHit.js +9 -10
- package/dist/core/geometry/regionHit.js.map +1 -1
- package/dist/core/geometry/unionBounds.js +31 -29
- package/dist/core/geometry/unionBounds.js.map +1 -1
- package/dist/core/isPlainObject.js +2 -11
- package/dist/core/ops/arrange.js +1 -0
- package/dist/core/ops/arrange.js.map +1 -1
- package/dist/core/ops/create.js +10 -5
- package/dist/core/ops/create.js.map +1 -1
- package/dist/core/ops/delete.js +12 -24
- package/dist/core/ops/delete.js.map +1 -1
- package/dist/core/ops/reorder/index.js +43 -40
- package/dist/core/ops/reorder/index.js.map +1 -1
- package/dist/core/ops/reorder/setChildOrder.js +34 -0
- package/dist/core/ops/reorder/setChildOrder.js.map +1 -0
- package/dist/core/paintKinds.js +5 -5
- package/dist/core/paintKinds.js.map +1 -1
- package/dist/core/scene/NodeProperties.js.map +1 -1
- package/dist/core/scene/appliedLog.js +37 -0
- package/dist/core/scene/appliedLog.js.map +1 -0
- package/dist/core/scene/arrivalWindow.js +101 -0
- package/dist/core/scene/arrivalWindow.js.map +1 -0
- package/dist/core/scene/derivedPath.js.map +1 -1
- package/dist/core/scene/historyFacade.js +84 -0
- package/dist/core/scene/historyFacade.js.map +1 -0
- package/dist/core/scene/kitOps.js +173 -0
- package/dist/core/scene/kitOps.js.map +1 -0
- package/dist/core/scene/layerStack.js +38 -0
- package/dist/core/scene/layerStack.js.map +1 -0
- package/dist/core/scene/lockGuard.js +37 -0
- package/dist/core/scene/lockGuard.js.map +1 -0
- package/dist/core/scene/nodeFnFields.js +5 -6
- package/dist/core/scene/nodeFnFields.js.map +1 -1
- package/dist/core/scene/nodeMemo.js +45 -19
- package/dist/core/scene/nodeMemo.js.map +1 -1
- package/dist/core/scene/nodeStore.js +126 -0
- package/dist/core/scene/nodeStore.js.map +1 -0
- package/dist/core/scene/pickability.js +6 -0
- package/dist/core/scene/pickability.js.map +1 -0
- package/dist/core/scene/poseFeed.js +38 -38
- package/dist/core/scene/poseFeed.js.map +1 -1
- package/dist/core/scene/poseOverrides.js +34 -38
- package/dist/core/scene/poseOverrides.js.map +1 -1
- package/dist/core/scene/renderOrder.js +84 -0
- package/dist/core/scene/renderOrder.js.map +1 -0
- package/dist/core/scene/scene.js +289 -866
- package/dist/core/scene/scene.js.map +1 -1
- package/dist/core/scene/serialization.js +68 -0
- package/dist/core/scene/serialization.js.map +1 -0
- package/dist/core/scene/treeOrder.js +13 -0
- package/dist/core/scene/treeOrder.js.map +1 -0
- package/dist/core/scene/types.js.map +1 -1
- package/dist/core/viewport/meanScale.js +1 -1
- package/dist/core/viewport/meanScale.js.map +1 -1
- package/dist/core/viewport/view.js +12 -12
- package/dist/core/viewport/view.js.map +1 -1
- package/dist/core/viewport/zoomBounds.js +10 -8
- package/dist/core/viewport/zoomBounds.js.map +1 -1
- package/dist/{cornerHandles-BCrDp_mH.d.ts → cornerHandles-CtCb8a3G.d.ts} +1 -1
- package/dist/debug/createDebugOverlayLayer.js +14 -14
- package/dist/debug/createDebugOverlayLayer.js.map +1 -1
- package/dist/debug/flag.js +2 -41
- package/dist/features/chrome-caps/useHoverTracking.js +22 -17
- package/dist/features/chrome-caps/useHoverTracking.js.map +1 -1
- package/dist/features/focus/gateLayer.js +3 -4
- package/dist/features/focus/gateLayer.js.map +1 -1
- package/dist/features/images/imageCache.js +19 -9
- package/dist/features/images/imageCache.js.map +1 -1
- package/dist/features/ingestion/contentHandlers.js +14 -11
- package/dist/features/ingestion/contentHandlers.js.map +1 -1
- package/dist/features/ingestion/index.js +1 -1
- package/dist/features/ingestion/registerKitHandlers.js +7 -7
- package/dist/features/ingestion/weaselJsonHandler.js +17 -14
- package/dist/features/ingestion/weaselJsonHandler.js.map +1 -1
- package/dist/features/meshPaint/lazyKind.js +201 -35
- package/dist/features/meshPaint/lazyKind.js.map +1 -1
- package/dist/features/meshPaint/meshPaint.js +82 -79
- package/dist/features/meshPaint/meshPaint.js.map +1 -1
- package/dist/features/minimap/createMinimapContribution.js +42 -42
- package/dist/features/minimap/layers.js +44 -62
- package/dist/features/minimap/layers.js.map +1 -1
- package/dist/features/parallax/createParallaxPlane.js +10 -14
- package/dist/features/parallax/createParallaxPlane.js.map +1 -1
- package/dist/features/paths/anchorEdits.js +19 -8
- package/dist/features/paths/anchorEdits.js.map +1 -1
- package/dist/features/paths/anchors.js +31 -26
- package/dist/features/paths/anchors.js.map +1 -1
- package/dist/features/paths/booleans.js +2 -2
- package/dist/features/paths/index.js +13 -11
- package/dist/features/paths/markerCommands.js +37 -36
- package/dist/features/paths/markerCommands.js.map +1 -1
- package/dist/features/paths/pathInWorld.js +19 -19
- package/dist/features/paths/pathInWorld.js.map +1 -1
- package/dist/features/paths/pathLayer.js.map +1 -1
- package/dist/features/paths/strokeToPath.js +40 -0
- package/dist/features/paths/strokeToPath.js.map +1 -0
- package/dist/features/paths/tessellate/stroke.js.map +1 -1
- package/dist/features/patterns/commandPaint.js +18 -0
- package/dist/features/patterns/commandPaint.js.map +1 -0
- package/dist/features/patterns/index.js +5 -17
- package/dist/features/patterns/index.js.map +1 -1
- package/dist/features/patterns/rasterizeTile.js +17 -0
- package/dist/features/patterns/rasterizeTile.js.map +1 -0
- package/dist/features/patterns/resolveSpec.js +52 -44
- package/dist/features/patterns/resolveSpec.js.map +1 -1
- package/dist/features/poseRun/usePoseRun.js +8 -3
- package/dist/features/poseRun/usePoseRun.js.map +1 -1
- package/dist/features/selection/SelectionContext.js +5 -0
- package/dist/features/selection/SelectionContext.js.map +1 -1
- package/dist/features/selection/overlay.js +18 -18
- package/dist/features/selection/overlay.js.map +1 -1
- package/dist/features/text/domOffsets.js +82 -0
- package/dist/features/text/domOffsets.js.map +1 -0
- package/dist/features/text/domRuns.js +103 -131
- package/dist/features/text/domRuns.js.map +1 -1
- package/dist/features/text/hitTest.js +5 -2
- package/dist/features/text/hitTest.js.map +1 -1
- package/dist/features/text/isTextData.js +8 -0
- package/dist/features/text/isTextData.js.map +1 -0
- package/dist/features/text/overlayDirection.js +15 -0
- package/dist/features/text/overlayDirection.js.map +1 -0
- package/dist/features/text/runs/rangeStyle.js +32 -34
- package/dist/features/text/runs/rangeStyle.js.map +1 -1
- package/dist/features/text/textCommand.js +34 -33
- package/dist/features/text/textCommand.js.map +1 -1
- package/dist/features/text/textToPath.js +40 -40
- package/dist/features/text/textToPath.js.map +1 -1
- package/dist/features/text/useSceneTextEdit.js +76 -82
- package/dist/features/text/useSceneTextEdit.js.map +1 -1
- package/dist/features/text/useTextEdit.js +184 -160
- package/dist/features/text/useTextEdit.js.map +1 -1
- package/dist/features/tiling/createTiledLayer.js +24 -22
- package/dist/features/tiling/createTiledLayer.js.map +1 -1
- package/dist/index.d.ts +11010 -7700
- package/dist/index.js +316 -309
- package/dist/input/keyState.js +42 -43
- package/dist/input/keyState.js.map +1 -1
- package/dist/input/useKeyModifiers.js +11 -0
- package/dist/input/useKeyModifiers.js.map +1 -0
- package/dist/interactions/actions/align/align.js +8 -8
- package/dist/interactions/actions/clipboard/clipboardOps.js +34 -32
- package/dist/interactions/actions/clipboard/clipboardOps.js.map +1 -1
- package/dist/interactions/actions/clipboard/materializePaste.js +10 -7
- package/dist/interactions/actions/clipboard/materializePaste.js.map +1 -1
- package/dist/interactions/actions/clipboard/wireFormat.js.map +1 -1
- package/dist/interactions/actions/clone/behaviors/cloneByAltDrag.js.map +1 -1
- package/dist/interactions/actions/defaultCommitAdapter.js +20 -18
- package/dist/interactions/actions/defaultCommitAdapter.js.map +1 -1
- package/dist/interactions/actions/defaults/align.js +9 -10
- package/dist/interactions/actions/defaults/align.js.map +1 -1
- package/dist/interactions/actions/defaults/anchorEditing.js +59 -81
- package/dist/interactions/actions/defaults/anchorEditing.js.map +1 -1
- package/dist/interactions/actions/defaults/areaSelect.js +35 -38
- package/dist/interactions/actions/defaults/areaSelect.js.map +1 -1
- package/dist/interactions/actions/defaults/clipboard.js +26 -10
- package/dist/interactions/actions/defaults/clipboard.js.map +1 -1
- package/dist/interactions/actions/defaults/clone.js +44 -60
- package/dist/interactions/actions/defaults/clone.js.map +1 -1
- package/dist/interactions/actions/defaults/copySubtree.js +40 -0
- package/dist/interactions/actions/defaults/copySubtree.js.map +1 -0
- package/dist/interactions/actions/defaults/distribute.js +14 -13
- package/dist/interactions/actions/defaults/distribute.js.map +1 -1
- package/dist/interactions/actions/defaults/duplicate.js +17 -57
- package/dist/interactions/actions/defaults/duplicate.js.map +1 -1
- package/dist/interactions/actions/defaults/editAnchors.js +18 -18
- package/dist/interactions/actions/defaults/enterTextEdit.js.map +1 -1
- package/dist/interactions/actions/defaults/flip.js +52 -46
- package/dist/interactions/actions/defaults/flip.js.map +1 -1
- package/dist/interactions/actions/defaults/group.js +43 -48
- package/dist/interactions/actions/defaults/group.js.map +1 -1
- package/dist/interactions/actions/defaults/ingest.js +35 -33
- package/dist/interactions/actions/defaults/ingest.js.map +1 -1
- package/dist/interactions/actions/defaults/insert.js +50 -51
- package/dist/interactions/actions/defaults/insert.js.map +1 -1
- package/dist/interactions/actions/defaults/insertPathAnchor.js +7 -7
- package/dist/interactions/actions/defaults/lassoSelect.js +67 -70
- package/dist/interactions/actions/defaults/lassoSelect.js.map +1 -1
- package/dist/interactions/actions/defaults/move.js +267 -249
- package/dist/interactions/actions/defaults/move.js.map +1 -1
- package/dist/interactions/actions/defaults/nudge.js +40 -68
- package/dist/interactions/actions/defaults/nudge.js.map +1 -1
- package/dist/interactions/actions/defaults/nudgeSteps.js +37 -0
- package/dist/interactions/actions/defaults/nudgeSteps.js.map +1 -0
- package/dist/interactions/actions/defaults/reorder.js +2 -0
- package/dist/interactions/actions/defaults/reorder.js.map +1 -1
- package/dist/interactions/actions/defaults/resize.js +104 -98
- package/dist/interactions/actions/defaults/resize.js.map +1 -1
- package/dist/interactions/actions/defaults/rotate.js +111 -110
- package/dist/interactions/actions/defaults/rotate.js.map +1 -1
- package/dist/interactions/actions/defaults/setFill.js +7 -7
- package/dist/interactions/actions/defaults/setFillOpacity.js +4 -4
- package/dist/interactions/actions/defaults/setStroke.js +12 -12
- package/dist/interactions/actions/defaults/setStrokeOpacity.js +6 -6
- package/dist/interactions/actions/defaults/sliceOps.js +19 -19
- package/dist/interactions/actions/defaults/viewportDragPan.js +37 -26
- package/dist/interactions/actions/defaults/viewportDragPan.js.map +1 -1
- package/dist/interactions/actions/edit-anchors/geometry.js +28 -23
- package/dist/interactions/actions/edit-anchors/geometry.js.map +1 -1
- package/dist/interactions/actions/flip/helpers.js +30 -17
- package/dist/interactions/actions/flip/helpers.js.map +1 -1
- package/dist/interactions/actions/hitSelection.js +8 -0
- package/dist/interactions/actions/hitSelection.js.map +1 -0
- package/dist/interactions/actions/lasso-select/behaviors/selectFromLasso.js +14 -18
- package/dist/interactions/actions/lasso-select/behaviors/selectFromLasso.js.map +1 -1
- package/dist/interactions/actions/move/behaviors/snapBackOrDelete.js +5 -5
- package/dist/interactions/actions/move/behaviors/snapBackOrDelete.js.map +1 -1
- package/dist/interactions/actions/move/behaviors/snapToContainer.js +32 -21
- package/dist/interactions/actions/move/behaviors/snapToContainer.js.map +1 -1
- package/dist/interactions/actions/move/gestureAdapter.js +32 -15
- package/dist/interactions/actions/move/gestureAdapter.js.map +1 -1
- package/dist/interactions/actions/move/landedDescendants.js +33 -0
- package/dist/interactions/actions/move/landedDescendants.js.map +1 -0
- package/dist/interactions/actions/outlines/createOutlines.js +18 -18
- package/dist/interactions/actions/poseDescriptorDep.js +16 -4
- package/dist/interactions/actions/poseDescriptorDep.js.map +1 -1
- package/dist/interactions/actions/poseFrame.js +11 -6
- package/dist/interactions/actions/poseFrame.js.map +1 -1
- package/dist/interactions/actions/previewOverrides.js +5 -5
- package/dist/interactions/actions/previewOverrides.js.map +1 -1
- package/dist/interactions/actions/selectionSubtree.js +69 -0
- package/dist/interactions/actions/selectionSubtree.js.map +1 -0
- package/dist/interactions/actions/useStandardActions.js +66 -62
- package/dist/interactions/actions/useStandardActions.js.map +1 -1
- package/dist/interactions/gestures/dragGesture/dragGesture.js +4 -7
- package/dist/interactions/gestures/dragGesture/dragGesture.js.map +1 -1
- package/dist/interactions/gestures/dragGesture/dragPointOf.js +23 -0
- package/dist/interactions/gestures/dragGesture/dragPointOf.js.map +1 -0
- package/dist/interactions/gestures/handleDrag/handleDrag.js +21 -26
- package/dist/interactions/gestures/handleDrag/handleDrag.js.map +1 -1
- package/dist/interactions/gestures/pointerDrag/pointerDrag.js +8 -6
- package/dist/interactions/gestures/pointerDrag/pointerDrag.js.map +1 -1
- package/dist/interactions/gestures/thresholdDrag/thresholdDrag.js +8 -4
- package/dist/interactions/gestures/thresholdDrag/thresholdDrag.js.map +1 -1
- package/dist/{math-Drrw4ewZ.d.ts → math-J-ACHyEg.d.ts} +1 -2
- package/dist/math.d.ts +2 -3
- package/dist/move.d.ts +12 -11
- package/dist/{originProjection-DEklpDc_.d.ts → originProjection-gHnOup4e.d.ts} +1 -1
- package/dist/{registerProgram-BMZRDgrh.d.ts → registerProgram-T9S_PfAX.d.ts} +18 -7
- package/dist/renderer/DrawCommand.js.map +1 -1
- package/dist/renderer/WeaselRenderer.js +75 -73
- package/dist/renderer/WeaselRenderer.js.map +1 -1
- package/dist/renderer/cache/GLImageCache.js +15 -5
- package/dist/renderer/cache/GLImageCache.js.map +1 -1
- package/dist/renderer/cache/GLMeshCache.js +23 -23
- package/dist/renderer/cache/GLMeshCache.js.map +1 -1
- package/dist/renderer/cache/GLTextureCache.js +18 -1
- package/dist/renderer/cache/GLTextureCache.js.map +1 -1
- package/dist/renderer/cache/cache.js.map +1 -1
- package/dist/renderer/cache/markerCommandCache.js.map +1 -1
- package/dist/renderer/cache/strokeMeshCache.js.map +1 -1
- package/dist/renderer/cullDrawCommands.js +11 -11
- package/dist/renderer/draw/batch.js +133 -0
- package/dist/renderer/draw/batch.js.map +1 -0
- package/dist/renderer/draw/clip.js +89 -0
- package/dist/renderer/draw/clip.js.map +1 -0
- package/dist/renderer/draw/customShader.js +230 -0
- package/dist/renderer/draw/customShader.js.map +1 -0
- package/dist/renderer/draw/drawTriangles.js +8 -0
- package/dist/renderer/draw/drawTriangles.js.map +1 -0
- package/dist/renderer/draw/effects.js +28 -0
- package/dist/renderer/draw/effects.js.map +1 -0
- package/dist/renderer/draw/flushBatch.js +35 -0
- package/dist/renderer/draw/flushBatch.js.map +1 -0
- package/dist/renderer/draw/gradient.js +90 -0
- package/dist/renderer/draw/gradient.js.map +1 -0
- package/dist/renderer/draw/image.js +38 -0
- package/dist/renderer/draw/image.js.map +1 -0
- package/dist/renderer/draw/mesh.js +16 -0
- package/dist/renderer/draw/mesh.js.map +1 -0
- package/dist/renderer/draw/paintBind.js +70 -0
- package/dist/renderer/draw/paintBind.js.map +1 -0
- package/dist/renderer/draw/pathPaint.js +142 -0
- package/dist/renderer/draw/pathPaint.js.map +1 -0
- package/dist/renderer/draw/scratchPass.js +83 -0
- package/dist/renderer/draw/scratchPass.js.map +1 -0
- package/dist/renderer/draw/stencil.js +28 -0
- package/dist/renderer/draw/stencil.js.map +1 -0
- package/dist/renderer/draw/text.js +167 -0
- package/dist/renderer/draw/text.js.map +1 -0
- package/dist/renderer/draw/uniforms.js +77 -0
- package/dist/renderer/draw/uniforms.js.map +1 -0
- package/dist/renderer/draw.js +60 -1116
- package/dist/renderer/draw.js.map +1 -1
- package/dist/renderer/effects/EffectTargets.js +3 -0
- package/dist/renderer/effects/EffectTargets.js.map +1 -1
- package/dist/renderer/effects/composite.js +7 -5
- package/dist/renderer/effects/composite.js.map +1 -1
- package/dist/renderer/index.js +18 -17
- package/dist/renderer/math/color.js +63 -83
- package/dist/renderer/math/color.js.map +1 -1
- package/dist/renderer/math/mat3.js +15 -11
- package/dist/renderer/math/mat3.js.map +1 -1
- package/dist/renderer/math/viewToMat3.js +1 -1
- package/dist/renderer/math/viewToMat3.js.map +1 -1
- package/dist/renderer/shaders/ShaderProgram.js +13 -13
- package/dist/renderer/shaders/ShaderProgram.js.map +1 -1
- package/dist/renderer/shaders/glyphPaint.js +3 -3
- package/dist/renderer/shaders/glyphPaint.js.map +1 -1
- package/dist/renderer/shaders/gradFill.js +2 -1
- package/dist/renderer/shaders/gradFill.js.map +1 -1
- package/dist/renderer/shaders/pathFill.js +2 -1
- package/dist/renderer/shaders/pathFill.js.map +1 -1
- package/dist/renderer/shaders/patternFill.js +2 -1
- package/dist/renderer/shaders/patternFill.js.map +1 -1
- package/dist/renderer/shaders/registerProgram.js.map +1 -1
- package/dist/renderer/strokeLengths.js.map +1 -1
- package/dist/renderer/textures/registerTexture.js +25 -5
- package/dist/renderer/textures/registerTexture.js.map +1 -1
- package/dist/renderer.d.ts +16 -15
- package/dist/renderer.js +17 -16
- package/dist/resize.d.ts +5 -6
- package/dist/resize.js +5 -5
- package/dist/style.css +1 -1
- package/dist/test-hook/install.js +12 -6
- package/dist/test-hook/install.js.map +1 -1
- package/dist/{test-seams-CuIxe0xY.d.ts → test-seams-DM2B87-g.d.ts} +4 -4
- package/dist/test-seams.d.ts +2 -2
- package/dist/tools/builtin/ellipse/useEllipseTool.js +1 -0
- package/dist/tools/builtin/ellipse/useEllipseTool.js.map +1 -1
- package/dist/tools/builtin/hand/useHandTool.js +1 -0
- package/dist/tools/builtin/hand/useHandTool.js.map +1 -1
- package/dist/tools/builtin/lasso/useLassoTool.js +11 -11
- package/dist/tools/builtin/lasso/useLassoTool.js.map +1 -1
- package/dist/tools/builtin/line/useLineTool.js +1 -0
- package/dist/tools/builtin/line/useLineTool.js.map +1 -1
- package/dist/tools/builtin/pen/usePenTool.js +153 -103
- package/dist/tools/builtin/pen/usePenTool.js.map +1 -1
- package/dist/tools/builtin/pencil/usePencilTool.js +1 -0
- package/dist/tools/builtin/pencil/usePencilTool.js.map +1 -1
- package/dist/tools/builtin/polygon/usePolygonTool.js +13 -8
- package/dist/tools/builtin/polygon/usePolygonTool.js.map +1 -1
- package/dist/tools/builtin/rect/useRectTool.js +1 -0
- package/dist/tools/builtin/rect/useRectTool.js.map +1 -1
- package/dist/tools/builtin/select/selectionContributions.js +24 -23
- package/dist/tools/builtin/select/selectionContributions.js.map +1 -1
- package/dist/tools/builtin/select/useSelectTool.js +51 -48
- package/dist/tools/builtin/select/useSelectTool.js.map +1 -1
- package/dist/tools/builtin/shared/pointerFollower.js +17 -0
- package/dist/tools/builtin/shared/pointerFollower.js.map +1 -0
- package/dist/tools/builtin/slice/useSliceTool.js +49 -54
- package/dist/tools/builtin/slice/useSliceTool.js.map +1 -1
- package/dist/tools/builtin/star/useStarTool.js +22 -16
- package/dist/tools/builtin/star/useStarTool.js.map +1 -1
- package/dist/tools/builtin/text/useTextTool.js +13 -2
- package/dist/tools/builtin/text/useTextTool.js.map +1 -1
- package/dist/tools/useKeybindings.js +14 -30
- package/dist/tools/useKeybindings.js.map +1 -1
- package/dist/{types-B_9g6hMM.d.ts → types-B4iJRHC3.d.ts} +5 -1
- package/dist/{types-A37hYkeR.d.ts → types-k-5Oqh-U.d.ts} +31 -7
- package/dist/util/color.js +3 -3
- package/dist/util/color.js.map +1 -1
- package/dist/util/paint.js.map +1 -1
- package/dist/version.js +1 -1
- package/package.json +20 -18
- package/dist/autoPoseDescriptor-vCdt55xm.d.ts +0 -27
- package/dist/builtins-C-VgUlWI.d.ts +0 -4514
- package/dist/core/isPlainObject.js.map +0 -1
- package/dist/debug/flag.js.map +0 -1
- package/dist/interactions/actions/defaults/freshNodeId.js +0 -10
- package/dist/interactions/actions/defaults/freshNodeId.js.map +0 -1
- package/dist/renderer/shaders/imageFill.js +0 -14
- package/dist/renderer/shaders/imageFill.js.map +0 -1
- package/dist/tools/prefs.js +0 -47
- package/dist/tools/prefs.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useLineTool.js","names":["LineIcon","useLineTool","options","useMemo","defineTool","cursorFor","insertBindingBehaviors","behaviors"],"sources":["../../../../src/tools/builtin/line/useLineTool.tsx"],"sourcesContent":["import { useMemo } from 'react';\nimport { defineTool } from '../../overlayBinding';\nimport { LineIcon } from '../../../icons';\nimport type { Tool } from '../../overlayBinding';\nimport { insertBindingBehaviors, type InsertToolOptions } from '../shared/insertToolOptions';\nimport { cursorFor } from '@weasel-js/cursor';\n\n/** An endpoint of a line, in world coordinates. */\nexport interface LinePoint { x: number; y: number }\n\n/**\n * Click-down → drag → release line tool. The `drag` binding routes to\n * `insertAction`, which owns the live preview and commits through the\n * `insert` dep with `{ kind: 'line', a, b }` endpoints (not the AABB\n * diagonal), so the drag direction is preserved.\n *\n * Modifiers are applied by `insertAction`:\n * - shift: constrain to 15° increments\n * - alt: mirror the end around the start (the drag is treated as a\n * half-line) — the line-specific reading of the action's\n * corner ⇄ center origin toggle\n */\nexport function useLineTool(options: InsertToolOptions = {}): Tool<null> {\n const { behaviors } = options;\n return useMemo(\n () =>\n defineTool<null>({\n id: 'line',\n capabilities: ['creates-shapes'],\n hookName: 'useLineTool',\n cursor: cursorFor('crosshairLine', { fallback: 'crosshair' }),\n presentation: {\n label: 'Line',\n group: 'shape',\n icon: <LineIcon />,\n },\n bindings: [\n {\n spec: { kind: 'drag' },\n actionId: 'insert',\n opts: { params: { kind: 'line' } , ...insertBindingBehaviors(behaviors) },\n },\n ],\n }),\n [behaviors],\n );\n}\n"],"mappings":";;;;;;;AAsBA,SAAgBC,EAAY,IAA6B,CAAC,GAAe;CACvE,IAAM,EAAE,iBAAcC;CACtB,OAAOC,QAEHC,EAAiB;EACf,IAAI;EACJ,cAAc,CAAC,gBAAgB;EAC/B,UAAU;EACV,QAAQC,EAAU,iBAAiB,EAAE,UAAU,YAAY,CAAC;EAC5D,cAAc;GACZ,OAAO;GACP,OAAO;GACP,MAAM,kBAACL,GAAD,CAAW,CAAA;EACnB;EACA,UAAU,CACR;GACE,MAAM,EAAE,MAAM,OAAO;GACrB,UAAU;GACV,MAAM;IAAE,QAAQ,EAAE,MAAM,OAAO;IAAI,GAAGM,EAAuBC,CAAS;GAAE;EAC1E,CACF;CACF,CAAC,GACH,CAACA,CAAS,CACZ;AACF"}
|
|
1
|
+
{"version":3,"file":"useLineTool.js","names":["LineIcon","useLineTool","options","useMemo","defineTool","cursorFor","insertBindingBehaviors","behaviors"],"sources":["../../../../src/tools/builtin/line/useLineTool.tsx"],"sourcesContent":["import { useMemo } from 'react';\nimport { defineTool } from '../../overlayBinding';\nimport { LineIcon } from '../../../icons';\nimport type { Tool } from '../../overlayBinding';\nimport { insertBindingBehaviors, type InsertToolOptions } from '../shared/insertToolOptions';\nimport { cursorFor } from '@weasel-js/cursor';\n\n/** An endpoint of a line, in world coordinates. */\nexport interface LinePoint { x: number; y: number }\n\n/**\n * Click-down → drag → release line tool. The `drag` binding routes to\n * `insertAction`, which owns the live preview and commits through the\n * `insert` dep with `{ kind: 'line', a, b }` endpoints (not the AABB\n * diagonal), so the drag direction is preserved.\n *\n * Modifiers are applied by `insertAction`:\n * - shift: constrain to 15° increments\n * - alt: mirror the end around the start (the drag is treated as a\n * half-line) — the line-specific reading of the action's\n * corner ⇄ center origin toggle\n */\nexport function useLineTool(options: InsertToolOptions = {}): Tool<null> {\n const { behaviors } = options;\n return useMemo(\n () =>\n defineTool<null>({\n id: 'line',\n keybinding: { key: '\\\\' },\n capabilities: ['creates-shapes'],\n hookName: 'useLineTool',\n cursor: cursorFor('crosshairLine', { fallback: 'crosshair' }),\n presentation: {\n label: 'Line',\n group: 'shape',\n icon: <LineIcon />,\n },\n bindings: [\n {\n spec: { kind: 'drag' },\n actionId: 'insert',\n opts: { params: { kind: 'line' } , ...insertBindingBehaviors(behaviors) },\n },\n ],\n }),\n [behaviors],\n );\n}\n"],"mappings":";;;;;;;AAsBA,SAAgBC,EAAY,IAA6B,CAAC,GAAe;CACvE,IAAM,EAAE,iBAAcC;CACtB,OAAOC,QAEHC,EAAiB;EACf,IAAI;EACJ,YAAY,EAAE,KAAK,KAAK;EACxB,cAAc,CAAC,gBAAgB;EAC/B,UAAU;EACV,QAAQC,EAAU,iBAAiB,EAAE,UAAU,YAAY,CAAC;EAC5D,cAAc;GACZ,OAAO;GACP,OAAO;GACP,MAAM,kBAACL,GAAD,CAAW,CAAA;EACnB;EACA,UAAU,CACR;GACE,MAAM,EAAE,MAAM,OAAO;GACrB,UAAU;GACV,MAAM;IAAE,QAAQ,EAAE,MAAM,OAAO;IAAI,GAAGM,EAAuBC,CAAS;GAAE;EAC1E,CACF;CACF,CAAC,GACH,CAACA,CAAS,CACZ;AACF"}
|
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
import { pxExtent as e, withinPxRadius as t } from "../../../core/viewport/pxExtent.js";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
2
|
+
import { anchorsToPath as n, pathToAnchors as r } from "../../../features/paths/anchors.js";
|
|
3
|
+
import { asNodeId as i } from "../../../core/scene/types.js";
|
|
4
|
+
import { defaultCommitAdapter as a } from "../../../interactions/actions/defaultCommitAdapter.js";
|
|
5
|
+
import { createDeleteOp as o } from "../../../core/ops/delete.js";
|
|
6
6
|
import { defineTool as s } from "../../overlayBinding.js";
|
|
7
7
|
import c from "../../../icons/PenIcon.js";
|
|
8
8
|
import { nearestPathAnchor as l, reverseAnchors as u } from "../../../features/paths/nearestAnchor.js";
|
|
9
9
|
import { constrainTo45 as d } from "../../../util/constrainTo45.js";
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
10
|
+
import { createPointerFollower as f } from "../shared/pointerFollower.js";
|
|
11
|
+
import { boundsOfPath as p } from "@weasel-js/geom";
|
|
12
|
+
import { createElement as m, useCallback as h, useMemo as g, useReducer as _, useRef as v } from "react";
|
|
13
|
+
import { useLatest as y } from "@weasel-js/react";
|
|
14
|
+
import { ActionDisabledReason as b } from "@weasel-js/routing";
|
|
15
|
+
import { cursorFor as x } from "@weasel-js/cursor";
|
|
14
16
|
//#region src/tools/builtin/pen/usePenTool.ts
|
|
15
|
-
function
|
|
17
|
+
function S() {
|
|
16
18
|
return {
|
|
17
19
|
finishedSubpaths: [],
|
|
18
20
|
current: null,
|
|
@@ -22,99 +24,110 @@ function b() {
|
|
|
22
24
|
continuing: null
|
|
23
25
|
};
|
|
24
26
|
}
|
|
25
|
-
function
|
|
27
|
+
function C(e) {
|
|
26
28
|
e.finishedSubpaths = [], e.current = null, e.cursor = null, e.draggingHandleAt = null, e.closeHintActive = !1, e.continuing = null;
|
|
27
29
|
}
|
|
28
|
-
function
|
|
30
|
+
function w(e) {
|
|
29
31
|
return (e.current ? e.current.anchors.length : 0) + e.finishedSubpaths.reduce((e, t) => e + t.anchors.length, 0);
|
|
30
32
|
}
|
|
31
|
-
function
|
|
32
|
-
let
|
|
33
|
-
return t && t.anchors.length > 0 &&
|
|
33
|
+
function T(e, t) {
|
|
34
|
+
let r = [...e];
|
|
35
|
+
return t && t.anchors.length > 0 && r.push(t), n(r.map((e) => e.anchors), r.map((e) => e.closed));
|
|
34
36
|
}
|
|
35
|
-
function
|
|
36
|
-
let {
|
|
37
|
-
P.current === null && (P.current =
|
|
38
|
-
let F =
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
autoSelect: k,
|
|
42
|
-
autoCommitOnClose: A,
|
|
37
|
+
function E(e = {}) {
|
|
38
|
+
let { autoSelect: d = !0, autoCommitOnClose: E = !0, closeHitRadius: j = 8, anchorSnapRadius: M = 8, snapPoint: N } = e, P = v(null);
|
|
39
|
+
P.current === null && (P.current = S());
|
|
40
|
+
let F = y({
|
|
41
|
+
autoSelect: d,
|
|
42
|
+
autoCommitOnClose: E,
|
|
43
43
|
closeHitRadius: j,
|
|
44
44
|
anchorSnapRadius: M,
|
|
45
45
|
snapPoint: N
|
|
46
|
-
}), [, I] =
|
|
47
|
-
let
|
|
48
|
-
if (!
|
|
49
|
-
let { anchors:
|
|
50
|
-
|
|
51
|
-
let
|
|
52
|
-
|
|
53
|
-
let
|
|
54
|
-
...
|
|
55
|
-
fillRule:
|
|
46
|
+
}), [, I] = _((e) => e + 1, 0), L = h((e, t, a) => {
|
|
47
|
+
let o = a.editAnchors, s = e.continuing, c = [...e.finishedSubpaths, ...t ? [t] : []];
|
|
48
|
+
if (!o || c.length === 0) return;
|
|
49
|
+
let { anchors: l, closed: d } = r(T(c, null));
|
|
50
|
+
s.reversed && (l[0] = u(l[0]));
|
|
51
|
+
let f = r(s.original);
|
|
52
|
+
f.anchors.splice(s.sub, 1, l[0]), f.closed.splice(s.sub, 1, d[0]), f.anchors.push(...l.slice(1)), f.closed.push(...d.slice(1));
|
|
53
|
+
let p = {
|
|
54
|
+
...n(f.anchors, f.closed),
|
|
55
|
+
fillRule: s.original.fillRule
|
|
56
56
|
};
|
|
57
|
-
|
|
58
|
-
}, [F]), R =
|
|
57
|
+
A(p, s.original) || (o.applyEdit(s.id, p, "Continue path"), F.current.autoSelect && a.selection?.set([i(s.id)]));
|
|
58
|
+
}, [F]), R = h((e, t) => {
|
|
59
59
|
let n = e.current && e.current.anchors.length > 0 ? e.current : null;
|
|
60
60
|
if (e.continuing) {
|
|
61
|
-
L(e, n, t
|
|
61
|
+
L(e, n, t), C(e);
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
let r = n && n.anchors.length >= 2 ? n : null;
|
|
65
|
+
if (e.finishedSubpaths.length === 0 && !r) {
|
|
66
|
+
C(e);
|
|
62
67
|
return;
|
|
63
68
|
}
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
69
|
+
let i = e.finishedSubpaths.every((e) => e.closed) && (r === null || r.closed), a = T(e.finishedSubpaths, r), o = t.insert?.commit(p(a), {
|
|
70
|
+
kind: "path",
|
|
71
|
+
path: a,
|
|
72
|
+
closed: i
|
|
73
|
+
}) ?? null;
|
|
74
|
+
o !== null && F.current.autoSelect && t.selection?.set([o]), C(e);
|
|
75
|
+
}, [L, F]), z = h((e, t, n) => {
|
|
68
76
|
if (!n || n.end === null || !e.current || e.current.anchors.length === 0) return !1;
|
|
69
77
|
let r = e.continuing;
|
|
70
78
|
if (r && n.id === r.id && n.sub === r.sub) return !1;
|
|
71
79
|
let i = t.scene;
|
|
72
|
-
return !i && !t.applyOps || !(r ? t.editAnchors?.editOps :
|
|
73
|
-
}, [
|
|
74
|
-
let c = t.editAnchors, l = t.scene, d = e.current, { anchors: f, closed:
|
|
75
|
-
|
|
76
|
-
let
|
|
80
|
+
return !i && !t.applyOps || !(r ? t.editAnchors?.editOps : t.insert?.build) ? !1 : r?.id === n.id || i?.get(n.id) !== void 0;
|
|
81
|
+
}, []), B = h((e, t, s) => {
|
|
82
|
+
let c = t.editAnchors, l = t.scene, d = e.current, { anchors: f, closed: m } = r(T([...e.finishedSubpaths, d], null)), h = c.getEditablePath(s.id), g = r(h), _ = s.end === "last" ? u(g.anchors[s.sub]) : g.anchors[s.sub], v = f[f.length - 1], y = v[v.length - 1], b = d.anchors[d.anchors.length - 1].outHandle ?? _[0].outHandle;
|
|
83
|
+
b && (y.outHandle = { ...b }), v.push(..._.slice(1));
|
|
84
|
+
let x = e.continuing, S = x?.id === s.id, w = S ? {
|
|
77
85
|
anchors: [],
|
|
78
86
|
closed: []
|
|
79
87
|
} : {
|
|
80
|
-
anchors:
|
|
81
|
-
closed:
|
|
82
|
-
},
|
|
83
|
-
if (
|
|
84
|
-
|
|
85
|
-
let e =
|
|
86
|
-
e.anchors.splice(
|
|
88
|
+
anchors: g.anchors.filter((e, t) => t !== s.sub),
|
|
89
|
+
closed: g.closed.filter((e, t) => t !== s.sub)
|
|
90
|
+
}, E = "Join paths", D = [], O;
|
|
91
|
+
if (x) {
|
|
92
|
+
x.reversed && (f[0] = u(f[0]));
|
|
93
|
+
let e = r(x.original);
|
|
94
|
+
e.anchors.splice(x.sub, 1, f[0]), e.closed.splice(x.sub, 1, m[0]), e.anchors.push(...f.slice(1), ...w.anchors), e.closed.push(...m.slice(1), ...w.closed), S && (e.anchors.splice(s.sub, 1), e.closed.splice(s.sub, 1));
|
|
87
95
|
let t = {
|
|
88
|
-
...
|
|
89
|
-
fillRule:
|
|
96
|
+
...n(e.anchors, e.closed),
|
|
97
|
+
fillRule: x.original.fillRule
|
|
90
98
|
};
|
|
91
|
-
|
|
99
|
+
D.push(...c.editOps(x.id, t, E)), O = x.id;
|
|
92
100
|
} else {
|
|
93
|
-
let e =
|
|
94
|
-
|
|
101
|
+
let e = n([...f, ...w.anchors], [...m, ...w.closed]), r = t.insert.build(p(e), {
|
|
102
|
+
kind: "path",
|
|
103
|
+
path: e,
|
|
104
|
+
closed: !1
|
|
105
|
+
});
|
|
106
|
+
if (r === null) return;
|
|
107
|
+
D.push(...r.ops), O = r.id;
|
|
95
108
|
}
|
|
96
|
-
S ||
|
|
97
|
-
let
|
|
98
|
-
|
|
99
|
-
}, [F]), V =
|
|
100
|
-
let
|
|
101
|
-
if (
|
|
102
|
-
let
|
|
109
|
+
S || D.push(o({ node: l.get(s.id) }));
|
|
110
|
+
let k = t.applyOps;
|
|
111
|
+
k ? k(D, E) : l.applyBatch(D, E, a(l)), F.current.autoSelect && t.selection?.set([i(O)]), C(e);
|
|
112
|
+
}, [F]), V = h((e, t, n) => {
|
|
113
|
+
let i = P.current;
|
|
114
|
+
if (i.current || i.finishedSubpaths.length > 0) return !1;
|
|
115
|
+
let a = F.current.closeHitRadius, o = O(e), s = l(k(e, t, n, a), {
|
|
103
116
|
x: t,
|
|
104
117
|
y: n
|
|
105
|
-
},
|
|
118
|
+
}, a, o, (e) => e.end !== null);
|
|
106
119
|
if (!s) return !1;
|
|
107
|
-
let c = e.editAnchors.getEditablePath(s.id), d =
|
|
108
|
-
return
|
|
120
|
+
let c = e.editAnchors.getEditablePath(s.id), d = r(c).anchors[s.sub], f = s.end === "first" && d.length > 1;
|
|
121
|
+
return i.current = {
|
|
109
122
|
anchors: f ? u(d) : d,
|
|
110
123
|
closed: !1
|
|
111
|
-
},
|
|
124
|
+
}, i.continuing = {
|
|
112
125
|
id: s.id,
|
|
113
126
|
sub: s.sub,
|
|
114
127
|
reversed: f,
|
|
115
128
|
original: c
|
|
116
129
|
}, !0;
|
|
117
|
-
}, [F]), H =
|
|
130
|
+
}, [F]), H = h((e, t) => {
|
|
118
131
|
let n = F.current.snapPoint;
|
|
119
132
|
return n ? n({
|
|
120
133
|
x: e,
|
|
@@ -123,13 +136,13 @@ function w(e) {
|
|
|
123
136
|
x: e,
|
|
124
137
|
y: t
|
|
125
138
|
};
|
|
126
|
-
}, [F]), U =
|
|
139
|
+
}, [F]), U = h((e, t, n) => {
|
|
127
140
|
let r = F.current.anchorSnapRadius;
|
|
128
141
|
if (r > 0) {
|
|
129
|
-
let i = l(
|
|
142
|
+
let i = l(k(e, t, n, r), {
|
|
130
143
|
x: t,
|
|
131
144
|
y: n
|
|
132
|
-
}, r,
|
|
145
|
+
}, r, O(e));
|
|
133
146
|
if (i) return {
|
|
134
147
|
x: i.x,
|
|
135
148
|
y: i.y,
|
|
@@ -140,7 +153,28 @@ function w(e) {
|
|
|
140
153
|
...H(t, n),
|
|
141
154
|
hit: null
|
|
142
155
|
};
|
|
143
|
-
}, [H, F]), W =
|
|
156
|
+
}, [H, F]), W = h((e, n, r, i, a) => t(n - i, r - a, F.current.closeHitRadius, O(e)), [F]), G = g(() => {
|
|
157
|
+
let e, n = f(() => r()), r = () => {
|
|
158
|
+
let r = P.current;
|
|
159
|
+
!r.current && r.finishedSubpaths.length === 0 && n.unfollow();
|
|
160
|
+
let i = r.current ? n.pointer()?.get() ?? null : null;
|
|
161
|
+
r.cursor = i ? H(i.worldX, i.worldY) : null;
|
|
162
|
+
let a = r.current && r.current.anchors.length >= 3 ? r.current.anchors[0] : null;
|
|
163
|
+
r.closeHintActive = a !== null && r.cursor !== null && t(a.x - r.cursor.x, a.y - r.cursor.y, F.current.closeHitRadius, e?.get().scale ?? {
|
|
164
|
+
x: 1,
|
|
165
|
+
y: 1
|
|
166
|
+
}), I();
|
|
167
|
+
};
|
|
168
|
+
return {
|
|
169
|
+
refresh: r,
|
|
170
|
+
update(t) {
|
|
171
|
+
e = t.view, n.follow(t.pointer), r();
|
|
172
|
+
},
|
|
173
|
+
stop() {
|
|
174
|
+
n.unfollow(), I();
|
|
175
|
+
}
|
|
176
|
+
};
|
|
177
|
+
}, [H, F]), K = g(() => {
|
|
144
178
|
let e = () => P.current;
|
|
145
179
|
return [
|
|
146
180
|
{
|
|
@@ -149,10 +183,13 @@ function w(e) {
|
|
|
149
183
|
eligible: { capability: "creates-paths" },
|
|
150
184
|
requires: [
|
|
151
185
|
"view",
|
|
186
|
+
"pointer",
|
|
152
187
|
"areaSelect",
|
|
153
188
|
"editAnchors",
|
|
154
189
|
"scene",
|
|
155
|
-
"applyOps"
|
|
190
|
+
"applyOps",
|
|
191
|
+
"insert",
|
|
192
|
+
"selection"
|
|
156
193
|
],
|
|
157
194
|
invoker: {
|
|
158
195
|
timing: "immediate",
|
|
@@ -160,14 +197,14 @@ function w(e) {
|
|
|
160
197
|
let r = n;
|
|
161
198
|
if (r?.pressX === void 0 || r.pressY === void 0) return;
|
|
162
199
|
if (V(t, r.pressX, r.pressY)) {
|
|
163
|
-
|
|
200
|
+
G.update(t);
|
|
164
201
|
return;
|
|
165
202
|
}
|
|
166
203
|
let { x: i, y: a, hit: o } = U(t, r.pressX, r.pressY), s = e();
|
|
167
204
|
if (s.current && s.current.anchors.length >= 3) {
|
|
168
205
|
let e = s.current.anchors[0];
|
|
169
206
|
if (W(t, e.x, e.y, i, a)) {
|
|
170
|
-
s.current.closed = !0, s.finishedSubpaths.push(s.current), s.current = null, s.closeHintActive = !1, F.current.autoCommitOnClose && R(s, t),
|
|
207
|
+
s.current.closed = !0, s.finishedSubpaths.push(s.current), s.current = null, s.closeHintActive = !1, F.current.autoCommitOnClose && R(s, t), G.update(t);
|
|
171
208
|
return;
|
|
172
209
|
}
|
|
173
210
|
}
|
|
@@ -178,7 +215,7 @@ function w(e) {
|
|
|
178
215
|
}, s.current.anchors.push({
|
|
179
216
|
x: i,
|
|
180
217
|
y: a
|
|
181
|
-
}), c && B(s, t, o),
|
|
218
|
+
}), c && B(s, t, o), G.update(t);
|
|
182
219
|
}
|
|
183
220
|
}
|
|
184
221
|
},
|
|
@@ -186,13 +223,17 @@ function w(e) {
|
|
|
186
223
|
id: "pen.finishOpen",
|
|
187
224
|
label: "Pen — finish open path",
|
|
188
225
|
eligible: { capability: "creates-paths" },
|
|
189
|
-
requires: [
|
|
190
|
-
|
|
226
|
+
requires: [
|
|
227
|
+
"editAnchors",
|
|
228
|
+
"insert",
|
|
229
|
+
"selection"
|
|
230
|
+
],
|
|
231
|
+
enabled: () => w(e()) >= 2 || b.NotApplicable,
|
|
191
232
|
invoker: {
|
|
192
233
|
timing: "immediate",
|
|
193
234
|
run: (t, n) => {
|
|
194
235
|
let r = e();
|
|
195
|
-
n?.viaDoubleClick && r.current && (r.current.anchors.pop(), r.current.anchors.length === 0 && (r.current = null)), R(r, t),
|
|
236
|
+
n?.viaDoubleClick && r.current && (r.current.anchors.pop(), r.current.anchors.length === 0 && (r.current = null)), R(r, t), G.refresh();
|
|
196
237
|
}
|
|
197
238
|
}
|
|
198
239
|
},
|
|
@@ -202,10 +243,13 @@ function w(e) {
|
|
|
202
243
|
eligible: { capability: "creates-paths" },
|
|
203
244
|
requires: [
|
|
204
245
|
"view",
|
|
246
|
+
"pointer",
|
|
205
247
|
"areaSelect",
|
|
206
248
|
"editAnchors",
|
|
207
249
|
"scene",
|
|
208
|
-
"applyOps"
|
|
250
|
+
"applyOps",
|
|
251
|
+
"insert",
|
|
252
|
+
"selection"
|
|
209
253
|
],
|
|
210
254
|
invoker: {
|
|
211
255
|
timing: "ongoing",
|
|
@@ -223,18 +267,18 @@ function w(e) {
|
|
|
223
267
|
}
|
|
224
268
|
n.draggingHandleAt = n.current.anchors.length - 1, t.modifiers.alt && (n.current.anchors[n.draggingHandleAt].altBroken = !0);
|
|
225
269
|
let o = !i;
|
|
226
|
-
return
|
|
270
|
+
return D(n, t.world, t.modifiers.shift, o, F.current.snapPoint), G.update(t.deps), {
|
|
227
271
|
onMove: (t) => {
|
|
228
272
|
let n = e();
|
|
229
|
-
n.draggingHandleAt !== null && (t.modifiers.alt && n.current && (n.current.anchors[n.draggingHandleAt].altBroken = !0),
|
|
273
|
+
n.draggingHandleAt !== null && (t.modifiers.alt && n.current && (n.current.anchors[n.draggingHandleAt].altBroken = !0), D(n, t.world, t.modifiers.shift, o, F.current.snapPoint), I());
|
|
230
274
|
},
|
|
231
275
|
onEnd: (n, r) => {
|
|
232
276
|
let s = e();
|
|
233
277
|
if (r === "cancel") {
|
|
234
|
-
i ?
|
|
278
|
+
i ? C(s) : s.current && s.draggingHandleAt === s.current.anchors.length - 1 && (s.current.anchors.pop(), s.current.anchors.length === 0 && (s.current = null)), s.draggingHandleAt = null, G.refresh();
|
|
235
279
|
return;
|
|
236
280
|
}
|
|
237
|
-
s.draggingHandleAt !== null && (n.modifiers.alt && s.current && (s.current.anchors[s.draggingHandleAt].altBroken = !0),
|
|
281
|
+
s.draggingHandleAt !== null && (n.modifiers.alt && s.current && (s.current.anchors[s.draggingHandleAt].altBroken = !0), D(s, n.world, n.modifiers.shift, o, F.current.snapPoint), s.draggingHandleAt = null), a && s.current && B(s, t.deps, a), G.refresh();
|
|
238
282
|
}
|
|
239
283
|
};
|
|
240
284
|
}
|
|
@@ -244,12 +288,16 @@ function w(e) {
|
|
|
244
288
|
id: "pen.finish",
|
|
245
289
|
label: "Pen — finish path",
|
|
246
290
|
eligible: { capability: "creates-paths" },
|
|
247
|
-
requires: [
|
|
248
|
-
|
|
291
|
+
requires: [
|
|
292
|
+
"editAnchors",
|
|
293
|
+
"insert",
|
|
294
|
+
"selection"
|
|
295
|
+
],
|
|
296
|
+
enabled: () => w(e()) > 0 || b.NotApplicable,
|
|
249
297
|
invoker: {
|
|
250
298
|
timing: "immediate",
|
|
251
299
|
run: (t) => {
|
|
252
|
-
R(e(), t),
|
|
300
|
+
R(e(), t), G.refresh();
|
|
253
301
|
}
|
|
254
302
|
}
|
|
255
303
|
},
|
|
@@ -259,12 +307,12 @@ function w(e) {
|
|
|
259
307
|
eligible: { capability: "creates-paths" },
|
|
260
308
|
enabled: () => {
|
|
261
309
|
let t = e();
|
|
262
|
-
return t.current !== null || t.finishedSubpaths.length > 0 ||
|
|
310
|
+
return t.current !== null || t.finishedSubpaths.length > 0 || b.NotApplicable;
|
|
263
311
|
},
|
|
264
312
|
invoker: {
|
|
265
313
|
timing: "immediate",
|
|
266
314
|
run: () => {
|
|
267
|
-
|
|
315
|
+
C(e()), G.refresh();
|
|
268
316
|
}
|
|
269
317
|
}
|
|
270
318
|
}
|
|
@@ -276,22 +324,24 @@ function w(e) {
|
|
|
276
324
|
V,
|
|
277
325
|
z,
|
|
278
326
|
B,
|
|
279
|
-
F
|
|
327
|
+
F,
|
|
328
|
+
G
|
|
280
329
|
]);
|
|
281
|
-
return
|
|
330
|
+
return g(() => s({
|
|
282
331
|
id: "pen",
|
|
332
|
+
keybinding: { key: "P" },
|
|
283
333
|
capabilities: ["creates-paths"],
|
|
284
334
|
hookName: "usePenTool",
|
|
285
|
-
cursor: () => P.current?.closeHintActive ? "pointer" :
|
|
335
|
+
cursor: () => P.current?.closeHintActive ? "pointer" : x("pen", { fallback: "crosshair" }),
|
|
286
336
|
presentation: {
|
|
287
337
|
label: "Pen",
|
|
288
|
-
icon:
|
|
338
|
+
icon: m(c),
|
|
289
339
|
group: "draw"
|
|
290
340
|
},
|
|
291
341
|
initScratch: () => P.current,
|
|
292
|
-
actions:
|
|
342
|
+
actions: K,
|
|
293
343
|
onDeactivate: () => {
|
|
294
|
-
|
|
344
|
+
C(P.current), G.stop();
|
|
295
345
|
},
|
|
296
346
|
bindings: [
|
|
297
347
|
{
|
|
@@ -351,9 +401,9 @@ function w(e) {
|
|
|
351
401
|
actionId: "pen.cancel"
|
|
352
402
|
}
|
|
353
403
|
]
|
|
354
|
-
}), [G]);
|
|
404
|
+
}), [K, G]);
|
|
355
405
|
}
|
|
356
|
-
|
|
406
|
+
E.prefs = {
|
|
357
407
|
name: "Pen",
|
|
358
408
|
description: "Pen-tool behavior.",
|
|
359
409
|
children: { autoCommitOnClose: {
|
|
@@ -363,7 +413,7 @@ w.prefs = {
|
|
|
363
413
|
default: !0
|
|
364
414
|
} }
|
|
365
415
|
};
|
|
366
|
-
function
|
|
416
|
+
function D(e, t, n, r, i) {
|
|
367
417
|
if (e.current === null || e.draggingHandleAt === null) return;
|
|
368
418
|
let a = e.current.anchors[e.draggingHandleAt], o = i ? i(t) : t, s = o.x - a.x, c = o.y - a.y;
|
|
369
419
|
if (n) {
|
|
@@ -378,16 +428,16 @@ function T(e, t, n, r, i) {
|
|
|
378
428
|
y: a.y - c
|
|
379
429
|
});
|
|
380
430
|
}
|
|
381
|
-
function
|
|
431
|
+
function O(e) {
|
|
382
432
|
return e.view?.get().scale ?? {
|
|
383
433
|
x: 1,
|
|
384
434
|
y: 1
|
|
385
435
|
};
|
|
386
436
|
}
|
|
387
|
-
function
|
|
437
|
+
function k(t, n, r, i) {
|
|
388
438
|
let a = t.areaSelect, o = t.editAnchors;
|
|
389
439
|
if (!a || !o) return [];
|
|
390
|
-
let s = t.view, c = e(i,
|
|
440
|
+
let s = t.view, c = e(i, O(t)), l = a.hitTestArea({
|
|
391
441
|
x: n - c.x,
|
|
392
442
|
y: r - c.y,
|
|
393
443
|
width: 2 * c.x,
|
|
@@ -402,13 +452,13 @@ function D(t, n, r, i) {
|
|
|
402
452
|
}
|
|
403
453
|
return u;
|
|
404
454
|
}
|
|
405
|
-
function
|
|
455
|
+
function A(e, t) {
|
|
406
456
|
if (e.commands.length !== t.commands.length || e.coords.length !== t.coords.length) return !1;
|
|
407
457
|
for (let n = 0; n < e.commands.length; n++) if (e.commands[n] !== t.commands[n]) return !1;
|
|
408
458
|
for (let n = 0; n < e.coords.length; n++) if (e.coords[n] !== t.coords[n]) return !1;
|
|
409
459
|
return !0;
|
|
410
460
|
}
|
|
411
461
|
//#endregion
|
|
412
|
-
export {
|
|
462
|
+
export { E as usePenTool };
|
|
413
463
|
|
|
414
464
|
//# sourceMappingURL=usePenTool.js.map
|