@weasel-js/core 1.9.3 → 1.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1106 -0
- package/README.md +7 -5
- package/dist/WeaselProvider.js +5 -7
- package/dist/WeaselProvider.js.map +1 -1
- package/dist/affordances/composeAffordanceLayer.js +91 -93
- package/dist/affordances/composeAffordanceLayer.js.map +1 -1
- package/dist/affordances/cornerResize.js +27 -18
- package/dist/affordances/cornerResize.js.map +1 -1
- package/dist/affordances/hitAffordanceRegions.js +65 -104
- package/dist/affordances/hitAffordanceRegions.js.map +1 -1
- package/dist/affordances/pathAnchors.js.map +1 -1
- package/dist/affordances/rotationHandle.js +22 -21
- 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 +38 -88
- package/dist/animation/behaviors/momentum.js.map +1 -1
- package/dist/animation/clipTargets.js +12 -0
- package/dist/animation/clipTargets.js.map +1 -0
- package/dist/animation/index.js +15 -20
- package/dist/animation/poseHelpers.js +112 -33
- package/dist/animation/poseHelpers.js.map +1 -1
- package/dist/animation/poseTarget.js +115 -0
- package/dist/animation/poseTarget.js.map +1 -0
- package/dist/animation/reflow.js +113 -83
- package/dist/animation/reflow.js.map +1 -1
- package/dist/animation/rewind.js +66 -0
- package/dist/animation/rewind.js.map +1 -0
- package/dist/animation/rig/bindRig.js +85 -53
- package/dist/animation/rig/bindRig.js.map +1 -1
- package/dist/animation/rig/rigNode.js +93 -0
- package/dist/animation/rig/rigNode.js.map +1 -0
- package/dist/animation/rig/rigSeat.js +26 -0
- package/dist/animation/rig/rigSeat.js.map +1 -0
- package/dist/animation/rig/skinBinding.js +56 -0
- package/dist/animation/rig/skinBinding.js.map +1 -0
- package/dist/animation/rig/useRig.js +31 -16
- package/dist/animation/rig/useRig.js.map +1 -1
- package/dist/animation/wrappers/animateLifecycle.js +32 -24
- package/dist/animation/wrappers/animateLifecycle.js.map +1 -1
- package/dist/animation/wrappers/animateOnSetPose.js +31 -29
- package/dist/animation/wrappers/animateOnSetPose.js.map +1 -1
- package/dist/animation/wrappers/instantPose.js +13 -0
- package/dist/animation/wrappers/instantPose.js.map +1 -0
- package/dist/animation/writtenPoseTarget.js +33 -0
- package/dist/animation/writtenPoseTarget.js.map +1 -0
- package/dist/{autoPoseDescriptor-vCdt55xm.d.ts → autoPoseDescriptor-DHg5KqaJ.d.ts} +1 -1
- package/dist/barrel/canvas.js +31 -0
- package/dist/barrel/chrome.js +16 -0
- package/dist/barrel/input.js +18 -0
- package/dist/barrel/interactions.js +38 -0
- package/dist/barrel/paint.js +11 -0
- package/dist/barrel/paths.js +12 -0
- package/dist/barrel/renderer.js +14 -0
- package/dist/barrel/routing.js +57 -0
- package/dist/barrel/scene.js +37 -0
- package/dist/barrel/text.js +9 -0
- package/dist/barrel/viewport.js +42 -0
- package/dist/canvas/Canvas.js +280 -559
- package/dist/canvas/Canvas.js.map +1 -1
- package/dist/canvas/CanvasView.js +147 -167
- package/dist/canvas/CanvasView.js.map +1 -1
- package/dist/canvas/CursorCoordsHud.js +53 -49
- package/dist/canvas/CursorCoordsHud.js.map +1 -1
- package/dist/canvas/DrawCanvas.js +40 -51
- package/dist/canvas/DrawCanvas.js.map +1 -1
- package/dist/canvas/ModalityHud.js.map +1 -1
- package/dist/canvas/NodeShape.js +55 -374
- package/dist/canvas/NodeShape.js.map +1 -1
- package/dist/canvas/PickHud.js +50 -47
- package/dist/canvas/PickHud.js.map +1 -1
- package/dist/canvas/SceneCanvas/DevHuds.js +40 -0
- package/dist/canvas/SceneCanvas/DevHuds.js.map +1 -0
- package/dist/canvas/SceneCanvas/GestureDispatcherMounter.js +126 -0
- package/dist/canvas/SceneCanvas/GestureDispatcherMounter.js.map +1 -0
- package/dist/canvas/SceneCanvas/PointerProviderIfRoot.js +27 -31
- package/dist/canvas/SceneCanvas/PointerProviderIfRoot.js.map +1 -1
- package/dist/canvas/SceneCanvas/StandardActionsRegistrar.js +64 -0
- package/dist/canvas/SceneCanvas/StandardActionsRegistrar.js.map +1 -0
- package/dist/canvas/SceneCanvas/ToolKeybindingsMounter.js +16 -0
- package/dist/canvas/SceneCanvas/ToolKeybindingsMounter.js.map +1 -0
- package/dist/canvas/SceneCanvas/coordTrace.js +46 -0
- package/dist/canvas/SceneCanvas/coordTrace.js.map +1 -0
- package/dist/canvas/SceneCanvas/defaultNodeProperties.js +138 -85
- package/dist/canvas/SceneCanvas/defaultNodeProperties.js.map +1 -1
- package/dist/canvas/SceneCanvas/defaultNodeRouting.js +9 -8
- package/dist/canvas/SceneCanvas/defaultNodeRouting.js.map +1 -1
- package/dist/canvas/SceneCanvas/dispatcherGestureBounds.js.map +1 -1
- package/dist/canvas/SceneCanvas/features.js +74 -43
- package/dist/canvas/SceneCanvas/features.js.map +1 -1
- package/dist/canvas/SceneCanvas/isDev.js +12 -0
- package/dist/canvas/SceneCanvas/isDev.js.map +1 -0
- package/dist/canvas/SceneCanvas/poseGeometry.js +31 -34
- package/dist/canvas/SceneCanvas/poseGeometry.js.map +1 -1
- package/dist/canvas/SceneCanvas/poseRegistrars.js +13 -0
- package/dist/canvas/SceneCanvas/poseRegistrars.js.map +1 -0
- package/dist/canvas/SceneCanvas/props.js +39 -0
- package/dist/canvas/SceneCanvas/props.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/useActionsPropResolver.js +6 -1
- package/dist/canvas/SceneCanvas/useActionsPropResolver.js.map +1 -1
- package/dist/canvas/SceneCanvas/useBuiltinShapeTools.js +21 -62
- package/dist/canvas/SceneCanvas/useBuiltinShapeTools.js.map +1 -1
- package/dist/canvas/SceneCanvas/useBuiltinTools.js +21 -0
- package/dist/canvas/SceneCanvas/useBuiltinTools.js.map +1 -0
- package/dist/canvas/SceneCanvas/useCanvasCamera.js +38 -0
- package/dist/canvas/SceneCanvas/useCanvasCamera.js.map +1 -0
- package/dist/canvas/SceneCanvas/useCanvasDispatcher.js +20 -0
- package/dist/canvas/SceneCanvas/useCanvasDispatcher.js.map +1 -0
- package/dist/canvas/SceneCanvas/useCanvasSelection.js +16 -0
- package/dist/canvas/SceneCanvas/useCanvasSelection.js.map +1 -0
- package/dist/canvas/SceneCanvas/useCanvasTools.js +67 -0
- package/dist/canvas/SceneCanvas/useCanvasTools.js.map +1 -0
- package/dist/canvas/SceneCanvas/useDispatcherOverlayLayer.js +29 -29
- package/dist/canvas/SceneCanvas/useDispatcherOverlayLayer.js.map +1 -1
- package/dist/canvas/SceneCanvas/useHeldModifiers.js +20 -0
- package/dist/canvas/SceneCanvas/useHeldModifiers.js.map +1 -0
- package/dist/canvas/SceneCanvas/useNodeAtPoint.js +26 -0
- package/dist/canvas/SceneCanvas/useNodeAtPoint.js.map +1 -0
- package/dist/canvas/SceneCanvas/useNodeKinds.js +26 -0
- package/dist/canvas/SceneCanvas/useNodeKinds.js.map +1 -0
- package/dist/canvas/SceneCanvas/usePreviewGhostLayer.js +48 -48
- 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 +74 -78
- package/dist/canvas/SceneCanvas/useSceneSelectTool.js.map +1 -1
- package/dist/canvas/SceneCanvas/useSceneSlotLayers.js +37 -0
- package/dist/canvas/SceneCanvas/useSceneSlotLayers.js.map +1 -0
- package/dist/canvas/SceneCanvas/useSelectionOverlayLayer.js +38 -0
- package/dist/canvas/SceneCanvas/useSelectionOverlayLayer.js.map +1 -0
- package/dist/canvas/SceneCanvas/useViewLayerGate.js +20 -0
- package/dist/canvas/SceneCanvas/useViewLayerGate.js.map +1 -0
- package/dist/canvas/SceneCanvas/useViewportActions.js +9 -1
- package/dist/canvas/SceneCanvas/useViewportActions.js.map +1 -1
- package/dist/canvas/SceneCanvas/worldPointAt.js +9 -0
- package/dist/canvas/SceneCanvas/worldPointAt.js.map +1 -0
- package/dist/canvas/SceneCanvas.js +311 -969
- package/dist/canvas/SceneCanvas.js.map +1 -1
- package/dist/canvas/SceneViewCanvas.js +42 -46
- package/dist/canvas/SceneViewCanvas.js.map +1 -1
- package/dist/canvas/adapterDerivedPath.js +26 -0
- package/dist/canvas/adapterDerivedPath.js.map +1 -0
- package/dist/canvas/affordanceAt.js +11 -1
- package/dist/canvas/affordanceAt.js.map +1 -1
- package/dist/canvas/buildSceneLayer.js +111 -0
- package/dist/canvas/buildSceneLayer.js.map +1 -0
- package/dist/canvas/buildSceneTree.js +16 -19
- package/dist/canvas/buildSceneTree.js.map +1 -1
- package/dist/canvas/canvasRenderer.js +67 -55
- package/dist/canvas/canvasRenderer.js.map +1 -1
- package/dist/canvas/colorOverrides.js.map +1 -1
- package/dist/canvas/defaultDrawOne.js +12 -12
- package/dist/canvas/defaultDrawOne.js.map +1 -1
- package/dist/canvas/deps/areaSelect.js +4 -4
- package/dist/canvas/deps/areaSelect.js.map +1 -1
- package/dist/canvas/deps/changes.js +13 -0
- package/dist/canvas/deps/changes.js.map +1 -0
- package/dist/canvas/deps/debug.js.map +1 -1
- package/dist/canvas/deps/editAnchors.js +38 -57
- package/dist/canvas/deps/editAnchors.js.map +1 -1
- package/dist/canvas/deps/geometryProjection.js.map +1 -1
- package/dist/canvas/deps/hitTestArea.js +31 -26
- package/dist/canvas/deps/hitTestArea.js.map +1 -1
- package/dist/canvas/deps/insert.js +130 -91
- package/dist/canvas/deps/insert.js.map +1 -1
- package/dist/canvas/deps/lassoSelect.js +5 -5
- package/dist/canvas/deps/lassoSelect.js.map +1 -1
- package/dist/canvas/deps/poseDescriptor.js +1 -1
- package/dist/canvas/deps/poseDescriptor.js.map +1 -1
- package/dist/canvas/deps/resizePolicy.js.map +1 -1
- package/dist/canvas/deps/slice.js +26 -26
- package/dist/canvas/deps/slice.js.map +1 -1
- package/dist/canvas/deps/textEdit.js +6 -5
- package/dist/canvas/deps/textEdit.js.map +1 -1
- package/dist/canvas/deps/view.js.map +1 -1
- package/dist/canvas/derivedPath.js +47 -22
- 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 +4 -8
- package/dist/canvas/getNodeAtPoint.js.map +1 -1
- package/dist/canvas/hud.module.js +1 -1
- package/dist/canvas/hud.module.js.map +1 -1
- package/dist/canvas/insertPreviewExtent.js.map +1 -1
- package/dist/canvas/kitRequirements.js +2 -2
- package/dist/canvas/kitRequirements.js.map +1 -1
- package/dist/canvas/layerOrder.js +13 -6
- package/dist/canvas/layerOrder.js.map +1 -1
- package/dist/canvas/layerSlots.js +6 -1
- package/dist/canvas/layerSlots.js.map +1 -1
- package/dist/canvas/nodeShapes/derivedPainter.js +34 -0
- package/dist/canvas/nodeShapes/derivedPainter.js.map +1 -0
- package/dist/canvas/nodeShapes/imagePainter.js +87 -0
- package/dist/canvas/nodeShapes/imagePainter.js.map +1 -0
- package/dist/canvas/nodeShapes/memo.js +9 -0
- package/dist/canvas/nodeShapes/memo.js.map +1 -0
- package/dist/canvas/nodeShapes/nodePaint.js +68 -0
- package/dist/canvas/nodeShapes/nodePaint.js.map +1 -0
- package/dist/canvas/nodeShapes/pathPainter.js +39 -0
- package/dist/canvas/nodeShapes/pathPainter.js.map +1 -0
- package/dist/canvas/nodeShapes/poseBox.js +20 -0
- package/dist/canvas/nodeShapes/poseBox.js.map +1 -0
- package/dist/canvas/nodeShapes/rectFallbackPainter.js +38 -0
- package/dist/canvas/nodeShapes/rectFallbackPainter.js.map +1 -0
- package/dist/canvas/nodeShapes/shapePainter.js +72 -0
- package/dist/canvas/nodeShapes/shapePainter.js.map +1 -0
- package/dist/canvas/nodeShapes/textPainter.js +55 -0
- package/dist/canvas/nodeShapes/textPainter.js.map +1 -0
- package/dist/canvas/overlayRoleStrokes.js.map +1 -1
- package/dist/canvas/paintCull.js +11 -14
- package/dist/canvas/paintCull.js.map +1 -1
- package/dist/{features/cursor → canvas}/paintedCursorLayer.js +2 -2
- package/dist/canvas/paintedCursorLayer.js.map +1 -0
- package/dist/canvas/pickWalk.js +59 -68
- 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 +9 -23
- 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 +11 -11
- 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 -81
- package/dist/canvas/renderSceneToPixels.js.map +1 -1
- package/dist/canvas/sceneAdapter.js +68 -214
- package/dist/canvas/sceneAdapter.js.map +1 -1
- package/dist/canvas/sceneClipboard.js +112 -0
- package/dist/canvas/sceneClipboard.js.map +1 -0
- package/dist/canvas/sceneLayerPaint.js +4 -4
- package/dist/canvas/sceneLayerPaint.js.map +1 -1
- package/dist/canvas/sceneSlotWiring.js.map +1 -1
- package/dist/canvas/sceneViewRender.js +39 -39
- package/dist/canvas/sceneViewRender.js.map +1 -1
- package/dist/canvas/slopsDebugLayer.js +4 -4
- package/dist/canvas/slopsDebugLayer.js.map +1 -1
- package/dist/canvas/surface.module.js +6 -0
- package/dist/canvas/surface.module.js.map +1 -0
- package/dist/canvas/surfaceBox.js +16 -0
- package/dist/canvas/surfaceBox.js.map +1 -0
- package/dist/canvas/useCanvasRenderer.js +26 -6
- 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 +67 -0
- package/dist/canvas/useCanvasView.js.map +1 -0
- package/dist/canvas/useFrameLoop.js +39 -31
- package/dist/canvas/useFrameLoop.js.map +1 -1
- package/dist/canvas/useHostAnchor.js +35 -33
- package/dist/canvas/useHostAnchor.js.map +1 -1
- package/dist/canvas/useLateContentRedraw.js +8 -8
- package/dist/canvas/useLateContentRedraw.js.map +1 -1
- package/dist/canvas/useSceneLayerList.js +11 -0
- package/dist/canvas/useSceneLayerList.js.map +1 -0
- package/dist/canvas/useSurfaceInput.js +42 -0
- package/dist/canvas/useSurfaceInput.js.map +1 -0
- package/dist/canvas/useToolCursor.js +29 -0
- package/dist/canvas/useToolCursor.js.map +1 -0
- package/dist/canvas/useViewHelpers.js +46 -85
- package/dist/canvas/useViewHelpers.js.map +1 -1
- package/dist/canvas/viewInputs.js.map +1 -1
- package/dist/canvas/viewRegistry.js +25 -27
- package/dist/canvas/viewRegistry.js.map +1 -1
- package/dist/canvas/watchElementMove.js +43 -0
- package/dist/canvas/watchElementMove.js.map +1 -0
- package/dist/canvas/wrapNodeOutput.js.map +1 -1
- package/dist/clipboard.d.ts +16 -19
- package/dist/{types-B_9g6hMM.d.ts → clone-2a5hVbBd.d.ts} +123 -74
- package/dist/clone.d.ts +4 -7
- package/dist/clone.js +0 -2
- package/dist/core/device/index.js +5 -4
- package/dist/core/device/targets.js.map +1 -1
- package/dist/core/device/useDeviceProfile.js +38 -44
- package/dist/core/device/useDeviceProfile.js.map +1 -1
- package/dist/core/device/watchDevicePixelRatio.js +17 -0
- package/dist/core/device/watchDevicePixelRatio.js.map +1 -0
- package/dist/{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 +68 -19
- package/dist/core/geometry/poseDescriptor.js.map +1 -1
- package/dist/core/geometry/regionHit.js +31 -34
- 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 +30 -29
- package/dist/core/geometry/unionBounds.js.map +1 -1
- package/dist/core/isPlainObject.js +2 -11
- package/dist/core/layers/backgroundFill.js +31 -0
- package/dist/core/layers/backgroundFill.js.map +1 -0
- package/dist/{features/groups → core/layers}/children.js +1 -1
- package/dist/core/layers/children.js.map +1 -0
- package/dist/core/layers/gateLayer.js +13 -0
- 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/arrange.js +1 -0
- package/dist/core/ops/arrange.js.map +1 -1
- package/dist/core/ops/create.js +10 -5
- package/dist/core/ops/create.js.map +1 -1
- package/dist/core/ops/createHistory.js +9 -9
- package/dist/core/ops/createHistory.js.map +1 -1
- package/dist/core/ops/delete.js +12 -24
- package/dist/core/ops/delete.js.map +1 -1
- package/dist/core/ops/reorder/index.js +43 -40
- package/dist/core/ops/reorder/index.js.map +1 -1
- package/dist/core/ops/reorder/setChildOrder.js +34 -0
- package/dist/core/ops/reorder/setChildOrder.js.map +1 -0
- package/dist/core/paint/meshKind.js +16 -0
- package/dist/core/paint/meshKind.js.map +1 -0
- package/dist/{features/meshPaint/lazyKind.js → core/paint/meshKindLazy.js} +282 -105
- 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/appliedLog.js +37 -0
- package/dist/core/scene/appliedLog.js.map +1 -0
- package/dist/core/scene/arrivalWindow.js +102 -0
- package/dist/core/scene/arrivalWindow.js.map +1 -0
- package/dist/core/scene/boundOps.js +40 -0
- package/dist/core/scene/boundOps.js.map +1 -0
- package/dist/core/scene/composeFrame.js +9 -6
- package/dist/core/scene/composeFrame.js.map +1 -1
- package/dist/{features/groups → core/scene}/composePose.js +18 -18
- package/dist/core/scene/composePose.js.map +1 -0
- package/dist/core/scene/depMemo.js +31 -6
- package/dist/core/scene/depMemo.js.map +1 -1
- package/dist/core/scene/derivedPath.js +19 -20
- package/dist/core/scene/derivedPath.js.map +1 -1
- package/dist/core/scene/editMode.js +26 -0
- package/dist/core/scene/editMode.js.map +1 -0
- package/dist/core/scene/effectivePose.js +38 -39
- package/dist/core/scene/effectivePose.js.map +1 -1
- package/dist/core/scene/fieldEdits.js +98 -0
- package/dist/core/scene/fieldEdits.js.map +1 -0
- package/dist/core/scene/historyFacade.js +130 -0
- package/dist/core/scene/historyFacade.js.map +1 -0
- package/dist/core/scene/historyForm.js +6 -0
- package/dist/core/scene/historyForm.js.map +1 -0
- package/dist/core/scene/kitOps.js +185 -0
- package/dist/core/scene/kitOps.js.map +1 -0
- package/dist/core/scene/kitRegistry.js.map +1 -1
- package/dist/core/scene/layerStack.js +131 -0
- package/dist/core/scene/layerStack.js.map +1 -0
- package/dist/core/scene/layoutPass.js +58 -59
- package/dist/core/scene/layoutPass.js.map +1 -1
- package/dist/core/scene/lockGuard.js +37 -0
- package/dist/core/scene/lockGuard.js.map +1 -0
- 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 +10 -11
- package/dist/core/scene/nodeFnFields.js.map +1 -1
- package/dist/core/scene/nodeMemo.js +45 -19
- package/dist/core/scene/nodeMemo.js.map +1 -1
- package/dist/core/scene/nodeStore.js +127 -0
- package/dist/core/scene/nodeStore.js.map +1 -0
- package/dist/core/scene/notifier.js +37 -0
- package/dist/core/scene/notifier.js.map +1 -0
- package/dist/core/scene/opTable.js +50 -0
- package/dist/core/scene/opTable.js.map +1 -0
- package/dist/core/scene/outerOps.js +66 -0
- package/dist/core/scene/outerOps.js.map +1 -0
- package/dist/core/scene/poseFeed.js +38 -38
- package/dist/core/scene/poseFeed.js.map +1 -1
- package/dist/core/scene/poseHold.js +39 -0
- package/dist/core/scene/poseHold.js.map +1 -0
- package/dist/core/scene/poseOverrides.js +44 -40
- package/dist/core/scene/poseOverrides.js.map +1 -1
- package/dist/core/scene/poseSnapshot.js.map +1 -1
- package/dist/core/scene/reconcileSpecs.js +3 -2
- package/dist/core/scene/reconcileSpecs.js.map +1 -1
- package/dist/core/scene/recorder.js +86 -0
- package/dist/core/scene/recorder.js.map +1 -0
- package/dist/core/scene/renderOrder.js +84 -0
- package/dist/core/scene/renderOrder.js.map +1 -0
- package/dist/core/scene/scene.js +80 -1266
- package/dist/core/scene/scene.js.map +1 -1
- package/dist/core/scene/sceneEdits.js +58 -0
- package/dist/core/scene/sceneEdits.js.map +1 -0
- package/dist/core/scene/sceneMutators.js +49 -0
- package/dist/core/scene/sceneMutators.js.map +1 -0
- package/dist/core/scene/scenePoseAdapter.js +16 -0
- package/dist/core/scene/scenePoseAdapter.js.map +1 -0
- package/dist/core/scene/sceneRecording.js +90 -0
- package/dist/core/scene/sceneRecording.js.map +1 -0
- package/dist/core/scene/sceneSelection.js +28 -0
- package/dist/core/scene/sceneSelection.js.map +1 -0
- package/dist/core/scene/sceneState.js +49 -0
- package/dist/core/scene/sceneState.js.map +1 -0
- package/dist/core/scene/serialization.js +71 -0
- package/dist/core/scene/serialization.js.map +1 -0
- 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/treeOrder.js +13 -0
- package/dist/core/scene/treeOrder.js.map +1 -0
- package/dist/core/scene/treeReads.js +26 -0
- package/dist/core/scene/treeReads.js.map +1 -0
- package/dist/core/scene/types.js.map +1 -1
- package/dist/{features/groups → core/scene}/unionOfChildren.js +3 -3
- package/dist/core/scene/unionOfChildren.js.map +1 -0
- package/dist/core/scene/unitScopes.js +13 -0
- package/dist/core/scene/unitScopes.js.map +1 -0
- package/dist/core/scene/useScene.js.map +1 -1
- package/dist/core/selection/readOnlySelection.js +32 -0
- package/dist/core/selection/readOnlySelection.js.map +1 -0
- package/dist/core/selection/usePublishSceneSelection.js +26 -0
- package/dist/core/selection/usePublishSceneSelection.js.map +1 -0
- package/dist/core/selection/useSelection.js +34 -25
- package/dist/core/selection/useSelection.js.map +1 -1
- package/dist/core/shapeKinds.js.map +1 -1
- package/dist/core/stylus/stylus.js.map +1 -1
- package/dist/core/stylus/usePointerStylus.js.map +1 -1
- package/dist/core/usePaintKinds.js +1 -1
- package/dist/core/usePaintKinds.js.map +1 -1
- package/dist/core/viewport/clientToWorld.js.map +1 -1
- package/dist/core/viewport/fitViewToBounds.js.map +1 -1
- package/dist/core/viewport/parallax.js.map +1 -1
- package/dist/core/viewport/screenSlop.js +11 -11
- package/dist/core/viewport/screenSlop.js.map +1 -1
- package/dist/core/viewport/useCanvasSize.js.map +1 -1
- package/dist/core/viewport/useDecayLoop.js +8 -8
- package/dist/core/viewport/useDecayLoop.js.map +1 -1
- package/dist/core/viewport/useNodeOverlayFrame.js +84 -0
- package/dist/core/viewport/useNodeOverlayFrame.js.map +1 -0
- package/dist/core/viewport/useViewAnimation.js +102 -43
- package/dist/core/viewport/useViewAnimation.js.map +1 -1
- package/dist/core/viewport/view.js +9 -9
- package/dist/core/viewport/view.js.map +1 -1
- package/dist/core/viewport/wheelHandler.js.map +1 -1
- package/dist/core/viewport/zoomBounds.js +10 -8
- package/dist/core/viewport/zoomBounds.js.map +1 -1
- package/dist/{cornerHandles-BCrDp_mH.d.ts → cornerHandles-BEshc4z3.d.ts} +11 -24
- package/dist/debug/createDebugOverlayLayer.js +97 -97
- package/dist/debug/createDebugOverlayLayer.js.map +1 -1
- package/dist/debug/createDebugSink.js.map +1 -1
- package/dist/debug/flag.js +2 -41
- 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 +22 -17
- package/dist/features/chrome-caps/useHoverTracking.js.map +1 -1
- package/dist/features/ingestion/contentHandlers.js +28 -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/registerKitHandlers.js +7 -7
- 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 +22 -14
- package/dist/features/ingestion/weaselJsonHandler.js.map +1 -1
- package/dist/features/longPress/longPressFeedback.js.map +1 -1
- package/dist/features/modes/modeLayers.js +7 -7
- package/dist/features/modes/modeLayers.js.map +1 -1
- package/dist/features/paths/editablePath.js +47 -0
- package/dist/features/paths/editablePath.js.map +1 -0
- package/dist/features/paths/index.js +9 -14
- package/dist/features/paths/pathEditState.js +41 -0
- package/dist/features/paths/pathEditState.js.map +1 -0
- package/dist/features/paths/pathEditingOverlayLayer.js +36 -38
- package/dist/features/paths/pathEditingOverlayLayer.js.map +1 -1
- package/dist/features/paths/pathLayer.js +3 -2
- package/dist/features/paths/pathLayer.js.map +1 -1
- package/dist/features/paths/penPreviewLayer.js +86 -88
- package/dist/features/paths/penPreviewLayer.js.map +1 -1
- package/dist/features/paths/usePathEdit.js +34 -0
- package/dist/features/paths/usePathEdit.js.map +1 -0
- package/dist/features/poseRun/usePoseRun.js +44 -52
- package/dist/features/poseRun/usePoseRun.js.map +1 -1
- package/dist/features/selection/overlay.js +171 -179
- 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 +100 -93
- package/dist/features/text/useSceneTextEdit.js.map +1 -1
- package/dist/features/viewports/viewportLayer.js +25 -36
- package/dist/features/viewports/viewportLayer.js.map +1 -1
- package/dist/index.d.ts +8473 -9141
- package/dist/index.js +269 -307
- package/dist/input/keyState.js +38 -39
- package/dist/input/keyState.js.map +1 -1
- package/dist/input/useKeyModifiers.js +11 -0
- package/dist/input/useKeyModifiers.js.map +1 -0
- package/dist/interactions/actions/actionShortcuts.js.map +1 -1
- package/dist/interactions/actions/{defaults/align.js → align/action.js} +18 -20
- package/dist/interactions/actions/align/action.js.map +1 -0
- package/dist/interactions/actions/align/align.js +20 -20
- package/dist/interactions/actions/align/align.js.map +1 -1
- package/dist/interactions/actions/booleans/action.js +65 -0
- package/dist/interactions/actions/booleans/action.js.map +1 -0
- package/dist/interactions/actions/booleans/booleans.js +69 -78
- package/dist/interactions/actions/booleans/booleans.js.map +1 -1
- package/dist/interactions/actions/booleans/operands.js +40 -0
- package/dist/interactions/actions/booleans/operands.js.map +1 -0
- package/dist/interactions/actions/booleans/pieces.js +45 -0
- package/dist/interactions/actions/booleans/pieces.js.map +1 -0
- package/dist/interactions/actions/booleans/placement.js +24 -0
- package/dist/interactions/actions/booleans/placement.js.map +1 -0
- package/dist/interactions/actions/booleans/useBooleans.js +11 -9
- package/dist/interactions/actions/booleans/useBooleans.js.map +1 -1
- package/dist/interactions/actions/booleans/useBooleansAdapter.js.map +1 -1
- package/dist/interactions/actions/{defaults/clipboard.js → clipboard/action.js} +31 -15
- package/dist/interactions/actions/clipboard/action.js.map +1 -0
- package/dist/interactions/actions/clipboard/clipboardOps.js +44 -42
- package/dist/interactions/actions/clipboard/clipboardOps.js.map +1 -1
- package/dist/interactions/actions/clipboard/materializePaste.js +10 -7
- package/dist/interactions/actions/clipboard/materializePaste.js.map +1 -1
- package/dist/interactions/actions/clipboard/wireFormat.js.map +1 -1
- package/dist/interactions/actions/clone/action.js +98 -0
- package/dist/interactions/actions/clone/action.js.map +1 -0
- package/dist/interactions/actions/clone/behaviors.js +52 -0
- package/dist/interactions/actions/clone/behaviors.js.map +1 -0
- package/dist/interactions/actions/defaultCommitAdapter.js +7 -32
- package/dist/interactions/actions/defaultCommitAdapter.js.map +1 -1
- package/dist/interactions/actions/defaults/anchorEditing.js +60 -84
- package/dist/interactions/actions/defaults/anchorEditing.js.map +1 -1
- package/dist/interactions/actions/defaults/areaSelect.js +35 -38
- package/dist/interactions/actions/defaults/areaSelect.js.map +1 -1
- package/dist/interactions/actions/defaults/cancelGesture.js.map +1 -1
- package/dist/interactions/actions/defaults/clearSelection.js.map +1 -1
- package/dist/interactions/actions/defaults/copySubtree.js +40 -0
- package/dist/interactions/actions/defaults/copySubtree.js.map +1 -0
- package/dist/interactions/actions/defaults/createPaintAction.js.map +1 -1
- package/dist/interactions/actions/defaults/delete.js.map +1 -1
- package/dist/interactions/actions/defaults/duplicate.js +13 -53
- package/dist/interactions/actions/defaults/duplicate.js.map +1 -1
- package/dist/interactions/actions/defaults/enterTextEdit.js.map +1 -1
- package/dist/interactions/actions/defaults/group.js +40 -50
- package/dist/interactions/actions/defaults/group.js.map +1 -1
- package/dist/interactions/actions/defaults/icons/booleanIcons.js +24 -1
- package/dist/interactions/actions/defaults/icons/booleanIcons.js.map +1 -1
- package/dist/interactions/actions/defaults/icons/outlineIcons.js +39 -1
- package/dist/interactions/actions/defaults/icons/outlineIcons.js.map +1 -1
- package/dist/interactions/actions/defaults/ingest.js +44 -38
- package/dist/interactions/actions/defaults/ingest.js.map +1 -1
- package/dist/interactions/actions/defaults/insertPathAnchor.js +11 -12
- package/dist/interactions/actions/defaults/insertPathAnchor.js.map +1 -1
- package/dist/interactions/actions/defaults/nudge.js +40 -69
- package/dist/interactions/actions/defaults/nudge.js.map +1 -1
- package/dist/interactions/actions/defaults/nudgeSteps.js +37 -0
- package/dist/interactions/actions/defaults/nudgeSteps.js.map +1 -0
- package/dist/interactions/actions/defaults/pinchZoom.js.map +1 -1
- package/dist/interactions/actions/defaults/reorder.js +2 -0
- package/dist/interactions/actions/defaults/reorder.js.map +1 -1
- package/dist/interactions/actions/defaults/requiresSelection.js.map +1 -1
- package/dist/interactions/actions/defaults/setFill.js +14 -8
- package/dist/interactions/actions/defaults/setFill.js.map +1 -1
- package/dist/interactions/actions/defaults/setFillOpacity.js +7 -4
- package/dist/interactions/actions/defaults/setFillOpacity.js.map +1 -1
- package/dist/interactions/actions/defaults/setStroke.js +12 -12
- package/dist/interactions/actions/defaults/setStroke.js.map +1 -1
- package/dist/interactions/actions/defaults/setStrokeOpacity.js +6 -6
- package/dist/interactions/actions/defaults/sliceOps.js +8 -10
- 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 +37 -26
- package/dist/interactions/actions/defaults/viewportDragPan.js.map +1 -1
- package/dist/interactions/actions/defaults/viewportWheelPan.js.map +1 -1
- package/dist/interactions/actions/defaults/viewportZoom.js.map +1 -1
- package/dist/interactions/actions/distribute/action.js +66 -0
- package/dist/interactions/actions/distribute/action.js.map +1 -0
- package/dist/interactions/actions/distribute/distribute.js +11 -11
- package/dist/interactions/actions/distribute/distribute.js.map +1 -1
- package/dist/interactions/actions/{defaults/editAnchors.js → edit-anchors/action.js} +7 -9
- package/dist/interactions/actions/edit-anchors/action.js.map +1 -0
- package/dist/interactions/actions/edit-anchors/geometry.js +30 -27
- package/dist/interactions/actions/edit-anchors/geometry.js.map +1 -1
- package/dist/interactions/actions/flip/action.js +124 -0
- package/dist/interactions/actions/flip/action.js.map +1 -0
- package/dist/interactions/actions/flip/helpers.js +30 -17
- package/dist/interactions/actions/flip/helpers.js.map +1 -1
- package/dist/interactions/actions/gestureFrames.js +18 -0
- package/dist/interactions/actions/gestureFrames.js.map +1 -0
- package/dist/interactions/actions/gestureLifecycle.js +47 -20
- package/dist/interactions/actions/gestureLifecycle.js.map +1 -1
- package/dist/interactions/actions/hitSelection.js +8 -0
- package/dist/interactions/actions/hitSelection.js.map +1 -0
- package/dist/interactions/actions/insert/action.js +72 -0
- package/dist/interactions/actions/insert/action.js.map +1 -0
- package/dist/interactions/actions/insert/commit.js +28 -0
- package/dist/interactions/actions/insert/commit.js.map +1 -0
- package/dist/interactions/actions/insert/extras.js +65 -0
- package/dist/interactions/actions/insert/extras.js.map +1 -0
- package/dist/interactions/actions/insert/frame.js +48 -0
- package/dist/interactions/actions/insert/frame.js.map +1 -0
- package/dist/interactions/actions/insert/geometry.js +35 -0
- package/dist/interactions/actions/insert/geometry.js.map +1 -0
- package/dist/interactions/actions/insert/rotateAction.js +21 -0
- package/dist/interactions/actions/insert/rotateAction.js.map +1 -0
- package/dist/interactions/actions/insert/session.js +59 -0
- package/dist/interactions/actions/insert/session.js.map +1 -0
- package/dist/interactions/actions/insert/shape.js +34 -0
- package/dist/interactions/actions/insert/shape.js.map +1 -0
- package/dist/interactions/actions/lasso-select/action.js +143 -0
- package/dist/interactions/actions/lasso-select/action.js.map +1 -0
- package/dist/interactions/actions/lasso-select/behaviors/selectFromLasso.js +14 -18
- package/dist/interactions/actions/lasso-select/behaviors/selectFromLasso.js.map +1 -1
- package/dist/interactions/actions/move/action.js +87 -0
- package/dist/interactions/actions/move/action.js.map +1 -0
- package/dist/interactions/actions/move/behaviors/layoutDrop.js +51 -0
- package/dist/interactions/actions/move/behaviors/layoutDrop.js.map +1 -0
- package/dist/interactions/actions/move/behaviors/reparentOnDrop.js +15 -0
- package/dist/interactions/actions/move/behaviors/reparentOnDrop.js.map +1 -0
- package/dist/interactions/actions/move/behaviors/snapBackOrDelete.js +5 -5
- package/dist/interactions/actions/move/behaviors/snapBackOrDelete.js.map +1 -1
- package/dist/interactions/actions/move/behaviors/snapToContainer.js +39 -27
- package/dist/interactions/actions/move/behaviors/snapToContainer.js.map +1 -1
- package/dist/interactions/actions/move/capture.js +99 -0
- package/dist/interactions/actions/move/capture.js.map +1 -0
- package/dist/interactions/actions/move/commit/index.js +41 -0
- package/dist/interactions/actions/move/commit/index.js.map +1 -0
- package/dist/interactions/actions/move/commit/layoutDrop.js +44 -0
- package/dist/interactions/actions/move/commit/layoutDrop.js.map +1 -0
- package/dist/interactions/actions/move/commit/layoutRelease.js +100 -0
- package/dist/interactions/actions/move/commit/layoutRelease.js.map +1 -0
- package/dist/interactions/actions/move/commit/rebase.js +18 -0
- package/dist/interactions/actions/move/commit/rebase.js.map +1 -0
- package/dist/interactions/actions/move/commit/reparent.js +65 -0
- package/dist/interactions/actions/move/commit/reparent.js.map +1 -0
- package/dist/interactions/actions/move/delta.js +51 -0
- package/dist/interactions/actions/move/delta.js.map +1 -0
- package/dist/interactions/actions/move/frame.js +59 -0
- package/dist/interactions/actions/move/frame.js.map +1 -0
- package/dist/interactions/actions/move/gestureAdapter.js +22 -30
- package/dist/interactions/actions/move/gestureAdapter.js.map +1 -1
- package/dist/interactions/actions/move/landedDescendants.js +33 -0
- package/dist/interactions/actions/move/landedDescendants.js.map +1 -0
- package/dist/interactions/actions/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 +16 -63
- package/dist/interactions/actions/outlines/createOutlines.js.map +1 -1
- package/dist/interactions/actions/outlines/createOutlinesAction.js +51 -0
- package/dist/interactions/actions/outlines/createOutlinesAction.js.map +1 -0
- package/dist/interactions/actions/outlines/outlineStroke.js +72 -0
- package/dist/interactions/actions/outlines/outlineStroke.js.map +1 -0
- package/dist/interactions/actions/outlines/outlineStrokeAction.js +37 -0
- package/dist/interactions/actions/outlines/outlineStrokeAction.js.map +1 -0
- package/dist/interactions/actions/outlines/replaceWithPaths.js +54 -0
- package/dist/interactions/actions/outlines/replaceWithPaths.js.map +1 -0
- package/dist/interactions/actions/outlines/strokeRegion.js +27 -0
- package/dist/interactions/actions/outlines/strokeRegion.js.map +1 -0
- package/dist/interactions/actions/planeInput.js.map +1 -1
- package/dist/interactions/actions/pointerState.js +12 -0
- package/dist/interactions/actions/pointerState.js.map +1 -0
- package/dist/interactions/actions/poseDescriptorDep.js +16 -4
- package/dist/interactions/actions/poseDescriptorDep.js.map +1 -1
- package/dist/interactions/actions/poseFrame.js +25 -20
- package/dist/interactions/actions/poseFrame.js.map +1 -1
- package/dist/interactions/actions/resize/action.js +55 -0
- package/dist/interactions/actions/resize/action.js.map +1 -0
- package/dist/interactions/actions/resize/behaviors/lockAspect.js.map +1 -1
- package/dist/interactions/actions/resize/boxFrame.js +16 -0
- package/dist/interactions/actions/resize/boxFrame.js.map +1 -0
- package/dist/interactions/actions/resize/capture.js +85 -0
- package/dist/interactions/actions/resize/capture.js.map +1 -0
- package/dist/interactions/actions/resize/commit.js +69 -0
- package/dist/interactions/actions/resize/commit.js.map +1 -0
- package/dist/interactions/actions/resize/frame.js +74 -0
- package/dist/interactions/actions/resize/frame.js.map +1 -0
- package/dist/interactions/actions/resize/pointSnap.js +111 -0
- package/dist/interactions/actions/resize/pointSnap.js.map +1 -0
- package/dist/interactions/actions/resize/ruleBounds.js +9 -0
- package/dist/interactions/actions/resize/ruleBounds.js.map +1 -0
- package/dist/interactions/actions/resize/session.js +49 -0
- package/dist/interactions/actions/resize/session.js.map +1 -0
- package/dist/interactions/actions/resolveOverlays.js.map +1 -1
- package/dist/interactions/actions/resolvePreviews.js.map +1 -1
- package/dist/interactions/actions/rotate/action.js +56 -0
- package/dist/interactions/actions/rotate/action.js.map +1 -0
- package/dist/interactions/actions/rotate/behaviors/index.js +7 -0
- package/dist/interactions/actions/rotate/behaviors/index.js.map +1 -0
- package/dist/interactions/actions/rotate/behaviors/snapRotation.js +12 -0
- package/dist/interactions/actions/rotate/behaviors/snapRotation.js.map +1 -0
- package/dist/interactions/actions/rotate/commit.js +40 -0
- package/dist/interactions/actions/rotate/commit.js.map +1 -0
- package/dist/interactions/actions/rotate/frame.js +65 -0
- package/dist/interactions/actions/rotate/frame.js.map +1 -0
- package/dist/interactions/actions/rotate/handle.js +12 -12
- package/dist/interactions/actions/rotate/handle.js.map +1 -1
- package/dist/interactions/actions/rotate/session.js +92 -0
- package/dist/interactions/actions/rotate/session.js.map +1 -0
- package/dist/interactions/actions/selectionSubtree.js +69 -0
- package/dist/interactions/actions/selectionSubtree.js.map +1 -0
- package/dist/interactions/actions/spatialReference.js.map +1 -1
- package/dist/interactions/actions/useStandardActions.js +87 -78
- package/dist/interactions/actions/useStandardActions.js.map +1 -1
- package/dist/interactions/gestures/dragGesture/dragGesture.js +4 -7
- package/dist/interactions/gestures/dragGesture/dragGesture.js.map +1 -1
- package/dist/interactions/gestures/dragGesture/dragPointOf.js +23 -0
- package/dist/interactions/gestures/dragGesture/dragPointOf.js.map +1 -0
- package/dist/interactions/gestures/handleDrag/handleDrag.js +21 -26
- package/dist/interactions/gestures/handleDrag/handleDrag.js.map +1 -1
- package/dist/interactions/gestures/pointerDrag/pointerDrag.js +62 -41
- 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/interactions/gestures/thresholdDrag/thresholdDrag.js +8 -4
- package/dist/interactions/gestures/thresholdDrag/thresholdDrag.js.map +1 -1
- package/dist/layout/arrivals.js +20 -23
- package/dist/layout/arrivals.js.map +1 -1
- package/dist/math-CYUjoyyU.d.ts +33 -0
- package/dist/math.d.ts +5 -3
- package/dist/math.js +6 -6
- package/dist/mesh.d.ts +4 -268
- package/dist/mesh.js +3 -7
- package/dist/move.d.ts +14 -11
- package/dist/{originProjection-DEklpDc_.d.ts → originProjection-PPT88jZv.d.ts} +1 -1
- package/dist/patterns-builtin.d.ts +1 -118
- package/dist/patterns-builtin.js +2 -3
- package/dist/{poseDescriptor-D-OH-tu5.d.ts → poseDescriptor-Bqk-11Rl.d.ts} +26 -36
- package/dist/renderer.d.ts +1 -91
- package/dist/renderer.js +2 -18
- package/dist/resize.d.ts +10 -22
- package/dist/resize.js +6 -6
- package/dist/style.css +1 -1
- package/dist/test-hook/install.js +12 -6
- package/dist/test-hook/install.js.map +1 -1
- package/dist/test-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 +1 -0
- package/dist/tools/builtin/ellipse/useEllipseTool.js.map +1 -1
- package/dist/tools/builtin/eyedropper/useEyedropperTool.js.map +1 -1
- package/dist/tools/builtin/hand/useHandTool.js +1 -0
- 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 +11 -11
- package/dist/tools/builtin/lasso/useLassoTool.js.map +1 -1
- package/dist/tools/builtin/line/useLineTool.js +1 -0
- package/dist/tools/builtin/line/useLineTool.js.map +1 -1
- package/dist/tools/builtin/pen/usePenTool.js +198 -150
- package/dist/tools/builtin/pen/usePenTool.js.map +1 -1
- package/dist/tools/builtin/pencil/usePencilTool.js +1 -0
- package/dist/tools/builtin/pencil/usePencilTool.js.map +1 -1
- package/dist/tools/builtin/pickTopMostHit.js.map +1 -1
- package/dist/tools/builtin/polygon/usePolygonTool.js +13 -8
- package/dist/tools/builtin/polygon/usePolygonTool.js.map +1 -1
- package/dist/tools/builtin/rect/useRectTool.js +1 -0
- package/dist/tools/builtin/rect/useRectTool.js.map +1 -1
- package/dist/tools/builtin/select/adapterPointQuery.js +36 -0
- package/dist/tools/builtin/select/adapterPointQuery.js.map +1 -0
- package/dist/tools/builtin/select/selectionContributions.js +25 -24
- package/dist/tools/builtin/select/selectionContributions.js.map +1 -1
- package/dist/tools/builtin/select/useSelectTool.js +42 -67
- package/dist/tools/builtin/select/useSelectTool.js.map +1 -1
- package/dist/tools/builtin/shared/pointerFollower.js +17 -0
- package/dist/tools/builtin/shared/pointerFollower.js.map +1 -0
- package/dist/tools/builtin/slice/useSliceTool.js +72 -82
- package/dist/tools/builtin/slice/useSliceTool.js.map +1 -1
- package/dist/tools/builtin/star/useStarTool.js +22 -16
- package/dist/tools/builtin/star/useStarTool.js.map +1 -1
- package/dist/tools/builtin/text/useTextTool.js +9 -0
- package/dist/tools/builtin/text/useTextTool.js.map +1 -1
- package/dist/tools/builtin/weight/useWeightTool.js +77 -0
- package/dist/tools/builtin/weight/useWeightTool.js.map +1 -0
- package/dist/tools/builtin/weight/weightActions.js +112 -0
- package/dist/tools/builtin/weight/weightActions.js.map +1 -0
- package/dist/tools/builtin/weight/weightOverlay.js +61 -0
- package/dist/tools/builtin/weight/weightOverlay.js.map +1 -0
- package/dist/tools/overlayBinding.js.map +1 -1
- package/dist/tools/useKeybindings.js +12 -22
- package/dist/tools/useKeybindings.js.map +1 -1
- package/dist/{types-A37hYkeR.d.ts → types-CIKDwlsP.d.ts} +113 -169
- package/dist/util/color.js +3 -3
- package/dist/util/color.js.map +1 -1
- package/dist/util/paint.js +1 -1
- package/dist/util/paint.js.map +1 -1
- package/dist/version.js +1 -1
- package/package.json +28 -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 -62
- 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 -138
- package/dist/animation/stagger.js.map +0 -1
- package/dist/animation/timeline/booking.js +0 -106
- package/dist/animation/timeline/booking.js.map +0 -1
- package/dist/animation/timeline/createTimeline.js +0 -116
- package/dist/animation/timeline/createTimeline.js.map +0 -1
- package/dist/animation/timeline/sampleTrack.js +0 -71
- package/dist/animation/timeline/sampleTrack.js.map +0 -1
- package/dist/animation/useAnimator.js +0 -378
- package/dist/animation/useAnimator.js.map +0 -1
- package/dist/builtins-C-VgUlWI.d.ts +0 -4514
- package/dist/canvas/MinimapCanvas.js +0 -139
- 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 -80
- 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 -85
- 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/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/isPlainObject.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/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/debug/flag.js.map +0 -1
- package/dist/features/cursor/paintedCursorLayer.js.map +0 -1
- package/dist/features/focus/gateLayer.js +0 -14
- package/dist/features/focus/gateLayer.js.map +0 -1
- package/dist/features/focus/useCanvasFocus.js +0 -29
- package/dist/features/focus/useCanvasFocus.js.map +0 -1
- package/dist/features/groups/children.js.map +0 -1
- package/dist/features/groups/composePose.js.map +0 -1
- package/dist/features/groups/nestedHit.js.map +0 -1
- package/dist/features/groups/unionOfChildren.js.map +0 -1
- package/dist/features/images/imageCache.js +0 -94
- 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 -236
- 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 -103
- 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 -26
- package/dist/features/parallax/createParallaxPlane.js.map +0 -1
- package/dist/features/paths/anchorEdits.js +0 -156
- package/dist/features/paths/anchorEdits.js.map +0 -1
- package/dist/features/paths/anchors.js +0 -154
- package/dist/features/paths/anchors.js.map +0 -1
- package/dist/features/paths/booleans.js +0 -2
- package/dist/features/paths/markerCommands.js +0 -148
- 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/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/index.js +0 -23
- 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/resolveSpec.js +0 -57
- 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 -46
- 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/domRuns.js +0 -258
- 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 -45
- package/dist/features/text/hitTest.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 -135
- package/dist/features/text/runs/rangeStyle.js.map +0 -1
- package/dist/features/text/textCommand.js +0 -59
- 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 -467
- package/dist/features/text/useTextEdit.js.map +0 -1
- package/dist/features/tiling/createTiledLayer.js +0 -63
- 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 -107
- 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 +0 -66
- package/dist/interactions/actions/defaults/distribute.js.map +0 -1
- package/dist/interactions/actions/defaults/editAnchors.js.map +0 -1
- package/dist/interactions/actions/defaults/flip.js +0 -119
- package/dist/interactions/actions/defaults/flip.js.map +0 -1
- package/dist/interactions/actions/defaults/freshNodeId.js +0 -10
- package/dist/interactions/actions/defaults/freshNodeId.js.map +0 -1
- package/dist/interactions/actions/defaults/insert.js +0 -288
- package/dist/interactions/actions/defaults/insert.js.map +0 -1
- package/dist/interactions/actions/defaults/lassoSelect.js +0 -156
- package/dist/interactions/actions/defaults/lassoSelect.js.map +0 -1
- package/dist/interactions/actions/defaults/move.js +0 -760
- package/dist/interactions/actions/defaults/move.js.map +0 -1
- package/dist/interactions/actions/defaults/resize.js +0 -335
- package/dist/interactions/actions/defaults/resize.js.map +0 -1
- package/dist/interactions/actions/defaults/rotate.js +0 -184
- package/dist/interactions/actions/defaults/rotate.js.map +0 -1
- package/dist/interactions/actions/previewOverrides.js +0 -25
- package/dist/interactions/actions/previewOverrides.js.map +0 -1
- package/dist/interactions/actions/resize/autoPoseDescriptor.js.map +0 -1
- package/dist/math-Drrw4ewZ.d.ts +0 -160
- package/dist/registerProgram-BMZRDgrh.d.ts +0 -197
- package/dist/renderer/DrawCommand.js +0 -6
- package/dist/renderer/DrawCommand.js.map +0 -1
- package/dist/renderer/WeaselRenderer.js +0 -331
- 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 -64
- 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 -51
- 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.js +0 -1135
- 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 -45
- 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 -9
- 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 -19
- package/dist/renderer/math/color.js +0 -341
- package/dist/renderer/math/color.js.map +0 -1
- package/dist/renderer/math/mat3.js +0 -76
- 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 -30
- package/dist/renderer/shaders/gradFill.js.map +0 -1
- package/dist/renderer/shaders/imageFill.js +0 -14
- package/dist/renderer/shaders/imageFill.js.map +0 -1
- package/dist/renderer/shaders/pathFill.js +0 -13
- package/dist/renderer/shaders/pathFill.js.map +0 -1
- package/dist/renderer/shaders/patternFill.js +0 -24
- 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 -14
- 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-CuIxe0xY.d.ts +0 -356
- package/dist/tools/prefs.js +0 -62
- package/dist/tools/prefs.js.map +0 -1
|
@@ -1,53 +1,51 @@
|
|
|
1
1
|
import { createViewResolver as e } from "../features/viewports/viewResolver.js";
|
|
2
2
|
import { createContext as t, useContext as n, useMemo as r, useRef as i } from "react";
|
|
3
|
-
import {
|
|
3
|
+
import { createEmitter as a } from "@weasel-js/registry";
|
|
4
|
+
import { jsx as o } from "react/jsx-runtime";
|
|
4
5
|
//#region src/canvas/viewRegistry.tsx
|
|
5
|
-
var
|
|
6
|
-
function
|
|
7
|
-
let n = i(/* @__PURE__ */ new Map()),
|
|
8
|
-
let t = () => {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
}, r = () => [...n.current.keys()].sort((e, t) => e.order - t.order || n.current.get(e) - n.current.get(t));
|
|
6
|
+
var s = t(null);
|
|
7
|
+
function c({ children: t }) {
|
|
8
|
+
let n = i(/* @__PURE__ */ new Map()), c = i(0), l = i(0), f = i(null), p = r(() => {
|
|
9
|
+
let t = a(), r = () => {
|
|
10
|
+
l.current++, t.emit();
|
|
11
|
+
}, i = () => [...n.current.keys()].sort((e, t) => e.order - t.order || n.current.get(e) - n.current.get(t));
|
|
12
12
|
return {
|
|
13
13
|
resolver: e({
|
|
14
14
|
views: () => {
|
|
15
|
-
let e = f.current, t = e?.view() ??
|
|
16
|
-
return
|
|
15
|
+
let e = f.current, t = e?.view() ?? d, n = e?.dims() ?? u;
|
|
16
|
+
return i().filter((e) => e.interactive).map((e) => e.layer.resolvable(t, n));
|
|
17
17
|
},
|
|
18
|
-
root: () => f.current?.view() ??
|
|
18
|
+
root: () => f.current?.view() ?? d,
|
|
19
19
|
canvasOrigin: () => f.current?.origin() ?? {
|
|
20
20
|
left: 0,
|
|
21
21
|
top: 0
|
|
22
22
|
},
|
|
23
23
|
occluded: (e, t) => f.current?.claimsAbove(e, t) ?? !1
|
|
24
24
|
}),
|
|
25
|
-
register: (e) => (n.current.set(e,
|
|
26
|
-
n.current.delete(e),
|
|
27
|
-
}),
|
|
28
|
-
list: r,
|
|
29
|
-
getVersion: () => c.current,
|
|
30
|
-
subscribe: (e) => (d.current.add(e), () => {
|
|
31
|
-
d.current.delete(e);
|
|
25
|
+
register: (e) => (n.current.set(e, c.current++), r(), () => {
|
|
26
|
+
n.current.delete(e), r();
|
|
32
27
|
}),
|
|
28
|
+
list: i,
|
|
29
|
+
getVersion: () => l.current,
|
|
30
|
+
subscribe: t.subscribe,
|
|
33
31
|
surface: () => f.current,
|
|
34
|
-
attachSurface: (e) => {
|
|
35
|
-
f.current =
|
|
36
|
-
}
|
|
32
|
+
attachSurface: (e) => (f.current = e, () => {
|
|
33
|
+
f.current === e && (f.current = null);
|
|
34
|
+
})
|
|
37
35
|
};
|
|
38
36
|
}, []);
|
|
39
|
-
return /* @__PURE__ */
|
|
37
|
+
return /* @__PURE__ */ o(s.Provider, {
|
|
40
38
|
value: p,
|
|
41
39
|
children: t
|
|
42
40
|
});
|
|
43
41
|
}
|
|
44
|
-
function
|
|
45
|
-
return n(
|
|
42
|
+
function l() {
|
|
43
|
+
return n(s);
|
|
46
44
|
}
|
|
47
|
-
var
|
|
45
|
+
var u = {
|
|
48
46
|
width: 0,
|
|
49
47
|
height: 0
|
|
50
|
-
},
|
|
48
|
+
}, d = {
|
|
51
49
|
x: 0,
|
|
52
50
|
y: 0,
|
|
53
51
|
scale: {
|
|
@@ -56,6 +54,6 @@ var l = {
|
|
|
56
54
|
}
|
|
57
55
|
};
|
|
58
56
|
//#endregion
|
|
59
|
-
export {
|
|
57
|
+
export { d as IDENTITY_VIEW, u as UNMEASURED_DIMS, c as ViewRegistryProvider, l as useOptionalViewRegistry };
|
|
60
58
|
|
|
61
59
|
//# sourceMappingURL=viewRegistry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"viewRegistry.js","names":["ViewRegistryContext","createContext","ViewRegistryProvider","entriesRef","useRef","seqRef","versionRef","
|
|
1
|
+
{"version":3,"file":"viewRegistry.js","names":["ViewRegistryContext","createContext","ViewRegistryProvider","entriesRef","useRef","seqRef","versionRef","surfaceRef","registry","useMemo","listeners","createEmitter","changed","ordered","a","b","createViewResolver","surface","view","IDENTITY_VIEW","dims","UNMEASURED_DIMS","r","x","y","reg","handle","useOptionalViewRegistry","useContext"],"sources":["../../src/canvas/viewRegistry.tsx"],"sourcesContent":["/**\n * The seam between a canvas surface and the views drawn on it.\n *\n * Traffic runs both ways: the surface attaches a handle onto its frame and its\n * layer stack, and each view registers what it contributes back — the viewport\n * node it paints into and the record the gesture dispatcher routes its events\n * to. Both sides are thunks, read at draw and dispatch time, so neither can\n * serve the other a frame that has already moved.\n */\nimport { createContext, useContext, useMemo, useRef, type ReactNode } from 'react';\nimport type { Dims, RenderLayer } from 'core/layers/render';\nimport type { LayerHit } from 'affordances/types';\nimport type { ChromeState } from 'core/selection/chromeState';\nimport type { View } from 'core/viewport/view';\nimport type { ViewportLayer } from 'features/viewports/viewportLayer';\nimport type { DispatcherViewTarget } from '@weasel-js/routing/internal';\nimport { createViewResolver, type ViewResolver } from 'features/viewports/viewResolver';\nimport { createEmitter } from '@weasel-js/registry';\n\n/**\n * What a view needs from the surface hosting it.\n *\n * @internal Attached by the surface, read by `<CanvasView>`.\n */\nexport interface SurfaceHandle {\n /** Client-space origin of the canvas element. A rect fact: it knows nothing\n * of a `clientToWorld` override, so convert with {@link clientToWorld}. */\n origin(): { left: number; top: number };\n /** A client point in the surface's own world — the conversion the surface\n * itself makes, its `clientToWorld` override included. */\n clientToWorld(clientX: number, clientY: number): [number, number];\n /** The outer camera. */\n view(): View;\n /** The canvas's CSS-pixel size. */\n dims(): Dims;\n /** The stack a view paints through its own camera, unless it narrows it. */\n layers(): readonly RenderLayer<unknown>[];\n requestRedraw(): void;\n /** The canvas's own view chrome — its selection, its overlay-aware bounds.\n * What a `<CanvasView>` answers for itself, answered for view zero. */\n chromeState(): ChromeState;\n /** Hit-test the externally registered layers at a world point, against the\n * frame and draw envelope of whichever view is asking. The public\n * `hitTestExtras` is this with the canvas's own frame and envelope. */\n hitTestExtras(\n worldX: number,\n worldY: number,\n view: View,\n dims: Dims,\n data: unknown,\n /** Consider only these layers — the ones the asking view paints. A layer\n * asked on a frame it was not drawn in answers for the wrong pixels. */\n only?: readonly RenderLayer<unknown>[],\n ): { layerId: string; hit: LayerHit } | null;\n /** Whether a registered layer claims a canvas-local point on the surface's\n * own frame. Registered layers paint over every view, so such a point is\n * theirs even inside a view's rect. */\n claimsAbove(x: number, y: number): boolean;\n}\n\n/**\n * What one view contributes to the surface hosting it.\n *\n * @internal Written by `<CanvasView>`, read by the surface. Consumers declare\n * a view, not a registration.\n */\nexport interface ViewRegistration {\n id: string;\n /**\n * Paint and hit order, low to high. Views declared as props take their array\n * index; a view mounted as a child takes `Infinity`, so it lands after them\n * however React happens to order the mount effects.\n */\n order: number;\n /** The viewport node this view paints into. Its `resolvable` is what routes\n * input here. */\n layer: ViewportLayer<unknown>;\n /** `false` keeps input over the view on the canvas beneath it. */\n interactive: boolean;\n /** `false` leaves `layer` for a host to draw — a HUD window's interior — so\n * the surface does not paint it too. */\n paint: boolean;\n /** Everything about dispatching to this view except its id. */\n target: Omit<DispatcherViewTarget, 'id'>;\n /** Whether a scene layer reaches the screen in this view. For input that\n * reaches a view without a dispatch — hover — so it judges this view's\n * paint rather than the surface's. */\n layerIsPainted(layerId: string): boolean;\n}\n\n/** @internal */\nexport interface ViewRegistry {\n /** Returns an unregister. */\n register(reg: ViewRegistration): () => void;\n /** Live registrations in paint order. */\n list(): readonly ViewRegistration[];\n /** Bumped whenever the list changes. Pair with {@link ViewRegistry.subscribe}\n * for `useSyncExternalStore`. */\n getVersion(): number;\n subscribe(fn: () => void): () => void;\n /** Which view a client point belongs to, sticky for a captured pointer.\n * One per surface: every caller that routes input — the dispatcher, pinch,\n * hover — must agree about where a point landed. */\n readonly resolver: ViewResolver;\n /** The hosting surface, or `null` before one attaches. */\n surface(): SurfaceHandle | null;\n /** Returns a detach, which leaves a handle attached since alone. */\n attachSurface(handle: SurfaceHandle): () => void;\n}\n\nconst ViewRegistryContext = createContext<ViewRegistry | null>(null);\n\n/** Mounts the registry for one surface. `<SceneCanvas>` mounts one; a view\n * declaring itself as a child must be inside it. */\nexport function ViewRegistryProvider({ children }: { children: ReactNode }) {\n const entriesRef = useRef(new Map<ViewRegistration, number>());\n const seqRef = useRef(0);\n const versionRef = useRef(0);\n const surfaceRef = useRef<SurfaceHandle | null>(null);\n\n const registry = useMemo<ViewRegistry>(() => {\n const listeners = createEmitter();\n const changed = (): void => {\n versionRef.current++;\n listeners.emit();\n };\n const ordered = (): ViewRegistration[] => [...entriesRef.current.keys()].sort((a, b) => (\n a.order - b.order || entriesRef.current.get(a)! - entriesRef.current.get(b)!\n ));\n const resolver = createViewResolver({\n views: () => {\n const surface = surfaceRef.current;\n const view = surface?.view() ?? IDENTITY_VIEW;\n const dims = surface?.dims() ?? UNMEASURED_DIMS;\n return ordered().filter((r) => r.interactive).map((r) => r.layer.resolvable(view, dims));\n },\n root: () => surfaceRef.current?.view() ?? IDENTITY_VIEW,\n canvasOrigin: () => surfaceRef.current?.origin() ?? { left: 0, top: 0 },\n occluded: (x, y) => surfaceRef.current?.claimsAbove(x, y) ?? false,\n });\n return {\n resolver,\n register: (reg) => {\n entriesRef.current.set(reg, seqRef.current++);\n changed();\n return () => { entriesRef.current.delete(reg); changed(); };\n },\n list: ordered,\n getVersion: () => versionRef.current,\n subscribe: listeners.subscribe,\n surface: () => surfaceRef.current,\n attachSurface: (handle) => {\n surfaceRef.current = handle;\n return () => { if (surfaceRef.current === handle) surfaceRef.current = null; };\n },\n };\n }, []);\n\n return <ViewRegistryContext.Provider value={registry}>{children}</ViewRegistryContext.Provider>;\n}\n\n/** The surface's view registry, or `null` outside one. */\nexport function useOptionalViewRegistry(): ViewRegistry | null {\n return useContext(ViewRegistryContext);\n}\n\n/** The `Dims` a surface reports before it has measured itself. */\nexport const UNMEASURED_DIMS: Dims = { width: 0, height: 0 };\n\n/** The camera a view resolves against before its surface attaches. */\nexport const IDENTITY_VIEW: View = { x: 0, y: 0, scale: { x: 1, y: 1 } };\n"],"mappings":";;;;;AA8GA,IAAMA,IAAsBC,EAAmC,IAAI;AAInE,SAAgBC,EAAqB,EAAE,eAAqC;CAC1E,IAAMC,IAAaC,kBAAO,IAAI,IAA8B,CAAC,GACvDC,IAASD,EAAO,CAAC,GACjBE,IAAaF,EAAO,CAAC,GACrBG,IAAaH,EAA6B,IAAI,GAE9CI,IAAWC,QAA4B;EAC3C,IAAMC,IAAYC,EAAc,GAC1BC,UAAsB;GAE1B,AADA,EAAW,WACXF,EAAU,KAAK;EACjB,GACMG,UAAoC,CAAC,GAAGV,EAAW,QAAQ,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,MAChFW,EAAE,QAAQC,EAAE,SAASZ,EAAW,QAAQ,IAAIW,CAAC,IAAKX,EAAW,QAAQ,IAAIY,CAAC,CAC3E;EAYD,OAAO;GACL,UAZeC,EAAmB;IAClC,aAAa;KACX,IAAMC,IAAUV,EAAW,SACrBW,IAAOD,GAAS,KAAK,KAAKE,GAC1BC,IAAOH,GAAS,KAAK,KAAKI;KAChC,OAAOR,EAAQ,CAAC,CAAC,QAAQ,MAAMS,EAAE,WAAW,CAAC,CAAC,KAAK,MAAMA,EAAE,MAAM,WAAWJ,GAAME,CAAI,CAAC;IACzF;IACA,YAAYb,EAAW,SAAS,KAAK,KAAKY;IAC1C,oBAAoBZ,EAAW,SAAS,OAAO,KAAK;KAAE,MAAM;KAAG,KAAK;IAAE;IACtE,WAAW,GAAG,MAAMA,EAAW,SAAS,YAAYgB,GAAGC,CAAC,KAAK;GAC/D,CAEE;GACA,WAAW,OACTrB,EAAW,QAAQ,IAAIsB,GAAK,EAAO,SAAS,GAC5Cb,EAAQ,SACK;IAAkC,AAAhCT,EAAW,QAAQ,OAAOsB,CAAG,GAAGb,EAAQ;GAAG;GAE5D,MAAMC;GACN,kBAAkBP,EAAW;GAC7B,WAAWI,EAAU;GACrB,eAAeH,EAAW;GAC1B,gBAAgB,OACd,EAAW,UAAUmB,SACR;IAAE,AAAInB,EAAW,YAAYmB,MAAQ,EAAW,UAAU;GAAM;EAEjF;CACF,GAAG,CAAC,CAAC;CAEL,OAAO,kBAAC1B,EAAoB,UAArB;EAA8B,OAAOQ;EAAW;CAAuC,CAAA;AAChG;AAGA,SAAgBmB,IAA+C;CAC7D,OAAOC,EAAW5B,CAAmB;AACvC;AAGA,IAAaqB,IAAwB;CAAE,OAAO;CAAG,QAAQ;AAAE,GAG9CF,IAAsB;CAAE,GAAG;CAAG,GAAG;CAAG,OAAO;EAAE,GAAG;EAAG,GAAG;CAAE;AAAE"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
//#region src/canvas/watchElementMove.ts
|
|
2
|
+
function e(e, t) {
|
|
3
|
+
if (typeof IntersectionObserver > "u") return () => {};
|
|
4
|
+
let n = e.ownerDocument.documentElement, r = null, i = null, a, o = () => {
|
|
5
|
+
clearTimeout(a), r?.disconnect(), r = null, i?.disconnect(), i = null;
|
|
6
|
+
}, s = () => {
|
|
7
|
+
typeof ResizeObserver < "u" && (i = new ResizeObserver(() => {
|
|
8
|
+
let n = e.getBoundingClientRect();
|
|
9
|
+
n.width !== 0 && n.height !== 0 && (t(), c(1));
|
|
10
|
+
}), i.observe(e));
|
|
11
|
+
}, c = (i) => {
|
|
12
|
+
o();
|
|
13
|
+
let l = e.getBoundingClientRect();
|
|
14
|
+
if (l.width === 0 || l.height === 0) {
|
|
15
|
+
s();
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
let u = [
|
|
19
|
+
Math.floor(l.top),
|
|
20
|
+
Math.floor(n.clientWidth - l.right),
|
|
21
|
+
Math.floor(n.clientHeight - l.bottom),
|
|
22
|
+
Math.floor(l.left)
|
|
23
|
+
], d = (e) => Math.abs(e.left - l.left) > .5 || Math.abs(e.top - l.top) > .5 || Math.abs(e.width - l.width) > .5 || Math.abs(e.height - l.height) > .5, f = !0;
|
|
24
|
+
r = new IntersectionObserver((n) => {
|
|
25
|
+
let r = n[0].intersectionRatio;
|
|
26
|
+
if (f ? n.length > 1 || d(n[0].boundingClientRect) : r !== i) {
|
|
27
|
+
t(), c(1);
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
f = !1, r !== i && (r === 0 ? a = setTimeout(() => {
|
|
31
|
+
d(e.getBoundingClientRect()) && t(), c(1e-7);
|
|
32
|
+
}, 1e3) : c(r));
|
|
33
|
+
}, {
|
|
34
|
+
rootMargin: u.map((e) => `${-e}px`).join(" "),
|
|
35
|
+
threshold: Math.max(0, Math.min(1, i)) || 1
|
|
36
|
+
}), r.observe(e);
|
|
37
|
+
};
|
|
38
|
+
return c(1), o;
|
|
39
|
+
}
|
|
40
|
+
//#endregion
|
|
41
|
+
export { e as watchElementMove };
|
|
42
|
+
|
|
43
|
+
//# sourceMappingURL=watchElementMove.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"watchElementMove.js","names":["watchElementMove","root","element","observer","sized","retry","stop","awaitSize","box","onMove","frame","insets","movedTo","now","first","ratio","entries","threshold","inset"],"sources":["../../src/canvas/watchElementMove.ts"],"sourcesContent":["/**\n * Call `onMove` when `element`'s box moves in the viewport for a reason no\n * event reports: a sibling collapsing, content loading above it. A scroll or a\n * resize of the element may also call it; a caller already listening for those\n * hears a second, harmless report. Returns the function that stops watching.\n *\n * There is no observer for position, so this frames the element's current box\n * with an `IntersectionObserver` whose root margin is that box exactly. Any move\n * changes how much of the element the frame holds, which the observer reports,\n * and the frame is then rebuilt around the new box.\n *\n * A frame only watches from its first report on, so that report is checked\n * against the box the frame was built around: a move in between is reported too.\n */\nexport function watchElementMove(element: Element, onMove: () => void): () => void {\n if (typeof IntersectionObserver === 'undefined') return () => {};\n const root = element.ownerDocument.documentElement;\n let observer: IntersectionObserver | null = null;\n let sized: ResizeObserver | null = null;\n let retry: ReturnType<typeof setTimeout> | undefined;\n\n const stop = (): void => {\n clearTimeout(retry);\n observer?.disconnect();\n observer = null;\n sized?.disconnect();\n sized = null;\n };\n\n /** A box with no area cannot be framed, so wait for it to have one. */\n const awaitSize = (): void => {\n if (typeof ResizeObserver === 'undefined') return;\n sized = new ResizeObserver(() => {\n const box = element.getBoundingClientRect();\n if (box.width === 0 || box.height === 0) return;\n onMove();\n frame(1);\n });\n sized.observe(element);\n };\n\n const frame = (threshold: number): void => {\n stop();\n const box = element.getBoundingClientRect();\n if (box.width === 0 || box.height === 0) {\n awaitSize();\n return;\n }\n const insets = [\n Math.floor(box.top),\n Math.floor(root.clientWidth - box.right),\n Math.floor(root.clientHeight - box.bottom),\n Math.floor(box.left),\n ];\n // Half a pixel of slack: two measurements that disagreed by rounding would report every\n // frame, and the floored frame cannot see a move that small anyway.\n const movedTo = (now: DOMRectReadOnly): boolean =>\n Math.abs(now.left - box.left) > 0.5 || Math.abs(now.top - box.top) > 0.5\n || Math.abs(now.width - box.width) > 0.5 || Math.abs(now.height - box.height) > 0.5;\n let first = true;\n observer = new IntersectionObserver(\n (entries) => {\n const ratio = entries[0].intersectionRatio;\n const moved = first\n ? entries.length > 1 || movedTo(entries[0].boundingClientRect)\n : ratio !== threshold;\n if (moved) {\n onMove();\n frame(1);\n return;\n }\n first = false;\n if (ratio === threshold) return;\n // A box partly off the root never reaches the threshold asked for, so\n // ask for what it does reach. One wholly off it reports zero for\n // every frame, wherever it goes; look again once it may have come back.\n if (ratio !== 0) frame(ratio);\n else {\n retry = setTimeout(() => {\n if (movedTo(element.getBoundingClientRect())) onMove();\n frame(1e-7);\n }, 1000);\n }\n },\n { rootMargin: insets.map((inset) => `${-inset}px`).join(' '), threshold: Math.max(0, Math.min(1, threshold)) || 1 },\n );\n observer.observe(element);\n };\n\n frame(1);\n return stop;\n}\n"],"mappings":";AAcA,SAAgBA,EAAiB,GAAkB,GAAgC;CACjF,IAAI,OAAO,uBAAyB,KAAa,aAAa,CAAC;CAC/D,IAAMC,IAAOC,EAAQ,cAAc,iBAC/BC,IAAwC,MACxCC,IAA+B,MAC/BC,GAEEC,UAAmB;EAKvB,AAJA,aAAaD,CAAK,GAClBF,GAAU,WAAW,GACrB,IAAW,MACXC,GAAO,WAAW,GAClB,IAAQ;CACV,GAGMG,UAAwB;EAC5B,AAAI,OAAO,iBAAmB,QAC9B,IAAQ,IAAI,qBAAqB;GAC/B,IAAMC,IAAMN,EAAQ,sBAAsB;GAC1C,AAAIM,EAAI,UAAU,KAAKA,EAAI,WAAW,MACtCC,EAAO,GACPC,EAAM,CAAC;EACT,CAAC,GACDN,EAAM,QAAQF,CAAO;CACvB,GAEMQ,KAAS,MAA4B;EACzC,EAAK;EACL,IAAMF,IAAMN,EAAQ,sBAAsB;EAC1C,IAAIM,EAAI,UAAU,KAAKA,EAAI,WAAW,GAAG;GACvC,EAAU;GACV;EACF;EACA,IAAMG,IAAS;GACb,KAAK,MAAMH,EAAI,GAAG;GAClB,KAAK,MAAMP,EAAK,cAAcO,EAAI,KAAK;GACvC,KAAK,MAAMP,EAAK,eAAeO,EAAI,MAAM;GACzC,KAAK,MAAMA,EAAI,IAAI;EACrB,GAGMI,KAAW,MACf,KAAK,IAAIC,EAAI,OAAOL,EAAI,IAAI,IAAI,MAAO,KAAK,IAAIK,EAAI,MAAML,EAAI,GAAG,IAAI,MAClE,KAAK,IAAIK,EAAI,QAAQL,EAAI,KAAK,IAAI,MAAO,KAAK,IAAIK,EAAI,SAASL,EAAI,MAAM,IAAI,IAC9EM,IAAQ;EA2BZ,AA1BA,IAAW,IAAI,sBACZ,MAAY;GACX,IAAMC,IAAQC,EAAQ,EAAE,CAAC;GAIzB,IAHcF,IACVE,EAAQ,SAAS,KAAKJ,EAAQI,EAAQ,EAAE,CAAC,kBAAkB,IAC3DD,MAAUE,GACH;IAET,AADAR,EAAO,GACPC,EAAM,CAAC;IACP;GACF;GAEA,AADA,IAAQ,IACJK,MAAUE,MAIVF,MAAU,IAEZ,IAAQ,iBAAiB;IAEvB,AADIH,EAAQV,EAAQ,sBAAsB,CAAC,KAAGO,EAAO,GACrDC,EAAM,IAAI;GACZ,GAAG,GAAI,IALQA,EAAMK,CAAK;EAO9B,GACA;GAAE,YAAYJ,EAAO,KAAK,MAAU,GAAG,CAACO,EAAM,GAAG,CAAC,CAAC,KAAK,GAAG;GAAG,WAAW,KAAK,IAAI,GAAG,KAAK,IAAI,GAAGD,CAAS,CAAC,KAAK;EAAE,CACpH,GACAd,EAAS,QAAQD,CAAO;CAC1B;CAGA,OADAQ,EAAM,CAAC,GACAJ;AACT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wrapNodeOutput.js","names":["wrapNodeOutput","rotated","wrapWithPoseRotation","cmds","pose","alpha"],"sources":["../../src/canvas/wrapNodeOutput.ts"],"sourcesContent":["/**\n * The per-node wraps a scene render applies on top of whatever `drawOne`\n * returned — pose rotation, then a per-id alpha multiplier. They sit outside\n * `drawOne` on purpose: consumer-supplied painters get rotation and dimming\n * without having to reimplement either.\n *\n * Shared by the main canvas (`buildSceneLayer`) and the detached renders\n * (`buildSceneViewCommands`) so a scene painted off-screen matches the same\n * scene painted on it.\n */\nimport type { DrawCommand } from '
|
|
1
|
+
{"version":3,"file":"wrapNodeOutput.js","names":["wrapNodeOutput","rotated","wrapWithPoseRotation","cmds","pose","alpha"],"sources":["../../src/canvas/wrapNodeOutput.ts"],"sourcesContent":["/**\n * The per-node wraps a scene render applies on top of whatever `drawOne`\n * returned — pose rotation, then a per-id alpha multiplier. They sit outside\n * `drawOne` on purpose: consumer-supplied painters get rotation and dimming\n * without having to reimplement either.\n *\n * Shared by the main canvas (`buildSceneLayer`) and the detached renders\n * (`buildSceneViewCommands`) so a scene painted off-screen matches the same\n * scene painted on it.\n */\nimport type { DrawCommand } from '@weasel-js/renderer';\nimport { wrapWithPoseRotation } from './poseRotation';\n\n/** Rotate `cmds` about the pose's AABB center and multiply by `alpha`.\n * Both wraps are skipped when they would be no-ops (zero/absent rotation,\n * alpha exactly 1, empty command list), so an upright opaque node emits the\n * painter's commands untouched. Alpha nests OUTSIDE rotation. */\nexport function wrapNodeOutput(\n cmds: DrawCommand[],\n pose: unknown,\n alpha: number,\n): DrawCommand[] {\n const rotated = wrapWithPoseRotation(cmds, pose);\n if (alpha !== 1 && rotated.length > 0) {\n return [{ kind: 'group', alpha, children: rotated }];\n }\n return rotated;\n}\n"],"mappings":";;AAiBA,SAAgBA,EACd,GACA,GACA,GACe;CACf,IAAMC,IAAUC,EAAqBC,GAAMC,CAAI;CAI/C,OAHIC,MAAU,KAAKJ,EAAQ,SAAS,IAC3B,CAAC;EAAE,MAAM;EAAS;EAAO,UAAUA;CAAQ,CAAC,IAE9CA;AACT"}
|
package/dist/clipboard.d.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { NodeId } from '@weasel-js/routing';
|
|
2
|
-
import { j as ClipboardSnapshot, I as InsertAdapter } from './types-
|
|
2
|
+
import { d as PasteOmission, j as ClipboardSnapshot, I as InsertAdapter } from './types-CIKDwlsP.js';
|
|
3
3
|
import '@weasel-js/history';
|
|
4
4
|
import '@weasel-js/geom';
|
|
5
|
+
import './poseDescriptor-Bqk-11Rl.js';
|
|
6
|
+
import '@weasel-js/animator';
|
|
5
7
|
|
|
6
8
|
type Replacer$1 = (key: string, value: unknown) => unknown;
|
|
7
9
|
/** Options for `useClipboardOps`. */
|
|
@@ -11,6 +13,10 @@ interface UseClipboardOpsOptions {
|
|
|
11
13
|
getSelection: () => NodeId[];
|
|
12
14
|
/** Called after a successful paste with the ids of the newly inserted objects. */
|
|
13
15
|
onPaste?: (newIds: NodeId[]) => void;
|
|
16
|
+
/** Called when a paste left copied nodes out, with each one and the reason
|
|
17
|
+
* — an edge whose endpoints were not copied with it, say. Also called for
|
|
18
|
+
* a paste that made nothing. */
|
|
19
|
+
onPasteOmitted?: (omitted: PasteOmission[]) => void;
|
|
14
20
|
/** Label for the history entry produced by paste. Default 'Paste'. */
|
|
15
21
|
pasteLabel?: string;
|
|
16
22
|
/** Pulled once per paste() call. When non-null, threaded to commitPaste
|
|
@@ -58,11 +64,11 @@ type Replacer = (key: string, value: unknown) => unknown;
|
|
|
58
64
|
type Reviver = (key: string, value: unknown) => unknown;
|
|
59
65
|
/** Serialize snapshot items into the versioned wire text.
|
|
60
66
|
*
|
|
61
|
-
*
|
|
62
|
-
*
|
|
63
|
-
*
|
|
64
|
-
*
|
|
65
|
-
*
|
|
67
|
+
* JSON drops a function-valued field (a container's `clipFromPose`, a
|
|
68
|
+
* node's `derivePath`). A scene adapter's snapshot also carries each one's
|
|
69
|
+
* `SceneRegistry` key (`clipFromPoseKey`, `derivePathKey`, …), which does
|
|
70
|
+
* cross, and its paste restores the function from the pasting scene's
|
|
71
|
+
* registry. A function that is not registered does not survive. */
|
|
66
72
|
declare function buildWeaselClipboardText(items: unknown[], replacer?: Replacer): string;
|
|
67
73
|
/** Cheap check: could this text be a weasel clipboard payload? Substring
|
|
68
74
|
* pre-check, then a guarded parse + marker/version test. */
|
|
@@ -70,12 +76,7 @@ declare function sniffWeaselClipboardText(text: string): boolean;
|
|
|
70
76
|
/**
|
|
71
77
|
* Embed a weasel clipboard payload in an SVG document as a `<metadata>`
|
|
72
78
|
* child of the root — legal SVG 1.1, ignored by external tools — so one
|
|
73
|
-
* `text/plain` flavor serves both audiences
|
|
74
|
-
* weasel extracts the JSON for full fidelity on draw→draw DOM paste.
|
|
75
|
-
*
|
|
76
|
-
* The payload rides in CDATA so JSON's `<` / `&` need no entity escaping; a
|
|
77
|
-
* literal `]]>` inside the payload is split across CDATA sections
|
|
78
|
-
* (`]]]]><![CDATA[>`), which {@link extractWeaselClipboardFromSvg} rejoins.
|
|
79
|
+
* `text/plain` flavor serves both audiences.
|
|
79
80
|
*
|
|
80
81
|
* Intended for OUR serializer's output only (`serializeSvg` — single
|
|
81
82
|
* `<svg ...>` open tag, XML-escaped attributes). When no open tag is found
|
|
@@ -83,13 +84,9 @@ declare function sniffWeaselClipboardText(text: string): boolean;
|
|
|
83
84
|
*/
|
|
84
85
|
declare function embedWeaselMetadataInSvg(svgText: string, payloadText: string): string;
|
|
85
86
|
/**
|
|
86
|
-
*
|
|
87
|
-
*
|
|
88
|
-
*
|
|
89
|
-
* passes through as-is), and return the payload text iff it sniffs as the
|
|
90
|
-
* weasel wire format — else null (external/non-weasel metadata declines).
|
|
91
|
-
*
|
|
92
|
-
* A text scan, not an XML parse — the payload is small and ours.
|
|
87
|
+
* The weasel clipboard payload embedded in SVG text by
|
|
88
|
+
* {@link embedWeaselMetadataInSvg}, or null when the first `<metadata>` block
|
|
89
|
+
* is absent or not the weasel wire format. A text scan, not an XML parse.
|
|
93
90
|
*/
|
|
94
91
|
declare function extractWeaselClipboardFromSvg(svgText: string): string | null;
|
|
95
92
|
/** Parse wire text to snapshot items, or null when malformed/mismatched
|
|
@@ -1,13 +1,34 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { a as PlaneMap, S as SnapTarget, M as MoveAdapter } from './types-CIKDwlsP.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,12 @@ 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>;
|
|
42
69
|
adapter: MoveAdapter<TNode, TPose>;
|
|
43
70
|
/**
|
|
44
71
|
* Per-gesture mutable store. Keys should be namespaced by behavior name to avoid
|
|
@@ -60,21 +87,36 @@ interface SnapStrategy<TPose> {
|
|
|
60
87
|
* non-undefined return wins (Op[] = commit those, null = abort, undefined =
|
|
61
88
|
* defer); later answers are ignored. So a behavior holding state outside the
|
|
62
89
|
* gesture (published guides, a timer) releases it in onEnd even when an
|
|
63
|
-
* earlier behavior decides
|
|
64
|
-
*
|
|
65
|
-
*
|
|
66
|
-
*
|
|
90
|
+
* earlier behavior decides, or throws: every onEnd still runs, the first
|
|
91
|
+
* error is rethrown after, and nothing commits. `end.answered` says one did
|
|
92
|
+
* either: a behavior that acts on the scene itself from onEnd (starts an
|
|
93
|
+
* animation, applies ops) only cleans up then. A canceled gesture (Esc, pointercancel) runs every
|
|
94
|
+
* behavior's `onCancel` instead, which releases the same state. `TEnd` is
|
|
95
|
+
* what `onEnd` is told; an action with more to offer than `BehaviorEnd`
|
|
96
|
+
* extends it (`MoveEnd`).
|
|
67
97
|
*
|
|
68
98
|
* `defaultTransient`: when one behavior of a move, resize or rotate sets it
|
|
69
99
|
* and the binding leaves `transient` unset, the gesture commits through
|
|
70
100
|
* `scene.untracked` (no history entry). An explicit `transient` wins.
|
|
71
101
|
*/
|
|
72
|
-
interface ActionBehavior<TPose, TProposed, TMoveResult> {
|
|
102
|
+
interface ActionBehavior<TPose, TProposed, TMoveResult, TEnd extends BehaviorEnd = BehaviorEnd> {
|
|
73
103
|
defaultTransient?: boolean;
|
|
74
104
|
onStart?(ctx: GestureContext<TPose>): void;
|
|
75
105
|
onMove?(ctx: GestureContext<TPose>, proposed: TProposed): TMoveResult | void;
|
|
76
|
-
onEnd?(ctx: GestureContext<TPose>, end:
|
|
106
|
+
onEnd?(ctx: GestureContext<TPose>, end: TEnd): Op[] | null | void;
|
|
77
107
|
onCancel?(ctx: GestureContext<TPose>): void;
|
|
108
|
+
/**
|
|
109
|
+
* Called once per gesture, for every behavior whose `onStart` ran, after
|
|
110
|
+
* the commit's ops have applied (or the cancel has run) and after the
|
|
111
|
+
* gesture's preview overrides are dropped. `committed` is false when the
|
|
112
|
+
* gesture was canceled, aborted by a behavior (`onEnd` returned `null`),
|
|
113
|
+
* released with nothing to commit, or refused by a container its ops
|
|
114
|
+
* dropped something into, and true otherwise: the action or
|
|
115
|
+
* a behavior made the commit, a behavior claiming it with no ops
|
|
116
|
+
* included. For move, resize, and rotate it is the value `onGestureEnd`
|
|
117
|
+
* receives.
|
|
118
|
+
*/
|
|
119
|
+
onSettled?(ctx: GestureContext<TPose>, committed: boolean): void;
|
|
78
120
|
}
|
|
79
121
|
/** What a behavior's `onEnd` is told about the commit, beside the gesture. */
|
|
80
122
|
interface BehaviorEnd {
|
|
@@ -85,14 +127,7 @@ interface BehaviorEnd {
|
|
|
85
127
|
/**
|
|
86
128
|
* Uniform group transform proposed by a gesture and shaped by behaviors.
|
|
87
129
|
* 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.
|
|
130
|
+
* drift apart. Only `'translate'` is wired end-to-end.
|
|
96
131
|
*/
|
|
97
132
|
type GroupTransform = {
|
|
98
133
|
kind: 'translate';
|
|
@@ -117,30 +152,53 @@ type GroupTransform = {
|
|
|
117
152
|
/**
|
|
118
153
|
* Per-frame result a `MoveBehavior.onMove` can return.
|
|
119
154
|
*
|
|
120
|
-
* `
|
|
121
|
-
*
|
|
155
|
+
* `pose` is the legacy channel: a primary-id-only override, routed through
|
|
156
|
+
* a back-compat shim that derives a `translate` transform from the pose diff
|
|
157
|
+
* against `origin.get(primaryId)`. Prefer `transform`.
|
|
122
158
|
*
|
|
123
|
-
* `
|
|
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.
|
|
159
|
+
* `snap` announces a visual snap target.
|
|
129
160
|
*/
|
|
130
161
|
interface BehaviorResult<TPose> {
|
|
131
162
|
/** Replace the proposed transform. Applied uniformly to every id. */
|
|
132
163
|
transform?: GroupTransform;
|
|
133
164
|
/** @deprecated Return `transform` instead. Legacy primary-only pose override; supported via internal shim. */
|
|
134
165
|
pose?: TPose;
|
|
166
|
+
/** Preview poses for individual ids, each in its node's stored frame. For
|
|
167
|
+
* a dragged id the pose replaces the group transform this frame: a
|
|
168
|
+
* behavior that will commit its nodes where one translation cannot put
|
|
169
|
+
* them, such as a slot each — except a descendant a moving frame
|
|
170
|
+
* carries, which rides its frame whatever is posed for it. Any other id
|
|
171
|
+
* is shown there for this frame only, and committing it is the
|
|
172
|
+
* behavior's job; where a layout drop reflows the same id with no reflow
|
|
173
|
+
* transition, the layout's pose wins. A later behavior's pose for an id
|
|
174
|
+
* replaces an earlier one's. */
|
|
175
|
+
poses?: ReadonlyMap<string, TPose>;
|
|
176
|
+
/** Ids whose preview paints at full opacity this frame rather than as a
|
|
177
|
+
* ghost, added to those of the other behaviors. */
|
|
178
|
+
opaque?: Iterable<string>;
|
|
135
179
|
snap?: SnapTarget<TPose> | null;
|
|
136
180
|
}
|
|
137
181
|
/** @deprecated Renamed to `BehaviorResult`. Kept as an alias for one release cycle. */
|
|
138
182
|
type BehaviorMoveResult<TPose> = BehaviorResult<TPose>;
|
|
139
|
-
/**
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
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>;
|
|
144
202
|
|
|
145
203
|
/** Per-frame proposed resize: pose plus the anchor pinning the opposite corner. */
|
|
146
204
|
interface ResizeProposed<TPose extends Bounds> {
|
|
@@ -151,20 +209,18 @@ interface ResizeProposed<TPose extends Bounds> {
|
|
|
151
209
|
interface ResizeMoveResult<TPose extends Bounds> {
|
|
152
210
|
pose?: TPose;
|
|
153
211
|
}
|
|
154
|
-
/** A bounds-frame constraint plugged into `
|
|
212
|
+
/** A bounds-frame constraint plugged into `resizeAction`.
|
|
155
213
|
* Reads/writes `{x,y,width,height}` and can override the proposed pose
|
|
156
214
|
* on each frame (e.g. lock-aspect, clamp-min-size, snap-to-grid). */
|
|
157
215
|
type BoundsConstraint<TPose extends Bounds> = ActionBehavior<TPose, ResizeProposed<TPose>, ResizeMoveResult<TPose>>;
|
|
158
|
-
/** Live overlay state
|
|
216
|
+
/** Live overlay state for rendering the in-flight resize ghost. */
|
|
159
217
|
interface ResizeOverlay<TPose> {
|
|
160
218
|
id: string;
|
|
161
219
|
currentPose: TPose;
|
|
162
220
|
targetPose: TPose;
|
|
163
221
|
anchor: ResizeAnchor;
|
|
164
|
-
/** Per-leaf scaled poses when the gesture is resizing a group
|
|
165
|
-
*
|
|
166
|
-
* per-leaf poses produced by scaling each leaf's origin pose against
|
|
167
|
-
* 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
|
|
168
224
|
* resizes. */
|
|
169
225
|
leafPoses?: Map<string, TPose>;
|
|
170
226
|
}
|
|
@@ -175,13 +231,17 @@ interface RotateProposed<TPose> {
|
|
|
175
231
|
/** Proposed rotation angle (radians). */
|
|
176
232
|
rotation: number;
|
|
177
233
|
}
|
|
178
|
-
/** 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. */
|
|
179
235
|
interface RotateMoveResult<TPose> {
|
|
236
|
+
/** A pose whose rotation, read through its descriptor, the selection turns to. */
|
|
180
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;
|
|
181
241
|
}
|
|
182
|
-
/** A behavior
|
|
242
|
+
/** A behavior on a rotate. */
|
|
183
243
|
type RotateBehavior<TPose> = ActionBehavior<TPose, RotateProposed<TPose>, RotateMoveResult<TPose>>;
|
|
184
|
-
/** Live overlay state
|
|
244
|
+
/** Live overlay state for rendering the in-flight rotation ghost. */
|
|
185
245
|
interface RotateOverlay<TPose> {
|
|
186
246
|
id: string;
|
|
187
247
|
currentPose: TPose;
|
|
@@ -210,18 +270,18 @@ interface InsertMoveResult {
|
|
|
210
270
|
current?: InsertPoint;
|
|
211
271
|
}
|
|
212
272
|
/** Behaviors operate over the two world points; bounds and pose are derived
|
|
213
|
-
*
|
|
273
|
+
* from the (possibly modified) points each frame. */
|
|
214
274
|
type InsertBehavior<TPose> = ActionBehavior<TPose, InsertProposed<TPose>, InsertMoveResult>;
|
|
215
|
-
/** Live overlay state
|
|
275
|
+
/** Live overlay state for rendering the in-flight insert preview. */
|
|
216
276
|
interface InsertOverlay<TPose> {
|
|
217
277
|
start: InsertPoint;
|
|
218
278
|
current: InsertPoint;
|
|
219
279
|
/** Axis-aligned bounding rect derived from `start`/`current`. */
|
|
220
280
|
bounds: Bounds;
|
|
221
|
-
/** TPose constructed from `bounds
|
|
281
|
+
/** TPose constructed from `bounds`. */
|
|
222
282
|
pose: TPose;
|
|
223
283
|
}
|
|
224
|
-
/** Live overlay state
|
|
284
|
+
/** Live overlay state for rendering the marquee. */
|
|
225
285
|
interface AreaSelectOverlay {
|
|
226
286
|
start: {
|
|
227
287
|
worldX: number;
|
|
@@ -251,10 +311,10 @@ interface LassoSelectProposed {
|
|
|
251
311
|
/** onMove for lasso-select doesn't shape ops; behaviors only need to react
|
|
252
312
|
* in onEnd. We return void from onMove. */
|
|
253
313
|
type LassoSelectMoveResult = void;
|
|
254
|
-
/** A behavior
|
|
314
|
+
/** A behavior on a lasso-select. */
|
|
255
315
|
type LassoSelectBehavior = ActionBehavior<LassoSelectPose, LassoSelectProposed, LassoSelectMoveResult>;
|
|
256
|
-
/** Live overlay state
|
|
257
|
-
*
|
|
316
|
+
/** Live overlay state for rendering the in-progress polyline + dashed
|
|
317
|
+
* close-line. */
|
|
258
318
|
interface LassoSelectOverlay {
|
|
259
319
|
vertices: ReadonlyArray<{
|
|
260
320
|
x: number;
|
|
@@ -266,7 +326,7 @@ interface LassoSelectOverlay {
|
|
|
266
326
|
};
|
|
267
327
|
shiftHeld: boolean;
|
|
268
328
|
}
|
|
269
|
-
/** Frames a point-snap behavior can return for the
|
|
329
|
+
/** Frames a point-snap behavior can return for the resize to back-solve. */
|
|
270
330
|
type PointSnapFrame = 'dragged-corner' | 'fixed-corner' | 'center' | 'origin';
|
|
271
331
|
/** Per-frame world-space context handed to `PointSnapBehavior.onMove`.
|
|
272
332
|
* `draggedCorner` and `fixedCorner` are `null` for edge drags
|
|
@@ -300,34 +360,23 @@ interface PointSnapResult {
|
|
|
300
360
|
worldX: number;
|
|
301
361
|
worldY: number;
|
|
302
362
|
}
|
|
303
|
-
/** A point-snap behavior plugged into `
|
|
363
|
+
/** A point-snap behavior, plugged into `ResizePolicy.pointSnap`. */
|
|
304
364
|
interface PointSnapBehavior<TPose extends Bounds> {
|
|
305
365
|
id?: string;
|
|
306
366
|
onMove(ctx: PointSnapContext<TPose>): PointSnapResult | null | undefined;
|
|
307
367
|
}
|
|
308
|
-
/**
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
interface CloneBehavior {
|
|
322
|
-
id: string;
|
|
323
|
-
/** Decides whether this gesture should activate at start. */
|
|
324
|
-
activates: (modifiers: ModifierState) => boolean;
|
|
325
|
-
/** On end, returns ops to commit (or [] for no-op). */
|
|
326
|
-
onEnd: (pose: ClonePose, ctx: {
|
|
327
|
-
adapter: InsertAdapter<{
|
|
328
|
-
id: string;
|
|
329
|
-
}>;
|
|
330
|
-
}) => Op[];
|
|
331
|
-
}
|
|
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>>;
|
|
332
381
|
|
|
333
|
-
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, BehaviorMoveResult as c, BehaviorResult as d,
|
|
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, BehaviorMoveResult as c, BehaviorResult as d, CloneBehaviorResult as e, GestureFrames as f, GroupTransform as g, InsertMoveResult as h, InsertOverlay as i, InsertPoint as j, InsertProposed as k, LassoSelectMoveResult as l, LassoSelectOverlay as m, LassoSelectPose as n, LassoSelectProposed as o, MoveEnd as p, PointSnapContext as q, PointSnapFrame as r, PointSnapResult as s, PointerState as t, ResizeMoveResult as u, ResizeOverlay as v, ResizeProposed as w, RotateMoveResult as x, RotateOverlay as y, RotateProposed as z };
|
package/dist/clone.d.ts
CHANGED
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
import './types-
|
|
1
|
+
export { C as CloneBehavior, e as CloneBehaviorResult } from './clone-2a5hVbBd.js';
|
|
2
|
+
import './types-CIKDwlsP.js';
|
|
3
3
|
import '@weasel-js/history';
|
|
4
4
|
import '@weasel-js/geom';
|
|
5
5
|
import '@weasel-js/routing';
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
declare function cloneByAltDrag(): CloneBehavior;
|
|
9
|
-
|
|
10
|
-
export { cloneByAltDrag };
|
|
6
|
+
import './poseDescriptor-Bqk-11Rl.js';
|
|
7
|
+
import '@weasel-js/animator';
|
package/dist/clone.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
|
|
1
|
+
import { watchDevicePixelRatio as e } from "./watchDevicePixelRatio.js";
|
|
2
|
+
import { DeviceProfileProvider as t, useDeviceProfile as n } from "./useDeviceProfile.js";
|
|
3
|
+
import { ANCHOR_HIT_BASE_PX as r, HANDLE_BASE_PX as i, ROTATION_HANDLE_BASE_PX as a } from "./targets.js";
|
|
4
|
+
import { COARSE_TARGET_SCALE as o, DEFAULT_DEVICE_PROFILE as s, resolveDeviceProfile as c } from "@weasel-js/routing";
|
|
5
|
+
export { r as ANCHOR_HIT_BASE_PX, o as COARSE_TARGET_SCALE, s as DEFAULT_DEVICE_PROFILE, t as DeviceProfileProvider, i as HANDLE_BASE_PX, a as ROTATION_HANDLE_BASE_PX, c as resolveDeviceProfile, n as useDeviceProfile, e as watchDevicePixelRatio };
|