@weasel-js/core 1.10.1 → 1.11.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 +587 -0
- package/README.md +16 -15
- package/dist/WeaselProvider.js +25 -9
- package/dist/WeaselProvider.js.map +1 -1
- package/dist/affordances/composeAffordanceLayer.js +217 -140
- package/dist/affordances/composeAffordanceLayer.js.map +1 -1
- package/dist/affordances/cornerResize.js +92 -50
- package/dist/affordances/cornerResize.js.map +1 -1
- package/dist/affordances/hitAffordanceRegions.js +147 -84
- package/dist/affordances/hitAffordanceRegions.js.map +1 -1
- package/dist/affordances/pathAnchors.js +140 -65
- package/dist/affordances/pathAnchors.js.map +1 -1
- package/dist/affordances/rotateCursor.js +10 -4
- package/dist/affordances/rotateCursor.js.map +1 -1
- package/dist/affordances/rotationHandle.js +83 -60
- package/dist/affordances/rotationHandle.js.map +1 -1
- package/dist/animation/behaviors/coast.js +20 -14
- package/dist/animation/behaviors/coast.js.map +1 -1
- package/dist/animation/behaviors/coastByWrite.js +98 -70
- package/dist/animation/behaviors/coastByWrite.js.map +1 -1
- package/dist/animation/behaviors/coastOnTargets.js +115 -67
- package/dist/animation/behaviors/coastOnTargets.js.map +1 -1
- package/dist/animation/behaviors/momentum.js +88 -53
- package/dist/animation/behaviors/momentum.js.map +1 -1
- package/dist/animation/clipTargets.js +14 -7
- package/dist/animation/clipTargets.js.map +1 -1
- package/dist/animation/departures.js +116 -0
- package/dist/animation/departures.js.map +1 -0
- package/dist/animation/index.js +18 -15
- package/dist/animation/poseHelpers.js +147 -107
- package/dist/animation/poseHelpers.js.map +1 -1
- package/dist/animation/poseTarget.js +158 -85
- package/dist/animation/poseTarget.js.map +1 -1
- package/dist/animation/poseTransition.js +64 -0
- package/dist/animation/poseTransition.js.map +1 -0
- package/dist/animation/reflow.js +208 -120
- package/dist/animation/reflow.js.map +1 -1
- package/dist/animation/rewind.js +76 -45
- package/dist/animation/rewind.js.map +1 -1
- package/dist/animation/rig/bindRig.js +135 -82
- package/dist/animation/rig/bindRig.js.map +1 -1
- package/dist/animation/rig/rigNode.js +120 -75
- package/dist/animation/rig/rigNode.js.map +1 -1
- package/dist/animation/rig/rigSeat.js +61 -41
- package/dist/animation/rig/rigSeat.js.map +1 -1
- package/dist/animation/rig/skinBinding.js +57 -45
- package/dist/animation/rig/skinBinding.js.map +1 -1
- package/dist/animation/rig/useRig.js +44 -30
- package/dist/animation/rig/useRig.js.map +1 -1
- package/dist/animation/wrappers/animateLifecycle.js +51 -35
- package/dist/animation/wrappers/animateLifecycle.js.map +1 -1
- package/dist/animation/wrappers/animateOnSetPose.js +55 -32
- package/dist/animation/wrappers/animateOnSetPose.js.map +1 -1
- package/dist/animation/wrappers/instantPose.js +13 -8
- package/dist/animation/wrappers/instantPose.js.map +1 -1
- package/dist/animation/writtenPoseTarget.js +44 -22
- package/dist/animation/writtenPoseTarget.js.map +1 -1
- package/dist/{autoPoseDescriptor-DHg5KqaJ.d.ts → autoPoseDescriptor-CZ1eXbzY.d.ts} +1 -1
- package/dist/barrel/canvas.js +41 -32
- package/dist/barrel/chrome.js +19 -16
- package/dist/barrel/icons.js +6 -0
- package/dist/barrel/input.js +19 -18
- package/dist/barrel/interactions.js +40 -39
- package/dist/barrel/paint.js +12 -11
- package/dist/barrel/paths.js +39 -13
- package/dist/barrel/renderer.js +24 -14
- package/dist/barrel/routing.js +69 -58
- package/dist/barrel/scene.js +48 -37
- package/dist/barrel/text.js +10 -9
- package/dist/barrel/viewport.js +47 -45
- package/dist/canvas/Canvas.js +189 -306
- package/dist/canvas/Canvas.js.map +1 -1
- package/dist/canvas/CanvasView.js +273 -199
- package/dist/canvas/CanvasView.js.map +1 -1
- package/dist/canvas/CursorCoordsHud.js +103 -64
- package/dist/canvas/CursorCoordsHud.js.map +1 -1
- package/dist/canvas/DrawCanvas.js +68 -41
- package/dist/canvas/DrawCanvas.js.map +1 -1
- package/dist/canvas/LeanSceneCanvas.js +23 -0
- package/dist/canvas/LeanSceneCanvas.js.map +1 -0
- package/dist/canvas/ModalityHud.js +58 -43
- package/dist/canvas/ModalityHud.js.map +1 -1
- package/dist/canvas/NodeShape.js +137 -60
- package/dist/canvas/NodeShape.js.map +1 -1
- package/dist/canvas/PickHud.js +77 -59
- package/dist/canvas/PickHud.js.map +1 -1
- package/dist/canvas/SceneCanvas/ActionsProviderIfRoot.js +9 -6
- package/dist/canvas/SceneCanvas/ActionsProviderIfRoot.js.map +1 -1
- package/dist/canvas/SceneCanvas/CanvasKitProviders.js +25 -0
- package/dist/canvas/SceneCanvas/CanvasKitProviders.js.map +1 -0
- package/dist/canvas/SceneCanvas/DepRegistryProviderIfRoot.js +10 -6
- package/dist/canvas/SceneCanvas/DepRegistryProviderIfRoot.js.map +1 -1
- package/dist/canvas/SceneCanvas/DevHuds.js +47 -32
- package/dist/canvas/SceneCanvas/DevHuds.js.map +1 -1
- package/dist/canvas/SceneCanvas/PointerProviderIfRoot.js +72 -37
- package/dist/canvas/SceneCanvas/PointerProviderIfRoot.js.map +1 -1
- package/dist/canvas/SceneCanvas/SceneCanvasInput.js +110 -0
- package/dist/canvas/SceneCanvas/SceneCanvasInput.js.map +1 -0
- package/dist/canvas/SceneCanvas/brushOverlay.js +36 -0
- package/dist/canvas/SceneCanvas/brushOverlay.js.map +1 -0
- package/dist/canvas/SceneCanvas/canvasPassThrough.js +72 -0
- package/dist/canvas/SceneCanvas/canvasPassThrough.js.map +1 -0
- package/dist/canvas/SceneCanvas/contributionFrameHooks.js +54 -32
- package/dist/canvas/SceneCanvas/contributionFrameHooks.js.map +1 -1
- package/dist/canvas/SceneCanvas/coordTrace.js +36 -29
- package/dist/canvas/SceneCanvas/coordTrace.js.map +1 -1
- package/dist/canvas/SceneCanvas/defaultNodeProperties.js +318 -159
- package/dist/canvas/SceneCanvas/defaultNodeProperties.js.map +1 -1
- package/dist/canvas/SceneCanvas/defaultNodeRouting.js +39 -13
- package/dist/canvas/SceneCanvas/defaultNodeRouting.js.map +1 -1
- package/dist/canvas/SceneCanvas/dispatcherGestureBounds.js +83 -47
- package/dist/canvas/SceneCanvas/dispatcherGestureBounds.js.map +1 -1
- package/dist/canvas/SceneCanvas/features.js +83 -106
- package/dist/canvas/SceneCanvas/features.js.map +1 -1
- package/dist/canvas/SceneCanvas/insertPreviewCommands.js +80 -62
- package/dist/canvas/SceneCanvas/insertPreviewCommands.js.map +1 -1
- package/dist/canvas/SceneCanvas/mergeLayers.js +43 -0
- package/dist/canvas/SceneCanvas/mergeLayers.js.map +1 -0
- package/dist/canvas/SceneCanvas/namedPresets.js +56 -0
- package/dist/canvas/SceneCanvas/namedPresets.js.map +1 -0
- package/dist/canvas/SceneCanvas/poseGeometry.js +66 -31
- package/dist/canvas/SceneCanvas/poseGeometry.js.map +1 -1
- package/dist/canvas/SceneCanvas/poseRegistrars.js +18 -8
- package/dist/canvas/SceneCanvas/poseRegistrars.js.map +1 -1
- package/dist/canvas/SceneCanvas/presets/arrange.js +27 -0
- package/dist/canvas/SceneCanvas/presets/arrange.js.map +1 -0
- package/dist/canvas/SceneCanvas/presets/chrome.js +14 -0
- package/dist/canvas/SceneCanvas/presets/chrome.js.map +1 -0
- package/dist/canvas/SceneCanvas/presets/edit.js +59 -0
- package/dist/canvas/SceneCanvas/presets/edit.js.map +1 -0
- package/dist/canvas/SceneCanvas/presets/ingest.js +13 -0
- package/dist/canvas/SceneCanvas/presets/ingest.js.map +1 -0
- package/dist/canvas/SceneCanvas/presets/paths.js +67 -0
- package/dist/canvas/SceneCanvas/presets/paths.js.map +1 -0
- package/dist/canvas/SceneCanvas/presets/select.js +19 -0
- package/dist/canvas/SceneCanvas/presets/select.js.map +1 -0
- package/dist/canvas/SceneCanvas/presets/toolDriven.js +20 -0
- package/dist/canvas/SceneCanvas/presets/toolDriven.js.map +1 -0
- package/dist/canvas/SceneCanvas/presets/transform.js +41 -0
- package/dist/canvas/SceneCanvas/presets/transform.js.map +1 -0
- package/dist/canvas/SceneCanvas/presets/view.js +14 -0
- package/dist/canvas/SceneCanvas/presets/view.js.map +1 -0
- package/dist/canvas/SceneCanvas/props.js +19 -35
- package/dist/canvas/SceneCanvas/props.js.map +1 -1
- package/dist/canvas/SceneCanvas/scenePointQuery.js +43 -35
- package/dist/canvas/SceneCanvas/scenePointQuery.js.map +1 -1
- package/dist/canvas/SceneCanvas/shapeGeneratorProperties.js +22 -15
- package/dist/canvas/SceneCanvas/shapeGeneratorProperties.js.map +1 -1
- package/dist/canvas/SceneCanvas/toolRegistry.js +30 -15
- package/dist/canvas/SceneCanvas/toolRegistry.js.map +1 -1
- package/dist/canvas/SceneCanvas/useActionTunings.js +14 -11
- package/dist/canvas/SceneCanvas/useActionTunings.js.map +1 -1
- package/dist/canvas/SceneCanvas/useActionsPropResolver.js +68 -35
- package/dist/canvas/SceneCanvas/useActionsPropResolver.js.map +1 -1
- package/dist/canvas/SceneCanvas/useBakedScene.js +17 -0
- package/dist/canvas/SceneCanvas/useBakedScene.js.map +1 -0
- package/dist/canvas/SceneCanvas/useBuiltinRigTools.js +65 -0
- package/dist/canvas/SceneCanvas/useBuiltinRigTools.js.map +1 -0
- package/dist/canvas/SceneCanvas/useBuiltinShapeTools.js +47 -23
- package/dist/canvas/SceneCanvas/useBuiltinShapeTools.js.map +1 -1
- package/dist/canvas/SceneCanvas/useBuiltinTools.js +29 -14
- package/dist/canvas/SceneCanvas/useBuiltinTools.js.map +1 -1
- package/dist/canvas/SceneCanvas/useCanvasCamera.js +53 -38
- package/dist/canvas/SceneCanvas/useCanvasCamera.js.map +1 -1
- package/dist/canvas/SceneCanvas/useCanvasDispatcher.js +24 -14
- package/dist/canvas/SceneCanvas/useCanvasDispatcher.js.map +1 -1
- package/dist/canvas/SceneCanvas/useCanvasSelection.js +30 -12
- package/dist/canvas/SceneCanvas/useCanvasSelection.js.map +1 -1
- package/dist/canvas/SceneCanvas/useCanvasTools.js +112 -53
- package/dist/canvas/SceneCanvas/useCanvasTools.js.map +1 -1
- package/dist/canvas/SceneCanvas/useChromeAffordances.js +31 -0
- package/dist/canvas/SceneCanvas/useChromeAffordances.js.map +1 -0
- package/dist/canvas/SceneCanvas/useContributionRoles.js +107 -56
- package/dist/canvas/SceneCanvas/useContributionRoles.js.map +1 -1
- package/dist/canvas/SceneCanvas/useDepartureGhostLayer.js +64 -0
- package/dist/canvas/SceneCanvas/useDepartureGhostLayer.js.map +1 -0
- package/dist/canvas/SceneCanvas/useDispatcherOverlayLayer.js +104 -71
- package/dist/canvas/SceneCanvas/useDispatcherOverlayLayer.js.map +1 -1
- package/dist/canvas/SceneCanvas/useHeldModifiers.js +21 -14
- package/dist/canvas/SceneCanvas/useHeldModifiers.js.map +1 -1
- package/dist/canvas/SceneCanvas/useNodeAtPoint.js +21 -19
- package/dist/canvas/SceneCanvas/useNodeAtPoint.js.map +1 -1
- package/dist/canvas/SceneCanvas/useNodeKinds.js +28 -19
- package/dist/canvas/SceneCanvas/useNodeKinds.js.map +1 -1
- package/dist/canvas/SceneCanvas/usePreviewGhostLayer.js +91 -59
- package/dist/canvas/SceneCanvas/usePreviewGhostLayer.js.map +1 -1
- package/dist/canvas/SceneCanvas/useSceneCanvasHandle.js +62 -35
- package/dist/canvas/SceneCanvas/useSceneCanvasHandle.js.map +1 -1
- package/dist/canvas/SceneCanvas/useSceneCanvasLayers.js +110 -50
- package/dist/canvas/SceneCanvas/useSceneCanvasLayers.js.map +1 -1
- package/dist/canvas/SceneCanvas/useSceneCanvasPathEdit.js +30 -0
- package/dist/canvas/SceneCanvas/useSceneCanvasPathEdit.js.map +1 -0
- package/dist/canvas/SceneCanvas/useSceneCanvasTools.js +40 -0
- package/dist/canvas/SceneCanvas/useSceneCanvasTools.js.map +1 -0
- package/dist/canvas/SceneCanvas/useSceneChrome.js +100 -44
- package/dist/canvas/SceneCanvas/useSceneChrome.js.map +1 -1
- package/dist/canvas/SceneCanvas/useSceneGestureDispatcher.js +163 -0
- package/dist/canvas/SceneCanvas/useSceneGestureDispatcher.js.map +1 -0
- package/dist/canvas/SceneCanvas/useScenePicking.js +69 -0
- package/dist/canvas/SceneCanvas/useScenePicking.js.map +1 -0
- package/dist/canvas/SceneCanvas/useSceneRedrawSources.js +28 -17
- package/dist/canvas/SceneCanvas/useSceneRedrawSources.js.map +1 -1
- package/dist/canvas/SceneCanvas/useSceneSelectTool.js +159 -80
- package/dist/canvas/SceneCanvas/useSceneSelectTool.js.map +1 -1
- package/dist/canvas/SceneCanvas/useSceneSlotLayers.js +38 -26
- package/dist/canvas/SceneCanvas/useSceneSlotLayers.js.map +1 -1
- package/dist/canvas/SceneCanvas/useSceneStandardActions.js +108 -0
- package/dist/canvas/SceneCanvas/useSceneStandardActions.js.map +1 -0
- package/dist/canvas/SceneCanvas/useSelectionOverlayLayer.js +40 -27
- package/dist/canvas/SceneCanvas/useSelectionOverlayLayer.js.map +1 -1
- package/dist/canvas/SceneCanvas/useSurfaceRouting.js +29 -0
- package/dist/canvas/SceneCanvas/useSurfaceRouting.js.map +1 -0
- package/dist/canvas/SceneCanvas/useSurfaceViewInputs.js +44 -0
- package/dist/canvas/SceneCanvas/useSurfaceViewInputs.js.map +1 -0
- package/dist/canvas/SceneCanvas/useToolKeybindings.js +28 -0
- package/dist/canvas/SceneCanvas/useToolKeybindings.js.map +1 -0
- package/dist/canvas/SceneCanvas/useViewportActions.js +52 -28
- package/dist/canvas/SceneCanvas/useViewportActions.js.map +1 -1
- package/dist/canvas/SceneCanvas/worldPointAt.js +10 -4
- package/dist/canvas/SceneCanvas/worldPointAt.js.map +1 -1
- package/dist/canvas/SceneCanvas.js +274 -312
- package/dist/canvas/SceneCanvas.js.map +1 -1
- package/dist/canvas/SceneViewCanvas.js +68 -42
- package/dist/canvas/SceneViewCanvas.js.map +1 -1
- package/dist/canvas/SurfaceCanvas.js +53 -31
- package/dist/canvas/SurfaceCanvas.js.map +1 -1
- package/dist/canvas/accentColor.js +8 -5
- package/dist/canvas/accentColor.js.map +1 -1
- package/dist/canvas/adapterDerivedPath.js +33 -18
- package/dist/canvas/adapterDerivedPath.js.map +1 -1
- package/dist/canvas/adapterPickSource.js +49 -23
- package/dist/canvas/adapterPickSource.js.map +1 -1
- package/dist/canvas/affordanceAt.js +106 -50
- package/dist/canvas/affordanceAt.js.map +1 -1
- package/dist/canvas/buildSceneLayer.js +111 -80
- package/dist/canvas/buildSceneLayer.js.map +1 -1
- package/dist/canvas/buildSceneTree.js +101 -59
- package/dist/canvas/buildSceneTree.js.map +1 -1
- package/dist/canvas/canvasRenderer.js +156 -71
- package/dist/canvas/canvasRenderer.js.map +1 -1
- package/dist/canvas/colorOverrides.js +18 -10
- package/dist/canvas/colorOverrides.js.map +1 -1
- package/dist/canvas/copiesAbove.js +24 -14
- package/dist/canvas/copiesAbove.js.map +1 -1
- package/dist/canvas/defaultDrawOne.js +55 -31
- package/dist/canvas/defaultDrawOne.js.map +1 -1
- package/dist/canvas/deps/areaSelect.js +30 -12
- package/dist/canvas/deps/areaSelect.js.map +1 -1
- package/dist/canvas/deps/booleans.js +104 -0
- package/dist/canvas/deps/booleans.js.map +1 -0
- package/dist/canvas/deps/changes.js +17 -9
- package/dist/canvas/deps/changes.js.map +1 -1
- package/dist/canvas/deps/debug.js +12 -5
- package/dist/canvas/deps/debug.js.map +1 -1
- package/dist/canvas/deps/dispatchSources.js +27 -0
- package/dist/canvas/deps/dispatchSources.js.map +1 -0
- package/dist/canvas/deps/dispatcher.js +18 -7
- package/dist/canvas/deps/dispatcher.js.map +1 -1
- package/dist/canvas/deps/editAnchors.js +253 -63
- package/dist/canvas/deps/editAnchors.js.map +1 -1
- package/dist/canvas/deps/geometryProjection.js +13 -7
- package/dist/canvas/deps/geometryProjection.js.map +1 -1
- package/dist/canvas/deps/hitTestArea.js +78 -53
- package/dist/canvas/deps/hitTestArea.js.map +1 -1
- package/dist/canvas/deps/ingestion.js +18 -13
- package/dist/canvas/deps/ingestion.js.map +1 -1
- package/dist/canvas/deps/insert.js +176 -116
- package/dist/canvas/deps/insert.js.map +1 -1
- package/dist/canvas/deps/kitSettings.js +16 -0
- package/dist/canvas/deps/kitSettings.js.map +1 -0
- package/dist/canvas/deps/lassoSelect.js +25 -13
- package/dist/canvas/deps/lassoSelect.js.map +1 -1
- package/dist/canvas/deps/layout.js +32 -20
- package/dist/canvas/deps/layout.js.map +1 -1
- package/dist/canvas/deps/nodeAtPoint.js +28 -14
- package/dist/canvas/deps/nodeAtPoint.js.map +1 -1
- package/dist/canvas/deps/pathLeaf.js +66 -0
- package/dist/canvas/deps/pathLeaf.js.map +1 -0
- package/dist/canvas/deps/pathLeafDeps.js +13 -0
- package/dist/canvas/deps/pathLeafDeps.js.map +1 -0
- package/dist/canvas/deps/poseDescriptor.js +10 -8
- package/dist/canvas/deps/poseDescriptor.js.map +1 -1
- package/dist/canvas/deps/previewPaths.js +44 -0
- package/dist/canvas/deps/previewPaths.js.map +1 -0
- package/dist/canvas/deps/resizePolicy.js +32 -25
- package/dist/canvas/deps/resizePolicy.js.map +1 -1
- package/dist/canvas/deps/slice.js +73 -87
- package/dist/canvas/deps/slice.js.map +1 -1
- package/dist/canvas/deps/snap.js +58 -7
- package/dist/canvas/deps/snap.js.map +1 -1
- package/dist/canvas/deps/surface.js +30 -0
- package/dist/canvas/deps/surface.js.map +1 -0
- package/dist/canvas/deps/textEdit.js +21 -13
- package/dist/canvas/deps/textEdit.js.map +1 -1
- package/dist/canvas/deps/view.js +46 -34
- package/dist/canvas/deps/view.js.map +1 -1
- package/dist/canvas/derivedPath.js +154 -70
- package/dist/canvas/derivedPath.js.map +1 -1
- package/dist/canvas/doubleClickTarget.js +20 -0
- package/dist/canvas/doubleClickTarget.js.map +1 -0
- package/dist/canvas/drawEnvelope.js +26 -17
- package/dist/canvas/drawEnvelope.js.map +1 -1
- package/dist/canvas/drawnBounds.js +116 -0
- package/dist/canvas/drawnBounds.js.map +1 -0
- package/dist/canvas/getNodeAtPoint.js +11 -8
- package/dist/canvas/getNodeAtPoint.js.map +1 -1
- package/dist/canvas/hostAnchor.js +35 -18
- package/dist/canvas/hostAnchor.js.map +1 -1
- package/dist/canvas/hud.module.js +25 -14
- package/dist/canvas/hud.module.js.map +1 -1
- package/dist/canvas/insertPreviewExtent.js +82 -61
- package/dist/canvas/insertPreviewExtent.js.map +1 -1
- package/dist/canvas/kitRequirements.js +154 -115
- package/dist/canvas/kitRequirements.js.map +1 -1
- package/dist/canvas/layerHover.js +28 -0
- package/dist/canvas/layerHover.js.map +1 -0
- package/dist/canvas/layerOrder.js +107 -57
- package/dist/canvas/layerOrder.js.map +1 -1
- package/dist/canvas/layerSlots.js +16 -9
- package/dist/canvas/layerSlots.js.map +1 -1
- package/dist/canvas/mountedCanvases.js +23 -13
- package/dist/canvas/mountedCanvases.js.map +1 -1
- package/dist/canvas/nodeShapes/derivedPainter.js +65 -25
- package/dist/canvas/nodeShapes/derivedPainter.js.map +1 -1
- package/dist/canvas/nodeShapes/imagePainter.js +69 -53
- package/dist/canvas/nodeShapes/imagePainter.js.map +1 -1
- package/dist/canvas/nodeShapes/measurePainter.js +58 -0
- package/dist/canvas/nodeShapes/measurePainter.js.map +1 -0
- package/dist/canvas/nodeShapes/memo.js +16 -5
- package/dist/canvas/nodeShapes/memo.js.map +1 -1
- package/dist/canvas/nodeShapes/nodePaint.js +125 -46
- package/dist/canvas/nodeShapes/nodePaint.js.map +1 -1
- package/dist/canvas/nodeShapes/pathPainter.js +41 -27
- package/dist/canvas/nodeShapes/pathPainter.js.map +1 -1
- package/dist/canvas/nodeShapes/poseBox.js +20 -13
- package/dist/canvas/nodeShapes/poseBox.js.map +1 -1
- package/dist/canvas/nodeShapes/rectFallbackPainter.js +26 -22
- package/dist/canvas/nodeShapes/rectFallbackPainter.js.map +1 -1
- package/dist/canvas/nodeShapes/shapePainter.js +67 -46
- package/dist/canvas/nodeShapes/shapePainter.js.map +1 -1
- package/dist/canvas/nodeShapes/strokedBounds.js +177 -0
- package/dist/canvas/nodeShapes/strokedBounds.js.map +1 -0
- package/dist/canvas/nodeShapes/textPainter.js +170 -37
- package/dist/canvas/nodeShapes/textPainter.js.map +1 -1
- package/dist/canvas/overChildren.js +29 -18
- package/dist/canvas/overChildren.js.map +1 -1
- package/dist/canvas/overlayRoleStrokes.js +20 -3
- package/dist/canvas/overlayRoleStrokes.js.map +1 -1
- package/dist/canvas/paintCull.js +24 -12
- package/dist/canvas/paintCull.js.map +1 -1
- package/dist/canvas/paintedCursorLayer.js +59 -35
- package/dist/canvas/paintedCursorLayer.js.map +1 -1
- package/dist/canvas/pathOverlay.js +63 -0
- package/dist/canvas/pathOverlay.js.map +1 -0
- package/dist/canvas/pickReach.js +34 -17
- package/dist/canvas/pickReach.js.map +1 -1
- package/dist/canvas/pickWalk.js +151 -102
- package/dist/canvas/pickWalk.js.map +1 -1
- package/dist/canvas/planeClips.js +39 -22
- package/dist/canvas/planeClips.js.map +1 -1
- package/dist/canvas/poseCascade.js +51 -27
- package/dist/canvas/poseCascade.js.map +1 -1
- package/dist/canvas/poseRotation.js +24 -14
- package/dist/canvas/poseRotation.js.map +1 -1
- package/dist/canvas/rasterReadback.js +23 -15
- package/dist/canvas/rasterReadback.js.map +1 -1
- package/dist/canvas/rasterToPng.js +21 -15
- package/dist/canvas/rasterToPng.js.map +1 -1
- package/dist/canvas/renderDebugSnapshot.js +36 -19
- package/dist/canvas/renderDebugSnapshot.js.map +1 -1
- package/dist/canvas/renderNeeds.js +33 -18
- package/dist/canvas/renderNeeds.js.map +1 -1
- package/dist/canvas/renderSceneToPixels.js +202 -87
- package/dist/canvas/renderSceneToPixels.js.map +1 -1
- package/dist/canvas/sceneAdapter.js +96 -75
- package/dist/canvas/sceneAdapter.js.map +1 -1
- package/dist/canvas/sceneClipboard.js +141 -92
- package/dist/canvas/sceneClipboard.js.map +1 -1
- package/dist/canvas/sceneLayerPaint.js +56 -27
- package/dist/canvas/sceneLayerPaint.js.map +1 -1
- package/dist/canvas/sceneSlotWiring.js +24 -14
- package/dist/canvas/sceneSlotWiring.js.map +1 -1
- package/dist/canvas/sceneViewRender.js +85 -49
- package/dist/canvas/sceneViewRender.js.map +1 -1
- package/dist/canvas/slopsDebugLayer.js +58 -49
- package/dist/canvas/slopsDebugLayer.js.map +1 -1
- package/dist/canvas/surfaceContribution.js +22 -10
- package/dist/canvas/surfaceContribution.js.map +1 -1
- package/dist/canvas/useCanvasElements.js +31 -0
- package/dist/canvas/useCanvasElements.js.map +1 -0
- package/dist/canvas/useCanvasHandle.js +69 -0
- package/dist/canvas/useCanvasHandle.js.map +1 -0
- package/dist/canvas/useCanvasPaint.js +91 -0
- package/dist/canvas/useCanvasPaint.js.map +1 -0
- package/dist/canvas/useCanvasRenderer.js +45 -23
- package/dist/canvas/useCanvasRenderer.js.map +1 -1
- package/dist/canvas/useCanvasSurface.js +41 -23
- package/dist/canvas/useCanvasSurface.js.map +1 -1
- package/dist/canvas/useCanvasView.js +80 -48
- package/dist/canvas/useCanvasView.js.map +1 -1
- package/dist/canvas/useClientToWorld.js +27 -0
- package/dist/canvas/useClientToWorld.js.map +1 -0
- package/dist/canvas/useExtraLayers.js +45 -0
- package/dist/canvas/useExtraLayers.js.map +1 -0
- package/dist/canvas/useFrameLoop.js +109 -49
- package/dist/canvas/useFrameLoop.js.map +1 -1
- package/dist/canvas/useHitObserver.js +22 -15
- package/dist/canvas/useHitObserver.js.map +1 -1
- package/dist/canvas/useHostAnchor.js +83 -53
- package/dist/canvas/useHostAnchor.js.map +1 -1
- package/dist/canvas/useLateContentRedraw.js +21 -14
- package/dist/canvas/useLateContentRedraw.js.map +1 -1
- package/dist/canvas/useLayerStack.js +72 -0
- package/dist/canvas/useLayerStack.js.map +1 -0
- package/dist/canvas/usePaintedCursor.js +28 -0
- package/dist/canvas/usePaintedCursor.js.map +1 -0
- package/dist/canvas/useRedrawOn.js +24 -14
- package/dist/canvas/useRedrawOn.js.map +1 -1
- package/dist/canvas/useSceneAdapter.js +21 -16
- package/dist/canvas/useSceneAdapter.js.map +1 -1
- package/dist/canvas/useSceneLayerList.js +15 -7
- package/dist/canvas/useSceneLayerList.js.map +1 -1
- package/dist/canvas/useSurfaceInput.js +46 -27
- package/dist/canvas/useSurfaceInput.js.map +1 -1
- package/dist/canvas/useSurfaceSize.js +43 -0
- package/dist/canvas/useSurfaceSize.js.map +1 -0
- package/dist/canvas/useToolCursor.js +30 -21
- package/dist/canvas/useToolCursor.js.map +1 -1
- package/dist/canvas/useViewHelpers.js +112 -61
- package/dist/canvas/useViewHelpers.js.map +1 -1
- package/dist/canvas/useViewLayerGate.js +29 -0
- package/dist/canvas/useViewLayerGate.js.map +1 -0
- package/dist/canvas/useViewNesting.js +104 -0
- package/dist/canvas/useViewNesting.js.map +1 -0
- package/dist/canvas/useViewRegistrySurface.js +44 -0
- package/dist/canvas/useViewRegistrySurface.js.map +1 -0
- package/dist/canvas/viewInputs.js +14 -11
- package/dist/canvas/viewInputs.js.map +1 -1
- package/dist/canvas/viewRegistry.js +140 -42
- package/dist/canvas/viewRegistry.js.map +1 -1
- package/dist/canvas/watchElementMove.js +71 -33
- package/dist/canvas/watchElementMove.js.map +1 -1
- package/dist/canvas/wrapNodeOutput.js +20 -13
- package/dist/canvas/wrapNodeOutput.js.map +1 -1
- package/dist/clipboard.d.ts +7 -3
- package/dist/clipboard.js +4 -3
- package/dist/{clone-C0eADtS0.d.ts → clone-DZDrfIlU.d.ts} +20 -53
- package/dist/clone.d.ts +5 -4
- package/dist/core/adapters/testing/rootsTree.js +17 -0
- package/dist/core/adapters/testing/rootsTree.js.map +1 -0
- package/dist/core/applyOps.js +23 -7
- package/dist/core/applyOps.js.map +1 -1
- package/dist/core/device/index.js +6 -5
- package/dist/core/device/targets.js +29 -8
- package/dist/core/device/targets.js.map +1 -1
- package/dist/core/device/useDeviceProfile.js +86 -52
- package/dist/core/device/useDeviceProfile.js.map +1 -1
- package/dist/core/device/useTargetBasePx.js +23 -0
- package/dist/core/device/useTargetBasePx.js.map +1 -0
- package/dist/core/device/watchDevicePixelRatio.js +27 -10
- package/dist/core/device/watchDevicePixelRatio.js.map +1 -1
- package/dist/core/geometry/autoPoseDescriptor.js +38 -24
- package/dist/core/geometry/autoPoseDescriptor.js.map +1 -1
- package/dist/core/geometry/inkExtents.js +60 -0
- package/dist/core/geometry/inkExtents.js.map +1 -0
- package/dist/core/geometry/pathPoseDescriptor.js +101 -76
- package/dist/core/geometry/pathPoseDescriptor.js.map +1 -1
- package/dist/core/geometry/poseDescriptor.js +199 -136
- package/dist/core/geometry/poseDescriptor.js.map +1 -1
- package/dist/core/geometry/regionHit.js +127 -79
- package/dist/core/geometry/regionHit.js.map +1 -1
- package/dist/core/geometry/targetFrame.js +84 -60
- package/dist/core/geometry/targetFrame.js.map +1 -1
- package/dist/core/geometry/unionBounds.js +103 -48
- package/dist/core/geometry/unionBounds.js.map +1 -1
- package/dist/core/isPlainObject.js +3 -2
- package/dist/core/layers/backgroundFill.js +23 -15
- package/dist/core/layers/backgroundFill.js.map +1 -1
- package/dist/core/layers/children.js +16 -13
- package/dist/core/layers/children.js.map +1 -1
- package/dist/core/layers/gateLayer.js +24 -9
- package/dist/core/layers/gateLayer.js.map +1 -1
- package/dist/core/layers/layerGroup.js +42 -29
- package/dist/core/layers/layerGroup.js.map +1 -1
- package/dist/core/layers/redrawSource.js +15 -0
- package/dist/core/layers/redrawSource.js.map +1 -0
- package/dist/core/layers/render.js +183 -93
- package/dist/core/layers/render.js.map +1 -1
- package/dist/core/layers/retain.js +38 -0
- package/dist/core/layers/retain.js.map +1 -0
- package/dist/core/ops/arrange.js +30 -19
- package/dist/core/ops/arrange.js.map +1 -1
- package/dist/core/ops/create.js +32 -23
- package/dist/core/ops/create.js.map +1 -1
- package/dist/core/ops/createHistory.js +23 -14
- package/dist/core/ops/createHistory.js.map +1 -1
- package/dist/core/ops/delete.js +80 -53
- package/dist/core/ops/delete.js.map +1 -1
- package/dist/core/ops/nodeFlags.js +44 -0
- package/dist/core/ops/nodeFlags.js.map +1 -0
- package/dist/core/ops/registry.js +26 -11
- package/dist/core/ops/registry.js.map +1 -1
- package/dist/core/ops/reorder/algorithms.js +62 -38
- package/dist/core/ops/reorder/algorithms.js.map +1 -1
- package/dist/core/ops/reorder/index.js +124 -84
- package/dist/core/ops/reorder/index.js.map +1 -1
- package/dist/core/ops/reorder/setChildOrder.js +32 -23
- package/dist/core/ops/reorder/setChildOrder.js.map +1 -1
- package/dist/core/ops/reparent.js +63 -37
- package/dist/core/ops/reparent.js.map +1 -1
- package/dist/core/ops/select.js +23 -20
- package/dist/core/ops/select.js.map +1 -1
- package/dist/core/ops/setData.js +23 -21
- package/dist/core/ops/setData.js.map +1 -1
- package/dist/core/ops/setLayer.js +26 -21
- package/dist/core/ops/setLayer.js.map +1 -1
- package/dist/core/ops/setLayout.js +27 -18
- package/dist/core/ops/setLayout.js.map +1 -1
- package/dist/core/ops/setPath.js +60 -41
- package/dist/core/ops/setPath.js.map +1 -1
- package/dist/core/ops/setText.js +26 -21
- package/dist/core/ops/setText.js.map +1 -1
- package/dist/core/ops/slot.js +36 -22
- package/dist/core/ops/slot.js.map +1 -1
- package/dist/core/ops/transform.js +35 -28
- package/dist/core/ops/transform.js.map +1 -1
- package/dist/core/pages/fitViewToPage.js +13 -11
- package/dist/core/pages/fitViewToPage.js.map +1 -1
- package/dist/core/pages/pages.js +73 -42
- package/dist/core/pages/pages.js.map +1 -1
- package/dist/core/pages/pagesLayer.js +19 -13
- package/dist/core/pages/pagesLayer.js.map +1 -1
- package/dist/core/paint/meshKind.js +16 -11
- package/dist/core/paint/meshKind.js.map +1 -1
- package/dist/core/paint/meshKindLazy.js +1 -1
- package/dist/core/paint/meshKindLazy.js.map +1 -1
- package/dist/core/paint/paintKindEntry.js +13 -4
- package/dist/core/paint/paintKindEntry.js.map +1 -1
- package/dist/core/paint/paintKinds.js +149 -88
- package/dist/core/paint/paintKinds.js.map +1 -1
- package/dist/core/paint/registerMesh.js +6 -4
- package/dist/core/paint/registerMesh.js.map +1 -1
- package/dist/core/scene/NodeProperties.js +15 -10
- package/dist/core/scene/NodeProperties.js.map +1 -1
- package/dist/core/scene/NodeRouting.js +16 -12
- package/dist/core/scene/NodeRouting.js.map +1 -1
- package/dist/core/scene/annotation.js +28 -0
- package/dist/core/scene/annotation.js.map +1 -0
- package/dist/core/scene/appliedLog.js +31 -23
- package/dist/core/scene/appliedLog.js.map +1 -1
- package/dist/core/scene/arrivalWindow.js +120 -75
- package/dist/core/scene/arrivalWindow.js.map +1 -1
- package/dist/core/scene/arrivals.js +17 -6
- package/dist/core/scene/arrivals.js.map +1 -1
- package/dist/core/scene/boundOps.js +42 -23
- package/dist/core/scene/boundOps.js.map +1 -1
- package/dist/core/scene/composeFrame.js +51 -21
- package/dist/core/scene/composeFrame.js.map +1 -1
- package/dist/core/scene/composePose.js +114 -62
- package/dist/core/scene/composePose.js.map +1 -1
- package/dist/core/scene/depFrame.js +94 -0
- package/dist/core/scene/depFrame.js.map +1 -0
- package/dist/core/scene/depMemo.js +44 -19
- package/dist/core/scene/depMemo.js.map +1 -1
- package/dist/core/scene/dependents.js +73 -45
- package/dist/core/scene/dependents.js.map +1 -1
- package/dist/core/scene/derivedParts.js +58 -0
- package/dist/core/scene/derivedParts.js.map +1 -0
- package/dist/core/scene/derivedPath.js +52 -22
- package/dist/core/scene/derivedPath.js.map +1 -1
- package/dist/core/scene/editMode.js +11 -11
- package/dist/core/scene/editMode.js.map +1 -1
- package/dist/core/scene/effectivePose.js +167 -51
- package/dist/core/scene/effectivePose.js.map +1 -1
- package/dist/core/scene/fieldEdits.js +95 -75
- package/dist/core/scene/fieldEdits.js.map +1 -1
- package/dist/core/scene/historyFacade.js +126 -87
- package/dist/core/scene/historyFacade.js.map +1 -1
- package/dist/core/scene/historyForm.js +7 -3
- package/dist/core/scene/historyForm.js.map +1 -1
- package/dist/core/scene/kitOps.js +203 -131
- package/dist/core/scene/kitOps.js.map +1 -1
- package/dist/core/scene/kitRegistry.js +49 -22
- package/dist/core/scene/kitRegistry.js.map +1 -1
- package/dist/core/scene/layerStack.js +123 -92
- package/dist/core/scene/layerStack.js.map +1 -1
- package/dist/core/scene/layoutPass.js +118 -72
- package/dist/core/scene/layoutPass.js.map +1 -1
- package/dist/core/scene/lockGuard.js +32 -24
- package/dist/core/scene/lockGuard.js.map +1 -1
- package/dist/core/scene/minSize.js +17 -0
- package/dist/core/scene/minSize.js.map +1 -0
- package/dist/core/scene/nestedHit.js +45 -31
- package/dist/core/scene/nestedHit.js.map +1 -1
- package/dist/core/scene/nodeFlags.js +43 -0
- package/dist/core/scene/nodeFlags.js.map +1 -0
- package/dist/core/scene/nodeFnFields.js +58 -41
- package/dist/core/scene/nodeFnFields.js.map +1 -1
- package/dist/core/scene/nodeGates.js +58 -0
- package/dist/core/scene/nodeGates.js.map +1 -0
- package/dist/core/scene/nodeMemo.js +92 -40
- package/dist/core/scene/nodeMemo.js.map +1 -1
- package/dist/core/scene/nodeStore.js +179 -99
- package/dist/core/scene/nodeStore.js.map +1 -1
- package/dist/core/scene/notifier.js +30 -19
- package/dist/core/scene/notifier.js.map +1 -1
- package/dist/core/scene/opTable.js +42 -36
- package/dist/core/scene/opTable.js.map +1 -1
- package/dist/core/scene/outerOps.js +49 -43
- package/dist/core/scene/outerOps.js.map +1 -1
- package/dist/core/scene/pathEffects/blend.js +80 -0
- package/dist/core/scene/pathEffects/blend.js.map +1 -0
- package/dist/core/scene/pathEffects/derive.js +112 -0
- package/dist/core/scene/pathEffects/derive.js.map +1 -0
- package/dist/core/scene/pathEffects/effects.js +40 -0
- package/dist/core/scene/pathEffects/effects.js.map +1 -0
- package/dist/core/scene/poseFeed.js +95 -60
- package/dist/core/scene/poseFeed.js.map +1 -1
- package/dist/core/scene/poseHold.js +33 -24
- package/dist/core/scene/poseHold.js.map +1 -1
- package/dist/core/scene/poseOverrides.js +86 -49
- package/dist/core/scene/poseOverrides.js.map +1 -1
- package/dist/core/scene/poseRemovals.js +58 -0
- package/dist/core/scene/poseRemovals.js.map +1 -0
- package/dist/core/scene/poseSnapshot.js +62 -41
- package/dist/core/scene/poseSnapshot.js.map +1 -1
- package/dist/core/scene/poseWrites.js +151 -0
- package/dist/core/scene/poseWrites.js.map +1 -0
- package/dist/core/scene/reconcileSpecs.js +63 -34
- package/dist/core/scene/reconcileSpecs.js.map +1 -1
- package/dist/core/scene/recorder.js +90 -57
- package/dist/core/scene/recorder.js.map +1 -1
- package/dist/core/scene/renderOrder.js +105 -59
- package/dist/core/scene/renderOrder.js.map +1 -1
- package/dist/core/scene/scene.js +133 -80
- package/dist/core/scene/scene.js.map +1 -1
- package/dist/core/scene/sceneEdits.js +62 -49
- package/dist/core/scene/sceneEdits.js.map +1 -1
- package/dist/core/scene/sceneMutators.js +44 -36
- package/dist/core/scene/sceneMutators.js.map +1 -1
- package/dist/core/scene/scenePoseAdapter.js +13 -9
- package/dist/core/scene/scenePoseAdapter.js.map +1 -1
- package/dist/core/scene/sceneRecording.js +89 -73
- package/dist/core/scene/sceneRecording.js.map +1 -1
- package/dist/core/scene/sceneSelection.js +23 -16
- package/dist/core/scene/sceneSelection.js.map +1 -1
- package/dist/core/scene/sceneState.js +54 -36
- package/dist/core/scene/sceneState.js.map +1 -1
- package/dist/core/scene/serialization.js +87 -50
- package/dist/core/scene/serialization.js.map +1 -1
- package/dist/core/scene/staleReplay.js +35 -26
- package/dist/core/scene/staleReplay.js.map +1 -1
- package/dist/core/scene/statedFields.js +10 -5
- package/dist/core/scene/statedFields.js.map +1 -1
- package/dist/core/scene/treeEdits.js +129 -98
- package/dist/core/scene/treeEdits.js.map +1 -1
- package/dist/core/scene/treeOrder.js +13 -8
- package/dist/core/scene/treeOrder.js.map +1 -1
- package/dist/core/scene/treeReads.js +25 -16
- package/dist/core/scene/treeReads.js.map +1 -1
- package/dist/core/scene/types.js +4 -3
- package/dist/core/scene/types.js.map +1 -1
- package/dist/core/scene/unionOfChildren.js +20 -10
- package/dist/core/scene/unionOfChildren.js.map +1 -1
- package/dist/core/scene/unitScopes.js +15 -8
- package/dist/core/scene/unitScopes.js.map +1 -1
- package/dist/core/scene/useScene.js +32 -24
- package/dist/core/scene/useScene.js.map +1 -1
- package/dist/core/selection/chromeState.js +41 -17
- package/dist/core/selection/chromeState.js.map +1 -1
- package/dist/core/selection/readOnlySelection.js +39 -24
- package/dist/core/selection/readOnlySelection.js.map +1 -1
- package/dist/core/selection/selectionTarget.js +14 -3
- package/dist/core/selection/selectionTarget.js.map +1 -1
- package/dist/core/selection/usePublishSceneSelection.js +25 -18
- package/dist/core/selection/usePublishSceneSelection.js.map +1 -1
- package/dist/core/selection/useSelection.js +90 -57
- package/dist/core/selection/useSelection.js.map +1 -1
- package/dist/core/shapeKinds.js +43 -28
- package/dist/core/shapeKinds.js.map +1 -1
- package/dist/core/stableStringify.js +5 -4
- package/dist/core/stableStringify.js.map +1 -1
- package/dist/core/stylus/stylus.js +49 -25
- package/dist/core/stylus/stylus.js.map +1 -1
- package/dist/core/stylus/usePointerStylus.js +61 -34
- package/dist/core/stylus/usePointerStylus.js.map +1 -1
- package/dist/core/usePaintKinds.js +21 -11
- package/dist/core/usePaintKinds.js.map +1 -1
- package/dist/core/viewport/clampView.js +31 -15
- package/dist/core/viewport/clampView.js.map +1 -1
- package/dist/core/viewport/clientToWorld.js +15 -4
- package/dist/core/viewport/clientToWorld.js.map +1 -1
- package/dist/core/viewport/createVelocityTracker.js +23 -19
- package/dist/core/viewport/createVelocityTracker.js.map +1 -1
- package/dist/core/viewport/fitToBounds.js +28 -11
- package/dist/core/viewport/fitToBounds.js.map +1 -1
- package/dist/core/viewport/fitViewToBounds.js +45 -19
- package/dist/core/viewport/fitViewToBounds.js.map +1 -1
- package/dist/core/viewport/interpolateView.js +40 -20
- package/dist/core/viewport/interpolateView.js.map +1 -1
- package/dist/core/viewport/parallax.js +89 -56
- package/dist/core/viewport/parallax.js.map +1 -1
- package/dist/core/viewport/sceneNodeClientRect.js +21 -12
- package/dist/core/viewport/sceneNodeClientRect.js.map +1 -1
- package/dist/core/viewport/screenSlop.js +40 -17
- package/dist/core/viewport/screenSlop.js.map +1 -1
- package/dist/core/viewport/useAutoCenter.js +36 -22
- package/dist/core/viewport/useAutoCenter.js.map +1 -1
- package/dist/core/viewport/useCanvasSize.js +43 -22
- package/dist/core/viewport/useCanvasSize.js.map +1 -1
- package/dist/core/viewport/useDecayLoop.js +120 -48
- package/dist/core/viewport/useDecayLoop.js.map +1 -1
- package/dist/core/viewport/useNodeOverlayFrame.js +93 -58
- package/dist/core/viewport/useNodeOverlayFrame.js.map +1 -1
- package/dist/core/viewport/useVelocityTracker.js +9 -6
- package/dist/core/viewport/useVelocityTracker.js.map +1 -1
- package/dist/core/viewport/useViewAnimation.js +143 -84
- package/dist/core/viewport/useViewAnimation.js.map +1 -1
- package/dist/core/viewport/view.js +48 -24
- package/dist/core/viewport/view.js.map +1 -1
- package/dist/core/viewport/viewTransform.js +8 -6
- package/dist/core/viewport/viewTransform.js.map +1 -1
- package/dist/core/viewport/viewportWorldRect.js +15 -7
- package/dist/core/viewport/viewportWorldRect.js.map +1 -1
- package/dist/core/viewport/wheelHandler.js +31 -20
- package/dist/core/viewport/wheelHandler.js.map +1 -1
- package/dist/core/viewport/zoomAt.js +47 -19
- package/dist/core/viewport/zoomAt.js.map +1 -1
- package/dist/core/viewport/zoomBounds.js +33 -17
- package/dist/core/viewport/zoomBounds.js.map +1 -1
- package/dist/cornerHandles-Camw_yeu.d.ts +169 -0
- package/dist/debug/createDebugOverlayLayer.js +303 -215
- package/dist/debug/createDebugOverlayLayer.js.map +1 -1
- package/dist/debug/createDebugSink.js +68 -47
- package/dist/debug/createDebugSink.js.map +1 -1
- package/dist/debug/defaultTheme.js +16 -4
- package/dist/debug/defaultTheme.js.map +1 -1
- package/dist/debug/flag.js +3 -2
- package/dist/debug/frameStats.js +11 -9
- package/dist/debug/frameStats.js.map +1 -1
- package/dist/debug/parseDebugFlags.js +25 -17
- package/dist/debug/parseDebugFlags.js.map +1 -1
- package/dist/debug/useDebugSink.js +52 -33
- package/dist/debug/useDebugSink.js.map +1 -1
- package/dist/depSchema-Cgfu_G9s.d.ts +3581 -0
- package/dist/features/chrome-caps/buildChromeCtx.js +12 -10
- package/dist/features/chrome-caps/buildChromeCtx.js.map +1 -1
- package/dist/features/chrome-caps/conditions.js +103 -25
- package/dist/features/chrome-caps/conditions.js.map +1 -1
- package/dist/features/chrome-caps/defaults.js +18 -10
- package/dist/features/chrome-caps/defaults.js.map +1 -1
- package/dist/features/chrome-caps/index.js +8 -7
- package/dist/features/chrome-caps/resolve.js +28 -16
- package/dist/features/chrome-caps/resolve.js.map +1 -1
- package/dist/features/chrome-caps/useChromeCaps.js +52 -44
- package/dist/features/chrome-caps/useChromeCaps.js.map +1 -1
- package/dist/features/chrome-caps/useHoverTracking.js +52 -26
- package/dist/features/chrome-caps/useHoverTracking.js.map +1 -1
- package/dist/features/ingestion/contentHandlers.js +80 -34
- package/dist/features/ingestion/contentHandlers.js.map +1 -1
- package/dist/features/ingestion/imageHandler.js +49 -29
- package/dist/features/ingestion/imageHandler.js.map +1 -1
- package/dist/features/ingestion/openFilePicker.js +27 -9
- package/dist/features/ingestion/openFilePicker.js.map +1 -1
- package/dist/features/ingestion/placement.js +20 -11
- package/dist/features/ingestion/placement.js.map +1 -1
- package/dist/features/ingestion/registerKitHandlers.js +35 -18
- package/dist/features/ingestion/registerKitHandlers.js.map +1 -1
- package/dist/features/ingestion/svgHandler.js +60 -34
- package/dist/features/ingestion/svgHandler.js.map +1 -1
- package/dist/features/ingestion/textHandler.js +37 -16
- package/dist/features/ingestion/textHandler.js.map +1 -1
- package/dist/features/ingestion/useCanvasIngestion.js +57 -39
- package/dist/features/ingestion/useCanvasIngestion.js.map +1 -1
- package/dist/features/ingestion/weaselJsonHandler.js +38 -28
- package/dist/features/ingestion/weaselJsonHandler.js.map +1 -1
- package/dist/features/longPress/longPressFeedback.js +110 -81
- package/dist/features/longPress/longPressFeedback.js.map +1 -1
- package/dist/features/measure/actionIds.js +22 -0
- package/dist/features/measure/actionIds.js.map +1 -0
- package/dist/features/measure/measureCommands.js +178 -0
- package/dist/features/measure/measureCommands.js.map +1 -0
- package/dist/features/measure/measureContribution.js +57 -0
- package/dist/features/measure/measureContribution.js.map +1 -0
- package/dist/features/measure/measureEdits.js +82 -0
- package/dist/features/measure/measureEdits.js.map +1 -0
- package/dist/features/measure/measureGestures.js +185 -0
- package/dist/features/measure/measureGestures.js.map +1 -0
- package/dist/features/measure/measureHit.js +80 -0
- package/dist/features/measure/measureHit.js.map +1 -0
- package/dist/features/measure/measureLayer.js +86 -0
- package/dist/features/measure/measureLayer.js.map +1 -0
- package/dist/features/measure/measurement.js +79 -0
- package/dist/features/measure/measurement.js.map +1 -0
- package/dist/features/measure/measurements.js +41 -0
- package/dist/features/measure/measurements.js.map +1 -0
- package/dist/features/modes/modeLayers.js +81 -55
- package/dist/features/modes/modeLayers.js.map +1 -1
- package/dist/features/modes/modeTriggers.js +66 -0
- package/dist/features/modes/modeTriggers.js.map +1 -0
- package/dist/features/pathEffects/index.js +35 -0
- package/dist/features/pathEffects/index.js.map +1 -0
- package/dist/features/pathEffects/readSource.js +46 -0
- package/dist/features/pathEffects/readSource.js.map +1 -0
- package/dist/features/paths/anchorData.js +65 -0
- package/dist/features/paths/anchorData.js.map +1 -0
- package/dist/features/paths/anchorMarkers.js +137 -0
- package/dist/features/paths/anchorMarkers.js.map +1 -0
- package/dist/features/paths/editablePath.js +149 -46
- package/dist/features/paths/editablePath.js.map +1 -1
- package/dist/features/paths/index.js +12 -9
- package/dist/features/paths/originProjection.js +16 -9
- package/dist/features/paths/originProjection.js.map +1 -1
- package/dist/features/paths/pathEditExtension.js +26 -0
- package/dist/features/paths/pathEditExtension.js.map +1 -0
- package/dist/features/paths/pathEditState.js +107 -26
- package/dist/features/paths/pathEditState.js.map +1 -1
- package/dist/features/paths/pathEditingOverlayLayer.js +58 -110
- package/dist/features/paths/pathEditingOverlayLayer.js.map +1 -1
- package/dist/features/paths/pathLayer.js +79 -29
- package/dist/features/paths/pathLayer.js.map +1 -1
- package/dist/features/paths/pathRepresentation.js +27 -0
- package/dist/features/paths/pathRepresentation.js.map +1 -0
- package/dist/features/paths/pathSnap/glyphs.js +39 -0
- package/dist/features/paths/pathSnap/glyphs.js.map +1 -0
- package/dist/features/paths/pathSnap/pathSnapSource.js +82 -0
- package/dist/features/paths/pathSnap/pathSnapSource.js.map +1 -0
- package/dist/features/paths/pathSnap/sceneIndex.js +78 -0
- package/dist/features/paths/pathSnap/sceneIndex.js.map +1 -0
- package/dist/features/paths/pathSnap/snapGeometry.js +47 -0
- package/dist/features/paths/pathSnap/snapGeometry.js.map +1 -0
- package/dist/features/paths/penPreviewLayer.js +135 -102
- package/dist/features/paths/penPreviewLayer.js.map +1 -1
- package/dist/features/paths/shapeGenerator.js +112 -60
- package/dist/features/paths/shapeGenerator.js.map +1 -1
- package/dist/features/paths/strokeOutline.js +15 -0
- package/dist/features/paths/strokeOutline.js.map +1 -0
- package/dist/features/paths/useAnchorFields.js +35 -0
- package/dist/features/paths/useAnchorFields.js.map +1 -0
- package/dist/features/paths/usePathEdit.js +58 -28
- package/dist/features/paths/usePathEdit.js.map +1 -1
- package/dist/features/poseRun/usePoseRun.js +110 -43
- package/dist/features/poseRun/usePoseRun.js.map +1 -1
- package/dist/features/selection/handleCommands.js +116 -0
- package/dist/features/selection/handleCommands.js.map +1 -0
- package/dist/features/selection/overlay.js +288 -328
- package/dist/features/selection/overlay.js.map +1 -1
- package/dist/features/selection/selectionPose.js +109 -0
- package/dist/features/selection/selectionPose.js.map +1 -0
- package/dist/features/snap/angle2d.js +158 -0
- package/dist/features/snap/angle2d.js.map +1 -0
- package/dist/features/snap/debugCandidates.js +27 -0
- package/dist/features/snap/debugCandidates.js.map +1 -0
- package/dist/features/snap/gather.js +71 -0
- package/dist/features/snap/gather.js.map +1 -0
- package/dist/features/snap/inputSubspace.js +46 -0
- package/dist/features/snap/inputSubspace.js.map +1 -0
- package/dist/features/snap/marks.js +29 -0
- package/dist/features/snap/marks.js.map +1 -0
- package/dist/features/snap/outcomeStore.js +25 -0
- package/dist/features/snap/outcomeStore.js.map +1 -0
- package/dist/features/snap/pointSnap.js +48 -0
- package/dist/features/snap/pointSnap.js.map +1 -0
- package/dist/features/snap/probes2d.js +91 -0
- package/dist/features/snap/probes2d.js.map +1 -0
- package/dist/features/snap/readoutDraw.js +93 -0
- package/dist/features/snap/readoutDraw.js.map +1 -0
- package/dist/features/snap/readoutLayer.js +49 -0
- package/dist/features/snap/readoutLayer.js.map +1 -0
- package/dist/features/snap/registry.js +27 -0
- package/dist/features/snap/registry.js.map +1 -0
- package/dist/features/snap/resizeBox.js +137 -0
- package/dist/features/snap/resizeBox.js.map +1 -0
- package/dist/features/snap/roles.js +31 -0
- package/dist/features/snap/roles.js.map +1 -0
- package/dist/features/snap/rotationSource.js +30 -0
- package/dist/features/snap/rotationSource.js.map +1 -0
- package/dist/features/snap/sceneReads.js +45 -0
- package/dist/features/snap/sceneReads.js.map +1 -0
- package/dist/features/snap/sceneSession2d.js +79 -0
- package/dist/features/snap/sceneSession2d.js.map +1 -0
- package/dist/features/snap/screen.js +23 -0
- package/dist/features/snap/screen.js.map +1 -0
- package/dist/features/snap/session2d.js +129 -0
- package/dist/features/snap/session2d.js.map +1 -0
- package/dist/features/snap/spanSnap.js +77 -0
- package/dist/features/snap/spanSnap.js.map +1 -0
- package/dist/features/snap/stepAngles.js +15 -0
- package/dist/features/snap/stepAngles.js.map +1 -0
- package/dist/features/text/editingDrawOne.js +32 -0
- package/dist/features/text/editingDrawOne.js.map +1 -0
- package/dist/features/text/index.js +7 -6
- package/dist/features/text/textHitAt.js +51 -0
- package/dist/features/text/textHitAt.js.map +1 -0
- package/dist/features/text/textLayer.js +21 -27
- package/dist/features/text/textLayer.js.map +1 -1
- package/dist/features/text/useSceneTextEdit.js +190 -128
- package/dist/features/text/useSceneTextEdit.js.map +1 -1
- package/dist/features/viewports/viewResolver.js +48 -39
- package/dist/features/viewports/viewResolver.js.map +1 -1
- package/dist/features/viewports/viewportLayer.js +60 -29
- package/dist/features/viewports/viewportLayer.js.map +1 -1
- package/dist/iconRegistry/IconRegistryProvider.js +73 -0
- package/dist/iconRegistry/IconRegistryProvider.js.map +1 -0
- package/dist/iconRegistry/useIconGlyph.js +14 -0
- package/dist/iconRegistry/useIconGlyph.js.map +1 -0
- package/dist/iconRegistry/useIconVariant.js +29 -0
- package/dist/iconRegistry/useIconVariant.js.map +1 -0
- package/dist/icons.d.ts +6 -0
- package/dist/icons.js +3 -0
- package/dist/icons.table.js +13 -0
- package/dist/icons.table.js.map +1 -0
- package/dist/icons.table.json +556 -0
- package/dist/icons2.table.js +9 -0
- package/dist/icons2.table.js.map +1 -0
- package/dist/index.d.ts +4259 -5074
- package/dist/index.js +340 -285
- package/dist/input/keyState.js +118 -54
- package/dist/input/keyState.js.map +1 -1
- package/dist/input/useKeyModifiers.js +13 -7
- package/dist/input/useKeyModifiers.js.map +1 -1
- package/dist/input/useKeyState.js +23 -16
- package/dist/input/useKeyState.js.map +1 -1
- package/dist/interactions/actions/align/action.js +76 -45
- package/dist/interactions/actions/align/action.js.map +1 -1
- package/dist/interactions/actions/align/align.js +86 -48
- package/dist/interactions/actions/align/align.js.map +1 -1
- package/dist/interactions/actions/booleans/action.js +67 -33
- package/dist/interactions/actions/booleans/action.js.map +1 -1
- package/dist/interactions/actions/booleans/booleans.js +77 -70
- package/dist/interactions/actions/booleans/booleans.js.map +1 -1
- package/dist/interactions/actions/booleans/commit.js +49 -0
- package/dist/interactions/actions/booleans/commit.js.map +1 -0
- package/dist/interactions/actions/booleans/custom.js +48 -0
- package/dist/interactions/actions/booleans/custom.js.map +1 -0
- package/dist/interactions/actions/booleans/operands.js +43 -32
- package/dist/interactions/actions/booleans/operands.js.map +1 -1
- package/dist/interactions/actions/booleans/pieces.js +29 -23
- package/dist/interactions/actions/booleans/pieces.js.map +1 -1
- package/dist/interactions/actions/booleans/placement.js +30 -17
- package/dist/interactions/actions/booleans/placement.js.map +1 -1
- package/dist/interactions/actions/booleans/useBooleans.js +30 -17
- package/dist/interactions/actions/booleans/useBooleans.js.map +1 -1
- package/dist/interactions/actions/booleans/useBooleansAdapter.js +8 -5
- package/dist/interactions/actions/booleans/useBooleansAdapter.js.map +1 -1
- package/dist/interactions/actions/clipboard/action.js +81 -40
- package/dist/interactions/actions/clipboard/action.js.map +1 -1
- package/dist/interactions/actions/clipboard/clipboardOps.js +100 -72
- package/dist/interactions/actions/clipboard/clipboardOps.js.map +1 -1
- package/dist/interactions/actions/clipboard/materializePaste.js +38 -19
- package/dist/interactions/actions/clipboard/materializePaste.js.map +1 -1
- package/dist/interactions/actions/clipboard/wireFormat.js +66 -28
- package/dist/interactions/actions/clipboard/wireFormat.js.map +1 -1
- package/dist/interactions/actions/clone/action.js +102 -70
- package/dist/interactions/actions/clone/action.js.map +1 -1
- package/dist/interactions/actions/clone/behaviors.js +55 -38
- package/dist/interactions/actions/clone/behaviors.js.map +1 -1
- package/dist/interactions/actions/defaultCommitAdapter.js +32 -10
- package/dist/interactions/actions/defaultCommitAdapter.js.map +1 -1
- package/dist/interactions/actions/defaults/anchorEditing.js +252 -111
- package/dist/interactions/actions/defaults/anchorEditing.js.map +1 -1
- package/dist/interactions/actions/defaults/anchorFields.js +54 -0
- package/dist/interactions/actions/defaults/anchorFields.js.map +1 -0
- package/dist/interactions/actions/defaults/anchorHandles.js +31 -27
- package/dist/interactions/actions/defaults/anchorHandles.js.map +1 -1
- package/dist/interactions/actions/defaults/anchorJoin.js +55 -37
- package/dist/interactions/actions/defaults/anchorJoin.js.map +1 -1
- package/dist/interactions/actions/defaults/areaSelect.js +56 -40
- package/dist/interactions/actions/defaults/areaSelect.js.map +1 -1
- package/dist/interactions/actions/defaults/bendSegment.js +67 -31
- package/dist/interactions/actions/defaults/bendSegment.js.map +1 -1
- package/dist/interactions/actions/defaults/cancelGesture.js +12 -5
- package/dist/interactions/actions/defaults/cancelGesture.js.map +1 -1
- package/dist/interactions/actions/defaults/clearSelection.js +22 -7
- package/dist/interactions/actions/defaults/clearSelection.js.map +1 -1
- package/dist/interactions/actions/defaults/contextMenu.js +149 -0
- package/dist/interactions/actions/defaults/contextMenu.js.map +1 -0
- package/dist/interactions/actions/defaults/copySubtree.js +43 -29
- package/dist/interactions/actions/defaults/copySubtree.js.map +1 -1
- package/dist/interactions/actions/defaults/createPaintAction.js +79 -54
- package/dist/interactions/actions/defaults/createPaintAction.js.map +1 -1
- package/dist/interactions/actions/defaults/delete.js +61 -33
- package/dist/interactions/actions/defaults/delete.js.map +1 -1
- package/dist/interactions/actions/defaults/duplicate.js +60 -32
- package/dist/interactions/actions/defaults/duplicate.js.map +1 -1
- package/dist/interactions/actions/defaults/enterPathEdit.js +22 -18
- package/dist/interactions/actions/defaults/enterPathEdit.js.map +1 -1
- package/dist/interactions/actions/defaults/enterTextEdit.js +20 -8
- package/dist/interactions/actions/defaults/enterTextEdit.js.map +1 -1
- package/dist/interactions/actions/defaults/escape.js +16 -7
- package/dist/interactions/actions/defaults/escape.js.map +1 -1
- package/dist/interactions/actions/defaults/exitPathEdit.js +6 -6
- package/dist/interactions/actions/defaults/exitPathEdit.js.map +1 -1
- package/dist/interactions/actions/defaults/group.js +122 -73
- package/dist/interactions/actions/defaults/group.js.map +1 -1
- package/dist/interactions/actions/defaults/ingest.js +52 -35
- package/dist/interactions/actions/defaults/ingest.js.map +1 -1
- package/dist/interactions/actions/defaults/insertPathAnchor.js +43 -22
- package/dist/interactions/actions/defaults/insertPathAnchor.js.map +1 -1
- package/dist/interactions/actions/defaults/nudge.js +79 -52
- package/dist/interactions/actions/defaults/nudge.js.map +1 -1
- package/dist/interactions/actions/defaults/nudgeSteps.js +17 -12
- package/dist/interactions/actions/defaults/nudgeSteps.js.map +1 -1
- package/dist/interactions/actions/defaults/pathEditMarks.js +60 -0
- package/dist/interactions/actions/defaults/pathEditMarks.js.map +1 -0
- package/dist/interactions/actions/defaults/pathEditTools.js +57 -0
- package/dist/interactions/actions/defaults/pathEditTools.js.map +1 -0
- package/dist/interactions/actions/defaults/pinchZoom.js +55 -39
- package/dist/interactions/actions/defaults/pinchZoom.js.map +1 -1
- package/dist/interactions/actions/defaults/reorder.js +71 -40
- package/dist/interactions/actions/defaults/reorder.js.map +1 -1
- package/dist/interactions/actions/defaults/requiresSelection.js +13 -6
- package/dist/interactions/actions/defaults/requiresSelection.js.map +1 -1
- package/dist/interactions/actions/defaults/segmentUnder.js +24 -16
- package/dist/interactions/actions/defaults/segmentUnder.js.map +1 -1
- package/dist/interactions/actions/defaults/selectAll.js +21 -7
- package/dist/interactions/actions/defaults/selectAll.js.map +1 -1
- package/dist/interactions/actions/defaults/setFill.js +37 -21
- package/dist/interactions/actions/defaults/setFill.js.map +1 -1
- package/dist/interactions/actions/defaults/setFillOpacity.js +19 -10
- package/dist/interactions/actions/defaults/setFillOpacity.js.map +1 -1
- package/dist/interactions/actions/defaults/setStroke.js +46 -25
- package/dist/interactions/actions/defaults/setStroke.js.map +1 -1
- package/dist/interactions/actions/defaults/setStrokeOpacity.js +19 -11
- package/dist/interactions/actions/defaults/setStrokeOpacity.js.map +1 -1
- package/dist/interactions/actions/defaults/slice.js +42 -17
- package/dist/interactions/actions/defaults/slice.js.map +1 -1
- package/dist/interactions/actions/defaults/sliceOps.js +63 -42
- package/dist/interactions/actions/defaults/sliceOps.js.map +1 -1
- package/dist/interactions/actions/defaults/toolActivate.js +34 -16
- package/dist/interactions/actions/defaults/toolActivate.js.map +1 -1
- package/dist/interactions/actions/defaults/toolResetToDefault.js +29 -10
- package/dist/interactions/actions/defaults/toolResetToDefault.js.map +1 -1
- package/dist/interactions/actions/defaults/undoRedo.js +26 -20
- package/dist/interactions/actions/defaults/undoRedo.js.map +1 -1
- package/dist/interactions/actions/defaults/viewportDragPan.js +91 -58
- package/dist/interactions/actions/defaults/viewportDragPan.js.map +1 -1
- package/dist/interactions/actions/defaults/viewportWheelPan.js +42 -23
- package/dist/interactions/actions/defaults/viewportWheelPan.js.map +1 -1
- package/dist/interactions/actions/defaults/viewportZoom.js +107 -59
- package/dist/interactions/actions/defaults/viewportZoom.js.map +1 -1
- package/dist/interactions/actions/distribute/action.js +62 -39
- package/dist/interactions/actions/distribute/action.js.map +1 -1
- package/dist/interactions/actions/distribute/distribute.js +53 -34
- package/dist/interactions/actions/distribute/distribute.js.map +1 -1
- package/dist/interactions/actions/distribute/plan.js +40 -22
- package/dist/interactions/actions/distribute/plan.js.map +1 -1
- package/dist/interactions/actions/drawnBoxes.js +31 -0
- package/dist/interactions/actions/drawnBoxes.js.map +1 -0
- package/dist/interactions/actions/edit-anchors/action.js +248 -72
- package/dist/interactions/actions/edit-anchors/action.js.map +1 -1
- package/dist/interactions/actions/edit-anchors/extensionDrags.js +50 -0
- package/dist/interactions/actions/edit-anchors/extensionDrags.js.map +1 -0
- package/dist/interactions/actions/edit-anchors/geometry.js +74 -47
- package/dist/interactions/actions/edit-anchors/geometry.js.map +1 -1
- package/dist/interactions/actions/edit-anchors/handleDrag.js +101 -0
- package/dist/interactions/actions/edit-anchors/handleDrag.js.map +1 -0
- package/dist/interactions/actions/edit-anchors/handles.js +41 -27
- package/dist/interactions/actions/edit-anchors/handles.js.map +1 -1
- package/dist/interactions/actions/edit-anchors/params.js +12 -0
- package/dist/interactions/actions/edit-anchors/params.js.map +1 -0
- package/dist/interactions/actions/edit-anchors/preview.js +61 -19
- package/dist/interactions/actions/edit-anchors/preview.js.map +1 -1
- package/dist/interactions/actions/edit-anchors/symmetry.js +12 -7
- package/dist/interactions/actions/edit-anchors/symmetry.js.map +1 -1
- package/dist/interactions/actions/flip/action.js +119 -61
- package/dist/interactions/actions/flip/action.js.map +1 -1
- package/dist/interactions/actions/flip/helpers.js +69 -36
- package/dist/interactions/actions/flip/helpers.js.map +1 -1
- package/dist/interactions/actions/geometryProjection.js +17 -12
- package/dist/interactions/actions/geometryProjection.js.map +1 -1
- package/dist/interactions/actions/gestureFrames.js +20 -11
- package/dist/interactions/actions/gestureFrames.js.map +1 -1
- package/dist/interactions/actions/gestureLifecycle.js +93 -48
- package/dist/interactions/actions/gestureLifecycle.js.map +1 -1
- package/dist/interactions/actions/hitSelection.js +6 -4
- package/dist/interactions/actions/hitSelection.js.map +1 -1
- package/dist/interactions/actions/insert/action.js +71 -42
- package/dist/interactions/actions/insert/action.js.map +1 -1
- package/dist/interactions/actions/insert/commit.js +44 -22
- package/dist/interactions/actions/insert/commit.js.map +1 -1
- package/dist/interactions/actions/insert/extras.js +60 -38
- package/dist/interactions/actions/insert/extras.js.map +1 -1
- package/dist/interactions/actions/insert/frame.js +58 -39
- package/dist/interactions/actions/insert/frame.js.map +1 -1
- package/dist/interactions/actions/insert/geometry.js +29 -25
- package/dist/interactions/actions/insert/geometry.js.map +1 -1
- package/dist/interactions/actions/insert/placeAction.js +108 -0
- package/dist/interactions/actions/insert/placeAction.js.map +1 -0
- package/dist/interactions/actions/insert/repositionAction.js +26 -11
- package/dist/interactions/actions/insert/repositionAction.js.map +1 -1
- package/dist/interactions/actions/insert/rotateAction.js +19 -8
- package/dist/interactions/actions/insert/rotateAction.js.map +1 -1
- package/dist/interactions/actions/insert/session.js +57 -41
- package/dist/interactions/actions/insert/session.js.map +1 -1
- package/dist/interactions/actions/insert/shape.js +83 -25
- package/dist/interactions/actions/insert/shape.js.map +1 -1
- package/dist/interactions/actions/lasso-select/action.js +160 -100
- package/dist/interactions/actions/lasso-select/action.js.map +1 -1
- package/dist/interactions/actions/lasso-select/behaviors/selectFromLasso.js +44 -25
- package/dist/interactions/actions/lasso-select/behaviors/selectFromLasso.js.map +1 -1
- package/dist/interactions/actions/move/action.js +87 -52
- package/dist/interactions/actions/move/action.js.map +1 -1
- package/dist/interactions/actions/move/behaviors/layoutDrop.js +56 -36
- package/dist/interactions/actions/move/behaviors/layoutDrop.js.map +1 -1
- package/dist/interactions/actions/move/behaviors/reparentOnDrop.js +20 -10
- package/dist/interactions/actions/move/behaviors/reparentOnDrop.js.map +1 -1
- package/dist/interactions/actions/move/behaviors/snapBackOrDelete.js +40 -24
- package/dist/interactions/actions/move/behaviors/snapBackOrDelete.js.map +1 -1
- package/dist/interactions/actions/move/behaviors/snapToContainer.js +102 -64
- package/dist/interactions/actions/move/behaviors/snapToContainer.js.map +1 -1
- package/dist/interactions/actions/move/capture.js +103 -78
- package/dist/interactions/actions/move/capture.js.map +1 -1
- package/dist/interactions/actions/move/commit/index.js +43 -34
- package/dist/interactions/actions/move/commit/index.js.map +1 -1
- package/dist/interactions/actions/move/commit/layoutDrop.js +43 -32
- package/dist/interactions/actions/move/commit/layoutDrop.js.map +1 -1
- package/dist/interactions/actions/move/commit/layoutRelease.js +97 -77
- package/dist/interactions/actions/move/commit/layoutRelease.js.map +1 -1
- package/dist/interactions/actions/move/commit/rebase.js +16 -13
- package/dist/interactions/actions/move/commit/rebase.js.map +1 -1
- package/dist/interactions/actions/move/commit/reparent.js +83 -57
- package/dist/interactions/actions/move/commit/reparent.js.map +1 -1
- package/dist/interactions/actions/move/delta.js +58 -36
- package/dist/interactions/actions/move/delta.js.map +1 -1
- package/dist/interactions/actions/move/frame.js +72 -35
- package/dist/interactions/actions/move/frame.js.map +1 -1
- package/dist/interactions/actions/move/gestureAdapter.js +30 -20
- package/dist/interactions/actions/move/gestureAdapter.js.map +1 -1
- package/dist/interactions/actions/move/landedDescendants.js +40 -25
- package/dist/interactions/actions/move/landedDescendants.js.map +1 -1
- package/dist/interactions/actions/move/layout/container.js +92 -72
- package/dist/interactions/actions/move/layout/container.js.map +1 -1
- package/dist/interactions/actions/move/layout/dragged.js +61 -39
- package/dist/interactions/actions/move/layout/dragged.js.map +1 -1
- package/dist/interactions/actions/move/layout/dropPass.js +136 -94
- package/dist/interactions/actions/move/layout/dropPass.js.map +1 -1
- package/dist/interactions/actions/move/layout/exits.js +58 -30
- package/dist/interactions/actions/move/layout/exits.js.map +1 -1
- package/dist/interactions/actions/move/layout/glide.js +55 -34
- package/dist/interactions/actions/move/layout/glide.js.map +1 -1
- package/dist/interactions/actions/move/session.js +85 -56
- package/dist/interactions/actions/move/session.js.map +1 -1
- package/dist/interactions/actions/move/translate.js +58 -43
- package/dist/interactions/actions/move/translate.js.map +1 -1
- package/dist/interactions/actions/outlines/createOutlines.js +28 -20
- package/dist/interactions/actions/outlines/createOutlines.js.map +1 -1
- package/dist/interactions/actions/outlines/createOutlinesAction.js +43 -31
- package/dist/interactions/actions/outlines/createOutlinesAction.js.map +1 -1
- package/dist/interactions/actions/outlines/outlineStroke.js +68 -45
- package/dist/interactions/actions/outlines/outlineStroke.js.map +1 -1
- package/dist/interactions/actions/outlines/outlineStrokeAction.js +24 -19
- package/dist/interactions/actions/outlines/outlineStrokeAction.js.map +1 -1
- package/dist/interactions/actions/outlines/replaceWithPaths.js +57 -42
- package/dist/interactions/actions/outlines/replaceWithPaths.js.map +1 -1
- package/dist/interactions/actions/outlines/strokeRegion.js +37 -22
- package/dist/interactions/actions/outlines/strokeRegion.js.map +1 -1
- package/dist/interactions/actions/outlines/useCreateOutlinesAdapter.js +8 -5
- package/dist/interactions/actions/outlines/useCreateOutlinesAdapter.js.map +1 -1
- package/dist/interactions/actions/pathCommands/cutJoin.js +119 -72
- package/dist/interactions/actions/pathCommands/cutJoin.js.map +1 -1
- package/dist/interactions/actions/pathCommands/livePathEdit.js +74 -40
- package/dist/interactions/actions/pathCommands/livePathEdit.js.map +1 -1
- package/dist/interactions/actions/pathCommands/pathNodes.js +91 -82
- package/dist/interactions/actions/pathCommands/pathNodes.js.map +1 -1
- package/dist/interactions/actions/pathCommands/simplifyOffset.js +52 -28
- package/dist/interactions/actions/pathCommands/simplifyOffset.js.map +1 -1
- package/dist/interactions/actions/pathGestureTags.js +29 -0
- package/dist/interactions/actions/pathGestureTags.js.map +1 -0
- package/dist/interactions/actions/planeInput.js +198 -123
- package/dist/interactions/actions/planeInput.js.map +1 -1
- package/dist/interactions/actions/pointerState.js +12 -7
- package/dist/interactions/actions/pointerState.js.map +1 -1
- package/dist/interactions/actions/poseDescriptorDep.js +24 -14
- package/dist/interactions/actions/poseDescriptorDep.js.map +1 -1
- package/dist/interactions/actions/poseFrame.js +45 -28
- package/dist/interactions/actions/poseFrame.js.map +1 -1
- package/dist/interactions/actions/resize/action.js +68 -39
- package/dist/interactions/actions/resize/action.js.map +1 -1
- package/dist/interactions/actions/resize/aspect.js +44 -0
- package/dist/interactions/actions/resize/aspect.js.map +1 -0
- package/dist/interactions/actions/resize/behaviors/clampMinSize.js +38 -13
- package/dist/interactions/actions/resize/behaviors/clampMinSize.js.map +1 -1
- package/dist/interactions/actions/resize/boxFrame.js +15 -11
- package/dist/interactions/actions/resize/boxFrame.js.map +1 -1
- package/dist/interactions/actions/resize/capture.js +105 -62
- package/dist/interactions/actions/resize/capture.js.map +1 -1
- package/dist/interactions/actions/resize/commit.js +75 -56
- package/dist/interactions/actions/resize/commit.js.map +1 -1
- package/dist/interactions/actions/resize/cornerHandles.js +154 -17
- package/dist/interactions/actions/resize/cornerHandles.js.map +1 -1
- package/dist/interactions/actions/resize/frame.js +133 -66
- package/dist/interactions/actions/resize/frame.js.map +1 -1
- package/dist/interactions/actions/resize/minimum.js +35 -0
- package/dist/interactions/actions/resize/minimum.js.map +1 -0
- package/dist/interactions/actions/resize/replay.js +40 -30
- package/dist/interactions/actions/resize/replay.js.map +1 -1
- package/dist/interactions/actions/resize/ruleBounds.js +8 -5
- package/dist/interactions/actions/resize/ruleBounds.js.map +1 -1
- package/dist/interactions/actions/resize/session.js +95 -50
- package/dist/interactions/actions/resize/session.js.map +1 -1
- package/dist/interactions/actions/resolveOverlays.js +48 -33
- package/dist/interactions/actions/resolveOverlays.js.map +1 -1
- package/dist/interactions/actions/resolvePreviews.js +63 -46
- package/dist/interactions/actions/resolvePreviews.js.map +1 -1
- package/dist/interactions/actions/rotate/action.js +68 -42
- package/dist/interactions/actions/rotate/action.js.map +1 -1
- package/dist/interactions/actions/rotate/commit.js +39 -31
- package/dist/interactions/actions/rotate/commit.js.map +1 -1
- package/dist/interactions/actions/rotate/frame.js +75 -47
- package/dist/interactions/actions/rotate/frame.js.map +1 -1
- package/dist/interactions/actions/rotate/geometry.js +36 -24
- package/dist/interactions/actions/rotate/geometry.js.map +1 -1
- package/dist/interactions/actions/rotate/handle.js +28 -15
- package/dist/interactions/actions/rotate/handle.js.map +1 -1
- package/dist/interactions/actions/rotate/replay.js +22 -18
- package/dist/interactions/actions/rotate/replay.js.map +1 -1
- package/dist/interactions/actions/rotate/session.js +115 -76
- package/dist/interactions/actions/rotate/session.js.map +1 -1
- package/dist/interactions/actions/selectionSubtree.js +124 -53
- package/dist/interactions/actions/selectionSubtree.js.map +1 -1
- package/dist/interactions/actions/spatialReference.js +33 -26
- package/dist/interactions/actions/spatialReference.js.map +1 -1
- package/dist/interactions/actions/testUtils.js +53 -0
- package/dist/interactions/actions/testUtils.js.map +1 -0
- package/dist/interactions/actions/transform-again/action.js +50 -35
- package/dist/interactions/actions/transform-again/action.js.map +1 -1
- package/dist/interactions/actions/transform-again/memory.js +32 -21
- package/dist/interactions/actions/transform-again/memory.js.map +1 -1
- package/dist/interactions/actions/useActionSet.js +83 -0
- package/dist/interactions/actions/useActionSet.js.map +1 -0
- package/dist/interactions/actions/useStandardActions.js +23 -165
- package/dist/interactions/actions/useStandardActions.js.map +1 -1
- package/dist/interactions/gestures/dragGesture/dragGesture.js +109 -68
- package/dist/interactions/gestures/dragGesture/dragGesture.js.map +1 -1
- package/dist/interactions/gestures/dragGesture/dragPointOf.js +17 -10
- package/dist/interactions/gestures/dragGesture/dragPointOf.js.map +1 -1
- package/dist/interactions/gestures/dragRadial/dragRadial.js +129 -93
- package/dist/interactions/gestures/dragRadial/dragRadial.js.map +1 -1
- package/dist/interactions/gestures/dragRect/dragRect.js +155 -111
- package/dist/interactions/gestures/dragRect/dragRect.js.map +1 -1
- package/dist/interactions/gestures/handleDrag/handleDrag.js +52 -30
- package/dist/interactions/gestures/handleDrag/handleDrag.js.map +1 -1
- package/dist/interactions/gestures/pointerDrag/pointerDrag.js +168 -97
- package/dist/interactions/gestures/pointerDrag/pointerDrag.js.map +1 -1
- package/dist/interactions/gestures/shared/originProjection.js +32 -25
- package/dist/interactions/gestures/shared/originProjection.js.map +1 -1
- package/dist/interactions/gestures/shared/screenTolerance.js +26 -17
- package/dist/interactions/gestures/shared/screenTolerance.js.map +1 -1
- package/dist/interactions/gestures/thresholdDrag/thresholdDrag.js +39 -21
- package/dist/interactions/gestures/thresholdDrag/thresholdDrag.js.map +1 -1
- package/dist/kitSettingsSchema.js +80 -0
- package/dist/kitSettingsSchema.js.map +1 -0
- package/dist/{math-CYUjoyyU.d.ts → math-CrJULaZI.d.ts} +5 -6
- package/dist/math.d.ts +4 -5
- package/dist/math.js +7 -6
- package/dist/mesh.js +3 -2
- package/dist/move.d.ts +7 -6
- package/dist/move.js +4 -3
- package/dist/{originProjection-CoNVpITV.d.ts → options-p9GZMXbY.d.ts} +4 -27
- package/dist/originProjection-gY0jb4Wb.d.ts +24 -0
- package/dist/patterns-builtin.js +3 -2
- package/dist/{poseDescriptor-Bqk-11Rl.d.ts → poseDescriptor-DN2yfnq_.d.ts} +7 -7
- package/dist/renderer.d.ts +1 -1
- package/dist/renderer.js +3 -2
- package/dist/resize.d.ts +10 -28
- package/dist/resize.js +6 -7
- package/dist/routing.js +3 -2
- package/dist/style.css +88 -1
- package/dist/test-hook/createTestHook.js +23 -20
- package/dist/test-hook/createTestHook.js.map +1 -1
- package/dist/test-hook/install.js +32 -13
- package/dist/test-hook/install.js.map +1 -1
- package/dist/test-hook/useTestHook.js +22 -16
- package/dist/test-hook/useTestHook.js.map +1 -1
- package/dist/test-seams.d.ts +164 -1
- package/dist/test-seams.js +8 -3
- package/dist/tools/builtin/bone/boneActions.js +96 -70
- package/dist/tools/builtin/bone/boneActions.js.map +1 -1
- package/dist/tools/builtin/bone/boneOverlay.js +49 -36
- package/dist/tools/builtin/bone/boneOverlay.js.map +1 -1
- package/dist/tools/builtin/bone/placedRig.js +18 -14
- package/dist/tools/builtin/bone/placedRig.js.map +1 -1
- package/dist/tools/builtin/bone/rigEditState.js +22 -13
- package/dist/tools/builtin/bone/rigEditState.js.map +1 -1
- package/dist/tools/builtin/bone/useBoneTool.js +68 -41
- package/dist/tools/builtin/bone/useBoneTool.js.map +1 -1
- package/dist/tools/builtin/ellipse/useEllipseTool.js +22 -17
- package/dist/tools/builtin/ellipse/useEllipseTool.js.map +1 -1
- package/dist/tools/builtin/eyedropper/useEyedropperTool.js +44 -28
- package/dist/tools/builtin/eyedropper/useEyedropperTool.js.map +1 -1
- package/dist/tools/builtin/hand/dragPanContribution.js +12 -7
- package/dist/tools/builtin/hand/dragPanContribution.js.map +1 -1
- package/dist/tools/builtin/hand/useHandTool.js +21 -13
- package/dist/tools/builtin/hand/useHandTool.js.map +1 -1
- package/dist/tools/builtin/image/useImageTool.js +28 -19
- package/dist/tools/builtin/image/useImageTool.js.map +1 -1
- package/dist/tools/builtin/lasso/useLassoTool.js +48 -36
- package/dist/tools/builtin/lasso/useLassoTool.js.map +1 -1
- package/dist/tools/builtin/line/useLineTool.js +24 -17
- package/dist/tools/builtin/line/useLineTool.js.map +1 -1
- package/dist/tools/builtin/measure/useMeasureTool.js +84 -0
- package/dist/tools/builtin/measure/useMeasureTool.js.map +1 -0
- package/dist/tools/builtin/pen/penHandle.js +60 -0
- package/dist/tools/builtin/pen/penHandle.js.map +1 -0
- package/dist/tools/builtin/pen/usePenTool.js +461 -303
- package/dist/tools/builtin/pen/usePenTool.js.map +1 -1
- package/dist/tools/builtin/pencil/usePencilTool.js +20 -15
- package/dist/tools/builtin/pencil/usePencilTool.js.map +1 -1
- package/dist/tools/builtin/pickTopMostHit.js +51 -31
- package/dist/tools/builtin/pickTopMostHit.js.map +1 -1
- package/dist/tools/builtin/polygon/usePolygonTool.js +45 -28
- package/dist/tools/builtin/polygon/usePolygonTool.js.map +1 -1
- package/dist/tools/builtin/rect/useRectTool.js +24 -16
- package/dist/tools/builtin/rect/useRectTool.js.map +1 -1
- package/dist/tools/builtin/select/adapterPointQuery.js +47 -30
- package/dist/tools/builtin/select/adapterPointQuery.js.map +1 -1
- package/dist/tools/builtin/select/selectionContributions.js +94 -56
- package/dist/tools/builtin/select/selectionContributions.js.map +1 -1
- package/dist/tools/builtin/select/useSelectTool.js +155 -108
- package/dist/tools/builtin/select/useSelectTool.js.map +1 -1
- package/dist/tools/builtin/shared/insertToolOptions.js +5 -4
- package/dist/tools/builtin/shared/insertToolOptions.js.map +1 -1
- package/dist/tools/builtin/shared/pointerFollower.js +15 -8
- package/dist/tools/builtin/shared/pointerFollower.js.map +1 -1
- package/dist/tools/builtin/slice/useSliceTool.js +148 -101
- package/dist/tools/builtin/slice/useSliceTool.js.map +1 -1
- package/dist/tools/builtin/star/useStarTool.js +48 -31
- package/dist/tools/builtin/star/useStarTool.js.map +1 -1
- package/dist/tools/builtin/sticky/stickyNode.js +49 -0
- package/dist/tools/builtin/sticky/stickyNode.js.map +1 -0
- package/dist/tools/builtin/sticky/useStickyTool.js +86 -0
- package/dist/tools/builtin/sticky/useStickyTool.js.map +1 -0
- package/dist/tools/builtin/text/useTextTool.js +59 -34
- package/dist/tools/builtin/text/useTextTool.js.map +1 -1
- package/dist/tools/builtin/weight/useWeightTool.js +66 -42
- package/dist/tools/builtin/weight/useWeightTool.js.map +1 -1
- package/dist/tools/builtin/weight/weightActions.js +93 -65
- package/dist/tools/builtin/weight/weightActions.js.map +1 -1
- package/dist/tools/builtin/weight/weightOverlay.js +47 -30
- package/dist/tools/builtin/weight/weightOverlay.js.map +1 -1
- package/dist/tools/overlayBinding.js +7 -5
- package/dist/tools/overlayBinding.js.map +1 -1
- package/dist/tools/useKeybindings.js +62 -46
- package/dist/tools/useKeybindings.js.map +1 -1
- package/dist/{types-DBbbCy0i.d.ts → types-CHVXGfYm.d.ts} +5 -5
- package/dist/util/color.js +39 -18
- package/dist/util/color.js.map +1 -1
- package/dist/util/paint.js +93 -38
- package/dist/util/paint.js.map +1 -1
- package/dist/version.js +11 -3
- package/dist/version.js.map +1 -1
- package/package.json +35 -23
- package/dist/canvas/SceneCanvas/GestureDispatcherMounter.js +0 -126
- package/dist/canvas/SceneCanvas/GestureDispatcherMounter.js.map +0 -1
- package/dist/canvas/SceneCanvas/StandardActionsRegistrar.js +0 -55
- package/dist/canvas/SceneCanvas/StandardActionsRegistrar.js.map +0 -1
- package/dist/canvas/SceneCanvas/ToolKeybindingsMounter.js +0 -16
- package/dist/canvas/SceneCanvas/ToolKeybindingsMounter.js.map +0 -1
- package/dist/canvas/SceneCanvas/isDev.js +0 -12
- package/dist/canvas/SceneCanvas/isDev.js.map +0 -1
- package/dist/canvas/SceneCanvas/useViewLayerGate.js +0 -20
- package/dist/canvas/SceneCanvas/useViewLayerGate.js.map +0 -1
- package/dist/cornerHandles-BSKbyuvQ.d.ts +0 -104
- package/dist/icons/ArrowIcon.js +0 -23
- package/dist/icons/ArrowIcon.js.map +0 -1
- package/dist/icons/EllipseIcon.js +0 -21
- package/dist/icons/EllipseIcon.js.map +0 -1
- package/dist/icons/EyedropperIcon.js +0 -49
- package/dist/icons/EyedropperIcon.js.map +0 -1
- package/dist/icons/HandIcon.js +0 -59
- package/dist/icons/HandIcon.js.map +0 -1
- package/dist/icons/ImageIcon.js +0 -34
- package/dist/icons/ImageIcon.js.map +0 -1
- package/dist/icons/LassoIcon.js +0 -22
- package/dist/icons/LassoIcon.js.map +0 -1
- package/dist/icons/LineIcon.js +0 -22
- package/dist/icons/LineIcon.js.map +0 -1
- package/dist/icons/PenIcon.js +0 -36
- package/dist/icons/PenIcon.js.map +0 -1
- package/dist/icons/PencilIcon.js +0 -25
- package/dist/icons/PencilIcon.js.map +0 -1
- package/dist/icons/PolygonIcon.js +0 -19
- package/dist/icons/PolygonIcon.js.map +0 -1
- package/dist/icons/RectIcon.js +0 -37
- package/dist/icons/RectIcon.js.map +0 -1
- package/dist/icons/SelectIcon.js +0 -20
- package/dist/icons/SelectIcon.js.map +0 -1
- package/dist/icons/SliceIcon.js +0 -24
- package/dist/icons/SliceIcon.js.map +0 -1
- package/dist/icons/StarIcon.js +0 -19
- package/dist/icons/StarIcon.js.map +0 -1
- package/dist/icons/TextIcon.js +0 -19
- package/dist/icons/TextIcon.js.map +0 -1
- package/dist/icons/UnknownIcon.js +0 -33
- package/dist/icons/UnknownIcon.js.map +0 -1
- package/dist/icons/_base.js +0 -12
- package/dist/icons/_base.js.map +0 -1
- package/dist/interactions/actions/actionShortcuts.js +0 -32
- package/dist/interactions/actions/actionShortcuts.js.map +0 -1
- package/dist/interactions/actions/defaults/icons/actionGlyphIcons.js +0 -40
- package/dist/interactions/actions/defaults/icons/actionGlyphIcons.js.map +0 -1
- package/dist/interactions/actions/defaults/icons/actionGlyphs.js +0 -10
- package/dist/interactions/actions/defaults/icons/actionGlyphs.js.map +0 -1
- package/dist/interactions/actions/defaults/icons/alignIcons.js +0 -173
- package/dist/interactions/actions/defaults/icons/alignIcons.js.map +0 -1
- package/dist/interactions/actions/defaults/icons/anchorIcons.js +0 -75
- package/dist/interactions/actions/defaults/icons/anchorIcons.js.map +0 -1
- package/dist/interactions/actions/defaults/icons/booleanIcons.js +0 -194
- package/dist/interactions/actions/defaults/icons/booleanIcons.js.map +0 -1
- package/dist/interactions/actions/defaults/icons/distributeIcons.js +0 -63
- package/dist/interactions/actions/defaults/icons/distributeIcons.js.map +0 -1
- package/dist/interactions/actions/defaults/icons/editIcons.js +0 -307
- package/dist/interactions/actions/defaults/icons/editIcons.js.map +0 -1
- package/dist/interactions/actions/defaults/icons/outlineIcons.js +0 -91
- package/dist/interactions/actions/defaults/icons/outlineIcons.js.map +0 -1
- package/dist/interactions/actions/resize/behaviors/index.js +0 -8
- package/dist/interactions/actions/resize/behaviors/index.js.map +0 -1
- package/dist/interactions/actions/resize/behaviors/lockAspect.js +0 -24
- package/dist/interactions/actions/resize/behaviors/lockAspect.js.map +0 -1
- package/dist/interactions/actions/resize/pointSnap.js +0 -111
- package/dist/interactions/actions/resize/pointSnap.js.map +0 -1
- package/dist/interactions/actions/rotate/behaviors/index.js +0 -7
- package/dist/interactions/actions/rotate/behaviors/index.js.map +0 -1
- package/dist/interactions/actions/rotate/behaviors/snapRotation.js +0 -12
- package/dist/interactions/actions/rotate/behaviors/snapRotation.js.map +0 -1
- package/dist/interactions/gestures/shared/snap.js +0 -24
- package/dist/interactions/gestures/shared/snap.js.map +0 -1
- package/dist/test-seams-D0pyV3pR.d.ts +0 -149
- package/dist/util/constrainTo45.js +0 -17
- package/dist/util/constrainTo45.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dispatcherGestureBounds.js","names":[
|
|
1
|
+
{"version":3,"file":"dispatcherGestureBounds.js","names":[],"sources":["../../../src/canvas/SceneCanvas/dispatcherGestureBounds.ts"],"sourcesContent":["/**\n * The dispatcher side of `<Canvas>`'s {@link GestureSource} seam: `<Canvas>`\n * knows nothing about the gesture dispatcher, so `<SceneCanvas>` wires its\n * contribution in from here.\n *\n * `useDispatcherOverlayLayer` paints the same `insertPreview` overlays this\n * reads, and both size them through `insertPreviewExtent`, so the reported\n * bounds and the drawn preview can't disagree.\n */\nimport { overlaysOf, type Dispatcher } from '@weasel-js/routing';\nimport type { Bounds } from 'core/viewport/fitViewToBounds';\nimport type { GestureSource } from '../gestureBounds';\nimport type { OngoingOverlay } from '@weasel-js/routing';\nimport { insertPreviewExtent } from '../insertPreviewExtent';\n\n/**\n * Ids every in-flight handle is previewing.\n *\n * Deliberately *not* `previewIdsExtra`: that one honors\n * `previewHidesSource: false` because its job is deciding whose committed\n * paint to suppress. A clone ghost hides nothing yet still proposes content\n * at the drag target, so gesture bounds must count it.\n */\nexport function dispatcherGestureIds(dispatcher: Dispatcher | null | undefined): string[] {\n const out: string[] = [];\n if (!dispatcher) return out;\n for (const handle of dispatcher.getInFlightHandles()) {\n const ids = handle.previewIds?.();\n if (!ids) continue;\n for (const id of ids) out.push(id);\n }\n return out;\n}\n\n/**\n * World-space AABBs of in-flight gestures with no scene node yet — the\n * `insertPreview` overlay variant, sized by {@link insertPreviewExtent}.\n *\n * Only `insertPreview`. `marquee`, `lasso`, and `polyline` are in-flight\n * gestures with geometry too, but they do not *propose content*: a consumer\n * sizing itself to the gesture must not grow because the user swept a\n * selection rectangle.\n */\nexport function dispatcherInsertBounds(dispatcher: Dispatcher | null | undefined): Bounds[] {\n const out: Bounds[] = [];\n if (!dispatcher) return out;\n for (const handle of dispatcher.getInFlightHandles()) {\n for (const ov of overlaysOf(handle)) {\n if (ov.kind !== 'insertPreview') continue;\n const b = insertPreviewExtent(ov).bounds;\n // A zero-area extent is the pointerdown frame before the first move. A\n // pencil gesture can be meaningful at near-zero AABB, so it reports its\n // point rather than nothing.\n if (b.width === 0 && b.height === 0 && ov.shape !== 'pencil') continue;\n out.push({ x: b.x, y: b.y, width: b.width, height: b.height });\n }\n }\n return out;\n}\n\nconst NO_OP_UNSUBSCRIBE = (): void => {};\n\n/**\n * Bundle a dispatcher into the {@link GestureSource} `<Canvas>` consumes.\n * The getter lets the source be built once and keep pointing at the live\n * dispatcher across re-renders. A `null` dispatcher yields the empty answers.\n */\nexport function createGestureSource(\n getDispatcher: () => Dispatcher | null | undefined,\n): GestureSource {\n return {\n ids: () => dispatcherGestureIds(getDispatcher()),\n bounds: () => dispatcherInsertBounds(getDispatcher()),\n subscribe: (fn) => getDispatcher()?.subscribe(fn) ?? NO_OP_UNSUBSCRIBE,\n getVersion: () => getDispatcher()?.getVersion() ?? 0,\n previewSources: () => [...(getDispatcher()?.getInFlightHandles() ?? [])],\n overlays: () => {\n const out: OngoingOverlay[] = [];\n for (const handle of getDispatcher()?.getInFlightHandles() ?? []) out.push(...overlaysOf(handle));\n return out;\n },\n };\n}\n\n/**\n * The dispatcher's contribution to a view's overlay-aware lookups: which ids\n * an in-flight handle hides behind a ghost, and the pose it proposes for one.\n */\nexport function createDispatcherPreviewSources(\n getDispatcher: () => Dispatcher | null | undefined,\n): {\n previewIdsExtra: () => string[];\n previewPoseExtra: (id: string) => unknown;\n} {\n return {\n // Handles that set `previewHidesSource: false` (clone, etc.) opt out —\n // their ghost still paints, but the source stays at its committed home.\n previewIdsExtra: () => {\n const out: string[] = [];\n for (const handle of getDispatcher()?.getInFlightHandles() ?? []) {\n if (handle.previewHidesSource === false) continue;\n const ids = handle.previewIds?.();\n if (!ids) continue;\n for (const id of ids) out.push(id);\n }\n return out;\n },\n previewPoseExtra: (id: string) => {\n for (const handle of getDispatcher()?.getInFlightHandles() ?? []) {\n const p = handle.previewPose?.(id);\n if (p != null) return p;\n }\n return null;\n },\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAuBA,SAAgB,qBAAqB,YAAqD;CACxF,MAAM,MAAgB,CAAC;CACvB,IAAI,CAAC,YAAY,OAAO;CACxB,KAAK,MAAM,UAAU,WAAW,mBAAmB,GAAG;EACpD,MAAM,MAAM,OAAO,aAAa;EAChC,IAAI,CAAC,KAAK;EACV,KAAK,MAAM,MAAM,KAAK,IAAI,KAAK,EAAE;CACnC;CACA,OAAO;AACT;;;;;;;;;;AAWA,SAAgB,uBAAuB,YAAqD;CAC1F,MAAM,MAAgB,CAAC;CACvB,IAAI,CAAC,YAAY,OAAO;CACxB,KAAK,MAAM,UAAU,WAAW,mBAAmB,GACjD,KAAK,MAAM,MAAM,WAAW,MAAM,GAAG;EACnC,IAAI,GAAG,SAAS,iBAAiB;EACjC,MAAM,IAAI,oBAAoB,EAAE,CAAC,CAAC;EAIlC,IAAI,EAAE,UAAU,KAAK,EAAE,WAAW,KAAK,GAAG,UAAU,UAAU;EAC9D,IAAI,KAAK;GAAE,GAAG,EAAE;GAAG,GAAG,EAAE;GAAG,OAAO,EAAE;GAAO,QAAQ,EAAE;EAAO,CAAC;CAC/D;CAEF,OAAO;AACT;AAEA,IAAM,0BAAgC,CAAC;;;;;;AAOvC,SAAgB,oBACd,eACe;CACf,OAAO;EACL,WAAW,qBAAqB,cAAc,CAAC;EAC/C,cAAc,uBAAuB,cAAc,CAAC;EACpD,YAAY,OAAO,cAAc,CAAC,EAAE,UAAU,EAAE,KAAK;EACrD,kBAAkB,cAAc,CAAC,EAAE,WAAW,KAAK;EACnD,sBAAsB,CAAC,GAAI,cAAc,CAAC,EAAE,mBAAmB,KAAK,CAAC,CAAE;EACvE,gBAAgB;GACd,MAAM,MAAwB,CAAC;GAC/B,KAAK,MAAM,UAAU,cAAc,CAAC,EAAE,mBAAmB,KAAK,CAAC,GAAG,IAAI,KAAK,GAAG,WAAW,MAAM,CAAC;GAChG,OAAO;EACT;CACF;AACF;;;;;AAMA,SAAgB,+BACd,eAIA;CACA,OAAO;EAGL,uBAAuB;GACrB,MAAM,MAAgB,CAAC;GACvB,KAAK,MAAM,UAAU,cAAc,CAAC,EAAE,mBAAmB,KAAK,CAAC,GAAG;IAChE,IAAI,OAAO,uBAAuB,OAAO;IACzC,MAAM,MAAM,OAAO,aAAa;IAChC,IAAI,CAAC,KAAK;IACV,KAAK,MAAM,MAAM,KAAK,IAAI,KAAK,EAAE;GACnC;GACA,OAAO;EACT;EACA,mBAAmB,OAAe;GAChC,KAAK,MAAM,UAAU,cAAc,CAAC,EAAE,mBAAmB,KAAK,CAAC,GAAG;IAChE,MAAM,IAAI,OAAO,cAAc,EAAE;IACjC,IAAI,KAAK,MAAM,OAAO;GACxB;GACA,OAAO;EACT;CACF;AACF"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { never } from "../../features/chrome-caps/conditions.js";
|
|
2
|
+
|
|
3
3
|
//#region src/canvas/SceneCanvas/features.ts
|
|
4
|
-
|
|
4
|
+
/** Every name `<SceneCanvas features>` accepts, each composite after the
|
|
5
|
+
* presets it names. */
|
|
6
|
+
var SCENE_CANVAS_FEATURES = [
|
|
5
7
|
"view",
|
|
6
8
|
"select",
|
|
7
9
|
"outline",
|
|
@@ -15,114 +17,89 @@ var i = [
|
|
|
15
17
|
"paths",
|
|
16
18
|
"ingest",
|
|
17
19
|
"draw"
|
|
18
|
-
], a = {
|
|
19
|
-
view: {
|
|
20
|
-
actions: ["viewport.dragPan", "viewport.pinchZoom"],
|
|
21
|
-
tools: ["hand"]
|
|
22
|
-
},
|
|
23
|
-
select: {
|
|
24
|
-
actions: [
|
|
25
|
-
"areaSelect",
|
|
26
|
-
"clearSelection",
|
|
27
|
-
"lassoSelect"
|
|
28
|
-
],
|
|
29
|
-
tools: ["select"]
|
|
30
|
-
},
|
|
31
|
-
outline: {
|
|
32
|
-
actions: [],
|
|
33
|
-
chrome: ["selection.outline"]
|
|
34
|
-
},
|
|
35
|
-
resize: {
|
|
36
|
-
actions: ["resize"],
|
|
37
|
-
ambient: () => t(),
|
|
38
|
-
chrome: ["selection.resize-handles"]
|
|
39
|
-
},
|
|
40
|
-
rotate: {
|
|
41
|
-
actions: ["rotate"],
|
|
42
|
-
ambient: ({ rotate: e }) => n({ rotate: e }),
|
|
43
|
-
chrome: ["selection.rotation-handle"]
|
|
44
|
-
},
|
|
45
|
-
move: {
|
|
46
|
-
actions: ["move", "clone"],
|
|
47
|
-
ambient: ({ move: t }) => e({ move: t })
|
|
48
|
-
},
|
|
49
|
-
edit: { actions: [
|
|
50
|
-
"escape",
|
|
51
|
-
"cancelGesture",
|
|
52
|
-
"selectAll",
|
|
53
|
-
"duplicate",
|
|
54
|
-
"transformAgain",
|
|
55
|
-
"delete",
|
|
56
|
-
"group",
|
|
57
|
-
"ungroup",
|
|
58
|
-
"undo",
|
|
59
|
-
"redo",
|
|
60
|
-
"nudge.up",
|
|
61
|
-
"nudge.down",
|
|
62
|
-
"nudge.left",
|
|
63
|
-
"nudge.right",
|
|
64
|
-
"clipboard.cut",
|
|
65
|
-
"clipboard.copy",
|
|
66
|
-
"clipboard.paste",
|
|
67
|
-
"clipboard.pasteEvent",
|
|
68
|
-
"setFill",
|
|
69
|
-
"setStroke",
|
|
70
|
-
"setFillOpacity",
|
|
71
|
-
"setStrokeOpacity"
|
|
72
|
-
] },
|
|
73
|
-
arrange: { actions: [
|
|
74
|
-
"flip",
|
|
75
|
-
"reorder.forward",
|
|
76
|
-
"reorder.backward",
|
|
77
|
-
"align.left",
|
|
78
|
-
"align.centerX",
|
|
79
|
-
"align.right",
|
|
80
|
-
"align.top",
|
|
81
|
-
"align.centerY",
|
|
82
|
-
"align.bottom",
|
|
83
|
-
"distribute.horizontal",
|
|
84
|
-
"distribute.vertical"
|
|
85
|
-
] },
|
|
86
|
-
paths: { actions: /* @__PURE__ */ "pathfinder.union,pathfinder.subtract,pathfinder.intersect,pathfinder.exclude,pathfinder.divide,pathfinder.crop,pathfinder.trim,pathfinder.merge,createOutlines,outlineStroke,editAnchors,enterPathEdit,exitPathEdit,insertPathAnchor,bendSegment,nudgeAnchors.up,nudgeAnchors.down,nudgeAnchors.left,nudgeAnchors.right,deleteAnchors,cutPathAtAnchor,marqueeAnchors,selectAnchor,retractHandles,makeHandlesSymmetric,averageAnchors,joinAnchors,simplifyPath,offsetPath,snipAtCrossings,joinPaths".split(",") },
|
|
87
|
-
ingest: { actions: ["ingest"] }
|
|
88
|
-
}, o = Object.keys(a), s = {
|
|
89
|
-
pick: ["select", "outline"],
|
|
90
|
-
transform: ["resize", "rotate"],
|
|
91
|
-
draw: o
|
|
92
|
-
}, c = Object.fromEntries(o.map((e) => [e, a[e].actions])), l = [
|
|
93
|
-
"insert",
|
|
94
|
-
"insert.adjustRotation",
|
|
95
|
-
"insert.reposition",
|
|
96
|
-
"enterTextEdit"
|
|
97
20
|
];
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
21
|
+
/**
|
|
22
|
+
* The presets a canvas runs with: names expanded, `includes` pulled in, each
|
|
23
|
+
* preset once, and every one placed ahead of the presets it `refines`. Ties
|
|
24
|
+
* keep the order given. Where names resolve, a `viewport` config turns on the
|
|
25
|
+
* `view` preset, since that prop only configures what `view` turns on.
|
|
26
|
+
*/
|
|
27
|
+
function resolveFeatures(features, named, opts = {}) {
|
|
28
|
+
const listed = [];
|
|
29
|
+
const byId = /* @__PURE__ */ new Map();
|
|
30
|
+
const add = (p) => {
|
|
31
|
+
const held = byId.get(p.id);
|
|
32
|
+
if (held === p) return;
|
|
33
|
+
if (held) throw new Error(`[SceneCanvas] two different presets have the id "${p.id}"`);
|
|
34
|
+
byId.set(p.id, p);
|
|
35
|
+
for (const inner of p.includes ?? []) add(inner);
|
|
36
|
+
listed.push(p);
|
|
37
|
+
};
|
|
38
|
+
for (const f of features ?? []) if (typeof f !== "string") add(f);
|
|
39
|
+
else if (!named) throw new Error(`[SceneCanvas] this canvas resolves no preset names; pass the preset for "${f}"`);
|
|
40
|
+
else if (f in named.composite) for (const b of named.composite[f]) add(named.base[b]);
|
|
41
|
+
else add(named.base[f]);
|
|
42
|
+
if (opts.viewport && named) add(named.base.view);
|
|
43
|
+
const ordered = [];
|
|
44
|
+
const placed = /* @__PURE__ */ new Set();
|
|
45
|
+
const place = (p) => {
|
|
46
|
+
if (placed.has(p.id)) return;
|
|
47
|
+
placed.add(p.id);
|
|
48
|
+
for (const r of listed) if (r.refines?.includes(p.id)) place(r);
|
|
49
|
+
ordered.push(p);
|
|
50
|
+
};
|
|
51
|
+
for (const p of listed) place(p);
|
|
52
|
+
return {
|
|
53
|
+
presets: ordered,
|
|
54
|
+
pathEdit: ordered.flatMap((p) => p.pathEdit ?? []),
|
|
55
|
+
snapSources: ordered.flatMap((p) => p.snapSources ?? []),
|
|
56
|
+
has: (id) => byId.has(id)
|
|
57
|
+
};
|
|
103
58
|
}
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
return t;
|
|
59
|
+
/** The actions the given presets register, in registration order. */
|
|
60
|
+
function presetActions(enabled) {
|
|
61
|
+
return enabled.presets.flatMap((p) => p.actions ?? []);
|
|
108
62
|
}
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
63
|
+
/** The built-in tool ids the given presets mount. */
|
|
64
|
+
function presetBuiltinTools(enabled) {
|
|
65
|
+
const ids = /* @__PURE__ */ new Set();
|
|
66
|
+
for (const p of enabled.presets) for (const t of p.tools ?? []) if (typeof t === "string") ids.add(t);
|
|
67
|
+
return ids;
|
|
113
68
|
}
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
69
|
+
/** The tools of their own the given presets mount, by id. */
|
|
70
|
+
function presetOwnTools(enabled) {
|
|
71
|
+
const out = {};
|
|
72
|
+
for (const p of enabled.presets) for (const t of p.tools ?? []) if (typeof t !== "string") out[t.id] = t;
|
|
73
|
+
return out;
|
|
119
74
|
}
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
75
|
+
/** The given presets' ambient entries and contributions, in the order they are
|
|
76
|
+
* matched. Their `moveBehaviors` follow the ones `options.move` brings. */
|
|
77
|
+
function presetAmbient(enabled, options) {
|
|
78
|
+
const extra = enabled.presets.flatMap((p) => p.moveBehaviors ?? []);
|
|
79
|
+
const move = extra.length === 0 ? options.move : {
|
|
80
|
+
...options.move,
|
|
81
|
+
behaviors: [...options.move?.behaviors ?? [], ...extra]
|
|
82
|
+
};
|
|
83
|
+
const opts = {
|
|
84
|
+
...options,
|
|
85
|
+
move
|
|
86
|
+
};
|
|
87
|
+
return enabled.presets.flatMap((p) => p.ambient ? [p.ambient(opts)] : []);
|
|
88
|
+
}
|
|
89
|
+
/** The given presets' contributions, in preset order. */
|
|
90
|
+
function presetContributions(enabled) {
|
|
91
|
+
return enabled.presets.flatMap((p) => p.contributions ?? []);
|
|
92
|
+
}
|
|
93
|
+
/** The enabled presets' own `chromeRules`, then rules hiding each chrome id
|
|
94
|
+
* in `owned` that no enabled preset turns on. `never` also takes a handle out
|
|
95
|
+
* of hit-testing, so a hidden one cannot be grabbed. */
|
|
96
|
+
function presetChromeRules(enabled, owned) {
|
|
97
|
+
const on = new Set(enabled.presets.flatMap((p) => p.chrome ?? []));
|
|
98
|
+
const rules = Object.assign({}, ...enabled.presets.map((p) => p.chromeRules ?? {}));
|
|
99
|
+
for (const id of owned) if (!on.has(id)) rules[id] = never;
|
|
100
|
+
return rules;
|
|
124
101
|
}
|
|
125
|
-
//#endregion
|
|
126
|
-
export { s as COMPOSITE_FEATURES, c as FEATURE_ACTION_IDS, a as FEATURE_PRESETS, i as SCENE_CANVAS_FEATURES, l as TOOL_DRIVEN_ACTION_IDS, d as featureActionIds, p as featureAmbient, m as featureChromeRules, f as featureToolIds, u as resolveFeatures };
|
|
127
102
|
|
|
103
|
+
//#endregion
|
|
104
|
+
export { SCENE_CANVAS_FEATURES, presetActions, presetAmbient, presetBuiltinTools, presetChromeRules, presetContributions, presetOwnTools, resolveFeatures };
|
|
128
105
|
//# sourceMappingURL=features.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"features.js","names":["SCENE_CANVAS_FEATURES","FEATURE_PRESETS","selectionResizeContribution","selectionRotateContribution","selectionMoveContribution","BASE_FEATURES","COMPOSITE_FEATURES","FEATURE_ACTION_IDS","f","TOOL_DRIVEN_ACTION_IDS","resolveFeatures","out","features","b","opts","featureActionIds","ids","id","featureToolIds","featureAmbient","ambient","options","featureChromeRules","rules","never"],"sources":["../../../src/canvas/SceneCanvas/features.ts"],"sourcesContent":["/**\n * The behavior presets `<SceneCanvas features>` composes. A bare canvas renders\n * its scene and keeps a selection nothing sets; every behavior beyond that is\n * turned on by naming a preset here.\n *\n * A preset is not one of the `packages/core/src/features/<name>/` source\n * directories that `docs/taxonomy.md` calls a feature; the two share a word\n * and nothing else.\n */\nimport { never } from 'features/chrome-caps/conditions';\nimport type { ChromeId, VisibilityRules } from 'features/chrome-caps/types';\nimport type { UseMoveOptions } from 'interactions/actions/move/options';\nimport type { UseRotateOptions } from 'interactions/actions/rotate/options';\nimport {\n selectionMoveContribution,\n selectionResizeContribution,\n selectionRotateContribution,\n} from 'tools/builtin/select/selectionContributions';\nimport type { Contribution } from 'tools/overlayBinding';\nimport type { BuiltinToolId } from './props';\n\n/** A preset that names one behavior and abbreviates nothing. */\nexport type BaseFeature =\n | 'view'\n | 'select'\n | 'outline'\n | 'move'\n | 'resize'\n | 'rotate'\n | 'edit'\n | 'arrange'\n | 'paths'\n | 'ingest';\n\n/** A preset that abbreviates others: `pick` is `select` + `outline`,\n * `transform` is `resize` + `rotate`, and `draw` is every base preset. */\nexport type CompositeFeature = 'pick' | 'transform' | 'draw';\n\n/** A behavior preset for `<SceneCanvas features>`. */\nexport type Feature = BaseFeature | CompositeFeature;\n\n/** Every preset `<SceneCanvas features>` accepts, each composite after the\n * presets it names. */\nexport const SCENE_CANVAS_FEATURES: readonly Feature[] = [\n 'view', 'select', 'outline', 'pick', 'move', 'resize', 'rotate', 'transform',\n 'edit', 'arrange', 'paths', 'ingest', 'draw',\n];\n\n/** What a preset's ambient bindings are built from: the `selectTool` options\n * that configure them. */\nexport interface FeatureBindingOptions {\n move?: UseMoveOptions<unknown>;\n rotate?: UseRotateOptions<unknown>;\n}\n\n/** Everything turning one preset on means. */\nexport interface FeaturePreset {\n /** The kit-standard actions it registers. */\n actions: readonly string[];\n /** The built-in tools it mounts. */\n tools?: readonly BuiltinToolId[];\n /** Its ambient bindings: an always-live entry routing a gesture to its\n * actions under any tool that does not claim the gesture itself. */\n ambient?: (options: FeatureBindingOptions) => Contribution;\n /** The selection chrome that is drawn, and can be grabbed, only while it is on. */\n chrome?: readonly ChromeId[];\n}\n\n/**\n * What each preset turns on.\n *\n * Row order is the order ambient bindings are matched in, and a tie goes to\n * the first: a handle sits over the selected body, so `resize` and `rotate`\n * come before `move`, whose binding matches a handle drag too.\n *\n * Every id `useStandardActions` knows appears under exactly one preset, except\n * the ones in {@link TOOL_DRIVEN_ACTION_IDS}.\n *\n * Cmd/Ctrl+V arrives as a DOM `paste` event, and two presets answer it.\n * `edit` brings `clipboard.pasteEvent`, which pastes nodes a kit canvas\n * copied and nothing else; `ingest` brings `ingest`, which takes those plus\n * images, SVG, files, consumer content handlers, and every OS drop. With both\n * on, `ingest` answers alone: `useStandardActions` holds\n * `clipboard.pasteEvent` back wherever `ingest` is registered.\n */\nexport const FEATURE_PRESETS: Readonly<Record<BaseFeature, FeaturePreset>> = {\n view: {\n actions: ['viewport.dragPan', 'viewport.pinchZoom'],\n tools: ['hand'],\n },\n select: {\n actions: ['areaSelect', 'clearSelection', 'lassoSelect'],\n tools: ['select'],\n },\n outline: {\n actions: [],\n chrome: ['selection.outline'],\n },\n resize: {\n actions: ['resize'],\n ambient: () => selectionResizeContribution(),\n chrome: ['selection.resize-handles'],\n },\n rotate: {\n actions: ['rotate'],\n ambient: ({ rotate }) => selectionRotateContribution({ rotate }),\n chrome: ['selection.rotation-handle'],\n },\n move: {\n actions: ['move', 'clone'],\n ambient: ({ move }) => selectionMoveContribution({ move }),\n },\n edit: {\n actions: [\n 'escape', 'cancelGesture', 'selectAll', 'duplicate', 'transformAgain', 'delete',\n 'group', 'ungroup', 'undo', 'redo',\n 'nudge.up', 'nudge.down', 'nudge.left', 'nudge.right',\n 'clipboard.cut', 'clipboard.copy', 'clipboard.paste', 'clipboard.pasteEvent',\n 'setFill', 'setStroke', 'setFillOpacity', 'setStrokeOpacity',\n ],\n },\n arrange: {\n actions: [\n 'flip',\n 'reorder.forward', 'reorder.backward',\n 'align.left', 'align.centerX', 'align.right',\n 'align.top', 'align.centerY', 'align.bottom',\n 'distribute.horizontal', 'distribute.vertical',\n ],\n },\n paths: {\n actions: [\n 'pathfinder.union', 'pathfinder.subtract', 'pathfinder.intersect',\n 'pathfinder.exclude', 'pathfinder.divide', 'pathfinder.crop', 'pathfinder.trim', 'pathfinder.merge',\n 'createOutlines', 'outlineStroke',\n 'editAnchors', 'enterPathEdit', 'exitPathEdit', 'insertPathAnchor', 'bendSegment',\n 'nudgeAnchors.up', 'nudgeAnchors.down', 'nudgeAnchors.left', 'nudgeAnchors.right',\n 'deleteAnchors', 'cutPathAtAnchor', 'marqueeAnchors', 'selectAnchor',\n 'retractHandles', 'makeHandlesSymmetric', 'averageAnchors', 'joinAnchors',\n 'simplifyPath', 'offsetPath', 'snipAtCrossings', 'joinPaths',\n ],\n },\n ingest: {\n actions: ['ingest'],\n },\n};\n\nconst BASE_FEATURES = Object.keys(FEATURE_PRESETS) as BaseFeature[];\n\n/** The base presets each composite preset turns on. */\nexport const COMPOSITE_FEATURES: Readonly<Record<CompositeFeature, readonly BaseFeature[]>> = {\n pick: ['select', 'outline'],\n transform: ['resize', 'rotate'],\n draw: BASE_FEATURES,\n};\n\n/** The kit-standard actions each preset registers. */\nexport const FEATURE_ACTION_IDS = Object.fromEntries(\n BASE_FEATURES.map((f) => [f, FEATURE_PRESETS[f].actions]),\n) as Readonly<Record<BaseFeature, readonly string[]>>;\n\n/**\n * Kit-standard actions no preset registers: they belong to the tools that bind\n * them. A canvas registers each one whenever a tool it carries names it in a\n * binding — `insert` with any shape tool, `enterTextEdit` with the text tool.\n */\nexport const TOOL_DRIVEN_ACTION_IDS: readonly string[] = ['insert', 'insert.adjustRotation', 'insert.reposition', 'enterTextEdit'];\n\n/**\n * The base presets a canvas runs with: `features` with every composite\n * expanded, plus `view` whenever the canvas was handed a `viewport` config,\n * since that prop only configures what `view` turns on.\n */\nexport function resolveFeatures(\n features: readonly Feature[] | undefined,\n opts: { viewport?: boolean } = {},\n): ReadonlySet<BaseFeature> {\n const out = new Set<BaseFeature>();\n for (const f of features ?? []) {\n if (f in COMPOSITE_FEATURES) {\n for (const b of COMPOSITE_FEATURES[f as CompositeFeature]) out.add(b);\n } else {\n out.add(f as BaseFeature);\n }\n }\n if (opts.viewport) out.add('view');\n return out;\n}\n\n/** The kit-standard action ids the given presets register. */\nexport function featureActionIds(features: ReadonlySet<BaseFeature>): Set<string> {\n const ids = new Set<string>();\n for (const f of features) for (const id of FEATURE_PRESETS[f].actions) ids.add(id);\n return ids;\n}\n\n/** The built-in tools the given presets mount. */\nexport function featureToolIds(features: ReadonlySet<BaseFeature>): Set<BuiltinToolId> {\n const ids = new Set<BuiltinToolId>();\n for (const f of features) for (const id of FEATURE_PRESETS[f].tools ?? []) ids.add(id);\n return ids;\n}\n\n/** The given presets' ambient entries, in the order they are matched. */\nexport function featureAmbient(\n features: ReadonlySet<BaseFeature>,\n options: FeatureBindingOptions,\n): Contribution[] {\n return BASE_FEATURES.flatMap((f) => {\n const ambient = features.has(f) ? FEATURE_PRESETS[f].ambient : undefined;\n return ambient ? [ambient(options)] : [];\n });\n}\n\n/** Rules hiding the chrome of every preset that is not among `features`.\n * `never` also takes a handle out of hit-testing, so a hidden one cannot be\n * grabbed. */\nexport function featureChromeRules(features: ReadonlySet<BaseFeature>): VisibilityRules {\n const rules: VisibilityRules = {};\n for (const f of BASE_FEATURES) {\n if (features.has(f)) continue;\n for (const id of FEATURE_PRESETS[f].chrome ?? []) rules[id] = never;\n }\n return rules;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"features.js","names":[],"sources":["../../../src/canvas/SceneCanvas/features.ts"],"sourcesContent":["/**\n * The behavior presets `<SceneCanvas features>` composes. A bare canvas renders\n * its scene and keeps a selection nothing sets; every behavior beyond that is\n * turned on by a preset.\n *\n * A preset is a {@link FeaturePreset} object: the actions, tools, bindings,\n * chrome, and contributions one behavior brings. Core's own are named\n * (`'select'`, `'draw'`) and live in `namedPresets.ts`; a package ships its\n * own the same way and an app passes the object. Nothing here imports an\n * action, so a canvas reaches only the presets it is handed.\n *\n * A preset is not one of the `packages/core/src/features/<name>/` source\n * directories that `docs/taxonomy.md` calls a feature; the two share a word\n * and nothing else.\n */\nimport type { Action } from '@weasel-js/routing';\nimport { never } from 'features/chrome-caps/conditions';\nimport type { ChromeId, VisibilityRules } from 'features/chrome-caps/types';\nimport type { MoveBehavior } from 'interactions/gestures/types';\nimport type { UseMoveOptions } from 'interactions/actions/move/options';\nimport type { UseRotateOptions } from 'interactions/actions/rotate/options';\nimport type { Contribution, Tool } from 'tools/overlayBinding';\nimport type { PathEditExtension } from 'features/paths/pathEditExtension';\nimport type { SnapSource } from 'features/snap/types';\nimport type { SurfaceContribution } from '../surfaceContribution';\nimport type { BuiltinToolId } from './props';\n\n/** A core preset that names one behavior and abbreviates nothing. */\nexport type BaseFeature =\n | 'view'\n | 'select'\n | 'outline'\n | 'move'\n | 'resize'\n | 'rotate'\n | 'edit'\n | 'arrange'\n | 'paths'\n | 'ingest';\n\n/** A core preset that abbreviates others: `pick` is `select` + `outline`,\n * `transform` is `resize` + `rotate`, and `draw` is every base preset. */\nexport type CompositeFeature = 'pick' | 'transform' | 'draw';\n\n/** A core preset's name, as `<SceneCanvas features>` takes it. */\nexport type Feature = BaseFeature | CompositeFeature;\n\n/** Every name `<SceneCanvas features>` accepts, each composite after the\n * presets it names. */\nexport const SCENE_CANVAS_FEATURES: readonly Feature[] = [\n 'view', 'select', 'outline', 'pick', 'move', 'resize', 'rotate', 'transform',\n 'edit', 'arrange', 'paths', 'ingest', 'draw',\n];\n\n/** What a preset's ambient bindings are built from: the `selectTool` options\n * that configure them. */\nexport interface FeatureBindingOptions {\n move?: UseMoveOptions<unknown>;\n rotate?: UseRotateOptions<unknown>;\n}\n\n/**\n * Everything turning one preset on means. Every role is optional.\n *\n * A package's preset is the unit an app opts into: the app imports it and\n * passes it to `features`, and an app that does not never loads its code.\n */\nexport interface FeaturePreset {\n /** Unique per canvas. `refines` names presets by it, and two different\n * presets with one id on one canvas throw. */\n readonly id: string;\n /** The action descriptors it registers, in the order they register. They\n * are standard actions: `<SceneCanvas actions>` overrides and mutes them,\n * and `tune` reaches them. */\n readonly actions?: readonly Action[];\n /** Tools it mounts: a built-in by id, or a tool of its own. */\n readonly tools?: readonly (BuiltinToolId | Tool)[];\n /** Its ambient bindings: an always-live entry routing a gesture to its\n * actions under any tool that does not claim the gesture itself. */\n readonly ambient?: (options: FeatureBindingOptions) => Contribution;\n /** Behaviors folded into every move the presets' ambient bindings run,\n * after the select tool's own: a snap, a readout of the drag. They reach\n * only a move some enabled preset binds, `move` or `draw`'s. */\n readonly moveBehaviors?: readonly MoveBehavior<unknown>[];\n /** Snap sources every snap session on the canvas asks, after\n * `<SceneCanvas snap.sources>` and the presets before it. */\n readonly snapSources?: readonly SnapSource[];\n /** The selection chrome that is drawn, and can be grabbed, only while it is on. */\n readonly chrome?: readonly ChromeId[];\n /** Default chrome-caps rules for chrome of its own, under the consumer's\n * `chromeVisibility`: a mark it draws only on request, say. */\n readonly chromeRules?: VisibilityRules;\n /** What it adds to path edit: marks, grabbable parts, what an edit keeps\n * true. Consulted in preset order. */\n readonly pathEdit?: readonly PathEditExtension[];\n /** Entries installed beside `<SceneCanvas ambient>`, with every role they\n * declare: deps, overlays, `attach`, views, frame hooks. A `tools` takeover\n * brings its own ambient and leaves them out. */\n readonly contributions?: readonly SurfaceContribution[];\n /** Ids of presets whose actions this one's register ahead of, so that where\n * both bind one gesture, this one's is tried first: anchor nudging ahead of\n * node nudging. A preset named here that is not on is ignored. */\n readonly refines?: readonly string[];\n /** Presets it turns on with itself, ahead of its own place in the order. */\n readonly includes?: readonly FeaturePreset[];\n}\n\n/** What `<SceneCanvas features>` takes: a core preset's name or any preset. */\nexport type FeatureEntry = Feature | FeaturePreset;\n\n/** The names a canvas resolves: one preset each, or the presets a composite\n * abbreviates. */\nexport interface NamedPresets {\n readonly base: Readonly<Record<BaseFeature, FeaturePreset>>;\n readonly composite: Readonly<Record<CompositeFeature, readonly BaseFeature[]>>;\n}\n\n/** Where a canvas finds presets beyond the objects it is handed: the names it\n * resolves, if any, and the actions it registers once a tool binds them. */\nexport interface PresetSource {\n readonly named: NamedPresets | null;\n /** Actions registered only when a tool or contribution binds them. */\n readonly pool: readonly Action[];\n}\n\n/** The presets a canvas runs with, in the order their actions register. */\nexport interface EnabledPresets {\n readonly presets: readonly FeaturePreset[];\n /** Their path-edit extensions, in order. */\n readonly pathEdit: readonly PathEditExtension[];\n /** Their snap sources, in order. */\n readonly snapSources: readonly SnapSource[];\n /** Whether a preset with this id is on. */\n has(id: string): boolean;\n}\n\n/**\n * The presets a canvas runs with: names expanded, `includes` pulled in, each\n * preset once, and every one placed ahead of the presets it `refines`. Ties\n * keep the order given. Where names resolve, a `viewport` config turns on the\n * `view` preset, since that prop only configures what `view` turns on.\n */\nexport function resolveFeatures(\n features: readonly FeatureEntry[] | undefined,\n named: NamedPresets | null,\n opts: { viewport?: boolean } = {},\n): EnabledPresets {\n const listed: FeaturePreset[] = [];\n const byId = new Map<string, FeaturePreset>();\n const add = (p: FeaturePreset): void => {\n const held = byId.get(p.id);\n if (held === p) return;\n if (held) throw new Error(`[SceneCanvas] two different presets have the id \"${p.id}\"`);\n byId.set(p.id, p);\n for (const inner of p.includes ?? []) add(inner);\n listed.push(p);\n };\n for (const f of features ?? []) {\n if (typeof f !== 'string') add(f);\n else if (!named) throw new Error(`[SceneCanvas] this canvas resolves no preset names; pass the preset for \"${f}\"`);\n else if (f in named.composite) for (const b of named.composite[f as CompositeFeature]) add(named.base[b]);\n else add(named.base[f as BaseFeature]);\n }\n if (opts.viewport && named) add(named.base.view);\n\n const ordered: FeaturePreset[] = [];\n const placed = new Set<string>();\n const place = (p: FeaturePreset): void => {\n if (placed.has(p.id)) return;\n placed.add(p.id);\n for (const r of listed) if (r.refines?.includes(p.id)) place(r);\n ordered.push(p);\n };\n for (const p of listed) place(p);\n return {\n presets: ordered,\n pathEdit: ordered.flatMap((p) => p.pathEdit ?? []),\n snapSources: ordered.flatMap((p) => p.snapSources ?? []),\n has: (id) => byId.has(id),\n };\n}\n\n/** The actions the given presets register, in registration order. */\nexport function presetActions(enabled: EnabledPresets): Action[] {\n return enabled.presets.flatMap((p) => p.actions ?? []);\n}\n\n/** The built-in tool ids the given presets mount. */\nexport function presetBuiltinTools(enabled: EnabledPresets): Set<BuiltinToolId> {\n const ids = new Set<BuiltinToolId>();\n for (const p of enabled.presets) for (const t of p.tools ?? []) if (typeof t === 'string') ids.add(t);\n return ids;\n}\n\n/** The tools of their own the given presets mount, by id. */\nexport function presetOwnTools(enabled: EnabledPresets): Record<string, Tool> {\n const out: Record<string, Tool> = {};\n for (const p of enabled.presets) for (const t of p.tools ?? []) if (typeof t !== 'string') out[t.id] = t;\n return out;\n}\n\n/** The given presets' ambient entries and contributions, in the order they are\n * matched. Their `moveBehaviors` follow the ones `options.move` brings. */\nexport function presetAmbient(enabled: EnabledPresets, options: FeatureBindingOptions): Contribution[] {\n const extra = enabled.presets.flatMap((p) => p.moveBehaviors ?? []);\n const move = extra.length === 0\n ? options.move\n : { ...options.move, behaviors: [...(options.move?.behaviors ?? []), ...extra] };\n const opts = { ...options, move };\n return enabled.presets.flatMap((p) => (p.ambient ? [p.ambient(opts)] : []));\n}\n\n/** The given presets' contributions, in preset order. */\nexport function presetContributions(enabled: EnabledPresets): SurfaceContribution[] {\n return enabled.presets.flatMap((p) => p.contributions ?? []);\n}\n\n/** The enabled presets' own `chromeRules`, then rules hiding each chrome id\n * in `owned` that no enabled preset turns on. `never` also takes a handle out\n * of hit-testing, so a hidden one cannot be grabbed. */\nexport function presetChromeRules(enabled: EnabledPresets, owned: readonly ChromeId[]): VisibilityRules {\n const on = new Set(enabled.presets.flatMap((p) => p.chrome ?? []));\n const rules: VisibilityRules = Object.assign({}, ...enabled.presets.map((p) => p.chromeRules ?? {}));\n for (const id of owned) if (!on.has(id)) rules[id] = never;\n return rules;\n}\n"],"mappings":"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"}
|
|
@@ -1,97 +1,115 @@
|
|
|
1
|
-
import { viewToTransform
|
|
2
|
-
import { worldToScreen
|
|
3
|
-
import { getImageBitmap
|
|
4
|
-
import { ellipsePath
|
|
1
|
+
import { viewToTransform } from "../../core/viewport/view.js";
|
|
2
|
+
import { worldToScreen } from "../../core/viewport/viewTransform.js";
|
|
3
|
+
import { getImageBitmap } from "@weasel-js/renderer";
|
|
4
|
+
import { ellipsePath, invert, linePath, mat3 as mat3$1, multiply, polylineFromPoints, rectPath, regularPolygonPath, starPath } from "@weasel-js/geom";
|
|
5
|
+
|
|
5
6
|
//#region src/canvas/SceneCanvas/insertPreviewCommands.ts
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
/** Alpha for content previewed inside an in-flight gesture. Matches the
|
|
8
|
+
* preview-ghost layer, so a dragged node and an uncommitted insert read as
|
|
9
|
+
* equally provisional. */
|
|
10
|
+
var PREVIEW_CONTENT_OPACITY = .85;
|
|
11
|
+
/** An insert preview in screen space: its outline, under each copy it will be
|
|
12
|
+
* drawn in, and the dot at the press. */
|
|
13
|
+
function insertPreviewCommands(ov, view, cfg) {
|
|
14
|
+
const t = viewToTransform(view);
|
|
15
|
+
const out = [];
|
|
16
|
+
const b = ov.bounds;
|
|
17
|
+
const projectPoint = (wx, wy) => {
|
|
18
|
+
const [sx, sy] = worldToScreen(wx, wy, t);
|
|
10
19
|
return {
|
|
11
|
-
x:
|
|
12
|
-
y:
|
|
20
|
+
x: sx,
|
|
21
|
+
y: sy
|
|
13
22
|
};
|
|
14
|
-
}
|
|
15
|
-
|
|
23
|
+
};
|
|
24
|
+
const projectPoints = (pts) => pts.map((p) => projectPoint(p.x, p.y));
|
|
25
|
+
const radialScale = (view.scale.x + view.scale.y) / 2;
|
|
26
|
+
let pathCmd = null;
|
|
27
|
+
const geom = ov.geometry;
|
|
28
|
+
switch (geom.kind) {
|
|
16
29
|
case "box": {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
30
|
+
const [sx, sy] = worldToScreen(b.x, b.y, t);
|
|
31
|
+
const sw = b.width * view.scale.x;
|
|
32
|
+
const sh = b.height * view.scale.y;
|
|
33
|
+
if (ov.shape === "image") {
|
|
34
|
+
const e = ov.extras;
|
|
35
|
+
const bmp = e.preview === "outline" || !e.src ? void 0 : getImageBitmap(e.src);
|
|
36
|
+
if (bmp) out.push({
|
|
21
37
|
kind: "image",
|
|
22
|
-
image:
|
|
23
|
-
x:
|
|
24
|
-
y:
|
|
25
|
-
w:
|
|
26
|
-
h:
|
|
27
|
-
opacity:
|
|
38
|
+
image: bmp,
|
|
39
|
+
x: sx,
|
|
40
|
+
y: sy,
|
|
41
|
+
w: sw,
|
|
42
|
+
h: sh,
|
|
43
|
+
opacity: PREVIEW_CONTENT_OPACITY
|
|
28
44
|
});
|
|
29
45
|
}
|
|
30
|
-
|
|
31
|
-
x:
|
|
32
|
-
y:
|
|
33
|
-
width:
|
|
34
|
-
height:
|
|
35
|
-
}) :
|
|
46
|
+
pathCmd = ov.shape === "ellipse" ? ellipsePath({
|
|
47
|
+
x: sx,
|
|
48
|
+
y: sy,
|
|
49
|
+
width: sw,
|
|
50
|
+
height: sh
|
|
51
|
+
}) : rectPath(sx, sy, sw, sh);
|
|
36
52
|
break;
|
|
37
53
|
}
|
|
38
54
|
case "line":
|
|
39
|
-
|
|
55
|
+
pathCmd = linePath(projectPoint(geom.a.x, geom.a.y), projectPoint(geom.b.x, geom.b.y));
|
|
40
56
|
break;
|
|
41
57
|
case "polygon":
|
|
42
|
-
|
|
58
|
+
pathCmd = regularPolygonPath(projectPoint(geom.center.x, geom.center.y), geom.radius * radialScale, geom.sides, geom.rotation);
|
|
43
59
|
break;
|
|
44
60
|
case "star":
|
|
45
|
-
|
|
61
|
+
pathCmd = starPath(projectPoint(geom.center.x, geom.center.y), geom.outerRadius * radialScale, geom.points, geom.innerRadius * radialScale, geom.rotation);
|
|
46
62
|
break;
|
|
47
|
-
case "pencil":
|
|
63
|
+
case "pencil": pathCmd = polylineFromPoints(projectPoints(geom.samples));
|
|
48
64
|
}
|
|
49
|
-
if (!
|
|
50
|
-
|
|
65
|
+
if (!pathCmd) return out;
|
|
66
|
+
const cmd = {
|
|
51
67
|
kind: "path",
|
|
52
|
-
path:
|
|
53
|
-
fill:
|
|
68
|
+
path: pathCmd,
|
|
69
|
+
fill: ov.shape === "line" || ov.shape === "pencil" || ov.shape === "image" ? void 0 : { paint: { color: cfg.fill } },
|
|
54
70
|
stroke: {
|
|
55
|
-
paint: { color:
|
|
56
|
-
width:
|
|
57
|
-
dash:
|
|
71
|
+
paint: { color: cfg.stroke },
|
|
72
|
+
width: cfg.lineWidth,
|
|
73
|
+
dash: cfg.dash
|
|
58
74
|
}
|
|
59
75
|
};
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
76
|
+
out.push(cmd);
|
|
77
|
+
if (ov.copies && ov.copies.length > 0) {
|
|
78
|
+
const toScreen = [
|
|
79
|
+
view.scale.x,
|
|
63
80
|
0,
|
|
64
81
|
0,
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
]
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
82
|
+
view.scale.y,
|
|
83
|
+
t.panX,
|
|
84
|
+
t.panY
|
|
85
|
+
];
|
|
86
|
+
const toWorld = invert(toScreen);
|
|
87
|
+
for (const m of ov.copies) {
|
|
88
|
+
if (!toWorld) break;
|
|
89
|
+
const s = multiply(toScreen, multiply(m, toWorld));
|
|
90
|
+
out.push({
|
|
73
91
|
kind: "group",
|
|
74
|
-
transform:
|
|
75
|
-
children: [
|
|
92
|
+
transform: mat3$1.fromAffine(s),
|
|
93
|
+
children: [cmd]
|
|
76
94
|
});
|
|
77
95
|
}
|
|
78
96
|
}
|
|
79
|
-
if (
|
|
80
|
-
|
|
81
|
-
|
|
97
|
+
if (ov.anchorPoint) {
|
|
98
|
+
const anchorScreen = projectPoint(ov.anchorPoint.x, ov.anchorPoint.y);
|
|
99
|
+
out.push({
|
|
82
100
|
kind: "path",
|
|
83
|
-
path:
|
|
84
|
-
x:
|
|
85
|
-
y:
|
|
101
|
+
path: ellipsePath({
|
|
102
|
+
x: anchorScreen.x - 4,
|
|
103
|
+
y: anchorScreen.y - 4,
|
|
86
104
|
width: 8,
|
|
87
105
|
height: 8
|
|
88
106
|
}),
|
|
89
|
-
fill: { paint: { color:
|
|
107
|
+
fill: { paint: { color: cfg.stroke } }
|
|
90
108
|
});
|
|
91
109
|
}
|
|
92
|
-
return
|
|
110
|
+
return out;
|
|
93
111
|
}
|
|
94
|
-
//#endregion
|
|
95
|
-
export { p as insertPreviewCommands };
|
|
96
112
|
|
|
113
|
+
//#endregion
|
|
114
|
+
export { insertPreviewCommands };
|
|
97
115
|
//# sourceMappingURL=insertPreviewCommands.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"insertPreviewCommands.js","names":["mat3"
|
|
1
|
+
{"version":3,"file":"insertPreviewCommands.js","names":["mat3"],"sources":["../../../src/canvas/SceneCanvas/insertPreviewCommands.ts"],"sourcesContent":["import {\n ellipsePath, invert, linePath, mat3, multiply, rectPath, regularPolygonPath, starPath, polylineFromPoints,\n type Affine,\n} from '@weasel-js/geom';\nimport { getImageBitmap, type DrawCommand, type PathDrawCommand } from '@weasel-js/renderer';\nimport { viewToTransform, type View } from 'core/viewport/view';\nimport { worldToScreen } from 'core/viewport/viewTransform';\nimport type { ResolvedOverlay } from 'interactions/actions/resolveOverlays';\n\n/** Alpha for content previewed inside an in-flight gesture. Matches the\n * preview-ghost layer, so a dragged node and an uncommitted insert read as\n * equally provisional. */\nconst PREVIEW_CONTENT_OPACITY = 0.85;\n\n/** The overlay colors an insert preview is drawn in. */\nexport interface InsertPreviewStyle {\n fill: string;\n stroke: string;\n lineWidth: number;\n dash: number[];\n}\n\n/** An insert preview in screen space: its outline, under each copy it will be\n * drawn in, and the dot at the press. */\nexport function insertPreviewCommands(\n ov: Extract<ResolvedOverlay, { kind: 'insertPreview' }>,\n view: View,\n cfg: InsertPreviewStyle,\n): DrawCommand[] {\n const t = viewToTransform(view);\n const out: DrawCommand[] = [];\n const b = ov.bounds;\n const projectPoint = (wx: number, wy: number): { x: number; y: number } => {\n const [sx, sy] = worldToScreen(wx, wy, t);\n return { x: sx, y: sy };\n };\n const projectPoints = (\n pts: ReadonlyArray<{ x: number; y: number }>,\n ): { x: number; y: number }[] => pts.map((p) => projectPoint(p.x, p.y));\n // Radial shapes inscribe in a square, so a single screen-space\n // radius needs one scale factor; average the axes.\n const radialScale = (view.scale.x + view.scale.y) / 2;\n\n let pathCmd: PathDrawCommand['path'] | null = null;\n const geom = ov.geometry;\n switch (geom.kind) {\n case 'box': {\n const [sx, sy] = worldToScreen(b.x, b.y, t);\n const sw = b.width * view.scale.x;\n const sh = b.height * view.scale.y;\n if (ov.shape === 'image') {\n const e = ov.extras as Partial<{ src: string; preview: string }>;\n // The bitmap when it has decoded, the bare outline until then\n // (or when the tool opted out) — the outline is drawn either\n // way, so the drag always has an edge to read.\n const bmp = e.preview === 'outline' || !e.src\n ? undefined\n : getImageBitmap(e.src);\n if (bmp) {\n out.push({\n kind: 'image',\n image: bmp,\n x: sx, y: sy, w: sw, h: sh,\n opacity: PREVIEW_CONTENT_OPACITY,\n });\n }\n }\n pathCmd = ov.shape === 'ellipse'\n ? ellipsePath({ x: sx, y: sy, width: sw, height: sh })\n : rectPath(sx, sy, sw, sh);\n break;\n }\n case 'line':\n pathCmd = linePath(projectPoint(geom.a.x, geom.a.y), projectPoint(geom.b.x, geom.b.y));\n break;\n case 'polygon':\n pathCmd = regularPolygonPath(\n projectPoint(geom.center.x, geom.center.y),\n geom.radius * radialScale,\n geom.sides,\n geom.rotation,\n );\n break;\n case 'star':\n pathCmd = starPath(\n projectPoint(geom.center.x, geom.center.y),\n geom.outerRadius * radialScale,\n geom.points,\n geom.innerRadius * radialScale,\n geom.rotation,\n );\n break;\n case 'pencil':\n // Genuinely open: `polygonFromPoints` closes the path, and the\n // closing edge from the last sample back to the first reads as\n // a marquee rather than as the stroke being drawn.\n pathCmd = polylineFromPoints(projectPoints(geom.samples));\n break;\n }\n\n if (!pathCmd) return out;\n const cmd: PathDrawCommand = {\n kind: 'path',\n path: pathCmd,\n fill: ov.shape === 'line' || ov.shape === 'pencil' || ov.shape === 'image'\n ? undefined\n : { paint: { color: cfg.fill } },\n stroke: { paint: { color: cfg.stroke }, width: cfg.lineWidth, dash: cfg.dash },\n };\n out.push(cmd);\n // Each copy the shape will be drawn in, carried into screen space.\n if (ov.copies && ov.copies.length > 0) {\n const toScreen: Affine = [view.scale.x, 0, 0, view.scale.y, t.panX, t.panY];\n const toWorld = invert(toScreen);\n for (const m of ov.copies) {\n if (!toWorld) break;\n const s = multiply(toScreen, multiply(m, toWorld));\n out.push({ kind: 'group', transform: mat3.fromAffine(s), children: [cmd] });\n }\n }\n // Anchor dot at the drag's click point: for radial shapes no\n // vertex sits at the AABB corner, and in center mode the dot marks\n // the growth axis.\n if (ov.anchorPoint) {\n const anchorScreen = projectPoint(ov.anchorPoint.x, ov.anchorPoint.y);\n out.push({\n kind: 'path',\n path: ellipsePath({\n x: anchorScreen.x - 4,\n y: anchorScreen.y - 4,\n width: 8,\n height: 8,\n }),\n fill: { paint: { color: cfg.stroke } },\n });\n }\n return out;\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { targetSizesPx } from "../../core/device/targets.js";
|
|
2
|
+
import { defaultDrawOne, defaultPaintBounds, paintBoundsFor } from "../defaultDrawOne.js";
|
|
3
|
+
import { isCustomEntry } from "../layerSlots.js";
|
|
4
|
+
|
|
5
|
+
//#region src/canvas/SceneCanvas/mergeLayers.ts
|
|
6
|
+
/** Deep-merge user-supplied `layers` with kit defaults. Slots the user
|
|
7
|
+
* doesn't mention get filled with defaults; slots explicitly set to
|
|
8
|
+
* `null` are dropped. Partial slot configs are shallow-spread on top of the
|
|
9
|
+
* default slot config. `targetScale` (from the {@link DeviceProfile}) and `baseSizes` go to `targetSizesPx`. */
|
|
10
|
+
function mergeLayersWithDefaults(user, targetScale = 1, baseSizes = {}) {
|
|
11
|
+
const defaults = {
|
|
12
|
+
scene: {
|
|
13
|
+
drawOne: defaultDrawOne,
|
|
14
|
+
paintBounds: defaultPaintBounds
|
|
15
|
+
},
|
|
16
|
+
selectionOverlay: { handles: { size: targetSizesPx(targetScale, baseSizes).handle } }
|
|
17
|
+
};
|
|
18
|
+
if (!user) return defaults;
|
|
19
|
+
const result = { ...user };
|
|
20
|
+
if (!("scene" in user)) result.scene = defaults.scene;
|
|
21
|
+
else if (user.scene === null || isCustomEntry(user.scene)) result.scene = user.scene;
|
|
22
|
+
else {
|
|
23
|
+
const scene = {
|
|
24
|
+
...defaults.scene,
|
|
25
|
+
...user.scene
|
|
26
|
+
};
|
|
27
|
+
result.scene = user.scene && "paintBounds" in user.scene ? scene : {
|
|
28
|
+
...scene,
|
|
29
|
+
paintBounds: paintBoundsFor(scene.drawOne)
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
if (!("selectionOverlay" in user)) result.selectionOverlay = defaults.selectionOverlay;
|
|
33
|
+
else if (user.selectionOverlay === null || isCustomEntry(user.selectionOverlay)) result.selectionOverlay = user.selectionOverlay;
|
|
34
|
+
else result.selectionOverlay = {
|
|
35
|
+
...defaults.selectionOverlay,
|
|
36
|
+
...user.selectionOverlay
|
|
37
|
+
};
|
|
38
|
+
return result;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
//#endregion
|
|
42
|
+
export { mergeLayersWithDefaults };
|
|
43
|
+
//# sourceMappingURL=mergeLayers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mergeLayers.js","names":[],"sources":["../../../src/canvas/SceneCanvas/mergeLayers.ts"],"sourcesContent":["import type { DrawCommand } from '@weasel-js/renderer';\nimport { targetSizesPx, type TargetSizesPx } from '../../core/device/targets';\nimport type { Node } from 'core/scene/types';\nimport { defaultDrawOne, defaultPaintBounds, paintBoundsFor } from '../defaultDrawOne';\nimport { isCustomEntry, type LayersMap } from '../layerSlots';\nimport type { SceneCanvasLayers } from './props';\n\n/** Deep-merge user-supplied `layers` with kit defaults. Slots the user\n * doesn't mention get filled with defaults; slots explicitly set to\n * `null` are dropped. Partial slot configs are shallow-spread on top of the\n * default slot config. `targetScale` (from the {@link DeviceProfile}) and `baseSizes` go to `targetSizesPx`. */\nexport function mergeLayersWithDefaults<TData, TLayer extends string, TPose>(\n user: SceneCanvasLayers<Node<TData, TLayer, TPose>, TPose> | undefined,\n targetScale = 1, baseSizes: Partial<TargetSizesPx> = {},\n): LayersMap<Node<TData, TLayer, TPose>, TPose> {\n const defaults = {\n scene: {\n drawOne: defaultDrawOne as (\n node: Node<TData, TLayer, TPose>,\n pose: TPose,\n ) => DrawCommand[],\n paintBounds: defaultPaintBounds<TData, TLayer, TPose>,\n },\n selectionOverlay: { handles: { size: targetSizesPx(targetScale, baseSizes).handle } },\n };\n\n if (!user) return defaults as LayersMap<Node<TData, TLayer, TPose>, TPose>;\n\n // Start from a shallow copy of the user map so unknown slots pass through.\n const result = { ...user } as LayersMap<Node<TData, TLayer, TPose>, TPose>;\n\n if (!('scene' in user)) {\n result.scene = defaults.scene;\n } else if (user.scene === null || isCustomEntry(user.scene)) {\n result.scene = user.scene;\n } else {\n const scene = { ...defaults.scene, ...user.scene };\n result.scene = user.scene && 'paintBounds' in user.scene\n ? scene\n : { ...scene, paintBounds: paintBoundsFor<TData, TLayer, TPose>(scene.drawOne) };\n }\n\n if (!('selectionOverlay' in user)) {\n result.selectionOverlay = defaults.selectionOverlay;\n } else if (user.selectionOverlay === null || isCustomEntry(user.selectionOverlay)) {\n result.selectionOverlay = user.selectionOverlay;\n } else {\n result.selectionOverlay = { ...defaults.selectionOverlay, ...user.selectionOverlay };\n }\n\n return result;\n}\n"],"mappings":";;;;;;;;;AAWA,SAAgB,wBACd,MACA,cAAc,GAAG,YAAoC,CAAC,GACR;CAC9C,MAAM,WAAW;EACf,OAAO;GACL,SAAS;GAIT,aAAa;EACf;EACA,kBAAkB,EAAE,SAAS,EAAE,MAAM,cAAc,aAAa,SAAS,CAAC,CAAC,OAAO,EAAE;CACtF;CAEA,IAAI,CAAC,MAAM,OAAO;CAGlB,MAAM,SAAS,EAAE,GAAG,KAAK;CAEzB,IAAI,EAAE,WAAW,OACf,OAAO,QAAQ,SAAS;MACnB,IAAI,KAAK,UAAU,QAAQ,cAAc,KAAK,KAAK,GACxD,OAAO,QAAQ,KAAK;MACf;EACL,MAAM,QAAQ;GAAE,GAAG,SAAS;GAAO,GAAG,KAAK;EAAM;EACjD,OAAO,QAAQ,KAAK,SAAS,iBAAiB,KAAK,QAC/C,QACA;GAAE,GAAG;GAAO,aAAa,eAAqC,MAAM,OAAO;EAAE;CACnF;CAEA,IAAI,EAAE,sBAAsB,OAC1B,OAAO,mBAAmB,SAAS;MAC9B,IAAI,KAAK,qBAAqB,QAAQ,cAAc,KAAK,gBAAgB,GAC9E,OAAO,mBAAmB,KAAK;MAE/B,OAAO,mBAAmB;EAAE,GAAG,SAAS;EAAkB,GAAG,KAAK;CAAiB;CAGrF,OAAO;AACT"}
|