@weasel-js/core 1.9.4 → 1.10.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 +918 -0
- package/README.md +38 -3
- package/dist/WeaselProvider.js +5 -7
- package/dist/WeaselProvider.js.map +1 -1
- package/dist/affordances/composeAffordanceLayer.js +92 -84
- package/dist/affordances/composeAffordanceLayer.js.map +1 -1
- package/dist/affordances/cornerResize.js +3 -2
- package/dist/affordances/cornerResize.js.map +1 -1
- package/dist/affordances/hitAffordanceRegions.js +71 -101
- package/dist/affordances/hitAffordanceRegions.js.map +1 -1
- package/dist/affordances/pathAnchors.js +50 -28
- package/dist/affordances/pathAnchors.js.map +1 -1
- package/dist/affordances/rotateCursor.js +12 -0
- package/dist/affordances/rotateCursor.js.map +1 -0
- package/dist/affordances/rotationHandle.js +44 -46
- package/dist/affordances/rotationHandle.js.map +1 -1
- package/dist/animation/behaviors/coast.js +21 -0
- package/dist/animation/behaviors/coast.js.map +1 -0
- package/dist/animation/behaviors/coastByWrite.js +107 -0
- package/dist/animation/behaviors/coastByWrite.js.map +1 -0
- package/dist/animation/behaviors/coastOnTargets.js +94 -0
- package/dist/animation/behaviors/coastOnTargets.js.map +1 -0
- package/dist/animation/behaviors/momentum.js +48 -136
- package/dist/animation/behaviors/momentum.js.map +1 -1
- package/dist/animation/clipTargets.js +12 -0
- package/dist/animation/clipTargets.js.map +1 -0
- package/dist/animation/index.js +15 -20
- package/dist/animation/poseHelpers.js +112 -33
- package/dist/animation/poseHelpers.js.map +1 -1
- package/dist/animation/poseTarget.js +115 -0
- package/dist/animation/poseTarget.js.map +1 -0
- package/dist/animation/reflow.js +113 -83
- package/dist/animation/reflow.js.map +1 -1
- package/dist/animation/rewind.js +66 -0
- package/dist/animation/rewind.js.map +1 -0
- package/dist/animation/rig/bindRig.js +85 -53
- package/dist/animation/rig/bindRig.js.map +1 -1
- package/dist/animation/rig/rigNode.js +99 -0
- package/dist/animation/rig/rigNode.js.map +1 -0
- package/dist/animation/rig/rigSeat.js +59 -0
- package/dist/animation/rig/rigSeat.js.map +1 -0
- package/dist/animation/rig/skinBinding.js +64 -0
- package/dist/animation/rig/skinBinding.js.map +1 -0
- package/dist/animation/rig/useRig.js +31 -16
- package/dist/animation/rig/useRig.js.map +1 -1
- package/dist/animation/wrappers/animateLifecycle.js +8 -7
- package/dist/animation/wrappers/animateLifecycle.js.map +1 -1
- package/dist/animation/wrappers/animateOnSetPose.js +31 -31
- package/dist/animation/wrappers/animateOnSetPose.js.map +1 -1
- package/dist/animation/wrappers/instantPose.js.map +1 -1
- package/dist/animation/writtenPoseTarget.js +33 -0
- package/dist/animation/writtenPoseTarget.js.map +1 -0
- package/dist/autoPoseDescriptor-DHg5KqaJ.d.ts +27 -0
- package/dist/barrel/canvas.js +32 -0
- package/dist/barrel/chrome.js +10 -10
- package/dist/barrel/input.js +16 -17
- package/dist/barrel/interactions.js +34 -37
- package/dist/barrel/paint.js +11 -18
- package/dist/barrel/paths.js +13 -19
- package/dist/barrel/renderer.js +14 -20
- package/dist/barrel/routing.js +54 -47
- package/dist/barrel/scene.js +37 -0
- package/dist/barrel/text.js +9 -18
- package/dist/barrel/viewport.js +44 -51
- package/dist/canvas/Canvas.js +270 -475
- package/dist/canvas/Canvas.js.map +1 -1
- package/dist/canvas/CanvasView.js +168 -190
- package/dist/canvas/CanvasView.js.map +1 -1
- package/dist/canvas/CursorCoordsHud.js +24 -25
- package/dist/canvas/CursorCoordsHud.js.map +1 -1
- package/dist/canvas/DrawCanvas.js +39 -56
- package/dist/canvas/DrawCanvas.js.map +1 -1
- package/dist/canvas/ModalityHud.js.map +1 -1
- package/dist/canvas/NodeShape.js +28 -29
- package/dist/canvas/NodeShape.js.map +1 -1
- package/dist/canvas/PickHud.js.map +1 -1
- package/dist/canvas/SceneCanvas/DevHuds.js +40 -0
- package/dist/canvas/SceneCanvas/DevHuds.js.map +1 -0
- package/dist/canvas/SceneCanvas/GestureDispatcherMounter.js +66 -107
- package/dist/canvas/SceneCanvas/GestureDispatcherMounter.js.map +1 -1
- package/dist/canvas/SceneCanvas/PointerProviderIfRoot.js +33 -36
- package/dist/canvas/SceneCanvas/PointerProviderIfRoot.js.map +1 -1
- package/dist/canvas/SceneCanvas/StandardActionsRegistrar.js +38 -50
- package/dist/canvas/SceneCanvas/StandardActionsRegistrar.js.map +1 -1
- package/dist/canvas/SceneCanvas/ToolKeybindingsMounter.js +3 -3
- package/dist/canvas/SceneCanvas/ToolKeybindingsMounter.js.map +1 -1
- package/dist/canvas/SceneCanvas/coordTrace.js +37 -1
- package/dist/canvas/SceneCanvas/coordTrace.js.map +1 -1
- package/dist/canvas/SceneCanvas/defaultNodeProperties.js +319 -270
- package/dist/canvas/SceneCanvas/defaultNodeProperties.js.map +1 -1
- package/dist/canvas/SceneCanvas/defaultNodeRouting.js +1 -1
- package/dist/canvas/SceneCanvas/defaultNodeRouting.js.map +1 -1
- package/dist/canvas/SceneCanvas/dispatcherGestureBounds.js.map +1 -1
- package/dist/canvas/SceneCanvas/features.js +71 -62
- package/dist/canvas/SceneCanvas/features.js.map +1 -1
- package/dist/canvas/SceneCanvas/insertPreviewCommands.js +97 -0
- package/dist/canvas/SceneCanvas/insertPreviewCommands.js.map +1 -0
- package/dist/canvas/SceneCanvas/isDev.js.map +1 -1
- package/dist/canvas/SceneCanvas/poseGeometry.js +33 -37
- package/dist/canvas/SceneCanvas/poseGeometry.js.map +1 -1
- package/dist/canvas/SceneCanvas/props.js +15 -14
- package/dist/canvas/SceneCanvas/props.js.map +1 -1
- package/dist/canvas/SceneCanvas/scenePointQuery.js +50 -0
- package/dist/canvas/SceneCanvas/scenePointQuery.js.map +1 -0
- package/dist/canvas/SceneCanvas/shapeGeneratorProperties.js +52 -0
- package/dist/canvas/SceneCanvas/shapeGeneratorProperties.js.map +1 -0
- package/dist/canvas/SceneCanvas/toolRegistry.js +23 -0
- package/dist/canvas/SceneCanvas/toolRegistry.js.map +1 -0
- package/dist/canvas/SceneCanvas/useActionTunings.js +17 -0
- package/dist/canvas/SceneCanvas/useActionTunings.js.map +1 -0
- package/dist/canvas/SceneCanvas/useActionsPropResolver.js +6 -1
- package/dist/canvas/SceneCanvas/useActionsPropResolver.js.map +1 -1
- package/dist/canvas/SceneCanvas/useBuiltinShapeTools.js.map +1 -1
- package/dist/canvas/SceneCanvas/useBuiltinTools.js +21 -0
- package/dist/canvas/SceneCanvas/useBuiltinTools.js.map +1 -0
- package/dist/canvas/SceneCanvas/useCanvasCamera.js +46 -0
- package/dist/canvas/SceneCanvas/useCanvasCamera.js.map +1 -0
- package/dist/canvas/SceneCanvas/useCanvasDispatcher.js +20 -0
- package/dist/canvas/SceneCanvas/useCanvasDispatcher.js.map +1 -0
- package/dist/canvas/SceneCanvas/useCanvasSelection.js +16 -0
- package/dist/canvas/SceneCanvas/useCanvasSelection.js.map +1 -0
- package/dist/canvas/SceneCanvas/useCanvasTools.js +67 -0
- package/dist/canvas/SceneCanvas/useCanvasTools.js.map +1 -0
- package/dist/canvas/SceneCanvas/useDispatcherOverlayLayer.js +49 -113
- package/dist/canvas/SceneCanvas/useDispatcherOverlayLayer.js.map +1 -1
- package/dist/canvas/SceneCanvas/useHeldModifiers.js +20 -0
- package/dist/canvas/SceneCanvas/useHeldModifiers.js.map +1 -0
- package/dist/canvas/SceneCanvas/useNodeAtPoint.js +26 -0
- package/dist/canvas/SceneCanvas/useNodeAtPoint.js.map +1 -0
- package/dist/canvas/SceneCanvas/useNodeKinds.js +26 -0
- package/dist/canvas/SceneCanvas/useNodeKinds.js.map +1 -0
- package/dist/canvas/SceneCanvas/usePreviewGhostLayer.js +51 -41
- package/dist/canvas/SceneCanvas/usePreviewGhostLayer.js.map +1 -1
- package/dist/canvas/SceneCanvas/useSceneCanvasHandle.js +47 -0
- package/dist/canvas/SceneCanvas/useSceneCanvasHandle.js.map +1 -0
- package/dist/canvas/SceneCanvas/useSceneCanvasLayers.js +66 -0
- package/dist/canvas/SceneCanvas/useSceneCanvasLayers.js.map +1 -0
- package/dist/canvas/SceneCanvas/useSceneChrome.js +59 -0
- package/dist/canvas/SceneCanvas/useSceneChrome.js.map +1 -0
- package/dist/canvas/SceneCanvas/useSceneRedrawSources.js +23 -0
- package/dist/canvas/SceneCanvas/useSceneRedrawSources.js.map +1 -0
- package/dist/canvas/SceneCanvas/useSceneSelectTool.js +65 -101
- package/dist/canvas/SceneCanvas/useSceneSelectTool.js.map +1 -1
- package/dist/canvas/SceneCanvas/useSceneSlotLayers.js +37 -0
- package/dist/canvas/SceneCanvas/useSceneSlotLayers.js.map +1 -0
- package/dist/canvas/SceneCanvas/useSelectionOverlayLayer.js +38 -0
- package/dist/canvas/SceneCanvas/useSelectionOverlayLayer.js.map +1 -0
- package/dist/canvas/SceneCanvas/useViewLayerGate.js +20 -0
- package/dist/canvas/SceneCanvas/useViewLayerGate.js.map +1 -0
- package/dist/canvas/SceneCanvas/useViewportActions.js +9 -1
- package/dist/canvas/SceneCanvas/useViewportActions.js.map +1 -1
- package/dist/canvas/SceneCanvas/worldPointAt.js +8 -0
- package/dist/canvas/SceneCanvas/worldPointAt.js.map +1 -0
- package/dist/canvas/SceneCanvas.js +301 -708
- package/dist/canvas/SceneCanvas.js.map +1 -1
- package/dist/canvas/SceneViewCanvas.js +41 -47
- package/dist/canvas/SceneViewCanvas.js.map +1 -1
- package/dist/canvas/SurfaceCanvas.js +40 -0
- package/dist/canvas/SurfaceCanvas.js.map +1 -0
- package/dist/canvas/adapterDerivedPath.js +26 -0
- package/dist/canvas/adapterDerivedPath.js.map +1 -0
- package/dist/canvas/adapterPickSource.js +34 -0
- package/dist/canvas/adapterPickSource.js.map +1 -0
- package/dist/canvas/affordanceAt.js +12 -2
- package/dist/canvas/affordanceAt.js.map +1 -1
- package/dist/canvas/buildSceneLayer.js +81 -61
- package/dist/canvas/buildSceneLayer.js.map +1 -1
- package/dist/canvas/buildSceneTree.js +56 -34
- package/dist/canvas/buildSceneTree.js.map +1 -1
- package/dist/canvas/canvasRenderer.js +40 -44
- package/dist/canvas/canvasRenderer.js.map +1 -1
- package/dist/canvas/colorOverrides.js.map +1 -1
- package/dist/canvas/copiesAbove.js +27 -0
- package/dist/canvas/copiesAbove.js.map +1 -0
- package/dist/canvas/defaultDrawOne.js +25 -24
- package/dist/canvas/defaultDrawOne.js.map +1 -1
- package/dist/canvas/deps/areaSelect.js +4 -4
- package/dist/canvas/deps/areaSelect.js.map +1 -1
- package/dist/canvas/deps/debug.js.map +1 -1
- package/dist/canvas/deps/editAnchors.js +47 -71
- package/dist/canvas/deps/editAnchors.js.map +1 -1
- package/dist/canvas/deps/geometryProjection.js.map +1 -1
- package/dist/canvas/deps/hitTestArea.js +45 -25
- package/dist/canvas/deps/hitTestArea.js.map +1 -1
- package/dist/canvas/deps/insert.js +149 -104
- package/dist/canvas/deps/insert.js.map +1 -1
- package/dist/canvas/deps/lassoSelect.js +5 -5
- package/dist/canvas/deps/lassoSelect.js.map +1 -1
- package/dist/canvas/deps/layout.js +9 -15
- package/dist/canvas/deps/layout.js.map +1 -1
- package/dist/canvas/deps/poseDescriptor.js +1 -1
- package/dist/canvas/deps/poseDescriptor.js.map +1 -1
- package/dist/canvas/deps/resizePolicy.js.map +1 -1
- package/dist/canvas/deps/slice.js +44 -45
- package/dist/canvas/deps/slice.js.map +1 -1
- package/dist/canvas/deps/textEdit.js +8 -8
- package/dist/canvas/deps/textEdit.js.map +1 -1
- package/dist/canvas/deps/view.js.map +1 -1
- package/dist/canvas/derivedPath.js +69 -43
- package/dist/canvas/derivedPath.js.map +1 -1
- package/dist/canvas/drawEnvelope.js +8 -4
- package/dist/canvas/drawEnvelope.js.map +1 -1
- package/dist/canvas/getNodeAtPoint.js +2 -6
- package/dist/canvas/getNodeAtPoint.js.map +1 -1
- package/dist/canvas/hud.module.js.map +1 -1
- package/dist/canvas/insertPreviewExtent.js +33 -31
- package/dist/canvas/insertPreviewExtent.js.map +1 -1
- package/dist/canvas/layerOrder.js.map +1 -1
- package/dist/canvas/layerSlots.js +6 -1
- package/dist/canvas/layerSlots.js.map +1 -1
- package/dist/canvas/nodeShapes/derivedPainter.js +12 -12
- package/dist/canvas/nodeShapes/derivedPainter.js.map +1 -1
- package/dist/canvas/nodeShapes/imagePainter.js +10 -10
- package/dist/canvas/nodeShapes/imagePainter.js.map +1 -1
- package/dist/canvas/nodeShapes/memo.js.map +1 -1
- package/dist/canvas/nodeShapes/nodePaint.js +34 -23
- package/dist/canvas/nodeShapes/nodePaint.js.map +1 -1
- package/dist/canvas/nodeShapes/pathPainter.js +23 -22
- package/dist/canvas/nodeShapes/pathPainter.js.map +1 -1
- package/dist/canvas/nodeShapes/poseBox.js +6 -6
- package/dist/canvas/nodeShapes/poseBox.js.map +1 -1
- package/dist/canvas/nodeShapes/rectFallbackPainter.js +8 -8
- package/dist/canvas/nodeShapes/rectFallbackPainter.js.map +1 -1
- package/dist/canvas/nodeShapes/shapePainter.js +16 -16
- package/dist/canvas/nodeShapes/shapePainter.js.map +1 -1
- package/dist/canvas/nodeShapes/textPainter.js +1 -1
- package/dist/canvas/nodeShapes/textPainter.js.map +1 -1
- package/dist/canvas/overChildren.js +29 -0
- package/dist/canvas/overChildren.js.map +1 -0
- package/dist/canvas/overlayRoleStrokes.js.map +1 -1
- package/dist/canvas/paintCull.js +6 -8
- package/dist/canvas/paintCull.js.map +1 -1
- package/dist/{features/cursor → canvas}/paintedCursorLayer.js +2 -2
- package/dist/canvas/paintedCursorLayer.js.map +1 -0
- package/dist/canvas/pickReach.js +23 -0
- package/dist/canvas/pickReach.js.map +1 -0
- package/dist/canvas/pickWalk.js +43 -70
- package/dist/canvas/pickWalk.js.map +1 -1
- package/dist/canvas/planeClips.js +18 -19
- package/dist/canvas/planeClips.js.map +1 -1
- package/dist/canvas/poseCascade.js +41 -0
- package/dist/canvas/poseCascade.js.map +1 -0
- package/dist/canvas/poseRotation.js +1 -3
- package/dist/canvas/poseRotation.js.map +1 -1
- package/dist/canvas/rasterReadback.js +22 -0
- package/dist/canvas/rasterReadback.js.map +1 -0
- package/dist/canvas/renderDebugSnapshot.js +12 -12
- package/dist/canvas/renderDebugSnapshot.js.map +1 -1
- package/dist/canvas/renderNeeds.js +3 -3
- package/dist/canvas/renderNeeds.js.map +1 -1
- package/dist/canvas/renderSceneToPixels.js +64 -83
- package/dist/canvas/renderSceneToPixels.js.map +1 -1
- package/dist/canvas/sceneAdapter.js +59 -144
- package/dist/canvas/sceneAdapter.js.map +1 -1
- package/dist/canvas/sceneClipboard.js +1 -1
- package/dist/canvas/sceneClipboard.js.map +1 -1
- package/dist/canvas/sceneLayerPaint.js +4 -4
- package/dist/canvas/sceneLayerPaint.js.map +1 -1
- package/dist/canvas/sceneSlotWiring.js +10 -9
- package/dist/canvas/sceneSlotWiring.js.map +1 -1
- package/dist/canvas/sceneViewRender.js +37 -42
- package/dist/canvas/sceneViewRender.js.map +1 -1
- package/dist/canvas/slopsDebugLayer.js +4 -4
- package/dist/canvas/slopsDebugLayer.js.map +1 -1
- package/dist/canvas/useCanvasRenderer.js +23 -11
- package/dist/canvas/useCanvasRenderer.js.map +1 -1
- package/dist/canvas/useCanvasSurface.js +31 -0
- package/dist/canvas/useCanvasSurface.js.map +1 -0
- package/dist/canvas/useCanvasView.js +51 -44
- package/dist/canvas/useCanvasView.js.map +1 -1
- package/dist/canvas/useFrameLoop.js +11 -12
- package/dist/canvas/useFrameLoop.js.map +1 -1
- package/dist/canvas/useHostAnchor.js +35 -33
- package/dist/canvas/useHostAnchor.js.map +1 -1
- package/dist/canvas/useLateContentRedraw.js +8 -8
- package/dist/canvas/useLateContentRedraw.js.map +1 -1
- package/dist/canvas/useSceneAdapter.js +22 -0
- package/dist/canvas/useSceneAdapter.js.map +1 -0
- package/dist/canvas/useSceneLayerList.js +4 -14
- package/dist/canvas/useSceneLayerList.js.map +1 -1
- package/dist/canvas/useSurfaceInput.js +39 -0
- package/dist/canvas/useSurfaceInput.js.map +1 -0
- package/dist/canvas/useToolCursor.js +29 -0
- package/dist/canvas/useToolCursor.js.map +1 -0
- package/dist/canvas/useViewHelpers.js +46 -85
- package/dist/canvas/useViewHelpers.js.map +1 -1
- package/dist/canvas/viewInputs.js.map +1 -1
- package/dist/canvas/viewRegistry.js +40 -34
- package/dist/canvas/viewRegistry.js.map +1 -1
- package/dist/canvas/watchElementMove.js +43 -0
- package/dist/canvas/watchElementMove.js.map +1 -0
- package/dist/canvas/wrapNodeOutput.js +7 -2
- package/dist/canvas/wrapNodeOutput.js.map +1 -1
- package/dist/clipboard.d.ts +7 -14
- package/dist/{types-B4iJRHC3.d.ts → clone-C0eADtS0.d.ts} +129 -84
- package/dist/clone.d.ts +4 -8
- package/dist/clone.js +0 -2
- package/dist/core/device/targets.js.map +1 -1
- package/dist/core/device/useDeviceProfile.js +13 -13
- package/dist/core/device/useDeviceProfile.js.map +1 -1
- package/dist/{interactions/actions/resize → core/geometry}/autoPoseDescriptor.js +8 -7
- package/dist/core/geometry/autoPoseDescriptor.js.map +1 -0
- package/dist/core/geometry/pathPoseDescriptor.js +88 -0
- package/dist/core/geometry/pathPoseDescriptor.js.map +1 -0
- package/dist/core/geometry/poseDescriptor.js +102 -29
- package/dist/core/geometry/poseDescriptor.js.map +1 -1
- package/dist/core/geometry/regionHit.js +35 -37
- package/dist/core/geometry/regionHit.js.map +1 -1
- package/dist/core/geometry/targetFrame.js +94 -0
- package/dist/core/geometry/targetFrame.js.map +1 -0
- package/dist/core/geometry/unionBounds.js +4 -5
- package/dist/core/geometry/unionBounds.js.map +1 -1
- package/dist/core/layers/backgroundFill.js +31 -0
- package/dist/core/layers/backgroundFill.js.map +1 -0
- package/dist/{features/groups → core/layers}/children.js +2 -4
- package/dist/core/layers/children.js.map +1 -0
- package/dist/{features/focus → core/layers}/gateLayer.js +2 -2
- package/dist/core/layers/gateLayer.js.map +1 -0
- package/dist/core/layers/layerGroup.js +40 -0
- package/dist/core/layers/layerGroup.js.map +1 -0
- package/dist/core/layers/render.js +50 -76
- package/dist/core/layers/render.js.map +1 -1
- package/dist/core/ops/create.js +2 -2
- package/dist/core/ops/create.js.map +1 -1
- package/dist/core/ops/createHistory.js +9 -9
- package/dist/core/ops/createHistory.js.map +1 -1
- package/dist/core/ops/delete.js +19 -23
- package/dist/core/ops/delete.js.map +1 -1
- package/dist/core/ops/reorder/index.js +3 -7
- package/dist/core/ops/reorder/index.js.map +1 -1
- package/dist/core/ops/reorder/setChildOrder.js +2 -4
- package/dist/core/ops/reorder/setChildOrder.js.map +1 -1
- package/dist/core/ops/reparent.js +0 -1
- package/dist/core/ops/reparent.js.map +1 -1
- package/dist/core/ops/slot.js +3 -6
- package/dist/core/ops/slot.js.map +1 -1
- package/dist/core/pages/fitViewToPage.js +15 -0
- package/dist/core/pages/fitViewToPage.js.map +1 -0
- package/dist/core/pages/pages.js +65 -0
- package/dist/core/pages/pages.js.map +1 -0
- package/dist/core/pages/pagesLayer.js +27 -0
- package/dist/core/pages/pagesLayer.js.map +1 -0
- package/dist/core/paint/meshKind.js +16 -0
- package/dist/core/paint/meshKind.js.map +1 -0
- package/dist/{features/meshPaint/lazyKind.js → core/paint/meshKindLazy.js} +104 -93
- package/dist/core/paint/meshKindLazy.js.map +1 -0
- package/dist/core/paint/paintKindEntry.js +8 -0
- package/dist/core/paint/paintKindEntry.js.map +1 -0
- package/dist/core/paint/paintKinds.js +144 -0
- package/dist/core/paint/paintKinds.js.map +1 -0
- package/dist/core/paint/registerMesh.js +7 -0
- package/dist/core/paint/registerMesh.js.map +1 -0
- package/dist/core/scene/NodeProperties.js.map +1 -1
- package/dist/core/scene/NodeRouting.js.map +1 -1
- package/dist/core/scene/arrivalWindow.js +65 -64
- package/dist/core/scene/arrivalWindow.js.map +1 -1
- package/dist/core/scene/boundOps.js +40 -0
- package/dist/core/scene/boundOps.js.map +1 -0
- package/dist/core/scene/composeFrame.js +9 -6
- package/dist/core/scene/composeFrame.js.map +1 -1
- package/dist/core/scene/composePose.js +105 -0
- package/dist/core/scene/composePose.js.map +1 -0
- package/dist/core/scene/depMemo.js +31 -6
- package/dist/core/scene/depMemo.js.map +1 -1
- package/dist/core/scene/derivedPath.js +19 -20
- package/dist/core/scene/derivedPath.js.map +1 -1
- package/dist/core/scene/editMode.js +26 -0
- package/dist/core/scene/editMode.js.map +1 -0
- package/dist/core/scene/effectivePose.js +42 -39
- package/dist/core/scene/effectivePose.js.map +1 -1
- package/dist/core/scene/fieldEdits.js +98 -0
- package/dist/core/scene/fieldEdits.js.map +1 -0
- package/dist/core/scene/historyFacade.js +122 -70
- package/dist/core/scene/historyFacade.js.map +1 -1
- package/dist/core/scene/historyForm.js +6 -0
- package/dist/core/scene/historyForm.js.map +1 -0
- package/dist/core/scene/kitOps.js +83 -71
- package/dist/core/scene/kitOps.js.map +1 -1
- package/dist/core/scene/kitRegistry.js.map +1 -1
- package/dist/core/scene/layerStack.js +105 -12
- package/dist/core/scene/layerStack.js.map +1 -1
- package/dist/core/scene/layoutPass.js +58 -59
- package/dist/core/scene/layoutPass.js.map +1 -1
- package/dist/{features/groups → core/scene}/nestedHit.js +3 -3
- package/dist/core/scene/nestedHit.js.map +1 -0
- package/dist/core/scene/nodeFnFields.js +16 -9
- package/dist/core/scene/nodeFnFields.js.map +1 -1
- package/dist/core/scene/nodeMemo.js.map +1 -1
- package/dist/core/scene/nodeStore.js +72 -71
- package/dist/core/scene/nodeStore.js.map +1 -1
- package/dist/core/scene/notifier.js +37 -0
- package/dist/core/scene/notifier.js.map +1 -0
- package/dist/core/scene/opTable.js +50 -0
- package/dist/core/scene/opTable.js.map +1 -0
- package/dist/core/scene/outerOps.js +67 -0
- package/dist/core/scene/outerOps.js.map +1 -0
- package/dist/core/scene/poseHold.js +39 -0
- package/dist/core/scene/poseHold.js.map +1 -0
- package/dist/core/scene/poseOverrides.js +44 -36
- package/dist/core/scene/poseOverrides.js.map +1 -1
- package/dist/core/scene/poseSnapshot.js.map +1 -1
- package/dist/core/scene/reconcileSpecs.js +4 -3
- package/dist/core/scene/reconcileSpecs.js.map +1 -1
- package/dist/core/scene/recorder.js +86 -0
- package/dist/core/scene/recorder.js.map +1 -0
- package/dist/core/scene/renderOrder.js.map +1 -1
- package/dist/core/scene/scene.js +81 -690
- package/dist/core/scene/scene.js.map +1 -1
- package/dist/core/scene/sceneEdits.js +58 -0
- package/dist/core/scene/sceneEdits.js.map +1 -0
- package/dist/core/scene/sceneMutators.js +49 -0
- package/dist/core/scene/sceneMutators.js.map +1 -0
- package/dist/core/scene/scenePoseAdapter.js +16 -0
- package/dist/core/scene/scenePoseAdapter.js.map +1 -0
- package/dist/core/scene/sceneRecording.js +91 -0
- package/dist/core/scene/sceneRecording.js.map +1 -0
- package/dist/core/scene/sceneSelection.js +28 -0
- package/dist/core/scene/sceneSelection.js.map +1 -0
- package/dist/core/scene/sceneState.js +49 -0
- package/dist/core/scene/sceneState.js.map +1 -0
- package/dist/core/scene/serialization.js +8 -5
- package/dist/core/scene/serialization.js.map +1 -1
- package/dist/core/scene/staleReplay.js +51 -0
- package/dist/core/scene/staleReplay.js.map +1 -0
- package/dist/core/scene/statedFields.js +9 -0
- package/dist/core/scene/statedFields.js.map +1 -0
- package/dist/core/scene/treeEdits.js +127 -0
- package/dist/core/scene/treeEdits.js.map +1 -0
- package/dist/core/scene/treeReads.js +26 -0
- package/dist/core/scene/treeReads.js.map +1 -0
- package/dist/core/scene/types.js.map +1 -1
- package/dist/{features/groups → core/scene}/unionOfChildren.js +3 -3
- package/dist/core/scene/unionOfChildren.js.map +1 -0
- package/dist/core/scene/unitScopes.js +13 -0
- package/dist/core/scene/unitScopes.js.map +1 -0
- package/dist/core/scene/useScene.js.map +1 -1
- package/dist/core/selection/readOnlySelection.js +32 -0
- package/dist/core/selection/readOnlySelection.js.map +1 -0
- package/dist/core/selection/usePublishSceneSelection.js +26 -0
- package/dist/core/selection/usePublishSceneSelection.js.map +1 -0
- package/dist/core/selection/useSelection.js +34 -25
- package/dist/core/selection/useSelection.js.map +1 -1
- package/dist/core/shapeKinds.js.map +1 -1
- package/dist/core/stylus/stylus.js.map +1 -1
- package/dist/core/stylus/usePointerStylus.js.map +1 -1
- package/dist/core/usePaintKinds.js +1 -1
- package/dist/core/usePaintKinds.js.map +1 -1
- package/dist/core/viewport/clientToWorld.js.map +1 -1
- package/dist/core/viewport/fitViewToBounds.js.map +1 -1
- package/dist/core/viewport/parallax.js.map +1 -1
- package/dist/core/viewport/screenSlop.js +11 -11
- package/dist/core/viewport/screenSlop.js.map +1 -1
- package/dist/core/viewport/useCanvasSize.js.map +1 -1
- package/dist/core/viewport/useDecayLoop.js +31 -33
- package/dist/core/viewport/useDecayLoop.js.map +1 -1
- package/dist/core/viewport/useNodeOverlayFrame.js +84 -0
- package/dist/core/viewport/useNodeOverlayFrame.js.map +1 -0
- package/dist/core/viewport/useViewAnimation.js +113 -53
- package/dist/core/viewport/useViewAnimation.js.map +1 -1
- package/dist/core/viewport/view.js +14 -11
- package/dist/core/viewport/view.js.map +1 -1
- package/dist/core/viewport/wheelHandler.js.map +1 -1
- package/dist/core/viewport/zoomAt.js +11 -2
- package/dist/core/viewport/zoomAt.js.map +1 -1
- package/dist/{cornerHandles-CtCb8a3G.d.ts → cornerHandles-BSKbyuvQ.d.ts} +11 -24
- package/dist/debug/createDebugOverlayLayer.js +100 -100
- package/dist/debug/createDebugOverlayLayer.js.map +1 -1
- package/dist/debug/createDebugSink.js.map +1 -1
- package/dist/debug/frameStats.js.map +1 -1
- package/dist/debug/useDebugSink.js +52 -0
- package/dist/debug/useDebugSink.js.map +1 -0
- package/dist/features/chrome-caps/buildChromeCtx.js.map +1 -1
- package/dist/features/chrome-caps/conditions.js.map +1 -1
- package/dist/features/chrome-caps/defaults.js.map +1 -1
- package/dist/features/chrome-caps/resolve.js.map +1 -1
- package/dist/features/chrome-caps/useChromeCaps.js +54 -0
- package/dist/features/chrome-caps/useChromeCaps.js.map +1 -0
- package/dist/features/chrome-caps/useHoverTracking.js.map +1 -1
- package/dist/features/ingestion/contentHandlers.js +25 -19
- package/dist/features/ingestion/contentHandlers.js.map +1 -1
- package/dist/features/ingestion/imageHandler.js +21 -24
- package/dist/features/ingestion/imageHandler.js.map +1 -1
- package/dist/features/ingestion/openFilePicker.js.map +1 -1
- package/dist/features/ingestion/placement.js +16 -0
- package/dist/features/ingestion/placement.js.map +1 -0
- package/dist/features/ingestion/svgHandler.js +5 -0
- package/dist/features/ingestion/svgHandler.js.map +1 -1
- package/dist/features/ingestion/textHandler.js +28 -0
- package/dist/features/ingestion/textHandler.js.map +1 -0
- package/dist/features/ingestion/useCanvasIngestion.js +48 -0
- package/dist/features/ingestion/useCanvasIngestion.js.map +1 -0
- package/dist/features/ingestion/weaselJsonHandler.js +5 -0
- package/dist/features/ingestion/weaselJsonHandler.js.map +1 -1
- package/dist/features/longPress/longPressFeedback.js.map +1 -1
- package/dist/features/modes/modeLayers.js +7 -7
- package/dist/features/modes/modeLayers.js.map +1 -1
- package/dist/features/paths/editablePath.js +63 -0
- package/dist/features/paths/editablePath.js.map +1 -0
- package/dist/features/paths/index.js +9 -16
- package/dist/features/paths/pathEditState.js +41 -0
- package/dist/features/paths/pathEditState.js.map +1 -0
- package/dist/features/paths/pathEditingOverlayLayer.js +36 -38
- package/dist/features/paths/pathEditingOverlayLayer.js.map +1 -1
- package/dist/features/paths/pathLayer.js +3 -2
- package/dist/features/paths/pathLayer.js.map +1 -1
- package/dist/features/paths/penPreviewLayer.js +86 -88
- package/dist/features/paths/penPreviewLayer.js.map +1 -1
- package/dist/features/paths/shapeGenerator.js +89 -0
- package/dist/features/paths/shapeGenerator.js.map +1 -0
- package/dist/features/paths/usePathEdit.js +34 -0
- package/dist/features/paths/usePathEdit.js.map +1 -0
- package/dist/features/poseRun/usePoseRun.js +44 -57
- package/dist/features/poseRun/usePoseRun.js.map +1 -1
- package/dist/features/selection/overlay.js +170 -178
- package/dist/features/selection/overlay.js.map +1 -1
- package/dist/features/text/index.js +6 -0
- package/dist/features/text/textLayer.js +1 -1
- package/dist/features/text/textLayer.js.map +1 -1
- package/dist/features/text/useSceneTextEdit.js +119 -88
- package/dist/features/text/useSceneTextEdit.js.map +1 -1
- package/dist/features/viewports/viewResolver.js +28 -24
- package/dist/features/viewports/viewResolver.js.map +1 -1
- package/dist/features/viewports/viewportLayer.js +25 -36
- package/dist/features/viewports/viewportLayer.js.map +1 -1
- package/dist/icons/SliceIcon.js +24 -0
- package/dist/icons/SliceIcon.js.map +1 -0
- package/dist/index.d.ts +5200 -8777
- package/dist/index.js +284 -320
- package/dist/input/keyState.js +14 -14
- package/dist/interactions/actions/actionShortcuts.js.map +1 -1
- package/dist/interactions/actions/{defaults/align.js → align/action.js} +15 -16
- package/dist/interactions/actions/align/action.js.map +1 -0
- package/dist/interactions/actions/align/align.js +24 -24
- package/dist/interactions/actions/align/align.js.map +1 -1
- package/dist/interactions/actions/booleans/action.js +65 -0
- package/dist/interactions/actions/booleans/action.js.map +1 -0
- package/dist/interactions/actions/booleans/booleans.js +74 -83
- package/dist/interactions/actions/booleans/booleans.js.map +1 -1
- package/dist/interactions/actions/booleans/operands.js +40 -0
- package/dist/interactions/actions/booleans/operands.js.map +1 -0
- package/dist/interactions/actions/booleans/pieces.js +45 -0
- package/dist/interactions/actions/booleans/pieces.js.map +1 -0
- package/dist/interactions/actions/booleans/placement.js +24 -0
- package/dist/interactions/actions/booleans/placement.js.map +1 -0
- package/dist/interactions/actions/booleans/useBooleans.js +11 -9
- package/dist/interactions/actions/booleans/useBooleans.js.map +1 -1
- package/dist/interactions/actions/booleans/useBooleansAdapter.js.map +1 -1
- package/dist/interactions/actions/{defaults/clipboard.js → clipboard/action.js} +19 -19
- package/dist/interactions/actions/clipboard/action.js.map +1 -0
- package/dist/interactions/actions/clipboard/clipboardOps.js +15 -15
- package/dist/interactions/actions/clipboard/clipboardOps.js.map +1 -1
- package/dist/interactions/actions/clipboard/wireFormat.js.map +1 -1
- package/dist/interactions/actions/clone/action.js +103 -0
- package/dist/interactions/actions/clone/action.js.map +1 -0
- package/dist/interactions/actions/clone/behaviors.js +52 -0
- package/dist/interactions/actions/clone/behaviors.js.map +1 -0
- package/dist/interactions/actions/defaultCommitAdapter.js +10 -37
- package/dist/interactions/actions/defaultCommitAdapter.js.map +1 -1
- package/dist/interactions/actions/defaults/anchorEditing.js +69 -74
- package/dist/interactions/actions/defaults/anchorEditing.js.map +1 -1
- package/dist/interactions/actions/defaults/anchorHandles.js +42 -0
- package/dist/interactions/actions/defaults/anchorHandles.js.map +1 -0
- package/dist/interactions/actions/defaults/anchorJoin.js +92 -0
- package/dist/interactions/actions/defaults/anchorJoin.js.map +1 -0
- package/dist/interactions/actions/defaults/areaSelect.js.map +1 -1
- package/dist/interactions/actions/defaults/bendSegment.js +46 -0
- package/dist/interactions/actions/defaults/bendSegment.js.map +1 -0
- package/dist/interactions/actions/defaults/cancelGesture.js.map +1 -1
- package/dist/interactions/actions/defaults/clearSelection.js.map +1 -1
- package/dist/interactions/actions/defaults/copySubtree.js +1 -1
- package/dist/interactions/actions/defaults/copySubtree.js.map +1 -1
- package/dist/interactions/actions/defaults/createPaintAction.js.map +1 -1
- package/dist/interactions/actions/defaults/delete.js.map +1 -1
- package/dist/interactions/actions/defaults/duplicate.js +36 -21
- package/dist/interactions/actions/defaults/duplicate.js.map +1 -1
- package/dist/interactions/actions/defaults/enterPathEdit.js +19 -7
- package/dist/interactions/actions/defaults/enterPathEdit.js.map +1 -1
- package/dist/interactions/actions/defaults/enterTextEdit.js.map +1 -1
- package/dist/interactions/actions/defaults/group.js +35 -40
- package/dist/interactions/actions/defaults/group.js.map +1 -1
- package/dist/interactions/actions/defaults/icons/anchorIcons.js +75 -0
- package/dist/interactions/actions/defaults/icons/anchorIcons.js.map +1 -0
- package/dist/interactions/actions/defaults/icons/booleanIcons.js +24 -1
- package/dist/interactions/actions/defaults/icons/booleanIcons.js.map +1 -1
- package/dist/interactions/actions/defaults/icons/editIcons.js +35 -8
- package/dist/interactions/actions/defaults/icons/editIcons.js.map +1 -1
- package/dist/interactions/actions/defaults/icons/outlineIcons.js +39 -1
- package/dist/interactions/actions/defaults/icons/outlineIcons.js.map +1 -1
- package/dist/interactions/actions/defaults/ingest.js +19 -15
- package/dist/interactions/actions/defaults/ingest.js.map +1 -1
- package/dist/interactions/actions/defaults/insertPathAnchor.js +18 -34
- package/dist/interactions/actions/defaults/insertPathAnchor.js.map +1 -1
- package/dist/interactions/actions/defaults/nudge.js +43 -39
- package/dist/interactions/actions/defaults/nudge.js.map +1 -1
- package/dist/interactions/actions/defaults/pinchZoom.js +29 -29
- package/dist/interactions/actions/defaults/pinchZoom.js.map +1 -1
- package/dist/interactions/actions/defaults/requiresSelection.js.map +1 -1
- package/dist/interactions/actions/defaults/segmentUnder.js +22 -0
- package/dist/interactions/actions/defaults/segmentUnder.js.map +1 -0
- package/dist/interactions/actions/defaults/setFill.js +9 -3
- package/dist/interactions/actions/defaults/setFill.js.map +1 -1
- package/dist/interactions/actions/defaults/setFillOpacity.js +4 -1
- package/dist/interactions/actions/defaults/setFillOpacity.js.map +1 -1
- package/dist/interactions/actions/defaults/setStroke.js.map +1 -1
- package/dist/interactions/actions/defaults/sliceOps.js +20 -22
- package/dist/interactions/actions/defaults/sliceOps.js.map +1 -1
- package/dist/interactions/actions/defaults/toolActivate.js.map +1 -1
- package/dist/interactions/actions/defaults/toolResetToDefault.js.map +1 -1
- package/dist/interactions/actions/defaults/viewportDragPan.js +1 -1
- package/dist/interactions/actions/defaults/viewportDragPan.js.map +1 -1
- package/dist/interactions/actions/defaults/viewportWheelPan.js.map +1 -1
- package/dist/interactions/actions/defaults/viewportZoom.js +82 -79
- package/dist/interactions/actions/defaults/viewportZoom.js.map +1 -1
- package/dist/interactions/actions/{defaults/distribute.js → distribute/action.js} +18 -19
- package/dist/interactions/actions/distribute/action.js.map +1 -0
- package/dist/interactions/actions/distribute/distribute.js +15 -15
- package/dist/interactions/actions/distribute/distribute.js.map +1 -1
- package/dist/interactions/actions/edit-anchors/action.js +101 -0
- package/dist/interactions/actions/edit-anchors/action.js.map +1 -0
- package/dist/interactions/actions/edit-anchors/geometry.js +2 -4
- package/dist/interactions/actions/edit-anchors/geometry.js.map +1 -1
- package/dist/interactions/actions/edit-anchors/preview.js +26 -0
- package/dist/interactions/actions/edit-anchors/preview.js.map +1 -0
- package/dist/interactions/actions/edit-anchors/symmetry.js +11 -0
- package/dist/interactions/actions/edit-anchors/symmetry.js.map +1 -0
- package/dist/interactions/actions/flip/action.js +124 -0
- package/dist/interactions/actions/flip/action.js.map +1 -0
- package/dist/interactions/actions/flip/helpers.js +1 -1
- package/dist/interactions/actions/flip/helpers.js.map +1 -1
- package/dist/interactions/actions/geometryProjection.js.map +1 -1
- package/dist/interactions/actions/gestureFrames.js +18 -0
- package/dist/interactions/actions/gestureFrames.js.map +1 -0
- package/dist/interactions/actions/gestureLifecycle.js +47 -20
- package/dist/interactions/actions/gestureLifecycle.js.map +1 -1
- package/dist/interactions/actions/insert/action.js +79 -0
- package/dist/interactions/actions/insert/action.js.map +1 -0
- package/dist/interactions/actions/insert/commit.js +28 -0
- package/dist/interactions/actions/insert/commit.js.map +1 -0
- package/dist/interactions/actions/insert/extras.js +65 -0
- package/dist/interactions/actions/insert/extras.js.map +1 -0
- package/dist/interactions/actions/insert/frame.js +55 -0
- package/dist/interactions/actions/insert/frame.js.map +1 -0
- package/dist/interactions/actions/insert/geometry.js +35 -0
- package/dist/interactions/actions/insert/geometry.js.map +1 -0
- package/dist/interactions/actions/insert/repositionAction.js +31 -0
- package/dist/interactions/actions/insert/repositionAction.js.map +1 -0
- package/dist/interactions/actions/insert/rotateAction.js +21 -0
- package/dist/interactions/actions/insert/rotateAction.js.map +1 -0
- package/dist/interactions/actions/insert/session.js +59 -0
- package/dist/interactions/actions/insert/session.js.map +1 -0
- package/dist/interactions/actions/insert/shape.js +34 -0
- package/dist/interactions/actions/insert/shape.js.map +1 -0
- package/dist/interactions/actions/lasso-select/action.js +143 -0
- package/dist/interactions/actions/lasso-select/action.js.map +1 -0
- package/dist/interactions/actions/move/action.js +91 -0
- package/dist/interactions/actions/move/action.js.map +1 -0
- package/dist/interactions/actions/move/behaviors/layoutDrop.js +51 -0
- package/dist/interactions/actions/move/behaviors/layoutDrop.js.map +1 -0
- package/dist/interactions/actions/move/behaviors/reparentOnDrop.js +15 -0
- package/dist/interactions/actions/move/behaviors/reparentOnDrop.js.map +1 -0
- package/dist/interactions/actions/move/behaviors/snapToContainer.js +35 -28
- package/dist/interactions/actions/move/behaviors/snapToContainer.js.map +1 -1
- package/dist/interactions/actions/move/capture.js +108 -0
- package/dist/interactions/actions/move/capture.js.map +1 -0
- package/dist/interactions/actions/move/commit/index.js +41 -0
- package/dist/interactions/actions/move/commit/index.js.map +1 -0
- package/dist/interactions/actions/move/commit/layoutDrop.js +44 -0
- package/dist/interactions/actions/move/commit/layoutDrop.js.map +1 -0
- package/dist/interactions/actions/move/commit/layoutRelease.js +100 -0
- package/dist/interactions/actions/move/commit/layoutRelease.js.map +1 -0
- package/dist/interactions/actions/move/commit/rebase.js +18 -0
- package/dist/interactions/actions/move/commit/rebase.js.map +1 -0
- package/dist/interactions/actions/move/commit/reparent.js +65 -0
- package/dist/interactions/actions/move/commit/reparent.js.map +1 -0
- package/dist/interactions/actions/move/delta.js +51 -0
- package/dist/interactions/actions/move/delta.js.map +1 -0
- package/dist/interactions/actions/move/frame.js +47 -0
- package/dist/interactions/actions/move/frame.js.map +1 -0
- package/dist/interactions/actions/move/gestureAdapter.js +15 -40
- package/dist/interactions/actions/move/gestureAdapter.js.map +1 -1
- package/dist/interactions/actions/move/landedDescendants.js +8 -8
- package/dist/interactions/actions/move/layout/container.js +94 -0
- package/dist/interactions/actions/move/layout/container.js.map +1 -0
- package/dist/interactions/actions/move/layout/dragged.js +58 -0
- package/dist/interactions/actions/move/layout/dragged.js.map +1 -0
- package/dist/interactions/actions/move/layout/dropPass.js +122 -0
- package/dist/interactions/actions/move/layout/dropPass.js.map +1 -0
- package/dist/interactions/actions/move/layout/exits.js +38 -0
- package/dist/interactions/actions/move/layout/exits.js.map +1 -0
- package/dist/interactions/actions/move/layout/glide.js +48 -0
- package/dist/interactions/actions/move/layout/glide.js.map +1 -0
- package/dist/interactions/actions/move/session.js +63 -0
- package/dist/interactions/actions/move/session.js.map +1 -0
- package/dist/interactions/actions/move/translate.js +61 -0
- package/dist/interactions/actions/move/translate.js.map +1 -0
- package/dist/interactions/actions/outlines/createOutlines.js +17 -64
- package/dist/interactions/actions/outlines/createOutlines.js.map +1 -1
- package/dist/interactions/actions/outlines/createOutlinesAction.js +51 -0
- package/dist/interactions/actions/outlines/createOutlinesAction.js.map +1 -0
- package/dist/interactions/actions/outlines/outlineStroke.js +72 -0
- package/dist/interactions/actions/outlines/outlineStroke.js.map +1 -0
- package/dist/interactions/actions/outlines/outlineStrokeAction.js +37 -0
- package/dist/interactions/actions/outlines/outlineStrokeAction.js.map +1 -0
- package/dist/interactions/actions/outlines/replaceWithPaths.js +54 -0
- package/dist/interactions/actions/outlines/replaceWithPaths.js.map +1 -0
- package/dist/interactions/actions/outlines/strokeRegion.js +27 -0
- package/dist/interactions/actions/outlines/strokeRegion.js.map +1 -0
- package/dist/interactions/actions/pathCommands/cutJoin.js +102 -0
- package/dist/interactions/actions/pathCommands/cutJoin.js.map +1 -0
- package/dist/interactions/actions/pathCommands/livePathEdit.js +64 -0
- package/dist/interactions/actions/pathCommands/livePathEdit.js.map +1 -0
- package/dist/interactions/actions/pathCommands/pathNodes.js +99 -0
- package/dist/interactions/actions/pathCommands/pathNodes.js.map +1 -0
- package/dist/interactions/actions/pathCommands/simplifyOffset.js +42 -0
- package/dist/interactions/actions/pathCommands/simplifyOffset.js.map +1 -0
- package/dist/interactions/actions/planeInput.js.map +1 -1
- package/dist/interactions/actions/pointerState.js +12 -0
- package/dist/interactions/actions/pointerState.js.map +1 -0
- package/dist/interactions/actions/poseDescriptorDep.js +1 -1
- package/dist/interactions/actions/poseDescriptorDep.js.map +1 -1
- package/dist/interactions/actions/poseFrame.js +26 -26
- package/dist/interactions/actions/poseFrame.js.map +1 -1
- package/dist/interactions/actions/resize/action.js +66 -0
- package/dist/interactions/actions/resize/action.js.map +1 -0
- package/dist/interactions/actions/resize/behaviors/lockAspect.js.map +1 -1
- package/dist/interactions/actions/resize/boxFrame.js +16 -0
- package/dist/interactions/actions/resize/boxFrame.js.map +1 -0
- package/dist/interactions/actions/resize/capture.js +85 -0
- package/dist/interactions/actions/resize/capture.js.map +1 -0
- package/dist/interactions/actions/resize/commit.js +69 -0
- package/dist/interactions/actions/resize/commit.js.map +1 -0
- package/dist/interactions/actions/resize/frame.js +88 -0
- package/dist/interactions/actions/resize/frame.js.map +1 -0
- package/dist/interactions/actions/resize/pointSnap.js +111 -0
- package/dist/interactions/actions/resize/pointSnap.js.map +1 -0
- package/dist/interactions/actions/resize/replay.js +47 -0
- package/dist/interactions/actions/resize/replay.js.map +1 -0
- package/dist/interactions/actions/resize/ruleBounds.js +9 -0
- package/dist/interactions/actions/resize/ruleBounds.js.map +1 -0
- package/dist/interactions/actions/resize/session.js +63 -0
- package/dist/interactions/actions/resize/session.js.map +1 -0
- package/dist/interactions/actions/resolveOverlays.js +2 -1
- package/dist/interactions/actions/resolveOverlays.js.map +1 -1
- package/dist/interactions/actions/resolvePreviews.js.map +1 -1
- package/dist/interactions/actions/rotate/action.js +71 -0
- package/dist/interactions/actions/rotate/action.js.map +1 -0
- package/dist/interactions/actions/rotate/behaviors/index.js +7 -0
- package/dist/interactions/actions/rotate/behaviors/index.js.map +1 -0
- package/dist/interactions/actions/rotate/behaviors/snapRotation.js +12 -0
- package/dist/interactions/actions/rotate/behaviors/snapRotation.js.map +1 -0
- package/dist/interactions/actions/rotate/commit.js +40 -0
- package/dist/interactions/actions/rotate/commit.js.map +1 -0
- package/dist/interactions/actions/rotate/frame.js +65 -0
- package/dist/interactions/actions/rotate/frame.js.map +1 -0
- package/dist/interactions/actions/rotate/handle.js +12 -12
- package/dist/interactions/actions/rotate/handle.js.map +1 -1
- package/dist/interactions/actions/rotate/replay.js +22 -0
- package/dist/interactions/actions/rotate/replay.js.map +1 -0
- package/dist/interactions/actions/rotate/session.js +102 -0
- package/dist/interactions/actions/rotate/session.js.map +1 -0
- package/dist/interactions/actions/spatialReference.js.map +1 -1
- package/dist/interactions/actions/transform-again/action.js +63 -0
- package/dist/interactions/actions/transform-again/action.js.map +1 -0
- package/dist/interactions/actions/transform-again/memory.js +35 -0
- package/dist/interactions/actions/transform-again/memory.js.map +1 -0
- package/dist/interactions/actions/useStandardActions.js +84 -61
- package/dist/interactions/actions/useStandardActions.js.map +1 -1
- package/dist/interactions/gestures/pointerDrag/pointerDrag.js +61 -42
- package/dist/interactions/gestures/pointerDrag/pointerDrag.js.map +1 -1
- package/dist/interactions/gestures/shared/originProjection.js +1 -1
- package/dist/interactions/gestures/shared/originProjection.js.map +1 -1
- package/dist/interactions/gestures/shared/screenTolerance.js +8 -2
- package/dist/interactions/gestures/shared/screenTolerance.js.map +1 -1
- package/dist/interactions/gestures/shared/snap.js.map +1 -1
- package/dist/math-CYUjoyyU.d.ts +33 -0
- package/dist/math.d.ts +5 -2
- package/dist/math.js +6 -6
- package/dist/mesh.d.ts +4 -268
- package/dist/mesh.js +3 -7
- package/dist/move.d.ts +6 -4
- package/dist/{originProjection-gHnOup4e.d.ts → originProjection-CoNVpITV.d.ts} +1 -1
- package/dist/patterns-builtin.d.ts +1 -118
- package/dist/patterns-builtin.js +2 -3
- package/dist/poseDescriptor-Bqk-11Rl.d.ts +73 -0
- package/dist/renderer.d.ts +1 -92
- package/dist/renderer.js +2 -19
- package/dist/resize.d.ts +11 -22
- package/dist/resize.js +1 -1
- package/dist/style.css +1 -1
- package/dist/test-hook/install.js.map +1 -1
- package/dist/test-hook/useTestHook.js +22 -0
- package/dist/test-hook/useTestHook.js.map +1 -0
- package/dist/test-seams-D0pyV3pR.d.ts +149 -0
- package/dist/test-seams.d.ts +4 -4
- package/dist/test-seams.js +2 -2
- package/dist/tools/builtin/bone/boneActions.js +130 -0
- package/dist/tools/builtin/bone/boneActions.js.map +1 -0
- package/dist/tools/builtin/bone/boneOverlay.js +58 -0
- package/dist/tools/builtin/bone/boneOverlay.js.map +1 -0
- package/dist/tools/builtin/bone/placedRig.js +24 -0
- package/dist/tools/builtin/bone/placedRig.js.map +1 -0
- package/dist/tools/builtin/bone/rigEditState.js +21 -0
- package/dist/tools/builtin/bone/rigEditState.js.map +1 -0
- package/dist/tools/builtin/bone/useBoneTool.js +98 -0
- package/dist/tools/builtin/bone/useBoneTool.js.map +1 -0
- package/dist/tools/builtin/ellipse/useEllipseTool.js +16 -15
- package/dist/tools/builtin/ellipse/useEllipseTool.js.map +1 -1
- package/dist/tools/builtin/eyedropper/useEyedropperTool.js.map +1 -1
- package/dist/tools/builtin/hand/useHandTool.js.map +1 -1
- package/dist/tools/builtin/image/useImageTool.js.map +1 -1
- package/dist/tools/builtin/lasso/useLassoTool.js.map +1 -1
- package/dist/tools/builtin/line/useLineTool.js +16 -15
- package/dist/tools/builtin/line/useLineTool.js.map +1 -1
- package/dist/tools/builtin/pen/usePenTool.js +162 -164
- package/dist/tools/builtin/pen/usePenTool.js.map +1 -1
- package/dist/tools/builtin/pencil/usePencilTool.js.map +1 -1
- package/dist/tools/builtin/pickTopMostHit.js +11 -14
- package/dist/tools/builtin/pickTopMostHit.js.map +1 -1
- package/dist/tools/builtin/polygon/usePolygonTool.js +17 -15
- package/dist/tools/builtin/polygon/usePolygonTool.js.map +1 -1
- package/dist/tools/builtin/rect/useRectTool.js +15 -14
- package/dist/tools/builtin/rect/useRectTool.js.map +1 -1
- package/dist/tools/builtin/select/adapterPointQuery.js +40 -0
- package/dist/tools/builtin/select/adapterPointQuery.js.map +1 -0
- package/dist/tools/builtin/select/selectionContributions.js +5 -5
- package/dist/tools/builtin/select/selectionContributions.js.map +1 -1
- package/dist/tools/builtin/select/useSelectTool.js +44 -71
- package/dist/tools/builtin/select/useSelectTool.js.map +1 -1
- package/dist/tools/builtin/shared/pointerFollower.js.map +1 -1
- package/dist/tools/builtin/slice/useSliceTool.js +69 -72
- package/dist/tools/builtin/slice/useSliceTool.js.map +1 -1
- package/dist/tools/builtin/star/useStarTool.js +18 -16
- package/dist/tools/builtin/star/useStarTool.js.map +1 -1
- package/dist/tools/builtin/text/useTextTool.js +10 -2
- package/dist/tools/builtin/text/useTextTool.js.map +1 -1
- package/dist/tools/builtin/weight/useWeightTool.js +77 -0
- package/dist/tools/builtin/weight/useWeightTool.js.map +1 -0
- package/dist/tools/builtin/weight/weightActions.js +112 -0
- package/dist/tools/builtin/weight/weightActions.js.map +1 -0
- package/dist/tools/builtin/weight/weightOverlay.js +61 -0
- package/dist/tools/builtin/weight/weightOverlay.js.map +1 -0
- package/dist/tools/overlayBinding.js.map +1 -1
- package/dist/tools/useKeybindings.js +20 -14
- package/dist/tools/useKeybindings.js.map +1 -1
- package/dist/{types-k-5Oqh-U.d.ts → types-DBbbCy0i.d.ts} +103 -176
- package/dist/util/paint.js +1 -1
- package/dist/util/paint.js.map +1 -1
- package/dist/version.js +1 -1
- package/package.json +26 -21
- package/dist/animation/colorHelpers.js +0 -135
- package/dist/animation/colorHelpers.js.map +0 -1
- package/dist/animation/colorRegistry.js +0 -37
- package/dist/animation/colorRegistry.js.map +0 -1
- package/dist/animation/engine/axes.js +0 -36
- package/dist/animation/engine/axes.js.map +0 -1
- package/dist/animation/engine/codec.js +0 -170
- package/dist/animation/engine/codec.js.map +0 -1
- package/dist/animation/engine/integrator.js +0 -12
- package/dist/animation/engine/integrator.js.map +0 -1
- package/dist/animation/loop.js +0 -60
- package/dist/animation/loop.js.map +0 -1
- package/dist/animation/observe.js +0 -23
- package/dist/animation/observe.js.map +0 -1
- package/dist/animation/rig/blendPoses.js +0 -43
- package/dist/animation/rig/blendPoses.js.map +0 -1
- package/dist/animation/rig/mirrorPose.js +0 -19
- package/dist/animation/rig/mirrorPose.js.map +0 -1
- package/dist/animation/rig/resolveSkeleton.js +0 -33
- package/dist/animation/rig/resolveSkeleton.js.map +0 -1
- package/dist/animation/rig/solveIk.js +0 -103
- package/dist/animation/rig/solveIk.js.map +0 -1
- package/dist/animation/rig/types.js +0 -12
- package/dist/animation/rig/types.js.map +0 -1
- package/dist/animation/slew.js +0 -27
- package/dist/animation/slew.js.map +0 -1
- package/dist/animation/stagger.js +0 -146
- package/dist/animation/stagger.js.map +0 -1
- package/dist/animation/timeline/booking.js +0 -114
- package/dist/animation/timeline/booking.js.map +0 -1
- package/dist/animation/timeline/createTimeline.js +0 -125
- package/dist/animation/timeline/createTimeline.js.map +0 -1
- package/dist/animation/timeline/sampleTrack.js +0 -79
- package/dist/animation/timeline/sampleTrack.js.map +0 -1
- package/dist/animation/useAnimator.js +0 -388
- package/dist/animation/useAnimator.js.map +0 -1
- package/dist/autoPoseDescriptor-Ct7yqivU.d.ts +0 -108
- package/dist/builtins-DPcdghtB.d.ts +0 -1223
- package/dist/canvas/MinimapCanvas.js +0 -140
- package/dist/canvas/MinimapCanvas.js.map +0 -1
- package/dist/canvas/deps/poseComposition.js +0 -11
- package/dist/canvas/deps/poseComposition.js.map +0 -1
- package/dist/canvas/minimapMath.js +0 -82
- package/dist/canvas/minimapMath.js.map +0 -1
- package/dist/canvas/toolPreview.js +0 -39
- package/dist/canvas/toolPreview.js.map +0 -1
- package/dist/core/adapters/arrayAdapter.js +0 -94
- package/dist/core/adapters/arrayAdapter.js.map +0 -1
- package/dist/core/adapters/useArrayAdapter.js +0 -13
- package/dist/core/adapters/useArrayAdapter.js.map +0 -1
- package/dist/core/fillInPoseFrame.js +0 -102
- package/dist/core/fillInPoseFrame.js.map +0 -1
- package/dist/core/geometry/poseFrame.js +0 -44
- package/dist/core/geometry/poseFrame.js.map +0 -1
- package/dist/core/geometry/poseRotation.js +0 -58
- package/dist/core/geometry/poseRotation.js.map +0 -1
- package/dist/core/gradient.js +0 -136
- package/dist/core/gradient.js.map +0 -1
- package/dist/core/markerInset.js +0 -24
- package/dist/core/markerInset.js.map +0 -1
- package/dist/core/mixed.js +0 -6
- package/dist/core/mixed.js.map +0 -1
- package/dist/core/paintKinds.js +0 -156
- package/dist/core/paintKinds.js.map +0 -1
- package/dist/core/scene/pickability.js +0 -6
- package/dist/core/scene/pickability.js.map +0 -1
- package/dist/core/strokeMarkerShapes.js +0 -139
- package/dist/core/strokeMarkerShapes.js.map +0 -1
- package/dist/core/strokeMarkers.js +0 -28
- package/dist/core/strokeMarkers.js.map +0 -1
- package/dist/core/viewport/meanScale.js +0 -8
- package/dist/core/viewport/meanScale.js.map +0 -1
- package/dist/core/viewport/pxExtent.js +0 -42
- package/dist/core/viewport/pxExtent.js.map +0 -1
- package/dist/features/cursor/paintedCursorLayer.js.map +0 -1
- package/dist/features/focus/gateLayer.js.map +0 -1
- package/dist/features/focus/useCanvasFocus.js +0 -29
- package/dist/features/focus/useCanvasFocus.js.map +0 -1
- package/dist/features/groups/children.js.map +0 -1
- package/dist/features/groups/composePose.js +0 -67
- package/dist/features/groups/composePose.js.map +0 -1
- package/dist/features/groups/nestedHit.js.map +0 -1
- package/dist/features/groups/unionOfChildren.js.map +0 -1
- package/dist/features/images/imageCache.js +0 -104
- package/dist/features/images/imageCache.js.map +0 -1
- package/dist/features/ingestion/index.js +0 -8
- package/dist/features/meshPaint/bake.js +0 -79
- package/dist/features/meshPaint/bake.js.map +0 -1
- package/dist/features/meshPaint/bakeCache.js +0 -59
- package/dist/features/meshPaint/bakeCache.js.map +0 -1
- package/dist/features/meshPaint/handles.js +0 -86
- package/dist/features/meshPaint/handles.js.map +0 -1
- package/dist/features/meshPaint/lazyKind.js.map +0 -1
- package/dist/features/meshPaint/meshPaint.js +0 -239
- package/dist/features/meshPaint/meshPaint.js.map +0 -1
- package/dist/features/meshPaint/meshShader.js +0 -6
- package/dist/features/meshPaint/meshShader.js.map +0 -1
- package/dist/features/meshPaint/register.js +0 -7
- package/dist/features/meshPaint/register.js.map +0 -1
- package/dist/features/meshPaint/surface.js +0 -110
- package/dist/features/meshPaint/surface.js.map +0 -1
- package/dist/features/minimap/actions.js +0 -53
- package/dist/features/minimap/actions.js.map +0 -1
- package/dist/features/minimap/createMinimapContribution.js +0 -96
- package/dist/features/minimap/createMinimapContribution.js.map +0 -1
- package/dist/features/minimap/layers.js +0 -85
- package/dist/features/minimap/layers.js.map +0 -1
- package/dist/features/overlays/useNodeOverlayFrame.js +0 -103
- package/dist/features/overlays/useNodeOverlayFrame.js.map +0 -1
- package/dist/features/parallax/createParallaxLayer.js +0 -26
- package/dist/features/parallax/createParallaxLayer.js.map +0 -1
- package/dist/features/parallax/createParallaxPlane.js +0 -22
- package/dist/features/parallax/createParallaxPlane.js.map +0 -1
- package/dist/features/paths/anchorEdits.js +0 -167
- package/dist/features/paths/anchorEdits.js.map +0 -1
- package/dist/features/paths/anchors.js +0 -159
- package/dist/features/paths/anchors.js.map +0 -1
- package/dist/features/paths/booleans.js +0 -2
- package/dist/features/paths/markerCommands.js +0 -149
- package/dist/features/paths/markerCommands.js.map +0 -1
- package/dist/features/paths/markerSites.js +0 -59
- package/dist/features/paths/markerSites.js.map +0 -1
- package/dist/features/paths/markers.js +0 -95
- package/dist/features/paths/markers.js.map +0 -1
- package/dist/features/paths/nearestAnchor.js +0 -36
- package/dist/features/paths/nearestAnchor.js.map +0 -1
- package/dist/features/paths/pathInWorld.js +0 -41
- package/dist/features/paths/pathInWorld.js.map +0 -1
- package/dist/features/paths/poseDescriptor.js +0 -39
- package/dist/features/paths/poseDescriptor.js.map +0 -1
- package/dist/features/paths/strokeToPath.js +0 -40
- package/dist/features/paths/strokeToPath.js.map +0 -1
- package/dist/features/paths/tessellate/dash.js +0 -52
- package/dist/features/paths/tessellate/dash.js.map +0 -1
- package/dist/features/paths/tessellate/insets.js +0 -32
- package/dist/features/paths/tessellate/insets.js.map +0 -1
- package/dist/features/paths/tessellate/metric.js +0 -72
- package/dist/features/paths/tessellate/metric.js.map +0 -1
- package/dist/features/paths/tessellate/stroke.js +0 -170
- package/dist/features/paths/tessellate/stroke.js.map +0 -1
- package/dist/features/paths/tessellate/vertexWidths.js +0 -32
- package/dist/features/paths/tessellate/vertexWidths.js.map +0 -1
- package/dist/features/patterns/commandPaint.js +0 -18
- package/dist/features/patterns/commandPaint.js.map +0 -1
- package/dist/features/patterns/index.js +0 -11
- package/dist/features/patterns/index.js.map +0 -1
- package/dist/features/patterns/patterns-builtin.js +0 -38
- package/dist/features/patterns/patterns-builtin.js.map +0 -1
- package/dist/features/patterns/rasterizeTile.js +0 -17
- package/dist/features/patterns/rasterizeTile.js.map +0 -1
- package/dist/features/patterns/resolveSpec.js +0 -65
- package/dist/features/patterns/resolveSpec.js.map +0 -1
- package/dist/features/patterns/tileGeometry.js +0 -158
- package/dist/features/patterns/tileGeometry.js.map +0 -1
- package/dist/features/pointer/PointerContext.js +0 -45
- package/dist/features/pointer/PointerContext.js.map +0 -1
- package/dist/features/selection/SelectionContext.js +0 -51
- package/dist/features/selection/SelectionContext.js.map +0 -1
- package/dist/features/simulation/createSimulation.js +0 -61
- package/dist/features/simulation/createSimulation.js.map +0 -1
- package/dist/features/simulation/types.js +0 -6
- package/dist/features/simulation/types.js.map +0 -1
- package/dist/features/simulation/useSimulation.js +0 -74
- package/dist/features/simulation/useSimulation.js.map +0 -1
- package/dist/features/text/domOffsets.js +0 -82
- package/dist/features/text/domOffsets.js.map +0 -1
- package/dist/features/text/domRuns.js +0 -230
- package/dist/features/text/domRuns.js.map +0 -1
- package/dist/features/text/fitTextPose.js +0 -38
- package/dist/features/text/fitTextPose.js.map +0 -1
- package/dist/features/text/hitTest.js +0 -48
- package/dist/features/text/hitTest.js.map +0 -1
- package/dist/features/text/isTextData.js +0 -8
- package/dist/features/text/isTextData.js.map +0 -1
- package/dist/features/text/overlayDirection.js +0 -15
- package/dist/features/text/overlayDirection.js.map +0 -1
- package/dist/features/text/renderLabel.js +0 -14
- package/dist/features/text/renderLabel.js.map +0 -1
- package/dist/features/text/runs/effectiveRangeStyle.js +0 -66
- package/dist/features/text/runs/effectiveRangeStyle.js.map +0 -1
- package/dist/features/text/runs/flagRange.js +0 -53
- package/dist/features/text/runs/flagRange.js.map +0 -1
- package/dist/features/text/runs/rangeStyle.js +0 -133
- package/dist/features/text/runs/rangeStyle.js.map +0 -1
- package/dist/features/text/textCommand.js +0 -60
- package/dist/features/text/textCommand.js.map +0 -1
- package/dist/features/text/textToPath.js +0 -181
- package/dist/features/text/textToPath.js.map +0 -1
- package/dist/features/text/useTextEdit.js +0 -491
- package/dist/features/text/useTextEdit.js.map +0 -1
- package/dist/features/tiling/createTiledLayer.js +0 -65
- package/dist/features/tiling/createTiledLayer.js.map +0 -1
- package/dist/features/tiling/tiledProject.js +0 -14
- package/dist/features/tiling/tiledProject.js.map +0 -1
- package/dist/interactions/actions/clone/behaviors/cloneByAltDrag.js +0 -26
- package/dist/interactions/actions/clone/behaviors/cloneByAltDrag.js.map +0 -1
- package/dist/interactions/actions/defaults/align.js.map +0 -1
- package/dist/interactions/actions/defaults/booleans.js +0 -52
- package/dist/interactions/actions/defaults/booleans.js.map +0 -1
- package/dist/interactions/actions/defaults/clipboard.js.map +0 -1
- package/dist/interactions/actions/defaults/clone.js +0 -91
- package/dist/interactions/actions/defaults/clone.js.map +0 -1
- package/dist/interactions/actions/defaults/createOutlines.js +0 -47
- package/dist/interactions/actions/defaults/createOutlines.js.map +0 -1
- package/dist/interactions/actions/defaults/distribute.js.map +0 -1
- package/dist/interactions/actions/defaults/editAnchors.js +0 -100
- package/dist/interactions/actions/defaults/editAnchors.js.map +0 -1
- package/dist/interactions/actions/defaults/flip.js +0 -125
- package/dist/interactions/actions/defaults/flip.js.map +0 -1
- package/dist/interactions/actions/defaults/insert.js +0 -287
- package/dist/interactions/actions/defaults/insert.js.map +0 -1
- package/dist/interactions/actions/defaults/lassoSelect.js +0 -153
- package/dist/interactions/actions/defaults/lassoSelect.js.map +0 -1
- package/dist/interactions/actions/defaults/move.js +0 -778
- package/dist/interactions/actions/defaults/move.js.map +0 -1
- package/dist/interactions/actions/defaults/resize.js +0 -341
- package/dist/interactions/actions/defaults/resize.js.map +0 -1
- package/dist/interactions/actions/defaults/rotate.js +0 -185
- package/dist/interactions/actions/defaults/rotate.js.map +0 -1
- package/dist/interactions/actions/previewOverrides.js +0 -25
- package/dist/interactions/actions/previewOverrides.js.map +0 -1
- package/dist/interactions/actions/resize/autoPoseDescriptor.js.map +0 -1
- package/dist/layout/arrivals.js +0 -36
- package/dist/layout/arrivals.js.map +0 -1
- package/dist/math-J-ACHyEg.d.ts +0 -159
- package/dist/registerProgram-T9S_PfAX.d.ts +0 -208
- package/dist/renderer/DrawCommand.js +0 -6
- package/dist/renderer/DrawCommand.js.map +0 -1
- package/dist/renderer/WeaselRenderer.js +0 -333
- package/dist/renderer/WeaselRenderer.js.map +0 -1
- package/dist/renderer/batchClip.js +0 -46
- package/dist/renderer/batchClip.js.map +0 -1
- package/dist/renderer/cache/GLImageCache.js +0 -74
- package/dist/renderer/cache/GLImageCache.js.map +0 -1
- package/dist/renderer/cache/GLMeshCache.js +0 -102
- package/dist/renderer/cache/GLMeshCache.js.map +0 -1
- package/dist/renderer/cache/GLTextureCache.js +0 -68
- package/dist/renderer/cache/GLTextureCache.js.map +0 -1
- package/dist/renderer/cache/GradientRampAtlas.js +0 -82
- package/dist/renderer/cache/GradientRampAtlas.js.map +0 -1
- package/dist/renderer/cache/cache.js +0 -13
- package/dist/renderer/cache/cache.js.map +0 -1
- package/dist/renderer/cache/markerCommandCache.js +0 -63
- package/dist/renderer/cache/markerCommandCache.js.map +0 -1
- package/dist/renderer/cache/outlineMeshCache.js +0 -15
- package/dist/renderer/cache/outlineMeshCache.js.map +0 -1
- package/dist/renderer/cache/outlineStrokeMeshCache.js +0 -36
- package/dist/renderer/cache/outlineStrokeMeshCache.js.map +0 -1
- package/dist/renderer/cache/strokeMeshCache.js +0 -55
- package/dist/renderer/cache/strokeMeshCache.js.map +0 -1
- package/dist/renderer/cullDrawCommands.js +0 -90
- package/dist/renderer/cullDrawCommands.js.map +0 -1
- package/dist/renderer/draw/batch.js +0 -133
- package/dist/renderer/draw/batch.js.map +0 -1
- package/dist/renderer/draw/clip.js +0 -89
- package/dist/renderer/draw/clip.js.map +0 -1
- package/dist/renderer/draw/customShader.js +0 -230
- package/dist/renderer/draw/customShader.js.map +0 -1
- package/dist/renderer/draw/drawTriangles.js +0 -8
- package/dist/renderer/draw/drawTriangles.js.map +0 -1
- package/dist/renderer/draw/effects.js +0 -28
- package/dist/renderer/draw/effects.js.map +0 -1
- package/dist/renderer/draw/flushBatch.js +0 -35
- package/dist/renderer/draw/flushBatch.js.map +0 -1
- package/dist/renderer/draw/gradient.js +0 -90
- package/dist/renderer/draw/gradient.js.map +0 -1
- package/dist/renderer/draw/image.js +0 -38
- package/dist/renderer/draw/image.js.map +0 -1
- package/dist/renderer/draw/mesh.js +0 -16
- package/dist/renderer/draw/mesh.js.map +0 -1
- package/dist/renderer/draw/paintBind.js +0 -70
- package/dist/renderer/draw/paintBind.js.map +0 -1
- package/dist/renderer/draw/pathPaint.js +0 -142
- package/dist/renderer/draw/pathPaint.js.map +0 -1
- package/dist/renderer/draw/scratchPass.js +0 -83
- package/dist/renderer/draw/scratchPass.js.map +0 -1
- package/dist/renderer/draw/stencil.js +0 -28
- package/dist/renderer/draw/stencil.js.map +0 -1
- package/dist/renderer/draw/text.js +0 -167
- package/dist/renderer/draw/text.js.map +0 -1
- package/dist/renderer/draw/uniforms.js +0 -77
- package/dist/renderer/draw/uniforms.js.map +0 -1
- package/dist/renderer/draw.js +0 -79
- package/dist/renderer/draw.js.map +0 -1
- package/dist/renderer/drawBatch.js +0 -198
- package/dist/renderer/drawBatch.js.map +0 -1
- package/dist/renderer/effects/EffectTargets.js +0 -48
- package/dist/renderer/effects/EffectTargets.js.map +0 -1
- package/dist/renderer/effects/builtins.js +0 -31
- package/dist/renderer/effects/builtins.js.map +0 -1
- package/dist/renderer/effects/composite.js +0 -11
- package/dist/renderer/effects/composite.js.map +0 -1
- package/dist/renderer/effects/effectPrelude.js +0 -10
- package/dist/renderer/effects/effectPrelude.js.map +0 -1
- package/dist/renderer/effects/types.js +0 -10
- package/dist/renderer/effects/types.js.map +0 -1
- package/dist/renderer/glyphOutlineMesh.js +0 -67
- package/dist/renderer/glyphOutlineMesh.js.map +0 -1
- package/dist/renderer/index.js +0 -20
- package/dist/renderer/math/color.js +0 -321
- package/dist/renderer/math/color.js.map +0 -1
- package/dist/renderer/math/mat3.js +0 -80
- package/dist/renderer/math/mat3.js.map +0 -1
- package/dist/renderer/math/patternSpace.js +0 -22
- package/dist/renderer/math/patternSpace.js.map +0 -1
- package/dist/renderer/math/viewToMat3.js +0 -19
- package/dist/renderer/math/viewToMat3.js.map +0 -1
- package/dist/renderer/paintResources.js +0 -18
- package/dist/renderer/paintResources.js.map +0 -1
- package/dist/renderer/paintScratch.js +0 -37
- package/dist/renderer/paintScratch.js.map +0 -1
- package/dist/renderer/shaders/ShaderProgram.js +0 -74
- package/dist/renderer/shaders/ShaderProgram.js.map +0 -1
- package/dist/renderer/shaders/batchFill.js +0 -119
- package/dist/renderer/shaders/batchFill.js.map +0 -1
- package/dist/renderer/shaders/customPrelude.js +0 -34
- package/dist/renderer/shaders/customPrelude.js.map +0 -1
- package/dist/renderer/shaders/extractUniformNames.js +0 -184
- package/dist/renderer/shaders/extractUniformNames.js.map +0 -1
- package/dist/renderer/shaders/glyphPaint.js +0 -61
- package/dist/renderer/shaders/glyphPaint.js.map +0 -1
- package/dist/renderer/shaders/gradFill.js +0 -31
- package/dist/renderer/shaders/gradFill.js.map +0 -1
- package/dist/renderer/shaders/pathFill.js +0 -14
- package/dist/renderer/shaders/pathFill.js.map +0 -1
- package/dist/renderer/shaders/patternFill.js +0 -25
- package/dist/renderer/shaders/patternFill.js.map +0 -1
- package/dist/renderer/shaders/registerProgram.js +0 -18
- package/dist/renderer/shaders/registerProgram.js.map +0 -1
- package/dist/renderer/spriteSheet.js +0 -14
- package/dist/renderer/spriteSheet.js.map +0 -1
- package/dist/renderer/state/GroupState.js +0 -77
- package/dist/renderer/state/GroupState.js.map +0 -1
- package/dist/renderer/strokeLengths.js +0 -50
- package/dist/renderer/strokeLengths.js.map +0 -1
- package/dist/renderer/syntheticItalic.js +0 -6
- package/dist/renderer/syntheticItalic.js.map +0 -1
- package/dist/renderer/textures/registerTexture.js +0 -34
- package/dist/renderer/textures/registerTexture.js.map +0 -1
- package/dist/scheduling/useVisibleRaf.js +0 -69
- package/dist/scheduling/useVisibleRaf.js.map +0 -1
- package/dist/test-seams-DM2B87-g.d.ts +0 -356
|
@@ -1,13 +1,34 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { a as PlaneMap, S as SnapTarget, M as MoveAdapter } from './types-DBbbCy0i.js';
|
|
2
2
|
import { Op } from '@weasel-js/history';
|
|
3
3
|
import { Bounds, ModifierState, View, ResizeAnchor } from '@weasel-js/routing';
|
|
4
4
|
|
|
5
|
-
/**
|
|
5
|
+
/**
|
|
6
|
+
* What a behavior needs to take a pose between the frame a node stores it in
|
|
7
|
+
* and world. A node under a container whose pose is a frame stores its pose
|
|
8
|
+
* in that frame, so a stored pose and a world pose are different values
|
|
9
|
+
* there; under the default composition they are the same and every method is
|
|
10
|
+
* an identity.
|
|
11
|
+
*/
|
|
12
|
+
interface GestureFrames<TPose> {
|
|
13
|
+
/** `id`'s pose in world, as the scene shows it now: the gesture's preview
|
|
14
|
+
* once one is published. */
|
|
15
|
+
world(id: string): TPose;
|
|
16
|
+
/** `pose`, as `id` stores it, in world. */
|
|
17
|
+
toWorld(id: string, pose: TPose): TPose;
|
|
18
|
+
/** `worldPose` as `id` stores it: what a pose op or a preview takes. */
|
|
19
|
+
toLocal(id: string, worldPose: TPose): TPose;
|
|
20
|
+
/** How the world the gesture edits in maps into the world `layer`'s nodes
|
|
21
|
+
* are stored in, read now. Null when they are the same world. */
|
|
22
|
+
planeOf(layer: string): PlaneMap | null;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/** Pointer position in world coords, and in client coords when the event carried them
|
|
26
|
+
* (a keystroke, a UI-driven trigger, and a synthetic probe do not). */
|
|
6
27
|
interface PointerState {
|
|
7
28
|
worldX: number;
|
|
8
29
|
worldY: number;
|
|
9
|
-
clientX
|
|
10
|
-
clientY
|
|
30
|
+
clientX?: number;
|
|
31
|
+
clientY?: number;
|
|
11
32
|
}
|
|
12
33
|
/**
|
|
13
34
|
* Per-gesture context passed to behaviors. `current` is the running pose
|
|
@@ -39,6 +60,21 @@ interface GestureContext<TPose, TNode extends {
|
|
|
39
60
|
* through this before comparing them with a pose.
|
|
40
61
|
*/
|
|
41
62
|
plane?: PlaneMap | null;
|
|
63
|
+
/**
|
|
64
|
+
* Frame math over the scene the gesture edits; see {@link GestureFrames}.
|
|
65
|
+
* Set by move, resize, rotate, and clone. Absent where no node is behind
|
|
66
|
+
* the gesture's poses: an insert's points, a lasso's.
|
|
67
|
+
*/
|
|
68
|
+
frames?: GestureFrames<TPose>;
|
|
69
|
+
/**
|
|
70
|
+
* The translation that carries one pose's bounds onto another's, measured by
|
|
71
|
+
* the canvas's pose descriptor. Set by move; a behavior that knows where a
|
|
72
|
+
* node should land returns it as its `transform`.
|
|
73
|
+
*/
|
|
74
|
+
offset?: (from: TPose, to: TPose) => {
|
|
75
|
+
dx: number;
|
|
76
|
+
dy: number;
|
|
77
|
+
};
|
|
42
78
|
adapter: MoveAdapter<TNode, TPose>;
|
|
43
79
|
/**
|
|
44
80
|
* Per-gesture mutable store. Keys should be namespaced by behavior name to avoid
|
|
@@ -60,21 +96,36 @@ interface SnapStrategy<TPose> {
|
|
|
60
96
|
* non-undefined return wins (Op[] = commit those, null = abort, undefined =
|
|
61
97
|
* defer); later answers are ignored. So a behavior holding state outside the
|
|
62
98
|
* gesture (published guides, a timer) releases it in onEnd even when an
|
|
63
|
-
* earlier behavior decides
|
|
64
|
-
*
|
|
65
|
-
*
|
|
66
|
-
*
|
|
99
|
+
* earlier behavior decides, or throws: every onEnd still runs, the first
|
|
100
|
+
* error is rethrown after, and nothing commits. `end.answered` says one did
|
|
101
|
+
* either: a behavior that acts on the scene itself from onEnd (starts an
|
|
102
|
+
* animation, applies ops) only cleans up then. A canceled gesture (Esc, pointercancel) runs every
|
|
103
|
+
* behavior's `onCancel` instead, which releases the same state. `TEnd` is
|
|
104
|
+
* what `onEnd` is told; an action with more to offer than `BehaviorEnd`
|
|
105
|
+
* extends it (`MoveEnd`).
|
|
67
106
|
*
|
|
68
107
|
* `defaultTransient`: when one behavior of a move, resize or rotate sets it
|
|
69
108
|
* and the binding leaves `transient` unset, the gesture commits through
|
|
70
109
|
* `scene.untracked` (no history entry). An explicit `transient` wins.
|
|
71
110
|
*/
|
|
72
|
-
interface ActionBehavior<TPose, TProposed, TMoveResult> {
|
|
111
|
+
interface ActionBehavior<TPose, TProposed, TMoveResult, TEnd extends BehaviorEnd = BehaviorEnd> {
|
|
73
112
|
defaultTransient?: boolean;
|
|
74
113
|
onStart?(ctx: GestureContext<TPose>): void;
|
|
75
114
|
onMove?(ctx: GestureContext<TPose>, proposed: TProposed): TMoveResult | void;
|
|
76
|
-
onEnd?(ctx: GestureContext<TPose>, end:
|
|
115
|
+
onEnd?(ctx: GestureContext<TPose>, end: TEnd): Op[] | null | void;
|
|
77
116
|
onCancel?(ctx: GestureContext<TPose>): void;
|
|
117
|
+
/**
|
|
118
|
+
* Called once per gesture, for every behavior whose `onStart` ran, after
|
|
119
|
+
* the commit's ops have applied (or the cancel has run) and after the
|
|
120
|
+
* gesture's preview overrides are dropped. `committed` is false when the
|
|
121
|
+
* gesture was canceled, aborted by a behavior (`onEnd` returned `null`),
|
|
122
|
+
* released with nothing to commit, or refused by a container its ops
|
|
123
|
+
* dropped something into, and true otherwise: the action or
|
|
124
|
+
* a behavior made the commit, a behavior claiming it with no ops
|
|
125
|
+
* included. For move, resize, and rotate it is the value `onGestureEnd`
|
|
126
|
+
* receives.
|
|
127
|
+
*/
|
|
128
|
+
onSettled?(ctx: GestureContext<TPose>, committed: boolean): void;
|
|
78
129
|
}
|
|
79
130
|
/** What a behavior's `onEnd` is told about the commit, beside the gesture. */
|
|
80
131
|
interface BehaviorEnd {
|
|
@@ -85,14 +136,7 @@ interface BehaviorEnd {
|
|
|
85
136
|
/**
|
|
86
137
|
* Uniform group transform proposed by a gesture and shaped by behaviors.
|
|
87
138
|
* Applied identically to every dragged id so a multi-select gesture cannot
|
|
88
|
-
* drift apart
|
|
89
|
-
* kept the raw cursor delta).
|
|
90
|
-
*
|
|
91
|
-
* v1 of the migration: only `'translate'` is wired end-to-end. `'scale'` and
|
|
92
|
-
* `'rotate'` exist for forward compatibility — `useResize` already remaps
|
|
93
|
-
* each leaf via `geom.remapBounds`, and `useRotate` is single-id-pivot-bound,
|
|
94
|
-
* so neither suffers the multi-select drift `'translate'` did. Migrate those
|
|
95
|
-
* gestures to emit `GroupTransform` in a follow-up.
|
|
139
|
+
* drift apart. Only `'translate'` is wired end-to-end.
|
|
96
140
|
*/
|
|
97
141
|
type GroupTransform = {
|
|
98
142
|
kind: 'translate';
|
|
@@ -115,36 +159,46 @@ type GroupTransform = {
|
|
|
115
159
|
angle: number;
|
|
116
160
|
};
|
|
117
161
|
/**
|
|
118
|
-
* Per-frame result a `MoveBehavior.onMove` can return.
|
|
119
|
-
*
|
|
120
|
-
* `transform` is the new uniform-group-transform channel: the gesture applies
|
|
121
|
-
* it to every dragged id, eliminating multi-select drift.
|
|
122
|
-
*
|
|
123
|
-
* `pose` is the legacy channel: a primary-id-only override. The hook routes
|
|
124
|
-
* it through a back-compat shim that derives a `translate` transform from
|
|
125
|
-
* the pose diff against `origin.get(primaryId)`. Prefer `transform` in new
|
|
126
|
-
* behaviors; `pose` will be removed after one release cycle.
|
|
127
|
-
*
|
|
128
|
-
* `snap` announces a visual snap target; unchanged from the legacy contract.
|
|
162
|
+
* Per-frame result a `MoveBehavior.onMove` can return. `snap` announces a
|
|
163
|
+
* visual snap target.
|
|
129
164
|
*/
|
|
130
165
|
interface BehaviorResult<TPose> {
|
|
131
166
|
/** Replace the proposed transform. Applied uniformly to every id. */
|
|
132
167
|
transform?: GroupTransform;
|
|
133
|
-
/**
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
*
|
|
137
|
-
*
|
|
168
|
+
/** Preview poses for individual ids, each in its node's stored frame. For
|
|
169
|
+
* a dragged id the pose replaces the group transform this frame: a
|
|
170
|
+
* behavior that will commit its nodes where one translation cannot put
|
|
171
|
+
* them, such as a slot each — except a descendant a moving frame
|
|
172
|
+
* carries, which rides its frame whatever is posed for it. Any other id
|
|
173
|
+
* is shown there for this frame only, and committing it is the
|
|
174
|
+
* behavior's job; where a layout drop reflows the same id with no reflow
|
|
175
|
+
* transition, the layout's pose wins. A later behavior's pose for an id
|
|
176
|
+
* replaces an earlier one's. */
|
|
138
177
|
poses?: ReadonlyMap<string, TPose>;
|
|
178
|
+
/** Ids whose preview paints at full opacity this frame rather than as a
|
|
179
|
+
* ghost, added to those of the other behaviors. */
|
|
180
|
+
opaque?: Iterable<string>;
|
|
139
181
|
snap?: SnapTarget<TPose> | null;
|
|
140
182
|
}
|
|
141
|
-
/**
|
|
142
|
-
|
|
143
|
-
/**
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
183
|
+
/** What a move behavior's `onEnd` is told. */
|
|
184
|
+
interface MoveEnd extends BehaviorEnd {
|
|
185
|
+
/** The action's default translate commit for the dragged roots in `ids`
|
|
186
|
+
* and the descendants that follow them, by the drag as the behaviors
|
|
187
|
+
* shaped it. For a behavior that claims the commit but places only some of
|
|
188
|
+
* the nodes: it returns these beside its own ops. An id that is not a
|
|
189
|
+
* dragged root is ignored. */
|
|
190
|
+
translateOps(ids: Iterable<string>): Op[];
|
|
191
|
+
/** Where the pointer was let go, in world coordinates; without one on the
|
|
192
|
+
* release, the last move's. `ctx.pointer` always holds the last move's. */
|
|
193
|
+
pointer: {
|
|
194
|
+
x: number;
|
|
195
|
+
y: number;
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
/** A behavior on a move — shapes the proposed transform during a drag.
|
|
199
|
+
* Behaviors receive a `GroupTransform` (currently always `'translate'`) and
|
|
200
|
+
* return a `BehaviorResult` shaping it. */
|
|
201
|
+
type MoveBehavior<TPose> = ActionBehavior<TPose, GroupTransform, BehaviorResult<TPose>, MoveEnd>;
|
|
148
202
|
|
|
149
203
|
/** Per-frame proposed resize: pose plus the anchor pinning the opposite corner. */
|
|
150
204
|
interface ResizeProposed<TPose extends Bounds> {
|
|
@@ -155,20 +209,18 @@ interface ResizeProposed<TPose extends Bounds> {
|
|
|
155
209
|
interface ResizeMoveResult<TPose extends Bounds> {
|
|
156
210
|
pose?: TPose;
|
|
157
211
|
}
|
|
158
|
-
/** A bounds-frame constraint plugged into `
|
|
212
|
+
/** A bounds-frame constraint plugged into `resizeAction`.
|
|
159
213
|
* Reads/writes `{x,y,width,height}` and can override the proposed pose
|
|
160
214
|
* on each frame (e.g. lock-aspect, clamp-min-size, snap-to-grid). */
|
|
161
215
|
type BoundsConstraint<TPose extends Bounds> = ActionBehavior<TPose, ResizeProposed<TPose>, ResizeMoveResult<TPose>>;
|
|
162
|
-
/** Live overlay state
|
|
216
|
+
/** Live overlay state for rendering the in-flight resize ghost. */
|
|
163
217
|
interface ResizeOverlay<TPose> {
|
|
164
218
|
id: string;
|
|
165
219
|
currentPose: TPose;
|
|
166
220
|
targetPose: TPose;
|
|
167
221
|
anchor: ResizeAnchor;
|
|
168
|
-
/** Per-leaf scaled poses when the gesture is resizing a group
|
|
169
|
-
*
|
|
170
|
-
* per-leaf poses produced by scaling each leaf's origin pose against
|
|
171
|
-
* the group's origin/proposed union rects. Absent for single-leaf
|
|
222
|
+
/** Per-leaf scaled poses when the gesture is resizing a group, keyed by
|
|
223
|
+
* the expanded leaf ids (from `expandIds`). Absent for single-leaf
|
|
172
224
|
* resizes. */
|
|
173
225
|
leafPoses?: Map<string, TPose>;
|
|
174
226
|
}
|
|
@@ -179,13 +231,17 @@ interface RotateProposed<TPose> {
|
|
|
179
231
|
/** Proposed rotation angle (radians). */
|
|
180
232
|
rotation: number;
|
|
181
233
|
}
|
|
182
|
-
/** Per-frame result a `RotateBehavior.onMove` can return to override the proposed
|
|
234
|
+
/** Per-frame result a `RotateBehavior.onMove` can return to override the proposed turn. */
|
|
183
235
|
interface RotateMoveResult<TPose> {
|
|
236
|
+
/** A pose whose rotation, read through its descriptor, the selection turns to. */
|
|
184
237
|
pose?: TPose;
|
|
238
|
+
/** The angle to turn to, in radians, for a behavior that changes only the
|
|
239
|
+
* angle. Wins over `pose`. */
|
|
240
|
+
rotation?: number;
|
|
185
241
|
}
|
|
186
|
-
/** A behavior
|
|
242
|
+
/** A behavior on a rotate. */
|
|
187
243
|
type RotateBehavior<TPose> = ActionBehavior<TPose, RotateProposed<TPose>, RotateMoveResult<TPose>>;
|
|
188
|
-
/** Live overlay state
|
|
244
|
+
/** Live overlay state for rendering the in-flight rotation ghost. */
|
|
189
245
|
interface RotateOverlay<TPose> {
|
|
190
246
|
id: string;
|
|
191
247
|
currentPose: TPose;
|
|
@@ -214,18 +270,18 @@ interface InsertMoveResult {
|
|
|
214
270
|
current?: InsertPoint;
|
|
215
271
|
}
|
|
216
272
|
/** Behaviors operate over the two world points; bounds and pose are derived
|
|
217
|
-
*
|
|
273
|
+
* from the (possibly modified) points each frame. */
|
|
218
274
|
type InsertBehavior<TPose> = ActionBehavior<TPose, InsertProposed<TPose>, InsertMoveResult>;
|
|
219
|
-
/** Live overlay state
|
|
275
|
+
/** Live overlay state for rendering the in-flight insert preview. */
|
|
220
276
|
interface InsertOverlay<TPose> {
|
|
221
277
|
start: InsertPoint;
|
|
222
278
|
current: InsertPoint;
|
|
223
279
|
/** Axis-aligned bounding rect derived from `start`/`current`. */
|
|
224
280
|
bounds: Bounds;
|
|
225
|
-
/** TPose constructed from `bounds
|
|
281
|
+
/** TPose constructed from `bounds`. */
|
|
226
282
|
pose: TPose;
|
|
227
283
|
}
|
|
228
|
-
/** Live overlay state
|
|
284
|
+
/** Live overlay state for rendering the marquee. */
|
|
229
285
|
interface AreaSelectOverlay {
|
|
230
286
|
start: {
|
|
231
287
|
worldX: number;
|
|
@@ -255,10 +311,10 @@ interface LassoSelectProposed {
|
|
|
255
311
|
/** onMove for lasso-select doesn't shape ops; behaviors only need to react
|
|
256
312
|
* in onEnd. We return void from onMove. */
|
|
257
313
|
type LassoSelectMoveResult = void;
|
|
258
|
-
/** A behavior
|
|
314
|
+
/** A behavior on a lasso-select. */
|
|
259
315
|
type LassoSelectBehavior = ActionBehavior<LassoSelectPose, LassoSelectProposed, LassoSelectMoveResult>;
|
|
260
|
-
/** Live overlay state
|
|
261
|
-
*
|
|
316
|
+
/** Live overlay state for rendering the in-progress polyline + dashed
|
|
317
|
+
* close-line. */
|
|
262
318
|
interface LassoSelectOverlay {
|
|
263
319
|
vertices: ReadonlyArray<{
|
|
264
320
|
x: number;
|
|
@@ -270,7 +326,7 @@ interface LassoSelectOverlay {
|
|
|
270
326
|
};
|
|
271
327
|
shiftHeld: boolean;
|
|
272
328
|
}
|
|
273
|
-
/** Frames a point-snap behavior can return for the
|
|
329
|
+
/** Frames a point-snap behavior can return for the resize to back-solve. */
|
|
274
330
|
type PointSnapFrame = 'dragged-corner' | 'fixed-corner' | 'center' | 'origin';
|
|
275
331
|
/** Per-frame world-space context handed to `PointSnapBehavior.onMove`.
|
|
276
332
|
* `draggedCorner` and `fixedCorner` are `null` for edge drags
|
|
@@ -304,34 +360,23 @@ interface PointSnapResult {
|
|
|
304
360
|
worldX: number;
|
|
305
361
|
worldY: number;
|
|
306
362
|
}
|
|
307
|
-
/** A point-snap behavior plugged into `
|
|
363
|
+
/** A point-snap behavior, plugged into `ResizePolicy.pointSnap`. */
|
|
308
364
|
interface PointSnapBehavior<TPose extends Bounds> {
|
|
309
365
|
id?: string;
|
|
310
366
|
onMove(ctx: PointSnapContext<TPose>): PointSnapResult | null | undefined;
|
|
311
367
|
}
|
|
312
|
-
/**
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
interface CloneBehavior {
|
|
326
|
-
id: string;
|
|
327
|
-
/** Decides whether this gesture should activate at start. */
|
|
328
|
-
activates: (modifiers: ModifierState) => boolean;
|
|
329
|
-
/** On end, returns ops to commit (or [] for no-op). */
|
|
330
|
-
onEnd: (pose: ClonePose, ctx: {
|
|
331
|
-
adapter: InsertAdapter<{
|
|
332
|
-
id: string;
|
|
333
|
-
}>;
|
|
334
|
-
}) => Op[];
|
|
335
|
-
}
|
|
368
|
+
/** What a `CloneBehavior.onMove` can return: the translation to use for
|
|
369
|
+
* every copy, and a snap target to announce. */
|
|
370
|
+
type CloneBehaviorResult<TPose> = Pick<BehaviorResult<TPose>, 'transform' | 'snap'>;
|
|
371
|
+
/**
|
|
372
|
+
* A behavior on the `clone` action's binding. It is told the originals: the
|
|
373
|
+
* selected roots as `draggedIds`, with `origin` and `current` holding the
|
|
374
|
+
* world pose of each node a copy is placed from, before and after the drag.
|
|
375
|
+
* `onMove` reshapes the translation; `onEnd` may claim the commit with ops of
|
|
376
|
+
* its own, which land in place of the copies, or abort it with `null`. A move
|
|
377
|
+
* behavior that only reshapes the translation, `snap(strategy)` among them,
|
|
378
|
+
* is one of these.
|
|
379
|
+
*/
|
|
380
|
+
type CloneBehavior<TPose> = ActionBehavior<TPose, GroupTransform, CloneBehaviorResult<TPose>>;
|
|
336
381
|
|
|
337
|
-
export type { ActionBehavior as A, BoundsConstraint as B, CloneBehavior as C, GestureContext as G, InsertBehavior as I, LassoSelectBehavior as L, MoveBehavior as M, PointSnapBehavior as P, RotateBehavior as R, SnapStrategy as S, AreaSelectOverlay as a, BehaviorEnd as b,
|
|
382
|
+
export type { ActionBehavior as A, BoundsConstraint as B, CloneBehavior as C, GestureContext as G, InsertBehavior as I, LassoSelectBehavior as L, MoveBehavior as M, PointSnapBehavior as P, RotateBehavior as R, SnapStrategy as S, AreaSelectOverlay as a, BehaviorEnd as b, BehaviorResult as c, CloneBehaviorResult as d, GestureFrames as e, GroupTransform as f, InsertMoveResult as g, InsertOverlay as h, InsertPoint as i, InsertProposed as j, LassoSelectMoveResult as k, LassoSelectOverlay as l, LassoSelectPose as m, LassoSelectProposed as n, MoveEnd as o, PointSnapContext as p, PointSnapFrame as q, PointSnapResult as r, PointerState as s, ResizeMoveResult as t, ResizeOverlay as u, ResizeProposed as v, RotateMoveResult as w, RotateOverlay as x, RotateProposed as y };
|
package/dist/clone.d.ts
CHANGED
|
@@ -1,11 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
import './types-
|
|
1
|
+
export { C as CloneBehavior, d as CloneBehaviorResult } from './clone-C0eADtS0.js';
|
|
2
|
+
import './types-DBbbCy0i.js';
|
|
3
3
|
import '@weasel-js/history';
|
|
4
4
|
import '@weasel-js/geom';
|
|
5
5
|
import '@weasel-js/routing';
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
* `cloneAction` runs no clone behaviors, so nothing in the kit calls this. */
|
|
9
|
-
declare function cloneByAltDrag(): CloneBehavior;
|
|
10
|
-
|
|
11
|
-
export { cloneByAltDrag };
|
|
6
|
+
import './poseDescriptor-Bqk-11Rl.js';
|
|
7
|
+
import '@weasel-js/animator';
|
package/dist/clone.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"targets.js","names":["BASE_PX","HANDLE_BASE_PX","ANCHOR_HIT_BASE_PX","ROTATION_HANDLE_BASE_PX","targetSizesPx","targetScale"],"sources":["../../../src/core/device/targets.ts"],"sourcesContent":["/**\n * Base sizes for grabbable chrome, in CSS pixels at `targetScale = 1`, and the\n * one accessor that resolves them for a live pointer type.\n *\n * Paint and hit-test MUST scale together
|
|
1
|
+
{"version":3,"file":"targets.js","names":["BASE_PX","HANDLE_BASE_PX","ANCHOR_HIT_BASE_PX","ROTATION_HANDLE_BASE_PX","targetSizesPx","targetScale"],"sources":["../../../src/core/device/targets.ts"],"sourcesContent":["/**\n * Base sizes for grabbable chrome, in CSS pixels at `targetScale = 1`, and the\n * one accessor that resolves them for a live pointer type.\n *\n * Paint and hit-test MUST scale together, or chrome can be seen and not\n * grabbed, so every kit-internal use site goes through {@link targetSizesPx}.\n * The bare constants below are the unscaled numbers, exported for consumers.\n */\n\nconst BASE_PX = {\n handle: 8,\n anchor: 8,\n rotationDistance: 24,\n} as const;\n\n/** Selection corner-handle visual size and hit radius. */\nexport const HANDLE_BASE_PX = BASE_PX.handle;\n\n/** Path anchor / control-point hit radius. */\nexport const ANCHOR_HIT_BASE_PX = BASE_PX.anchor;\n\n/** Distance from a selection's top edge to the rotation handle's center. */\nexport const ROTATION_HANDLE_BASE_PX = BASE_PX.rotationDistance;\n\n/** Grabbable-chrome sizes resolved for one pointer type, in CSS pixels. */\nexport interface TargetSizesPx {\n /** Corner-handle visual size and hit radius. */\n handle: number;\n /** Anchor / control-point hit radius. */\n anchor: number;\n /** Distance from a selection's top edge to the rotation handle's center,\n * which is also the rotate band's minimum thickness. */\n rotationDistance: number;\n}\n\n/**\n * How big is grabbable chrome, in CSS pixels, for this pointer type?\n *\n * `targetScale` comes from the live {@link DeviceProfile} — 1 for a mouse,\n * {@link COARSE_TARGET_SCALE} for touch.\n */\nexport function targetSizesPx(targetScale = 1): TargetSizesPx {\n return {\n handle: BASE_PX.handle * targetScale,\n anchor: BASE_PX.anchor * targetScale,\n rotationDistance: BASE_PX.rotationDistance * targetScale,\n };\n}\n"],"mappings":";AASA,IAAMA,IAAU;CACd,QAAQ;CACR,QAAQ;CACR,kBAAkB;AACpB,GAGaC,IAAiBD,EAAQ,QAGzBE,IAAqBF,EAAQ,QAG7BG,IAA0BH,EAAQ;AAmB/C,SAAgBI,EAAc,IAAc,GAAkB;CAC5D,OAAO;EACL,QAAQJ,EAAQ,SAASK;EACzB,QAAQL,EAAQ,SAASK;EACzB,kBAAkBL,EAAQ,mBAAmBK;CAC/C;AACF"}
|
|
@@ -18,34 +18,34 @@ function f() {
|
|
|
18
18
|
dpr: e
|
|
19
19
|
};
|
|
20
20
|
}
|
|
21
|
-
function p() {
|
|
22
|
-
let [
|
|
21
|
+
function p(t) {
|
|
22
|
+
let [n, r] = o(f);
|
|
23
23
|
return i(() => {
|
|
24
|
-
if (!d()) return;
|
|
25
|
-
let
|
|
24
|
+
if (!t || !d()) return;
|
|
25
|
+
let n = window.matchMedia(l), i = window.matchMedia(u), a = (e) => r((t) => ({
|
|
26
26
|
...t,
|
|
27
27
|
coarsePointer: e.matches
|
|
28
|
-
})),
|
|
28
|
+
})), o = (e) => r((t) => ({
|
|
29
29
|
...t,
|
|
30
30
|
canHover: e.matches
|
|
31
31
|
}));
|
|
32
|
-
|
|
33
|
-
let
|
|
32
|
+
n.addEventListener("change", a), i.addEventListener("change", o);
|
|
33
|
+
let s = e((e) => r((t) => t.dpr === e ? t : {
|
|
34
34
|
...t,
|
|
35
35
|
dpr: e
|
|
36
36
|
}));
|
|
37
|
-
return
|
|
38
|
-
coarsePointer:
|
|
39
|
-
canHover:
|
|
37
|
+
return r({
|
|
38
|
+
coarsePointer: n.matches,
|
|
39
|
+
canHover: i.matches,
|
|
40
40
|
dpr: window.devicePixelRatio || 1
|
|
41
41
|
}), () => {
|
|
42
|
-
|
|
42
|
+
s(), n.removeEventListener("change", a), i.removeEventListener("change", o);
|
|
43
43
|
};
|
|
44
|
-
}, []),
|
|
44
|
+
}, [t]), n;
|
|
45
45
|
}
|
|
46
46
|
var m = t(null);
|
|
47
47
|
function h(e) {
|
|
48
|
-
let t = r(m), n = p(), i = t ?? n, { coarsePointer: o, canHover: s, dpr: l, targetScale: u } = e ?? {};
|
|
48
|
+
let t = r(m), n = p(t === null), i = t ?? n, { coarsePointer: o, canHover: s, dpr: l, targetScale: u } = e ?? {};
|
|
49
49
|
return a(() => c(i, {
|
|
50
50
|
...o === void 0 ? {} : { coarsePointer: o },
|
|
51
51
|
...s === void 0 ? {} : { canHover: s },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDeviceProfile.js","names":["COARSE_QUERY","HOVER_QUERY","hasMatchMedia","detectOnce","dpr","DEFAULT_DEVICE_PROFILE","useDetectedFacts","facts","setFacts","useState","useEffect","coarseMq","hoverMq","onCoarse","f","onHover","unwatchDensity","watchDevicePixelRatio","next","DeviceProfileContext","createContext","useDeviceProfile","provided","useContext","detected","base","overrides","useMemo","resolveDeviceProfile","coarsePointer","canHover","targetScale","DeviceProfileProvider","profile","value","createElement","children"],"sources":["../../../src/core/device/useDeviceProfile.ts"],"sourcesContent":["import {\n createContext,\n createElement,\n useContext,\n useEffect,\n useMemo,\n useState,\n type ReactNode,\n} from 'react';\nimport type { DetectedDeviceFacts, DeviceProfile } from './types';\nimport { DEFAULT_DEVICE_PROFILE, resolveDeviceProfile } from '@weasel-js/routing';\nimport { watchDevicePixelRatio } from './watchDevicePixelRatio';\n\nconst COARSE_QUERY = '(pointer: coarse)';\nconst HOVER_QUERY = '(hover: hover)';\n\nfunction hasMatchMedia(): boolean {\n return typeof window !== 'undefined' && typeof window.matchMedia === 'function';\n}\n\nfunction detectOnce(): DetectedDeviceFacts {\n // Density is read unconditionally: `devicePixelRatio` does not depend on\n // `matchMedia` existing. Only *watching* density needs a media query.\n // Gating this read behind `hasMatchMedia()` would report density 1 under\n // any environment without matchMedia — including jsdom, which would\n // silently break `useCanvasSize`'s existing DPR assertions.\n const dpr = (typeof window !== 'undefined' && window.devicePixelRatio) || 1;\n if (!hasMatchMedia()) {\n return {\n coarsePointer: DEFAULT_DEVICE_PROFILE.coarsePointer,\n canHover: DEFAULT_DEVICE_PROFILE.canHover,\n dpr,\n };\n }\n return {\n coarsePointer: window.matchMedia(COARSE_QUERY).matches,\n canHover: window.matchMedia(HOVER_QUERY).matches,\n dpr,\n };\n}\n\n/**\n * Detect device facts and keep them live.\n *\n * Three subscriptions: pointer coarseness, hover capability, and pixel\n * density.\n */\nfunction useDetectedFacts(): DetectedDeviceFacts {\n const [facts, setFacts] = useState<DetectedDeviceFacts>(detectOnce);\n\n useEffect(() => {\n if (!hasMatchMedia()) return;\n\n const coarseMq = window.matchMedia(COARSE_QUERY);\n const hoverMq = window.matchMedia(HOVER_QUERY);\n\n const onCoarse = (e: MediaQueryListEvent | { matches: boolean }) =>\n setFacts((f) => ({ ...f, coarsePointer: e.matches }));\n const onHover = (e: MediaQueryListEvent | { matches: boolean }) =>\n setFacts((f) => ({ ...f, canHover: e.matches }));\n\n coarseMq.addEventListener('change', onCoarse as EventListener);\n hoverMq.addEventListener('change', onHover as EventListener);\n\n const unwatchDensity = watchDevicePixelRatio((next) =>\n setFacts((f) => (f.dpr === next ? f : { ...f, dpr: next })));\n\n // Re-sync once on mount: a query could have changed between the\n // useState initializer and the effect running.\n // eslint-disable-next-line react-hooks/set-state-in-effect -- re-syncs media queries that may have changed before subscribing\n setFacts({\n coarsePointer: coarseMq.matches,\n canHover: hoverMq.matches,\n dpr: window.devicePixelRatio || 1,\n });\n\n return () => {\n unwatchDensity();\n coarseMq.removeEventListener('change', onCoarse as EventListener);\n hoverMq.removeEventListener('change', onHover as EventListener);\n };\n }, []);\n\n return facts;\n}\n\nconst DeviceProfileContext = createContext<DeviceProfile | null>(null);\n\n/**\n * Read the ambient device profile.\n *\n * Uses the nearest {@link DeviceProfileProvider} when one exists,
|
|
1
|
+
{"version":3,"file":"useDeviceProfile.js","names":["COARSE_QUERY","HOVER_QUERY","hasMatchMedia","detectOnce","dpr","DEFAULT_DEVICE_PROFILE","useDetectedFacts","facts","setFacts","useState","useEffect","watch","coarseMq","hoverMq","onCoarse","f","onHover","unwatchDensity","watchDevicePixelRatio","next","DeviceProfileContext","createContext","useDeviceProfile","provided","useContext","detected","base","overrides","useMemo","resolveDeviceProfile","coarsePointer","canHover","targetScale","DeviceProfileProvider","profile","value","createElement","children"],"sources":["../../../src/core/device/useDeviceProfile.ts"],"sourcesContent":["import {\n createContext,\n createElement,\n useContext,\n useEffect,\n useMemo,\n useState,\n type ReactNode,\n} from 'react';\nimport type { DetectedDeviceFacts, DeviceProfile } from './types';\nimport { DEFAULT_DEVICE_PROFILE, resolveDeviceProfile } from '@weasel-js/routing';\nimport { watchDevicePixelRatio } from './watchDevicePixelRatio';\n\nconst COARSE_QUERY = '(pointer: coarse)';\nconst HOVER_QUERY = '(hover: hover)';\n\nfunction hasMatchMedia(): boolean {\n return typeof window !== 'undefined' && typeof window.matchMedia === 'function';\n}\n\nfunction detectOnce(): DetectedDeviceFacts {\n // Density is read unconditionally: `devicePixelRatio` does not depend on\n // `matchMedia` existing. Only *watching* density needs a media query.\n // Gating this read behind `hasMatchMedia()` would report density 1 under\n // any environment without matchMedia — including jsdom, which would\n // silently break `useCanvasSize`'s existing DPR assertions.\n const dpr = (typeof window !== 'undefined' && window.devicePixelRatio) || 1;\n if (!hasMatchMedia()) {\n return {\n coarsePointer: DEFAULT_DEVICE_PROFILE.coarsePointer,\n canHover: DEFAULT_DEVICE_PROFILE.canHover,\n dpr,\n };\n }\n return {\n coarsePointer: window.matchMedia(COARSE_QUERY).matches,\n canHover: window.matchMedia(HOVER_QUERY).matches,\n dpr,\n };\n}\n\n/**\n * Detect device facts and keep them live.\n *\n * Three subscriptions: pointer coarseness, hover capability, and pixel\n * density. None while `watch` is false, and the facts then go stale.\n */\nfunction useDetectedFacts(watch: boolean): DetectedDeviceFacts {\n const [facts, setFacts] = useState<DetectedDeviceFacts>(detectOnce);\n\n useEffect(() => {\n if (!watch || !hasMatchMedia()) return;\n\n const coarseMq = window.matchMedia(COARSE_QUERY);\n const hoverMq = window.matchMedia(HOVER_QUERY);\n\n const onCoarse = (e: MediaQueryListEvent | { matches: boolean }) =>\n setFacts((f) => ({ ...f, coarsePointer: e.matches }));\n const onHover = (e: MediaQueryListEvent | { matches: boolean }) =>\n setFacts((f) => ({ ...f, canHover: e.matches }));\n\n coarseMq.addEventListener('change', onCoarse as EventListener);\n hoverMq.addEventListener('change', onHover as EventListener);\n\n const unwatchDensity = watchDevicePixelRatio((next) =>\n setFacts((f) => (f.dpr === next ? f : { ...f, dpr: next })));\n\n // Re-sync once on mount: a query could have changed between the\n // useState initializer and the effect running.\n // eslint-disable-next-line react-hooks/set-state-in-effect -- re-syncs media queries that may have changed before subscribing\n setFacts({\n coarsePointer: coarseMq.matches,\n canHover: hoverMq.matches,\n dpr: window.devicePixelRatio || 1,\n });\n\n return () => {\n unwatchDensity();\n coarseMq.removeEventListener('change', onCoarse as EventListener);\n hoverMq.removeEventListener('change', onHover as EventListener);\n };\n }, [watch]);\n\n return facts;\n}\n\nconst DeviceProfileContext = createContext<DeviceProfile | null>(null);\n\n/**\n * Read the ambient device profile.\n *\n * Uses the nearest {@link DeviceProfileProvider} when one exists, watching\n * nothing of its own, and otherwise detects for itself — so a standalone overlay or a labkit panel\n * rendered outside a `<SceneCanvas>` still gets correct facts.\n *\n * `overrides` always wins over both, which is what makes tests and\n * force-touch-chrome demos possible without stubbing `matchMedia`.\n */\nexport function useDeviceProfile(overrides?: Partial<DeviceProfile>): DeviceProfile {\n const provided = useContext(DeviceProfileContext);\n const detected = useDetectedFacts(provided === null);\n const base: DetectedDeviceFacts = provided ?? detected;\n const { coarsePointer, canHover, dpr, targetScale } = overrides ?? {};\n return useMemo(\n () =>\n resolveDeviceProfile(base, {\n ...(coarsePointer !== undefined ? { coarsePointer } : {}),\n ...(canHover !== undefined ? { canHover } : {}),\n ...(dpr !== undefined ? { dpr } : {}),\n ...(targetScale !== undefined ? { targetScale } : {}),\n }),\n [base, coarsePointer, canHover, dpr, targetScale],\n );\n}\n\n/** Props for `<DeviceProfileProvider>`. */\nexport interface DeviceProfileProviderProps {\n /** Partial override folded over detected facts. */\n value?: Partial<DeviceProfile>;\n children: ReactNode;\n}\n\n/**\n * Publish one resolved profile to a subtree. `<SceneCanvas>` renders this so\n * overlays, affordances, and consumer chrome all read the same object.\n */\nexport function DeviceProfileProvider({ value, children }: DeviceProfileProviderProps) {\n const profile = useDeviceProfile(value);\n return createElement(DeviceProfileContext.Provider, { value: profile }, children);\n}\n"],"mappings":";;;;AAaA,IAAMA,IAAe,qBACfC,IAAc;AAEpB,SAASC,IAAyB;CAChC,OAAO,OAAO,SAAW,OAAe,OAAO,OAAO,cAAe;AACvE;AAEA,SAASC,IAAkC;CAMzC,IAAMC,IAAO,OAAO,SAAW,OAAe,OAAO,oBAAqB;CAQ1E,OAPKF,EAAc,IAOZ;EACL,eAAe,OAAO,WAAWF,CAAY,CAAC,CAAC;EAC/C,UAAU,OAAO,WAAWC,CAAW,CAAC,CAAC;EACzC;CACF,IAVS;EACL,eAAeI,EAAuB;EACtC,UAAUA,EAAuB;EACjC;CACF;AAOJ;AAQA,SAASC,EAAiB,GAAqC;CAC7D,IAAM,CAACC,GAAOC,KAAYC,EAA8BN,CAAU;CAmClE,OAjCAO,QAAgB;EACd,IAAI,CAACC,KAAS,CAACT,EAAc,GAAG;EAEhC,IAAMU,IAAW,OAAO,WAAWZ,CAAY,GACzCa,IAAU,OAAO,WAAWZ,CAAW,GAEvCa,KAAY,MAChBN,GAAU,OAAO;GAAE,GAAGO;GAAG,eAAe,EAAE;EAAQ,EAAE,GAChDC,KAAW,MACfR,GAAU,OAAO;GAAE,GAAGO;GAAG,UAAU,EAAE;EAAQ,EAAE;EAGjD,AADAH,EAAS,iBAAiB,UAAUE,CAAyB,GAC7DD,EAAQ,iBAAiB,UAAUG,CAAwB;EAE3D,IAAMC,IAAiBC,GAAuB,MAC5CV,GAAU,MAAOO,EAAE,QAAQI,IAAOJ,IAAI;GAAE,GAAGA;GAAG,KAAKI;EAAK,CAAE,CAAC;EAW7D,OANAX,EAAS;GACP,eAAeI,EAAS;GACxB,UAAUC,EAAQ;GAClB,KAAK,OAAO,oBAAoB;EAClC,CAAC,SAEY;GAGX,AAFAI,EAAe,GACfL,EAAS,oBAAoB,UAAUE,CAAyB,GAChED,EAAQ,oBAAoB,UAAUG,CAAwB;EAChE;CACF,GAAG,CAACL,CAAK,CAAC,GAEHJ;AACT;AAEA,IAAMa,IAAuBC,EAAoC,IAAI;AAYrE,SAAgBC,EAAiB,GAAmD;CAClF,IAAMC,IAAWC,EAAWJ,CAAoB,GAC1CK,IAAWnB,EAAiBiB,MAAa,IAAI,GAC7CG,IAA4BH,KAAYE,GACxC,EAAE,kBAAe,aAAU,QAAK,mBAAgBE,KAAa,CAAC;CACpE,OAAOC,QAEHC,EAAqBH,GAAM;EACzB,GAAII,MAAkB,KAAA,IAAgC,CAAC,IAArB,EAAE,iBAAc;EAClD,GAAIC,MAAa,KAAA,IAA2B,CAAC,IAAhB,EAAE,YAAS;EACxC,GAAI3B,MAAQ,KAAA,IAAsB,CAAC,IAAX,EAAE,OAAI;EAC9B,GAAI4B,MAAgB,KAAA,IAA8B,CAAC,IAAnB,EAAE,eAAY;CAChD,CAAC,GACH;EAACN;EAAMI;EAAeC;EAAU3B;EAAK4B;CAAW,CAClD;AACF;AAaA,SAAgBC,EAAsB,EAAE,UAAO,eAAwC;CACrF,IAAMC,IAAUZ,EAAiBa,CAAK;CACtC,OAAOC,EAAchB,EAAqB,UAAU,EAAE,OAAOc,EAAQ,GAAGG,CAAQ;AAClF"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
//#region src/
|
|
1
|
+
import { pathPoseDescriptor as e } from "./pathPoseDescriptor.js";
|
|
2
|
+
import { RECT_POSE_DESCRIPTOR as t } from "./poseDescriptor.js";
|
|
3
|
+
//#region src/core/geometry/autoPoseDescriptor.ts
|
|
4
4
|
function n(e) {
|
|
5
5
|
return !!e && typeof e == "object" && "kind" in e && (e.kind === "polygon" || e.kind === "rect");
|
|
6
6
|
}
|
|
@@ -10,10 +10,11 @@ function r(e) {
|
|
|
10
10
|
return typeof t.x == "number" && typeof t.y == "number" && typeof t.width == "number" && typeof t.height == "number";
|
|
11
11
|
}
|
|
12
12
|
var i = {
|
|
13
|
-
getBounds: (r) => n(r) ?
|
|
14
|
-
remapBounds: (r, i, a) => n(r) ?
|
|
15
|
-
fromBounds: (r, i) => n(i) ?
|
|
16
|
-
translate: (r, i, a) => n(r) ?
|
|
13
|
+
getBounds: (r) => n(r) ? e.getBounds(r) : t.getBounds(r),
|
|
14
|
+
remapBounds: (r, i, a) => n(r) ? e.remapBounds(r, i, a) : t.remapBounds(r, i, a),
|
|
15
|
+
fromBounds: (r, i) => n(i) ? e.fromBounds(r, i) : t.fromBounds(r, i),
|
|
16
|
+
translate: (r, i, a) => n(r) ? e.translate(r, i, a) : t.translate(r, i, a),
|
|
17
|
+
axes: (i) => r(i) ? t.axes(i) : n(i) ? e.axes(i) : null,
|
|
17
18
|
getRotation: (e) => {
|
|
18
19
|
if (n(e)) return 0;
|
|
19
20
|
let t = e.rotation;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"autoPoseDescriptor.js","names":["isPathLike","p","isRectPose","r","AUTO_POSE_DESCRIPTOR","pathPoseDescriptor","RECT_POSE_DESCRIPTOR","src","dst","template","b","dx","dy"],"sources":["../../../src/core/geometry/autoPoseDescriptor.ts"],"sourcesContent":["import type { Path } from '@weasel-js/geom';\nimport { pathPoseDescriptor } from './pathPoseDescriptor';\nimport { RECT_POSE_DESCRIPTOR, type PoseDescriptor } from './poseDescriptor';\nimport type { Bounds } from 'core/viewport/fitViewToBounds';\n\n/** True for Path-shaped poses (`{kind: 'polygon' | 'rect'}`). Useful for\n * callers that need to fork between `pathPoseDescriptor` and\n * `RECT_POSE_DESCRIPTOR` without forcing the consumer to wire\n * `poseDescriptor` explicitly. */\nexport function isPathLike(p: unknown): p is Path {\n return !!p && typeof p === 'object' && 'kind' in p\n && ((p as { kind: unknown }).kind === 'polygon' || (p as { kind: unknown }).kind === 'rect');\n}\n\n/** True for a pose with numeric top-level `x`/`y`/`width`/`height` — the only\n * shape the rect descriptor and the kit's built-in painters can read. */\nexport function isRectPose(p: unknown): p is { x: number; y: number; width: number; height: number; rotation?: number } {\n if (!p || typeof p !== 'object') return false;\n const r = p as Record<string, unknown>;\n return typeof r.x === 'number' && typeof r.y === 'number'\n && typeof r.width === 'number' && typeof r.height === 'number';\n}\n\n/** Per-call dispatch: if the pose looks like a Path, route to\n * `pathPoseDescriptor`; otherwise treat as a plain rect pose. Avoids forcing\n * demos with Path TPose to wire `poseDescriptor={pathPoseDescriptor}`\n * explicitly. `getRotation` surfaces a `pose.rotation` field on non-Path poses\n * so demos using rect-with-rotation shapes (e.g. `RotatedPose`) don't have to\n * wire `poseDescriptor={ROTATED_POSE_DESCRIPTOR}` just to get rotated\n * selection chrome and rotation-aware corner hit-tests. */\nexport const AUTO_POSE_DESCRIPTOR: PoseDescriptor<unknown> = {\n getBounds: (p) => isPathLike(p)\n ? pathPoseDescriptor.getBounds(p)\n : RECT_POSE_DESCRIPTOR.getBounds(p as { x: number; y: number; width: number; height: number }),\n remapBounds: (p, src, dst) => isPathLike(p)\n ? pathPoseDescriptor.remapBounds(p, src, dst)\n : RECT_POSE_DESCRIPTOR.remapBounds(p as { x: number; y: number; width: number; height: number }, src, dst),\n fromBounds: (b, template) => isPathLike(template)\n ? pathPoseDescriptor.fromBounds(b, template)\n : RECT_POSE_DESCRIPTOR.fromBounds(b, template as Bounds),\n translate: (p, dx, dy) => isPathLike(p)\n ? pathPoseDescriptor.translate!(p, dx, dy)\n : RECT_POSE_DESCRIPTOR.translate!(p as { x: number; y: number; width: number; height: number }, dx, dy),\n axes: (p) => (isRectPose(p)\n ? RECT_POSE_DESCRIPTOR.axes!(p) as never\n : isPathLike(p) ? pathPoseDescriptor.axes!(p) as never : null),\n getRotation: (p) => {\n if (isPathLike(p)) return 0;\n const r = (p as { rotation?: unknown }).rotation;\n return typeof r === 'number' ? r : 0;\n },\n // Path-shaped poses can't carry rotation (see `pathPoseDescriptor`).\n // Everything else flows through `wrapWithPoseRotation`'s x/y/w/h gate at\n // paint time, so report `true` and let the wrapper no-op for poses\n // missing AABB fields.\n supportsRotation: (p) => !isPathLike(p),\n withRotation: (p, rotation) => isPathLike(p) ? p : { ...(p as object), rotation },\n};\n"],"mappings":";;;AASA,SAAgBA,EAAW,GAAuB;CAChD,OAAO,CAAC,CAACC,KAAK,OAAOA,KAAM,YAAY,UAAUA,MAC1CA,EAAwB,SAAS,aAAcA,EAAwB,SAAS;AACzF;AAIA,SAAgBC,EAAW,GAA6F;CACtH,IAAI,CAACD,KAAK,OAAOA,KAAM,UAAU,OAAO;CACxC,IAAME,IAAIF;CACV,OAAO,OAAOE,EAAE,KAAM,YAAY,OAAOA,EAAE,KAAM,YAC5C,OAAOA,EAAE,SAAU,YAAY,OAAOA,EAAE,UAAW;AAC1D;AASA,IAAaC,IAAgD;CAC3D,YAAY,MAAMJ,EAAWC,CAAC,IAC1BI,EAAmB,UAAUJ,CAAC,IAC9BK,EAAqB,UAAUL,CAA4D;CAC/F,cAAc,GAAG,GAAK,MAAQD,EAAWC,CAAC,IACtCI,EAAmB,YAAYJ,GAAGM,GAAKC,CAAG,IAC1CF,EAAqB,YAAYL,GAA8DM,GAAKC,CAAG;CAC3G,aAAa,GAAG,MAAaR,EAAWS,CAAQ,IAC5CJ,EAAmB,WAAWK,GAAGD,CAAQ,IACzCH,EAAqB,WAAWI,GAAGD,CAAkB;CACzD,YAAY,GAAG,GAAI,MAAOT,EAAWC,CAAC,IAClCI,EAAmB,UAAWJ,GAAGU,GAAIC,CAAE,IACvCN,EAAqB,UAAWL,GAA8DU,GAAIC,CAAE;CACxG,OAAO,MAAOV,EAAWD,CAAC,IACtBK,EAAqB,KAAML,CAAC,IAC5BD,EAAWC,CAAC,IAAII,EAAmB,KAAMJ,CAAC,IAAa;CAC3D,cAAc,MAAM;EAClB,IAAID,EAAWC,CAAC,GAAG,OAAO;EAC1B,IAAME,IAAKF,EAA6B;EACxC,OAAO,OAAOE,KAAM,WAAWA,IAAI;CACrC;CAKA,mBAAmB,MAAM,CAACH,EAAWC,CAAC;CACtC,eAAe,GAAG,MAAaD,EAAWC,CAAC,IAAIA,IAAI;EAAE,GAAIA;EAAc;CAAS;AAClF"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { boundsOfPath as e, boxToBox as t, transformPath as n, translatePath as r } from "@weasel-js/geom";
|
|
2
|
+
//#region src/core/geometry/pathPoseDescriptor.ts
|
|
3
|
+
var i = {
|
|
4
|
+
getBounds: (t) => e(t),
|
|
5
|
+
remapBounds: (e, r, i) => n(e, t(r.x, r.y, r.width, r.height, i.x, i.y, i.width, i.height)),
|
|
6
|
+
fromBounds: (e) => ({
|
|
7
|
+
kind: "rect",
|
|
8
|
+
x: e.x,
|
|
9
|
+
y: e.y,
|
|
10
|
+
width: e.width,
|
|
11
|
+
height: e.height
|
|
12
|
+
}),
|
|
13
|
+
translate: (e, t, n) => r(e, t, n),
|
|
14
|
+
lerp: (e, t, n) => {
|
|
15
|
+
if (e.kind === "rect" && t.kind === "rect") return {
|
|
16
|
+
kind: "rect",
|
|
17
|
+
x: e.x + (t.x - e.x) * n,
|
|
18
|
+
y: e.y + (t.y - e.y) * n,
|
|
19
|
+
width: e.width + (t.width - e.width) * n,
|
|
20
|
+
height: e.height + (t.height - e.height) * n
|
|
21
|
+
};
|
|
22
|
+
if (e.kind === "polygon" && t.kind === "polygon" && e.coords.length === t.coords.length) {
|
|
23
|
+
let r = new Float32Array(e.coords.length);
|
|
24
|
+
for (let i = 0; i < e.coords.length; i++) r[i] = e.coords[i] + (t.coords[i] - e.coords[i]) * n;
|
|
25
|
+
return {
|
|
26
|
+
...e,
|
|
27
|
+
coords: r
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
throw Error("pathPoseDescriptor.lerp: incompatible path shapes");
|
|
31
|
+
},
|
|
32
|
+
axes: (e) => e.kind === "rect" ? {
|
|
33
|
+
count: 4,
|
|
34
|
+
names: [
|
|
35
|
+
"x",
|
|
36
|
+
"y",
|
|
37
|
+
"width",
|
|
38
|
+
"height"
|
|
39
|
+
],
|
|
40
|
+
to: (e) => e.kind === "rect" ? [
|
|
41
|
+
e.x,
|
|
42
|
+
e.y,
|
|
43
|
+
e.width,
|
|
44
|
+
e.height
|
|
45
|
+
] : [],
|
|
46
|
+
from: (e) => ({
|
|
47
|
+
kind: "rect",
|
|
48
|
+
x: e[0],
|
|
49
|
+
y: e[1],
|
|
50
|
+
width: e[2],
|
|
51
|
+
height: e[3]
|
|
52
|
+
}),
|
|
53
|
+
add: (e, t) => e.kind === "rect" ? {
|
|
54
|
+
kind: "rect",
|
|
55
|
+
x: e.x + t[0],
|
|
56
|
+
y: e.y + t[1],
|
|
57
|
+
width: e.width + t[2],
|
|
58
|
+
height: e.height + t[3]
|
|
59
|
+
} : e,
|
|
60
|
+
write: (e, t, n) => {
|
|
61
|
+
e.kind === "rect" && (t[n] = e.x, t[n + 1] = e.y, t[n + 2] = e.width, t[n + 3] = e.height);
|
|
62
|
+
}
|
|
63
|
+
} : {
|
|
64
|
+
count: e.coords.length,
|
|
65
|
+
to: (e) => e.kind === "polygon" ? Array.from(e.coords) : [],
|
|
66
|
+
from: (t) => ({
|
|
67
|
+
...e,
|
|
68
|
+
coords: Float32Array.from(t)
|
|
69
|
+
}),
|
|
70
|
+
add: (t, n) => {
|
|
71
|
+
if (t.kind !== "polygon") return t;
|
|
72
|
+
let r = new Float32Array(t.coords.length);
|
|
73
|
+
for (let e = 0; e < r.length; e++) r[e] = t.coords[e] + n[e];
|
|
74
|
+
return {
|
|
75
|
+
...e,
|
|
76
|
+
coords: r
|
|
77
|
+
};
|
|
78
|
+
},
|
|
79
|
+
write: (e, t, n) => {
|
|
80
|
+
if (e.kind === "polygon") for (let r = 0; r < e.coords.length; r++) t[n + r] = e.coords[r];
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
supportsRotation: () => !1
|
|
84
|
+
};
|
|
85
|
+
//#endregion
|
|
86
|
+
export { i as pathPoseDescriptor };
|
|
87
|
+
|
|
88
|
+
//# sourceMappingURL=pathPoseDescriptor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pathPoseDescriptor.js","names":["pathPoseDescriptor","boundsOfPath","path","transformPath","boxToBox","src","dst","b","translatePath","dx","dy","a","t","next","like","p","d","at","coords","i"],"sources":["../../../src/core/geometry/pathPoseDescriptor.ts"],"sourcesContent":["import {\n boxToBox,\n boundsOfPath,\n translatePath,\n transformPath,\n type Path,\n} from '@weasel-js/geom';\nimport type { PoseDescriptor } from 'core/geometry/poseDescriptor';\n\n/**\n * `PoseDescriptor` for `Path` poses — wires `useResize` to operate\n * on `Path` directly. `getBounds` defers to the same `boundsOfPath` kernel\n * the rest of the kit uses.\n *\n * `remapBounds` mirrors `scalePathToBounds` but takes `src` explicitly: the\n * resize hook knows the group's origin AABB and uses it for every leaf,\n * instead of each leaf scaling against its own AABB (which would ignore\n * group context).\n */\nexport const pathPoseDescriptor: PoseDescriptor<Path> = {\n getBounds: (path) => boundsOfPath(path),\n remapBounds: (path, src, dst) => transformPath(\n path,\n boxToBox(src.x, src.y, src.width, src.height, dst.x, dst.y, dst.width, dst.height),\n ),\n fromBounds: (b) => ({ kind: 'rect', x: b.x, y: b.y, width: b.width, height: b.height }),\n translate: (path, dx, dy) => translatePath(path, dx, dy),\n lerp: (a, b, t) => {\n if (a.kind === 'rect' && b.kind === 'rect') {\n return {\n kind: 'rect',\n x: a.x + (b.x - a.x) * t,\n y: a.y + (b.y - a.y) * t,\n width: a.width + (b.width - a.width) * t,\n height: a.height + (b.height - a.height) * t,\n };\n }\n if (a.kind === 'polygon' && b.kind === 'polygon' && a.coords.length === b.coords.length) {\n const next = new Float32Array(a.coords.length);\n for (let i = 0; i < a.coords.length; i++) {\n next[i] = a.coords[i] + (b.coords[i] - a.coords[i]) * t;\n }\n return { ...a, coords: next };\n }\n throw new Error('pathPoseDescriptor.lerp: incompatible path shapes');\n },\n // A polygon's axes are its coordinates, so a move needs both ends to have as many points.\n axes: (like) => {\n if (like.kind === 'rect') {\n return {\n count: 4,\n names: ['x', 'y', 'width', 'height'],\n to: (p) => (p.kind === 'rect' ? [p.x, p.y, p.width, p.height] : []),\n from: (a) => ({ kind: 'rect', x: a[0]!, y: a[1]!, width: a[2]!, height: a[3]! }),\n add: (p, d) => (p.kind !== 'rect' ? p : {\n kind: 'rect', x: p.x + d[0]!, y: p.y + d[1]!, width: p.width + d[2]!, height: p.height + d[3]!,\n }),\n write: (p, out, at) => {\n if (p.kind !== 'rect') return;\n out[at] = p.x;\n out[at + 1] = p.y;\n out[at + 2] = p.width;\n out[at + 3] = p.height;\n },\n };\n }\n return {\n count: like.coords.length,\n to: (p) => (p.kind === 'polygon' ? Array.from(p.coords) : []),\n from: (a) => ({ ...like, coords: Float32Array.from(a as ArrayLike<number>) }),\n add: (p, d) => {\n if (p.kind !== 'polygon') return p;\n const coords = new Float32Array(p.coords.length);\n for (let i = 0; i < coords.length; i++) coords[i] = p.coords[i]! + d[i]!;\n return { ...like, coords };\n },\n write: (p, out, at) => {\n if (p.kind !== 'polygon') return;\n for (let i = 0; i < p.coords.length; i++) out[at + i] = p.coords[i]!;\n },\n };\n },\n // Path poses carry no x/y/width/height/rotation fields — the kit's\n // `wrapWithPoseRotation` helper has nothing to bind a rotation to, and\n // `remapBounds` would drop a synthetic rotation field on every commit.\n // Returning false here hides the rotation affordance for Path consumers\n // so the rotate cursor doesn't appear without a working interaction.\n supportsRotation: () => false,\n};\n"],"mappings":";;AAmBA,IAAaA,IAA2C;CACtD,YAAY,MAASC,EAAaC,CAAI;CACtC,cAAc,GAAM,GAAK,MAAQC,EAC/BD,GACAE,EAASC,EAAI,GAAGA,EAAI,GAAGA,EAAI,OAAOA,EAAI,QAAQC,EAAI,GAAGA,EAAI,GAAGA,EAAI,OAAOA,EAAI,MAAM,CACnF;CACA,aAAa,OAAO;EAAE,MAAM;EAAQ,GAAGC,EAAE;EAAG,GAAGA,EAAE;EAAG,OAAOA,EAAE;EAAO,QAAQA,EAAE;CAAO;CACrF,YAAY,GAAM,GAAI,MAAOC,EAAcN,GAAMO,GAAIC,CAAE;CACvD,OAAO,GAAG,GAAG,MAAM;EACjB,IAAIC,EAAE,SAAS,UAAUJ,EAAE,SAAS,QAClC,OAAO;GACL,MAAM;GACN,GAAGI,EAAE,KAAKJ,EAAE,IAAII,EAAE,KAAKC;GACvB,GAAGD,EAAE,KAAKJ,EAAE,IAAII,EAAE,KAAKC;GACvB,OAAOD,EAAE,SAASJ,EAAE,QAAQI,EAAE,SAASC;GACvC,QAAQD,EAAE,UAAUJ,EAAE,SAASI,EAAE,UAAUC;EAC7C;EAEF,IAAID,EAAE,SAAS,aAAaJ,EAAE,SAAS,aAAaI,EAAE,OAAO,WAAWJ,EAAE,OAAO,QAAQ;GACvF,IAAMM,IAAO,IAAI,aAAaF,EAAE,OAAO,MAAM;GAC7C,KAAK,IAAI,IAAI,GAAG,IAAIA,EAAE,OAAO,QAAQ,KACnC,EAAK,KAAKA,EAAE,OAAO,MAAMJ,EAAE,OAAO,KAAKI,EAAE,OAAO,MAAMC;GAExD,OAAO;IAAE,GAAGD;IAAG,QAAQE;GAAK;EAC9B;EACA,MAAU,MAAM,mDAAmD;CACrE;CAEA,OAAO,MACDC,EAAK,SAAS,SACT;EACL,OAAO;EACP,OAAO;GAAC;GAAK;GAAK;GAAS;EAAQ;EACnC,KAAK,MAAOC,EAAE,SAAS,SAAS;GAACA,EAAE;GAAGA,EAAE;GAAGA,EAAE;GAAOA,EAAE;EAAM,IAAI,CAAC;EACjE,OAAO,OAAO;GAAE,MAAM;GAAQ,GAAGJ,EAAE;GAAK,GAAGA,EAAE;GAAK,OAAOA,EAAE;GAAK,QAAQA,EAAE;EAAI;EAC9E,MAAM,GAAG,MAAOI,EAAE,SAAS,SAAa;GACtC,MAAM;GAAQ,GAAGA,EAAE,IAAIC,EAAE;GAAK,GAAGD,EAAE,IAAIC,EAAE;GAAK,OAAOD,EAAE,QAAQC,EAAE;GAAK,QAAQD,EAAE,SAASC,EAAE;EAC7F,IAFoCD;EAGpC,QAAQ,GAAG,GAAK,MAAO;GACrB,AAAIA,EAAE,SAAS,WACf,EAAIE,KAAMF,EAAE,GACZ,EAAIE,IAAK,KAAKF,EAAE,GAChB,EAAIE,IAAK,KAAKF,EAAE,OAChB,EAAIE,IAAK,KAAKF,EAAE;EAClB;CACF,IAEK;EACL,OAAOD,EAAK,OAAO;EACnB,KAAK,MAAOC,EAAE,SAAS,YAAY,MAAM,KAAKA,EAAE,MAAM,IAAI,CAAC;EAC3D,OAAO,OAAO;GAAE,GAAGD;GAAM,QAAQ,aAAa,KAAKH,CAAsB;EAAE;EAC3E,MAAM,GAAG,MAAM;GACb,IAAII,EAAE,SAAS,WAAW,OAAOA;GACjC,IAAMG,IAAS,IAAI,aAAaH,EAAE,OAAO,MAAM;GAC/C,KAAK,IAAII,IAAI,GAAGA,IAAID,EAAO,QAAQ,KAAK,EAAOC,KAAKJ,EAAE,OAAOI,KAAMH,EAAEG;GACrE,OAAO;IAAE,GAAGL;IAAM;GAAO;EAC3B;EACA,QAAQ,GAAG,GAAK,MAAO;GACrB,IAAIC,EAAE,SAAS,WACf,KAAK,IAAII,IAAI,GAAGA,IAAIJ,EAAE,OAAO,QAAQ,KAAK,EAAIE,IAAKE,KAAKJ,EAAE,OAAOI;EACnE;CACF;CAOF,wBAAwB;AAC1B"}
|