@weasel-js/core 1.9.4 → 1.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +750 -0
- package/README.md +5 -3
- package/dist/WeaselProvider.js +5 -7
- package/dist/WeaselProvider.js.map +1 -1
- package/dist/affordances/composeAffordanceLayer.js +91 -83
- package/dist/affordances/composeAffordanceLayer.js.map +1 -1
- package/dist/affordances/cornerResize.js +3 -2
- package/dist/affordances/cornerResize.js.map +1 -1
- package/dist/affordances/hitAffordanceRegions.js +54 -100
- package/dist/affordances/hitAffordanceRegions.js.map +1 -1
- package/dist/affordances/pathAnchors.js.map +1 -1
- package/dist/affordances/rotationHandle.js +5 -4
- package/dist/affordances/rotationHandle.js.map +1 -1
- package/dist/animation/behaviors/coast.js +21 -0
- package/dist/animation/behaviors/coast.js.map +1 -0
- package/dist/animation/behaviors/coastByWrite.js +107 -0
- package/dist/animation/behaviors/coastByWrite.js.map +1 -0
- package/dist/animation/behaviors/coastOnTargets.js +94 -0
- package/dist/animation/behaviors/coastOnTargets.js.map +1 -0
- package/dist/animation/behaviors/momentum.js +48 -136
- package/dist/animation/behaviors/momentum.js.map +1 -1
- package/dist/animation/clipTargets.js +12 -0
- package/dist/animation/clipTargets.js.map +1 -0
- package/dist/animation/index.js +15 -20
- package/dist/animation/poseHelpers.js +112 -33
- package/dist/animation/poseHelpers.js.map +1 -1
- package/dist/animation/poseTarget.js +115 -0
- package/dist/animation/poseTarget.js.map +1 -0
- package/dist/animation/reflow.js +113 -83
- package/dist/animation/reflow.js.map +1 -1
- package/dist/animation/rewind.js +66 -0
- package/dist/animation/rewind.js.map +1 -0
- package/dist/animation/rig/bindRig.js +85 -53
- package/dist/animation/rig/bindRig.js.map +1 -1
- package/dist/animation/rig/rigNode.js +93 -0
- package/dist/animation/rig/rigNode.js.map +1 -0
- package/dist/animation/rig/rigSeat.js +26 -0
- package/dist/animation/rig/rigSeat.js.map +1 -0
- package/dist/animation/rig/skinBinding.js +56 -0
- package/dist/animation/rig/skinBinding.js.map +1 -0
- package/dist/animation/rig/useRig.js +31 -16
- package/dist/animation/rig/useRig.js.map +1 -1
- package/dist/animation/wrappers/animateLifecycle.js +8 -7
- package/dist/animation/wrappers/animateLifecycle.js.map +1 -1
- package/dist/animation/wrappers/animateOnSetPose.js +31 -31
- package/dist/animation/wrappers/animateOnSetPose.js.map +1 -1
- package/dist/animation/wrappers/instantPose.js.map +1 -1
- package/dist/animation/writtenPoseTarget.js +33 -0
- package/dist/animation/writtenPoseTarget.js.map +1 -0
- package/dist/autoPoseDescriptor-DHg5KqaJ.d.ts +27 -0
- package/dist/barrel/canvas.js +31 -0
- package/dist/barrel/chrome.js +10 -10
- package/dist/barrel/input.js +16 -17
- package/dist/barrel/interactions.js +35 -39
- package/dist/barrel/paint.js +11 -18
- package/dist/barrel/paths.js +12 -19
- package/dist/barrel/renderer.js +14 -20
- package/dist/barrel/routing.js +42 -36
- package/dist/barrel/scene.js +37 -0
- package/dist/barrel/text.js +9 -18
- package/dist/barrel/viewport.js +41 -51
- package/dist/canvas/Canvas.js +281 -475
- package/dist/canvas/Canvas.js.map +1 -1
- package/dist/canvas/CanvasView.js +169 -188
- package/dist/canvas/CanvasView.js.map +1 -1
- package/dist/canvas/CursorCoordsHud.js +22 -23
- package/dist/canvas/CursorCoordsHud.js.map +1 -1
- package/dist/canvas/DrawCanvas.js +39 -56
- package/dist/canvas/DrawCanvas.js.map +1 -1
- package/dist/canvas/ModalityHud.js.map +1 -1
- package/dist/canvas/NodeShape.js +28 -29
- package/dist/canvas/NodeShape.js.map +1 -1
- package/dist/canvas/PickHud.js.map +1 -1
- package/dist/canvas/SceneCanvas/DevHuds.js +40 -0
- package/dist/canvas/SceneCanvas/DevHuds.js.map +1 -0
- package/dist/canvas/SceneCanvas/GestureDispatcherMounter.js +66 -107
- package/dist/canvas/SceneCanvas/GestureDispatcherMounter.js.map +1 -1
- package/dist/canvas/SceneCanvas/PointerProviderIfRoot.js +27 -31
- package/dist/canvas/SceneCanvas/PointerProviderIfRoot.js.map +1 -1
- package/dist/canvas/SceneCanvas/StandardActionsRegistrar.js +51 -54
- package/dist/canvas/SceneCanvas/StandardActionsRegistrar.js.map +1 -1
- package/dist/canvas/SceneCanvas/ToolKeybindingsMounter.js +3 -3
- package/dist/canvas/SceneCanvas/ToolKeybindingsMounter.js.map +1 -1
- package/dist/canvas/SceneCanvas/coordTrace.js +37 -1
- package/dist/canvas/SceneCanvas/coordTrace.js.map +1 -1
- package/dist/canvas/SceneCanvas/defaultNodeProperties.js +40 -29
- package/dist/canvas/SceneCanvas/defaultNodeProperties.js.map +1 -1
- package/dist/canvas/SceneCanvas/defaultNodeRouting.js +1 -1
- package/dist/canvas/SceneCanvas/defaultNodeRouting.js.map +1 -1
- package/dist/canvas/SceneCanvas/dispatcherGestureBounds.js.map +1 -1
- package/dist/canvas/SceneCanvas/features.js +73 -43
- package/dist/canvas/SceneCanvas/features.js.map +1 -1
- package/dist/canvas/SceneCanvas/isDev.js.map +1 -1
- package/dist/canvas/SceneCanvas/poseGeometry.js +33 -37
- package/dist/canvas/SceneCanvas/poseGeometry.js.map +1 -1
- package/dist/canvas/SceneCanvas/props.js +15 -14
- package/dist/canvas/SceneCanvas/props.js.map +1 -1
- package/dist/canvas/SceneCanvas/toolRegistry.js +23 -0
- package/dist/canvas/SceneCanvas/toolRegistry.js.map +1 -0
- package/dist/canvas/SceneCanvas/useActionsPropResolver.js +6 -1
- package/dist/canvas/SceneCanvas/useActionsPropResolver.js.map +1 -1
- package/dist/canvas/SceneCanvas/useBuiltinShapeTools.js.map +1 -1
- package/dist/canvas/SceneCanvas/useBuiltinTools.js +21 -0
- package/dist/canvas/SceneCanvas/useBuiltinTools.js.map +1 -0
- package/dist/canvas/SceneCanvas/useCanvasCamera.js +38 -0
- package/dist/canvas/SceneCanvas/useCanvasCamera.js.map +1 -0
- package/dist/canvas/SceneCanvas/useCanvasDispatcher.js +20 -0
- package/dist/canvas/SceneCanvas/useCanvasDispatcher.js.map +1 -0
- package/dist/canvas/SceneCanvas/useCanvasSelection.js +16 -0
- package/dist/canvas/SceneCanvas/useCanvasSelection.js.map +1 -0
- package/dist/canvas/SceneCanvas/useCanvasTools.js +67 -0
- package/dist/canvas/SceneCanvas/useCanvasTools.js.map +1 -0
- package/dist/canvas/SceneCanvas/useDispatcherOverlayLayer.js +29 -29
- package/dist/canvas/SceneCanvas/useDispatcherOverlayLayer.js.map +1 -1
- package/dist/canvas/SceneCanvas/useHeldModifiers.js +20 -0
- package/dist/canvas/SceneCanvas/useHeldModifiers.js.map +1 -0
- package/dist/canvas/SceneCanvas/useNodeAtPoint.js +26 -0
- package/dist/canvas/SceneCanvas/useNodeAtPoint.js.map +1 -0
- package/dist/canvas/SceneCanvas/useNodeKinds.js +26 -0
- package/dist/canvas/SceneCanvas/useNodeKinds.js.map +1 -0
- package/dist/canvas/SceneCanvas/usePreviewGhostLayer.js +39 -37
- package/dist/canvas/SceneCanvas/usePreviewGhostLayer.js.map +1 -1
- package/dist/canvas/SceneCanvas/useSceneCanvasHandle.js +47 -0
- package/dist/canvas/SceneCanvas/useSceneCanvasHandle.js.map +1 -0
- package/dist/canvas/SceneCanvas/useSceneCanvasLayers.js +66 -0
- package/dist/canvas/SceneCanvas/useSceneCanvasLayers.js.map +1 -0
- package/dist/canvas/SceneCanvas/useSceneChrome.js +59 -0
- package/dist/canvas/SceneCanvas/useSceneChrome.js.map +1 -0
- package/dist/canvas/SceneCanvas/useSceneRedrawSources.js +23 -0
- package/dist/canvas/SceneCanvas/useSceneRedrawSources.js.map +1 -0
- package/dist/canvas/SceneCanvas/useSceneSelectTool.js +76 -80
- package/dist/canvas/SceneCanvas/useSceneSelectTool.js.map +1 -1
- package/dist/canvas/SceneCanvas/useSceneSlotLayers.js +37 -0
- package/dist/canvas/SceneCanvas/useSceneSlotLayers.js.map +1 -0
- package/dist/canvas/SceneCanvas/useSelectionOverlayLayer.js +38 -0
- package/dist/canvas/SceneCanvas/useSelectionOverlayLayer.js.map +1 -0
- package/dist/canvas/SceneCanvas/useViewLayerGate.js +20 -0
- package/dist/canvas/SceneCanvas/useViewLayerGate.js.map +1 -0
- package/dist/canvas/SceneCanvas/useViewportActions.js +9 -1
- package/dist/canvas/SceneCanvas/useViewportActions.js.map +1 -1
- package/dist/canvas/SceneCanvas/worldPointAt.js +9 -0
- package/dist/canvas/SceneCanvas/worldPointAt.js.map +1 -0
- package/dist/canvas/SceneCanvas.js +303 -707
- package/dist/canvas/SceneCanvas.js.map +1 -1
- package/dist/canvas/SceneViewCanvas.js +41 -47
- package/dist/canvas/SceneViewCanvas.js.map +1 -1
- package/dist/canvas/adapterDerivedPath.js +26 -0
- package/dist/canvas/adapterDerivedPath.js.map +1 -0
- package/dist/canvas/affordanceAt.js +11 -1
- package/dist/canvas/affordanceAt.js.map +1 -1
- package/dist/canvas/buildSceneLayer.js +81 -61
- package/dist/canvas/buildSceneLayer.js.map +1 -1
- package/dist/canvas/buildSceneTree.js.map +1 -1
- package/dist/canvas/canvasRenderer.js +40 -44
- package/dist/canvas/canvasRenderer.js.map +1 -1
- package/dist/canvas/colorOverrides.js.map +1 -1
- package/dist/canvas/defaultDrawOne.js +12 -12
- package/dist/canvas/defaultDrawOne.js.map +1 -1
- package/dist/canvas/deps/areaSelect.js +4 -4
- package/dist/canvas/deps/areaSelect.js.map +1 -1
- package/dist/canvas/deps/debug.js.map +1 -1
- package/dist/canvas/deps/editAnchors.js +49 -68
- package/dist/canvas/deps/editAnchors.js.map +1 -1
- package/dist/canvas/deps/geometryProjection.js.map +1 -1
- package/dist/canvas/deps/hitTestArea.js +31 -26
- package/dist/canvas/deps/hitTestArea.js.map +1 -1
- package/dist/canvas/deps/insert.js +65 -54
- package/dist/canvas/deps/insert.js.map +1 -1
- package/dist/canvas/deps/lassoSelect.js +5 -5
- package/dist/canvas/deps/lassoSelect.js.map +1 -1
- package/dist/canvas/deps/poseDescriptor.js +1 -1
- package/dist/canvas/deps/poseDescriptor.js.map +1 -1
- package/dist/canvas/deps/resizePolicy.js.map +1 -1
- package/dist/canvas/deps/slice.js +44 -45
- package/dist/canvas/deps/slice.js.map +1 -1
- package/dist/canvas/deps/textEdit.js +8 -8
- package/dist/canvas/deps/textEdit.js.map +1 -1
- package/dist/canvas/deps/view.js.map +1 -1
- package/dist/canvas/derivedPath.js +43 -41
- package/dist/canvas/derivedPath.js.map +1 -1
- package/dist/canvas/drawEnvelope.js +8 -4
- package/dist/canvas/drawEnvelope.js.map +1 -1
- package/dist/canvas/getNodeAtPoint.js +2 -6
- package/dist/canvas/getNodeAtPoint.js.map +1 -1
- package/dist/canvas/hud.module.js.map +1 -1
- package/dist/canvas/insertPreviewExtent.js.map +1 -1
- package/dist/canvas/layerOrder.js.map +1 -1
- package/dist/canvas/layerSlots.js +6 -1
- package/dist/canvas/layerSlots.js.map +1 -1
- package/dist/canvas/nodeShapes/derivedPainter.js +12 -12
- package/dist/canvas/nodeShapes/derivedPainter.js.map +1 -1
- package/dist/canvas/nodeShapes/imagePainter.js +10 -10
- package/dist/canvas/nodeShapes/imagePainter.js.map +1 -1
- package/dist/canvas/nodeShapes/memo.js.map +1 -1
- package/dist/canvas/nodeShapes/nodePaint.js +34 -23
- package/dist/canvas/nodeShapes/nodePaint.js.map +1 -1
- package/dist/canvas/nodeShapes/pathPainter.js +23 -22
- package/dist/canvas/nodeShapes/pathPainter.js.map +1 -1
- package/dist/canvas/nodeShapes/poseBox.js +6 -6
- package/dist/canvas/nodeShapes/poseBox.js.map +1 -1
- package/dist/canvas/nodeShapes/rectFallbackPainter.js +8 -8
- package/dist/canvas/nodeShapes/rectFallbackPainter.js.map +1 -1
- package/dist/canvas/nodeShapes/shapePainter.js +16 -16
- package/dist/canvas/nodeShapes/shapePainter.js.map +1 -1
- package/dist/canvas/nodeShapes/textPainter.js +1 -1
- package/dist/canvas/nodeShapes/textPainter.js.map +1 -1
- package/dist/canvas/overlayRoleStrokes.js.map +1 -1
- package/dist/canvas/paintCull.js +6 -8
- package/dist/canvas/paintCull.js.map +1 -1
- package/dist/{features/cursor → canvas}/paintedCursorLayer.js +2 -2
- package/dist/canvas/paintedCursorLayer.js.map +1 -0
- package/dist/canvas/pickWalk.js +52 -50
- package/dist/canvas/pickWalk.js.map +1 -1
- package/dist/canvas/planeClips.js +18 -19
- package/dist/canvas/planeClips.js.map +1 -1
- package/dist/canvas/poseCascade.js +41 -0
- package/dist/canvas/poseCascade.js.map +1 -0
- package/dist/canvas/poseRotation.js +1 -3
- package/dist/canvas/poseRotation.js.map +1 -1
- package/dist/canvas/rasterReadback.js +22 -0
- package/dist/canvas/rasterReadback.js.map +1 -0
- package/dist/canvas/renderDebugSnapshot.js +12 -12
- package/dist/canvas/renderDebugSnapshot.js.map +1 -1
- package/dist/canvas/renderNeeds.js +3 -3
- package/dist/canvas/renderNeeds.js.map +1 -1
- package/dist/canvas/renderSceneToPixels.js +64 -83
- package/dist/canvas/renderSceneToPixels.js.map +1 -1
- package/dist/canvas/sceneAdapter.js +68 -132
- package/dist/canvas/sceneAdapter.js.map +1 -1
- package/dist/canvas/sceneClipboard.js +1 -1
- package/dist/canvas/sceneClipboard.js.map +1 -1
- package/dist/canvas/sceneLayerPaint.js +4 -4
- package/dist/canvas/sceneLayerPaint.js.map +1 -1
- package/dist/canvas/sceneSlotWiring.js +4 -4
- package/dist/canvas/sceneSlotWiring.js.map +1 -1
- package/dist/canvas/sceneViewRender.js +36 -35
- package/dist/canvas/sceneViewRender.js.map +1 -1
- package/dist/canvas/slopsDebugLayer.js +4 -4
- package/dist/canvas/slopsDebugLayer.js.map +1 -1
- package/dist/canvas/surface.module.js +6 -0
- package/dist/canvas/surface.module.js.map +1 -0
- package/dist/canvas/surfaceBox.js +16 -0
- package/dist/canvas/surfaceBox.js.map +1 -0
- package/dist/canvas/useCanvasRenderer.js +23 -11
- package/dist/canvas/useCanvasRenderer.js.map +1 -1
- package/dist/canvas/useCanvasSurface.js +31 -0
- package/dist/canvas/useCanvasSurface.js.map +1 -0
- package/dist/canvas/useCanvasView.js +46 -37
- package/dist/canvas/useCanvasView.js.map +1 -1
- package/dist/canvas/useFrameLoop.js +11 -12
- package/dist/canvas/useFrameLoop.js.map +1 -1
- package/dist/canvas/useHostAnchor.js +35 -33
- package/dist/canvas/useHostAnchor.js.map +1 -1
- package/dist/canvas/useLateContentRedraw.js +8 -8
- package/dist/canvas/useLateContentRedraw.js.map +1 -1
- package/dist/canvas/useSceneLayerList.js +4 -14
- package/dist/canvas/useSceneLayerList.js.map +1 -1
- package/dist/canvas/useSurfaceInput.js +42 -0
- package/dist/canvas/useSurfaceInput.js.map +1 -0
- package/dist/canvas/useToolCursor.js +29 -0
- package/dist/canvas/useToolCursor.js.map +1 -0
- package/dist/canvas/useViewHelpers.js +46 -85
- package/dist/canvas/useViewHelpers.js.map +1 -1
- package/dist/canvas/viewInputs.js.map +1 -1
- package/dist/canvas/viewRegistry.js +25 -27
- package/dist/canvas/viewRegistry.js.map +1 -1
- package/dist/canvas/watchElementMove.js +43 -0
- package/dist/canvas/watchElementMove.js.map +1 -0
- package/dist/canvas/wrapNodeOutput.js.map +1 -1
- package/dist/clipboard.d.ts +7 -14
- package/dist/{types-B4iJRHC3.d.ts → clone-2a5hVbBd.d.ts} +122 -77
- package/dist/clone.d.ts +4 -8
- package/dist/clone.js +0 -2
- package/dist/core/device/targets.js.map +1 -1
- package/dist/core/device/useDeviceProfile.js +13 -13
- package/dist/core/device/useDeviceProfile.js.map +1 -1
- package/dist/{interactions/actions/resize → core/geometry}/autoPoseDescriptor.js +8 -7
- package/dist/core/geometry/autoPoseDescriptor.js.map +1 -0
- package/dist/core/geometry/pathPoseDescriptor.js +88 -0
- package/dist/core/geometry/pathPoseDescriptor.js.map +1 -0
- package/dist/core/geometry/poseDescriptor.js +61 -14
- package/dist/core/geometry/poseDescriptor.js.map +1 -1
- package/dist/core/geometry/regionHit.js +35 -37
- package/dist/core/geometry/regionHit.js.map +1 -1
- package/dist/core/geometry/targetFrame.js +94 -0
- package/dist/core/geometry/targetFrame.js.map +1 -0
- package/dist/core/geometry/unionBounds.js +4 -5
- package/dist/core/geometry/unionBounds.js.map +1 -1
- package/dist/core/layers/backgroundFill.js +31 -0
- package/dist/core/layers/backgroundFill.js.map +1 -0
- package/dist/{features/groups → core/layers}/children.js +1 -1
- package/dist/core/layers/children.js.map +1 -0
- package/dist/{features/focus → core/layers}/gateLayer.js +2 -2
- package/dist/core/layers/gateLayer.js.map +1 -0
- package/dist/core/layers/layerGroup.js +40 -0
- package/dist/core/layers/layerGroup.js.map +1 -0
- package/dist/core/layers/render.js +50 -76
- package/dist/core/layers/render.js.map +1 -1
- package/dist/core/ops/createHistory.js +9 -9
- package/dist/core/ops/createHistory.js.map +1 -1
- package/dist/core/ops/delete.js.map +1 -1
- package/dist/core/paint/meshKind.js +16 -0
- package/dist/core/paint/meshKind.js.map +1 -0
- package/dist/{features/meshPaint/lazyKind.js → core/paint/meshKindLazy.js} +103 -92
- package/dist/core/paint/meshKindLazy.js.map +1 -0
- package/dist/core/paint/paintKindEntry.js +8 -0
- package/dist/core/paint/paintKindEntry.js.map +1 -0
- package/dist/core/paint/paintKinds.js +144 -0
- package/dist/core/paint/paintKinds.js.map +1 -0
- package/dist/core/paint/registerMesh.js +7 -0
- package/dist/core/paint/registerMesh.js.map +1 -0
- package/dist/core/scene/NodeProperties.js.map +1 -1
- package/dist/core/scene/NodeRouting.js.map +1 -1
- package/dist/core/scene/arrivalWindow.js +65 -64
- package/dist/core/scene/arrivalWindow.js.map +1 -1
- package/dist/core/scene/boundOps.js +40 -0
- package/dist/core/scene/boundOps.js.map +1 -0
- package/dist/core/scene/composeFrame.js +9 -6
- package/dist/core/scene/composeFrame.js.map +1 -1
- package/dist/{features/groups → core/scene}/composePose.js +18 -18
- package/dist/core/scene/composePose.js.map +1 -0
- package/dist/core/scene/depMemo.js +31 -6
- package/dist/core/scene/depMemo.js.map +1 -1
- package/dist/core/scene/derivedPath.js +19 -20
- package/dist/core/scene/derivedPath.js.map +1 -1
- package/dist/core/scene/editMode.js +26 -0
- package/dist/core/scene/editMode.js.map +1 -0
- package/dist/core/scene/effectivePose.js +38 -39
- package/dist/core/scene/effectivePose.js.map +1 -1
- package/dist/core/scene/fieldEdits.js +98 -0
- package/dist/core/scene/fieldEdits.js.map +1 -0
- package/dist/core/scene/historyFacade.js +116 -70
- package/dist/core/scene/historyFacade.js.map +1 -1
- package/dist/core/scene/historyForm.js +6 -0
- package/dist/core/scene/historyForm.js.map +1 -0
- package/dist/core/scene/kitOps.js +83 -71
- package/dist/core/scene/kitOps.js.map +1 -1
- package/dist/core/scene/kitRegistry.js.map +1 -1
- package/dist/core/scene/layerStack.js +105 -12
- package/dist/core/scene/layerStack.js.map +1 -1
- package/dist/core/scene/layoutPass.js +58 -59
- package/dist/core/scene/layoutPass.js.map +1 -1
- package/dist/{features/groups → core/scene}/nestedHit.js +3 -3
- package/dist/core/scene/nestedHit.js.map +1 -0
- package/dist/core/scene/nodeFnFields.js +9 -9
- package/dist/core/scene/nodeFnFields.js.map +1 -1
- package/dist/core/scene/nodeMemo.js.map +1 -1
- package/dist/core/scene/nodeStore.js +72 -71
- package/dist/core/scene/nodeStore.js.map +1 -1
- package/dist/core/scene/notifier.js +37 -0
- package/dist/core/scene/notifier.js.map +1 -0
- package/dist/core/scene/opTable.js +50 -0
- package/dist/core/scene/opTable.js.map +1 -0
- package/dist/core/scene/outerOps.js +66 -0
- package/dist/core/scene/outerOps.js.map +1 -0
- package/dist/core/scene/poseHold.js +39 -0
- package/dist/core/scene/poseHold.js.map +1 -0
- package/dist/core/scene/poseOverrides.js +44 -36
- package/dist/core/scene/poseOverrides.js.map +1 -1
- package/dist/core/scene/poseSnapshot.js.map +1 -1
- package/dist/core/scene/reconcileSpecs.js +3 -2
- package/dist/core/scene/reconcileSpecs.js.map +1 -1
- package/dist/core/scene/recorder.js +86 -0
- package/dist/core/scene/recorder.js.map +1 -0
- package/dist/core/scene/renderOrder.js.map +1 -1
- package/dist/core/scene/scene.js +81 -690
- package/dist/core/scene/scene.js.map +1 -1
- package/dist/core/scene/sceneEdits.js +58 -0
- package/dist/core/scene/sceneEdits.js.map +1 -0
- package/dist/core/scene/sceneMutators.js +49 -0
- package/dist/core/scene/sceneMutators.js.map +1 -0
- package/dist/core/scene/scenePoseAdapter.js +16 -0
- package/dist/core/scene/scenePoseAdapter.js.map +1 -0
- package/dist/core/scene/sceneRecording.js +90 -0
- package/dist/core/scene/sceneRecording.js.map +1 -0
- package/dist/core/scene/sceneSelection.js +28 -0
- package/dist/core/scene/sceneSelection.js.map +1 -0
- package/dist/core/scene/sceneState.js +49 -0
- package/dist/core/scene/sceneState.js.map +1 -0
- package/dist/core/scene/serialization.js +8 -5
- package/dist/core/scene/serialization.js.map +1 -1
- package/dist/core/scene/staleReplay.js +51 -0
- package/dist/core/scene/staleReplay.js.map +1 -0
- package/dist/core/scene/statedFields.js +9 -0
- package/dist/core/scene/statedFields.js.map +1 -0
- package/dist/core/scene/treeEdits.js +127 -0
- package/dist/core/scene/treeEdits.js.map +1 -0
- package/dist/core/scene/treeReads.js +26 -0
- package/dist/core/scene/treeReads.js.map +1 -0
- package/dist/core/scene/types.js.map +1 -1
- package/dist/{features/groups → core/scene}/unionOfChildren.js +3 -3
- package/dist/core/scene/unionOfChildren.js.map +1 -0
- package/dist/core/scene/unitScopes.js +13 -0
- package/dist/core/scene/unitScopes.js.map +1 -0
- package/dist/core/scene/useScene.js.map +1 -1
- package/dist/core/selection/readOnlySelection.js +32 -0
- package/dist/core/selection/readOnlySelection.js.map +1 -0
- package/dist/core/selection/usePublishSceneSelection.js +26 -0
- package/dist/core/selection/usePublishSceneSelection.js.map +1 -0
- package/dist/core/selection/useSelection.js +34 -25
- package/dist/core/selection/useSelection.js.map +1 -1
- package/dist/core/shapeKinds.js.map +1 -1
- package/dist/core/stylus/stylus.js.map +1 -1
- package/dist/core/stylus/usePointerStylus.js.map +1 -1
- package/dist/core/usePaintKinds.js +1 -1
- package/dist/core/usePaintKinds.js.map +1 -1
- package/dist/core/viewport/clientToWorld.js.map +1 -1
- package/dist/core/viewport/fitViewToBounds.js.map +1 -1
- package/dist/core/viewport/parallax.js.map +1 -1
- package/dist/core/viewport/screenSlop.js +11 -11
- package/dist/core/viewport/screenSlop.js.map +1 -1
- package/dist/core/viewport/useCanvasSize.js.map +1 -1
- package/dist/core/viewport/useDecayLoop.js +8 -8
- package/dist/core/viewport/useDecayLoop.js.map +1 -1
- package/dist/core/viewport/useNodeOverlayFrame.js +84 -0
- package/dist/core/viewport/useNodeOverlayFrame.js.map +1 -0
- package/dist/core/viewport/useViewAnimation.js +102 -43
- package/dist/core/viewport/useViewAnimation.js.map +1 -1
- package/dist/core/viewport/view.js +7 -7
- package/dist/core/viewport/view.js.map +1 -1
- package/dist/core/viewport/wheelHandler.js.map +1 -1
- package/dist/{cornerHandles-CtCb8a3G.d.ts → cornerHandles-BEshc4z3.d.ts} +11 -24
- package/dist/debug/createDebugOverlayLayer.js +100 -100
- package/dist/debug/createDebugOverlayLayer.js.map +1 -1
- package/dist/debug/createDebugSink.js.map +1 -1
- package/dist/debug/frameStats.js.map +1 -1
- package/dist/debug/useDebugSink.js +52 -0
- package/dist/debug/useDebugSink.js.map +1 -0
- package/dist/features/chrome-caps/buildChromeCtx.js.map +1 -1
- package/dist/features/chrome-caps/conditions.js.map +1 -1
- package/dist/features/chrome-caps/defaults.js.map +1 -1
- package/dist/features/chrome-caps/resolve.js.map +1 -1
- package/dist/features/chrome-caps/useChromeCaps.js +54 -0
- package/dist/features/chrome-caps/useChromeCaps.js.map +1 -0
- package/dist/features/chrome-caps/useHoverTracking.js.map +1 -1
- package/dist/features/ingestion/contentHandlers.js +25 -19
- package/dist/features/ingestion/contentHandlers.js.map +1 -1
- package/dist/features/ingestion/imageHandler.js +21 -24
- package/dist/features/ingestion/imageHandler.js.map +1 -1
- package/dist/features/ingestion/openFilePicker.js.map +1 -1
- package/dist/features/ingestion/placement.js +16 -0
- package/dist/features/ingestion/placement.js.map +1 -0
- package/dist/features/ingestion/svgHandler.js +5 -0
- package/dist/features/ingestion/svgHandler.js.map +1 -1
- package/dist/features/ingestion/textHandler.js +28 -0
- package/dist/features/ingestion/textHandler.js.map +1 -0
- package/dist/features/ingestion/useCanvasIngestion.js +48 -0
- package/dist/features/ingestion/useCanvasIngestion.js.map +1 -0
- package/dist/features/ingestion/weaselJsonHandler.js +5 -0
- package/dist/features/ingestion/weaselJsonHandler.js.map +1 -1
- package/dist/features/longPress/longPressFeedback.js.map +1 -1
- package/dist/features/modes/modeLayers.js +7 -7
- package/dist/features/modes/modeLayers.js.map +1 -1
- package/dist/features/paths/editablePath.js +47 -0
- package/dist/features/paths/editablePath.js.map +1 -0
- package/dist/features/paths/index.js +9 -16
- package/dist/features/paths/pathEditState.js +41 -0
- package/dist/features/paths/pathEditState.js.map +1 -0
- package/dist/features/paths/pathEditingOverlayLayer.js +36 -38
- package/dist/features/paths/pathEditingOverlayLayer.js.map +1 -1
- package/dist/features/paths/pathLayer.js +3 -2
- package/dist/features/paths/pathLayer.js.map +1 -1
- package/dist/features/paths/penPreviewLayer.js +86 -88
- package/dist/features/paths/penPreviewLayer.js.map +1 -1
- package/dist/features/paths/usePathEdit.js +34 -0
- package/dist/features/paths/usePathEdit.js.map +1 -0
- package/dist/features/poseRun/usePoseRun.js +42 -55
- package/dist/features/poseRun/usePoseRun.js.map +1 -1
- package/dist/features/selection/overlay.js +170 -178
- package/dist/features/selection/overlay.js.map +1 -1
- package/dist/features/text/index.js +6 -0
- package/dist/features/text/textLayer.js +1 -1
- package/dist/features/text/textLayer.js.map +1 -1
- package/dist/features/text/useSceneTextEdit.js +95 -82
- package/dist/features/text/useSceneTextEdit.js.map +1 -1
- package/dist/features/viewports/viewportLayer.js +25 -36
- package/dist/features/viewports/viewportLayer.js.map +1 -1
- package/dist/index.d.ts +4507 -8459
- package/dist/index.js +275 -320
- package/dist/input/keyState.js +14 -14
- package/dist/interactions/actions/actionShortcuts.js.map +1 -1
- package/dist/interactions/actions/{defaults/align.js → align/action.js} +15 -16
- package/dist/interactions/actions/align/action.js.map +1 -0
- package/dist/interactions/actions/align/align.js +23 -23
- package/dist/interactions/actions/align/align.js.map +1 -1
- package/dist/interactions/actions/booleans/action.js +65 -0
- package/dist/interactions/actions/booleans/action.js.map +1 -0
- package/dist/interactions/actions/booleans/booleans.js +69 -78
- package/dist/interactions/actions/booleans/booleans.js.map +1 -1
- package/dist/interactions/actions/booleans/operands.js +40 -0
- package/dist/interactions/actions/booleans/operands.js.map +1 -0
- package/dist/interactions/actions/booleans/pieces.js +45 -0
- package/dist/interactions/actions/booleans/pieces.js.map +1 -0
- package/dist/interactions/actions/booleans/placement.js +24 -0
- package/dist/interactions/actions/booleans/placement.js.map +1 -0
- package/dist/interactions/actions/booleans/useBooleans.js +11 -9
- package/dist/interactions/actions/booleans/useBooleans.js.map +1 -1
- package/dist/interactions/actions/booleans/useBooleansAdapter.js.map +1 -1
- package/dist/interactions/actions/{defaults/clipboard.js → clipboard/action.js} +19 -19
- package/dist/interactions/actions/clipboard/action.js.map +1 -0
- package/dist/interactions/actions/clipboard/clipboardOps.js +15 -15
- package/dist/interactions/actions/clipboard/clipboardOps.js.map +1 -1
- package/dist/interactions/actions/clipboard/wireFormat.js.map +1 -1
- package/dist/interactions/actions/clone/action.js +98 -0
- package/dist/interactions/actions/clone/action.js.map +1 -0
- package/dist/interactions/actions/clone/behaviors.js +52 -0
- package/dist/interactions/actions/clone/behaviors.js.map +1 -0
- package/dist/interactions/actions/defaultCommitAdapter.js +10 -37
- package/dist/interactions/actions/defaultCommitAdapter.js.map +1 -1
- package/dist/interactions/actions/defaults/anchorEditing.js +41 -43
- package/dist/interactions/actions/defaults/anchorEditing.js.map +1 -1
- package/dist/interactions/actions/defaults/areaSelect.js.map +1 -1
- package/dist/interactions/actions/defaults/cancelGesture.js.map +1 -1
- package/dist/interactions/actions/defaults/clearSelection.js.map +1 -1
- package/dist/interactions/actions/defaults/createPaintAction.js.map +1 -1
- package/dist/interactions/actions/defaults/delete.js.map +1 -1
- package/dist/interactions/actions/defaults/duplicate.js +19 -19
- package/dist/interactions/actions/defaults/duplicate.js.map +1 -1
- package/dist/interactions/actions/defaults/enterTextEdit.js.map +1 -1
- package/dist/interactions/actions/defaults/group.js +35 -40
- package/dist/interactions/actions/defaults/group.js.map +1 -1
- package/dist/interactions/actions/defaults/icons/booleanIcons.js +24 -1
- package/dist/interactions/actions/defaults/icons/booleanIcons.js.map +1 -1
- package/dist/interactions/actions/defaults/icons/outlineIcons.js +39 -1
- package/dist/interactions/actions/defaults/icons/outlineIcons.js.map +1 -1
- package/dist/interactions/actions/defaults/ingest.js +19 -15
- package/dist/interactions/actions/defaults/ingest.js.map +1 -1
- package/dist/interactions/actions/defaults/insertPathAnchor.js +14 -15
- package/dist/interactions/actions/defaults/insertPathAnchor.js.map +1 -1
- package/dist/interactions/actions/defaults/nudge.js +30 -31
- package/dist/interactions/actions/defaults/nudge.js.map +1 -1
- package/dist/interactions/actions/defaults/pinchZoom.js.map +1 -1
- package/dist/interactions/actions/defaults/requiresSelection.js.map +1 -1
- package/dist/interactions/actions/defaults/setFill.js +9 -3
- package/dist/interactions/actions/defaults/setFill.js.map +1 -1
- package/dist/interactions/actions/defaults/setFillOpacity.js +4 -1
- package/dist/interactions/actions/defaults/setFillOpacity.js.map +1 -1
- package/dist/interactions/actions/defaults/setStroke.js.map +1 -1
- package/dist/interactions/actions/defaults/sliceOps.js +20 -22
- package/dist/interactions/actions/defaults/sliceOps.js.map +1 -1
- package/dist/interactions/actions/defaults/toolActivate.js.map +1 -1
- package/dist/interactions/actions/defaults/toolResetToDefault.js.map +1 -1
- package/dist/interactions/actions/defaults/viewportDragPan.js +1 -1
- package/dist/interactions/actions/defaults/viewportDragPan.js.map +1 -1
- package/dist/interactions/actions/defaults/viewportWheelPan.js.map +1 -1
- package/dist/interactions/actions/defaults/viewportZoom.js.map +1 -1
- package/dist/interactions/actions/{defaults/distribute.js → distribute/action.js} +18 -19
- package/dist/interactions/actions/distribute/action.js.map +1 -0
- package/dist/interactions/actions/distribute/distribute.js +11 -11
- package/dist/interactions/actions/distribute/distribute.js.map +1 -1
- package/dist/interactions/actions/{defaults/editAnchors.js → edit-anchors/action.js} +19 -21
- package/dist/interactions/actions/edit-anchors/action.js.map +1 -0
- package/dist/interactions/actions/edit-anchors/geometry.js +2 -4
- package/dist/interactions/actions/edit-anchors/geometry.js.map +1 -1
- package/dist/interactions/actions/flip/action.js +124 -0
- package/dist/interactions/actions/flip/action.js.map +1 -0
- package/dist/interactions/actions/flip/helpers.js +1 -1
- package/dist/interactions/actions/flip/helpers.js.map +1 -1
- package/dist/interactions/actions/gestureFrames.js +18 -0
- package/dist/interactions/actions/gestureFrames.js.map +1 -0
- package/dist/interactions/actions/gestureLifecycle.js +47 -20
- package/dist/interactions/actions/gestureLifecycle.js.map +1 -1
- package/dist/interactions/actions/insert/action.js +72 -0
- package/dist/interactions/actions/insert/action.js.map +1 -0
- package/dist/interactions/actions/insert/commit.js +28 -0
- package/dist/interactions/actions/insert/commit.js.map +1 -0
- package/dist/interactions/actions/insert/extras.js +65 -0
- package/dist/interactions/actions/insert/extras.js.map +1 -0
- package/dist/interactions/actions/insert/frame.js +48 -0
- package/dist/interactions/actions/insert/frame.js.map +1 -0
- package/dist/interactions/actions/insert/geometry.js +35 -0
- package/dist/interactions/actions/insert/geometry.js.map +1 -0
- package/dist/interactions/actions/insert/rotateAction.js +21 -0
- package/dist/interactions/actions/insert/rotateAction.js.map +1 -0
- package/dist/interactions/actions/insert/session.js +59 -0
- package/dist/interactions/actions/insert/session.js.map +1 -0
- package/dist/interactions/actions/insert/shape.js +34 -0
- package/dist/interactions/actions/insert/shape.js.map +1 -0
- package/dist/interactions/actions/lasso-select/action.js +143 -0
- package/dist/interactions/actions/lasso-select/action.js.map +1 -0
- package/dist/interactions/actions/move/action.js +87 -0
- package/dist/interactions/actions/move/action.js.map +1 -0
- package/dist/interactions/actions/move/behaviors/layoutDrop.js +51 -0
- package/dist/interactions/actions/move/behaviors/layoutDrop.js.map +1 -0
- package/dist/interactions/actions/move/behaviors/reparentOnDrop.js +15 -0
- package/dist/interactions/actions/move/behaviors/reparentOnDrop.js.map +1 -0
- package/dist/interactions/actions/move/behaviors/snapToContainer.js +24 -23
- package/dist/interactions/actions/move/behaviors/snapToContainer.js.map +1 -1
- package/dist/interactions/actions/move/capture.js +99 -0
- package/dist/interactions/actions/move/capture.js.map +1 -0
- package/dist/interactions/actions/move/commit/index.js +41 -0
- package/dist/interactions/actions/move/commit/index.js.map +1 -0
- package/dist/interactions/actions/move/commit/layoutDrop.js +44 -0
- package/dist/interactions/actions/move/commit/layoutDrop.js.map +1 -0
- package/dist/interactions/actions/move/commit/layoutRelease.js +100 -0
- package/dist/interactions/actions/move/commit/layoutRelease.js.map +1 -0
- package/dist/interactions/actions/move/commit/rebase.js +18 -0
- package/dist/interactions/actions/move/commit/rebase.js.map +1 -0
- package/dist/interactions/actions/move/commit/reparent.js +65 -0
- package/dist/interactions/actions/move/commit/reparent.js.map +1 -0
- package/dist/interactions/actions/move/delta.js +51 -0
- package/dist/interactions/actions/move/delta.js.map +1 -0
- package/dist/interactions/actions/move/frame.js +59 -0
- package/dist/interactions/actions/move/frame.js.map +1 -0
- package/dist/interactions/actions/move/gestureAdapter.js +15 -40
- package/dist/interactions/actions/move/gestureAdapter.js.map +1 -1
- package/dist/interactions/actions/move/landedDescendants.js +8 -8
- package/dist/interactions/actions/move/layout/container.js +94 -0
- package/dist/interactions/actions/move/layout/container.js.map +1 -0
- package/dist/interactions/actions/move/layout/dragged.js +58 -0
- package/dist/interactions/actions/move/layout/dragged.js.map +1 -0
- package/dist/interactions/actions/move/layout/dropPass.js +122 -0
- package/dist/interactions/actions/move/layout/dropPass.js.map +1 -0
- package/dist/interactions/actions/move/layout/exits.js +38 -0
- package/dist/interactions/actions/move/layout/exits.js.map +1 -0
- package/dist/interactions/actions/move/layout/glide.js +48 -0
- package/dist/interactions/actions/move/layout/glide.js.map +1 -0
- package/dist/interactions/actions/move/session.js +63 -0
- package/dist/interactions/actions/move/session.js.map +1 -0
- package/dist/interactions/actions/move/translate.js +61 -0
- package/dist/interactions/actions/move/translate.js.map +1 -0
- package/dist/interactions/actions/outlines/createOutlines.js +17 -64
- package/dist/interactions/actions/outlines/createOutlines.js.map +1 -1
- package/dist/interactions/actions/outlines/createOutlinesAction.js +51 -0
- package/dist/interactions/actions/outlines/createOutlinesAction.js.map +1 -0
- package/dist/interactions/actions/outlines/outlineStroke.js +72 -0
- package/dist/interactions/actions/outlines/outlineStroke.js.map +1 -0
- package/dist/interactions/actions/outlines/outlineStrokeAction.js +37 -0
- package/dist/interactions/actions/outlines/outlineStrokeAction.js.map +1 -0
- package/dist/interactions/actions/outlines/replaceWithPaths.js +54 -0
- package/dist/interactions/actions/outlines/replaceWithPaths.js.map +1 -0
- package/dist/interactions/actions/outlines/strokeRegion.js +27 -0
- package/dist/interactions/actions/outlines/strokeRegion.js.map +1 -0
- package/dist/interactions/actions/planeInput.js.map +1 -1
- package/dist/interactions/actions/pointerState.js +12 -0
- package/dist/interactions/actions/pointerState.js.map +1 -0
- package/dist/interactions/actions/poseDescriptorDep.js +1 -1
- package/dist/interactions/actions/poseDescriptorDep.js.map +1 -1
- package/dist/interactions/actions/poseFrame.js +26 -26
- package/dist/interactions/actions/poseFrame.js.map +1 -1
- package/dist/interactions/actions/resize/action.js +55 -0
- package/dist/interactions/actions/resize/action.js.map +1 -0
- package/dist/interactions/actions/resize/behaviors/lockAspect.js.map +1 -1
- package/dist/interactions/actions/resize/boxFrame.js +16 -0
- package/dist/interactions/actions/resize/boxFrame.js.map +1 -0
- package/dist/interactions/actions/resize/capture.js +85 -0
- package/dist/interactions/actions/resize/capture.js.map +1 -0
- package/dist/interactions/actions/resize/commit.js +69 -0
- package/dist/interactions/actions/resize/commit.js.map +1 -0
- package/dist/interactions/actions/resize/frame.js +74 -0
- package/dist/interactions/actions/resize/frame.js.map +1 -0
- package/dist/interactions/actions/resize/pointSnap.js +111 -0
- package/dist/interactions/actions/resize/pointSnap.js.map +1 -0
- package/dist/interactions/actions/resize/ruleBounds.js +9 -0
- package/dist/interactions/actions/resize/ruleBounds.js.map +1 -0
- package/dist/interactions/actions/resize/session.js +49 -0
- package/dist/interactions/actions/resize/session.js.map +1 -0
- package/dist/interactions/actions/resolveOverlays.js.map +1 -1
- package/dist/interactions/actions/resolvePreviews.js.map +1 -1
- package/dist/interactions/actions/rotate/action.js +56 -0
- package/dist/interactions/actions/rotate/action.js.map +1 -0
- package/dist/interactions/actions/rotate/behaviors/index.js +7 -0
- package/dist/interactions/actions/rotate/behaviors/index.js.map +1 -0
- package/dist/interactions/actions/rotate/behaviors/snapRotation.js +12 -0
- package/dist/interactions/actions/rotate/behaviors/snapRotation.js.map +1 -0
- package/dist/interactions/actions/rotate/commit.js +40 -0
- package/dist/interactions/actions/rotate/commit.js.map +1 -0
- package/dist/interactions/actions/rotate/frame.js +65 -0
- package/dist/interactions/actions/rotate/frame.js.map +1 -0
- package/dist/interactions/actions/rotate/handle.js +12 -12
- package/dist/interactions/actions/rotate/handle.js.map +1 -1
- package/dist/interactions/actions/rotate/session.js +92 -0
- package/dist/interactions/actions/rotate/session.js.map +1 -0
- package/dist/interactions/actions/spatialReference.js.map +1 -1
- package/dist/interactions/actions/useStandardActions.js +77 -72
- package/dist/interactions/actions/useStandardActions.js.map +1 -1
- package/dist/interactions/gestures/pointerDrag/pointerDrag.js +61 -42
- package/dist/interactions/gestures/pointerDrag/pointerDrag.js.map +1 -1
- package/dist/interactions/gestures/shared/originProjection.js +1 -1
- package/dist/interactions/gestures/shared/originProjection.js.map +1 -1
- package/dist/interactions/gestures/shared/screenTolerance.js +8 -2
- package/dist/interactions/gestures/shared/screenTolerance.js.map +1 -1
- package/dist/interactions/gestures/shared/snap.js.map +1 -1
- package/dist/layout/arrivals.js +20 -23
- package/dist/layout/arrivals.js.map +1 -1
- package/dist/math-CYUjoyyU.d.ts +33 -0
- package/dist/math.d.ts +5 -2
- package/dist/math.js +6 -6
- package/dist/mesh.d.ts +4 -268
- package/dist/mesh.js +3 -7
- package/dist/move.d.ts +6 -4
- package/dist/{originProjection-gHnOup4e.d.ts → originProjection-PPT88jZv.d.ts} +1 -1
- package/dist/patterns-builtin.d.ts +1 -118
- package/dist/patterns-builtin.js +2 -3
- package/dist/poseDescriptor-Bqk-11Rl.d.ts +73 -0
- package/dist/renderer.d.ts +1 -92
- package/dist/renderer.js +2 -19
- package/dist/resize.d.ts +11 -22
- package/dist/resize.js +1 -1
- package/dist/style.css +1 -1
- package/dist/test-hook/install.js.map +1 -1
- package/dist/test-hook/useTestHook.js +22 -0
- package/dist/test-hook/useTestHook.js.map +1 -0
- package/dist/test-seams-D0pyV3pR.d.ts +149 -0
- package/dist/test-seams.d.ts +4 -4
- package/dist/test-seams.js +2 -2
- package/dist/tools/builtin/bone/boneActions.js +130 -0
- package/dist/tools/builtin/bone/boneActions.js.map +1 -0
- package/dist/tools/builtin/bone/boneOverlay.js +58 -0
- package/dist/tools/builtin/bone/boneOverlay.js.map +1 -0
- package/dist/tools/builtin/bone/placedRig.js +24 -0
- package/dist/tools/builtin/bone/placedRig.js.map +1 -0
- package/dist/tools/builtin/bone/rigEditState.js +21 -0
- package/dist/tools/builtin/bone/rigEditState.js.map +1 -0
- package/dist/tools/builtin/bone/useBoneTool.js +98 -0
- package/dist/tools/builtin/bone/useBoneTool.js.map +1 -0
- package/dist/tools/builtin/ellipse/useEllipseTool.js.map +1 -1
- package/dist/tools/builtin/eyedropper/useEyedropperTool.js.map +1 -1
- package/dist/tools/builtin/hand/useHandTool.js.map +1 -1
- package/dist/tools/builtin/image/useImageTool.js.map +1 -1
- package/dist/tools/builtin/lasso/useLassoTool.js.map +1 -1
- package/dist/tools/builtin/line/useLineTool.js.map +1 -1
- package/dist/tools/builtin/pen/usePenTool.js +161 -163
- package/dist/tools/builtin/pen/usePenTool.js.map +1 -1
- package/dist/tools/builtin/pencil/usePencilTool.js.map +1 -1
- package/dist/tools/builtin/pickTopMostHit.js.map +1 -1
- package/dist/tools/builtin/polygon/usePolygonTool.js.map +1 -1
- package/dist/tools/builtin/rect/useRectTool.js.map +1 -1
- package/dist/tools/builtin/select/adapterPointQuery.js +36 -0
- package/dist/tools/builtin/select/adapterPointQuery.js.map +1 -0
- package/dist/tools/builtin/select/selectionContributions.js +4 -4
- package/dist/tools/builtin/select/selectionContributions.js.map +1 -1
- package/dist/tools/builtin/select/useSelectTool.js +43 -71
- package/dist/tools/builtin/select/useSelectTool.js.map +1 -1
- package/dist/tools/builtin/shared/pointerFollower.js.map +1 -1
- package/dist/tools/builtin/slice/useSliceTool.js +67 -72
- package/dist/tools/builtin/slice/useSliceTool.js.map +1 -1
- package/dist/tools/builtin/star/useStarTool.js.map +1 -1
- package/dist/tools/builtin/text/useTextTool.js +8 -0
- package/dist/tools/builtin/text/useTextTool.js.map +1 -1
- package/dist/tools/builtin/weight/useWeightTool.js +77 -0
- package/dist/tools/builtin/weight/useWeightTool.js.map +1 -0
- package/dist/tools/builtin/weight/weightActions.js +112 -0
- package/dist/tools/builtin/weight/weightActions.js.map +1 -0
- package/dist/tools/builtin/weight/weightOverlay.js +61 -0
- package/dist/tools/builtin/weight/weightOverlay.js.map +1 -0
- package/dist/tools/overlayBinding.js.map +1 -1
- package/dist/tools/useKeybindings.js +20 -14
- package/dist/tools/useKeybindings.js.map +1 -1
- package/dist/{types-k-5Oqh-U.d.ts → types-CIKDwlsP.d.ts} +84 -164
- package/dist/util/paint.js +1 -1
- package/dist/util/paint.js.map +1 -1
- package/dist/version.js +1 -1
- package/package.json +26 -21
- package/dist/animation/colorHelpers.js +0 -135
- package/dist/animation/colorHelpers.js.map +0 -1
- package/dist/animation/colorRegistry.js +0 -37
- package/dist/animation/colorRegistry.js.map +0 -1
- package/dist/animation/engine/axes.js +0 -36
- package/dist/animation/engine/axes.js.map +0 -1
- package/dist/animation/engine/codec.js +0 -170
- package/dist/animation/engine/codec.js.map +0 -1
- package/dist/animation/engine/integrator.js +0 -12
- package/dist/animation/engine/integrator.js.map +0 -1
- package/dist/animation/loop.js +0 -60
- package/dist/animation/loop.js.map +0 -1
- package/dist/animation/observe.js +0 -23
- package/dist/animation/observe.js.map +0 -1
- package/dist/animation/rig/blendPoses.js +0 -43
- package/dist/animation/rig/blendPoses.js.map +0 -1
- package/dist/animation/rig/mirrorPose.js +0 -19
- package/dist/animation/rig/mirrorPose.js.map +0 -1
- package/dist/animation/rig/resolveSkeleton.js +0 -33
- package/dist/animation/rig/resolveSkeleton.js.map +0 -1
- package/dist/animation/rig/solveIk.js +0 -103
- package/dist/animation/rig/solveIk.js.map +0 -1
- package/dist/animation/rig/types.js +0 -12
- package/dist/animation/rig/types.js.map +0 -1
- package/dist/animation/slew.js +0 -27
- package/dist/animation/slew.js.map +0 -1
- package/dist/animation/stagger.js +0 -146
- package/dist/animation/stagger.js.map +0 -1
- package/dist/animation/timeline/booking.js +0 -114
- package/dist/animation/timeline/booking.js.map +0 -1
- package/dist/animation/timeline/createTimeline.js +0 -125
- package/dist/animation/timeline/createTimeline.js.map +0 -1
- package/dist/animation/timeline/sampleTrack.js +0 -79
- package/dist/animation/timeline/sampleTrack.js.map +0 -1
- package/dist/animation/useAnimator.js +0 -388
- package/dist/animation/useAnimator.js.map +0 -1
- package/dist/autoPoseDescriptor-Ct7yqivU.d.ts +0 -108
- package/dist/builtins-DPcdghtB.d.ts +0 -1223
- package/dist/canvas/MinimapCanvas.js +0 -140
- package/dist/canvas/MinimapCanvas.js.map +0 -1
- package/dist/canvas/deps/poseComposition.js +0 -11
- package/dist/canvas/deps/poseComposition.js.map +0 -1
- package/dist/canvas/minimapMath.js +0 -82
- package/dist/canvas/minimapMath.js.map +0 -1
- package/dist/canvas/toolPreview.js +0 -39
- package/dist/canvas/toolPreview.js.map +0 -1
- package/dist/core/adapters/arrayAdapter.js +0 -94
- package/dist/core/adapters/arrayAdapter.js.map +0 -1
- package/dist/core/adapters/useArrayAdapter.js +0 -13
- package/dist/core/adapters/useArrayAdapter.js.map +0 -1
- package/dist/core/fillInPoseFrame.js +0 -102
- package/dist/core/fillInPoseFrame.js.map +0 -1
- package/dist/core/geometry/poseFrame.js +0 -44
- package/dist/core/geometry/poseFrame.js.map +0 -1
- package/dist/core/geometry/poseRotation.js +0 -58
- package/dist/core/geometry/poseRotation.js.map +0 -1
- package/dist/core/gradient.js +0 -136
- package/dist/core/gradient.js.map +0 -1
- package/dist/core/markerInset.js +0 -24
- package/dist/core/markerInset.js.map +0 -1
- package/dist/core/mixed.js +0 -6
- package/dist/core/mixed.js.map +0 -1
- package/dist/core/paintKinds.js +0 -156
- package/dist/core/paintKinds.js.map +0 -1
- package/dist/core/scene/pickability.js +0 -6
- package/dist/core/scene/pickability.js.map +0 -1
- package/dist/core/strokeMarkerShapes.js +0 -139
- package/dist/core/strokeMarkerShapes.js.map +0 -1
- package/dist/core/strokeMarkers.js +0 -28
- package/dist/core/strokeMarkers.js.map +0 -1
- package/dist/core/viewport/meanScale.js +0 -8
- package/dist/core/viewport/meanScale.js.map +0 -1
- package/dist/core/viewport/pxExtent.js +0 -42
- package/dist/core/viewport/pxExtent.js.map +0 -1
- package/dist/features/cursor/paintedCursorLayer.js.map +0 -1
- package/dist/features/focus/gateLayer.js.map +0 -1
- package/dist/features/focus/useCanvasFocus.js +0 -29
- package/dist/features/focus/useCanvasFocus.js.map +0 -1
- package/dist/features/groups/children.js.map +0 -1
- package/dist/features/groups/composePose.js.map +0 -1
- package/dist/features/groups/nestedHit.js.map +0 -1
- package/dist/features/groups/unionOfChildren.js.map +0 -1
- package/dist/features/images/imageCache.js +0 -104
- package/dist/features/images/imageCache.js.map +0 -1
- package/dist/features/ingestion/index.js +0 -8
- package/dist/features/meshPaint/bake.js +0 -79
- package/dist/features/meshPaint/bake.js.map +0 -1
- package/dist/features/meshPaint/bakeCache.js +0 -59
- package/dist/features/meshPaint/bakeCache.js.map +0 -1
- package/dist/features/meshPaint/handles.js +0 -86
- package/dist/features/meshPaint/handles.js.map +0 -1
- package/dist/features/meshPaint/lazyKind.js.map +0 -1
- package/dist/features/meshPaint/meshPaint.js +0 -239
- package/dist/features/meshPaint/meshPaint.js.map +0 -1
- package/dist/features/meshPaint/meshShader.js +0 -6
- package/dist/features/meshPaint/meshShader.js.map +0 -1
- package/dist/features/meshPaint/register.js +0 -7
- package/dist/features/meshPaint/register.js.map +0 -1
- package/dist/features/meshPaint/surface.js +0 -110
- package/dist/features/meshPaint/surface.js.map +0 -1
- package/dist/features/minimap/actions.js +0 -53
- package/dist/features/minimap/actions.js.map +0 -1
- package/dist/features/minimap/createMinimapContribution.js +0 -96
- package/dist/features/minimap/createMinimapContribution.js.map +0 -1
- package/dist/features/minimap/layers.js +0 -85
- package/dist/features/minimap/layers.js.map +0 -1
- package/dist/features/overlays/useNodeOverlayFrame.js +0 -103
- package/dist/features/overlays/useNodeOverlayFrame.js.map +0 -1
- package/dist/features/parallax/createParallaxLayer.js +0 -26
- package/dist/features/parallax/createParallaxLayer.js.map +0 -1
- package/dist/features/parallax/createParallaxPlane.js +0 -22
- package/dist/features/parallax/createParallaxPlane.js.map +0 -1
- package/dist/features/paths/anchorEdits.js +0 -167
- package/dist/features/paths/anchorEdits.js.map +0 -1
- package/dist/features/paths/anchors.js +0 -159
- package/dist/features/paths/anchors.js.map +0 -1
- package/dist/features/paths/booleans.js +0 -2
- package/dist/features/paths/markerCommands.js +0 -149
- package/dist/features/paths/markerCommands.js.map +0 -1
- package/dist/features/paths/markerSites.js +0 -59
- package/dist/features/paths/markerSites.js.map +0 -1
- package/dist/features/paths/markers.js +0 -95
- package/dist/features/paths/markers.js.map +0 -1
- package/dist/features/paths/nearestAnchor.js +0 -36
- package/dist/features/paths/nearestAnchor.js.map +0 -1
- package/dist/features/paths/pathInWorld.js +0 -41
- package/dist/features/paths/pathInWorld.js.map +0 -1
- package/dist/features/paths/poseDescriptor.js +0 -39
- package/dist/features/paths/poseDescriptor.js.map +0 -1
- package/dist/features/paths/strokeToPath.js +0 -40
- package/dist/features/paths/strokeToPath.js.map +0 -1
- package/dist/features/paths/tessellate/dash.js +0 -52
- package/dist/features/paths/tessellate/dash.js.map +0 -1
- package/dist/features/paths/tessellate/insets.js +0 -32
- package/dist/features/paths/tessellate/insets.js.map +0 -1
- package/dist/features/paths/tessellate/metric.js +0 -72
- package/dist/features/paths/tessellate/metric.js.map +0 -1
- package/dist/features/paths/tessellate/stroke.js +0 -170
- package/dist/features/paths/tessellate/stroke.js.map +0 -1
- package/dist/features/paths/tessellate/vertexWidths.js +0 -32
- package/dist/features/paths/tessellate/vertexWidths.js.map +0 -1
- package/dist/features/patterns/commandPaint.js +0 -18
- package/dist/features/patterns/commandPaint.js.map +0 -1
- package/dist/features/patterns/index.js +0 -11
- package/dist/features/patterns/index.js.map +0 -1
- package/dist/features/patterns/patterns-builtin.js +0 -38
- package/dist/features/patterns/patterns-builtin.js.map +0 -1
- package/dist/features/patterns/rasterizeTile.js +0 -17
- package/dist/features/patterns/rasterizeTile.js.map +0 -1
- package/dist/features/patterns/resolveSpec.js +0 -65
- package/dist/features/patterns/resolveSpec.js.map +0 -1
- package/dist/features/patterns/tileGeometry.js +0 -158
- package/dist/features/patterns/tileGeometry.js.map +0 -1
- package/dist/features/pointer/PointerContext.js +0 -45
- package/dist/features/pointer/PointerContext.js.map +0 -1
- package/dist/features/selection/SelectionContext.js +0 -51
- package/dist/features/selection/SelectionContext.js.map +0 -1
- package/dist/features/simulation/createSimulation.js +0 -61
- package/dist/features/simulation/createSimulation.js.map +0 -1
- package/dist/features/simulation/types.js +0 -6
- package/dist/features/simulation/types.js.map +0 -1
- package/dist/features/simulation/useSimulation.js +0 -74
- package/dist/features/simulation/useSimulation.js.map +0 -1
- package/dist/features/text/domOffsets.js +0 -82
- package/dist/features/text/domOffsets.js.map +0 -1
- package/dist/features/text/domRuns.js +0 -230
- package/dist/features/text/domRuns.js.map +0 -1
- package/dist/features/text/fitTextPose.js +0 -38
- package/dist/features/text/fitTextPose.js.map +0 -1
- package/dist/features/text/hitTest.js +0 -48
- package/dist/features/text/hitTest.js.map +0 -1
- package/dist/features/text/isTextData.js +0 -8
- package/dist/features/text/isTextData.js.map +0 -1
- package/dist/features/text/overlayDirection.js +0 -15
- package/dist/features/text/overlayDirection.js.map +0 -1
- package/dist/features/text/renderLabel.js +0 -14
- package/dist/features/text/renderLabel.js.map +0 -1
- package/dist/features/text/runs/effectiveRangeStyle.js +0 -66
- package/dist/features/text/runs/effectiveRangeStyle.js.map +0 -1
- package/dist/features/text/runs/flagRange.js +0 -53
- package/dist/features/text/runs/flagRange.js.map +0 -1
- package/dist/features/text/runs/rangeStyle.js +0 -133
- package/dist/features/text/runs/rangeStyle.js.map +0 -1
- package/dist/features/text/textCommand.js +0 -60
- package/dist/features/text/textCommand.js.map +0 -1
- package/dist/features/text/textToPath.js +0 -181
- package/dist/features/text/textToPath.js.map +0 -1
- package/dist/features/text/useTextEdit.js +0 -491
- package/dist/features/text/useTextEdit.js.map +0 -1
- package/dist/features/tiling/createTiledLayer.js +0 -65
- package/dist/features/tiling/createTiledLayer.js.map +0 -1
- package/dist/features/tiling/tiledProject.js +0 -14
- package/dist/features/tiling/tiledProject.js.map +0 -1
- package/dist/interactions/actions/clone/behaviors/cloneByAltDrag.js +0 -26
- package/dist/interactions/actions/clone/behaviors/cloneByAltDrag.js.map +0 -1
- package/dist/interactions/actions/defaults/align.js.map +0 -1
- package/dist/interactions/actions/defaults/booleans.js +0 -52
- package/dist/interactions/actions/defaults/booleans.js.map +0 -1
- package/dist/interactions/actions/defaults/clipboard.js.map +0 -1
- package/dist/interactions/actions/defaults/clone.js +0 -91
- package/dist/interactions/actions/defaults/clone.js.map +0 -1
- package/dist/interactions/actions/defaults/createOutlines.js +0 -47
- package/dist/interactions/actions/defaults/createOutlines.js.map +0 -1
- package/dist/interactions/actions/defaults/distribute.js.map +0 -1
- package/dist/interactions/actions/defaults/editAnchors.js.map +0 -1
- package/dist/interactions/actions/defaults/flip.js +0 -125
- package/dist/interactions/actions/defaults/flip.js.map +0 -1
- package/dist/interactions/actions/defaults/insert.js +0 -287
- package/dist/interactions/actions/defaults/insert.js.map +0 -1
- package/dist/interactions/actions/defaults/lassoSelect.js +0 -153
- package/dist/interactions/actions/defaults/lassoSelect.js.map +0 -1
- package/dist/interactions/actions/defaults/move.js +0 -778
- package/dist/interactions/actions/defaults/move.js.map +0 -1
- package/dist/interactions/actions/defaults/resize.js +0 -341
- package/dist/interactions/actions/defaults/resize.js.map +0 -1
- package/dist/interactions/actions/defaults/rotate.js +0 -185
- package/dist/interactions/actions/defaults/rotate.js.map +0 -1
- package/dist/interactions/actions/previewOverrides.js +0 -25
- package/dist/interactions/actions/previewOverrides.js.map +0 -1
- package/dist/interactions/actions/resize/autoPoseDescriptor.js.map +0 -1
- package/dist/math-J-ACHyEg.d.ts +0 -159
- package/dist/registerProgram-T9S_PfAX.d.ts +0 -208
- package/dist/renderer/DrawCommand.js +0 -6
- package/dist/renderer/DrawCommand.js.map +0 -1
- package/dist/renderer/WeaselRenderer.js +0 -333
- package/dist/renderer/WeaselRenderer.js.map +0 -1
- package/dist/renderer/batchClip.js +0 -46
- package/dist/renderer/batchClip.js.map +0 -1
- package/dist/renderer/cache/GLImageCache.js +0 -74
- package/dist/renderer/cache/GLImageCache.js.map +0 -1
- package/dist/renderer/cache/GLMeshCache.js +0 -102
- package/dist/renderer/cache/GLMeshCache.js.map +0 -1
- package/dist/renderer/cache/GLTextureCache.js +0 -68
- package/dist/renderer/cache/GLTextureCache.js.map +0 -1
- package/dist/renderer/cache/GradientRampAtlas.js +0 -82
- package/dist/renderer/cache/GradientRampAtlas.js.map +0 -1
- package/dist/renderer/cache/cache.js +0 -13
- package/dist/renderer/cache/cache.js.map +0 -1
- package/dist/renderer/cache/markerCommandCache.js +0 -63
- package/dist/renderer/cache/markerCommandCache.js.map +0 -1
- package/dist/renderer/cache/outlineMeshCache.js +0 -15
- package/dist/renderer/cache/outlineMeshCache.js.map +0 -1
- package/dist/renderer/cache/outlineStrokeMeshCache.js +0 -36
- package/dist/renderer/cache/outlineStrokeMeshCache.js.map +0 -1
- package/dist/renderer/cache/strokeMeshCache.js +0 -55
- package/dist/renderer/cache/strokeMeshCache.js.map +0 -1
- package/dist/renderer/cullDrawCommands.js +0 -90
- package/dist/renderer/cullDrawCommands.js.map +0 -1
- package/dist/renderer/draw/batch.js +0 -133
- package/dist/renderer/draw/batch.js.map +0 -1
- package/dist/renderer/draw/clip.js +0 -89
- package/dist/renderer/draw/clip.js.map +0 -1
- package/dist/renderer/draw/customShader.js +0 -230
- package/dist/renderer/draw/customShader.js.map +0 -1
- package/dist/renderer/draw/drawTriangles.js +0 -8
- package/dist/renderer/draw/drawTriangles.js.map +0 -1
- package/dist/renderer/draw/effects.js +0 -28
- package/dist/renderer/draw/effects.js.map +0 -1
- package/dist/renderer/draw/flushBatch.js +0 -35
- package/dist/renderer/draw/flushBatch.js.map +0 -1
- package/dist/renderer/draw/gradient.js +0 -90
- package/dist/renderer/draw/gradient.js.map +0 -1
- package/dist/renderer/draw/image.js +0 -38
- package/dist/renderer/draw/image.js.map +0 -1
- package/dist/renderer/draw/mesh.js +0 -16
- package/dist/renderer/draw/mesh.js.map +0 -1
- package/dist/renderer/draw/paintBind.js +0 -70
- package/dist/renderer/draw/paintBind.js.map +0 -1
- package/dist/renderer/draw/pathPaint.js +0 -142
- package/dist/renderer/draw/pathPaint.js.map +0 -1
- package/dist/renderer/draw/scratchPass.js +0 -83
- package/dist/renderer/draw/scratchPass.js.map +0 -1
- package/dist/renderer/draw/stencil.js +0 -28
- package/dist/renderer/draw/stencil.js.map +0 -1
- package/dist/renderer/draw/text.js +0 -167
- package/dist/renderer/draw/text.js.map +0 -1
- package/dist/renderer/draw/uniforms.js +0 -77
- package/dist/renderer/draw/uniforms.js.map +0 -1
- package/dist/renderer/draw.js +0 -79
- package/dist/renderer/draw.js.map +0 -1
- package/dist/renderer/drawBatch.js +0 -198
- package/dist/renderer/drawBatch.js.map +0 -1
- package/dist/renderer/effects/EffectTargets.js +0 -48
- package/dist/renderer/effects/EffectTargets.js.map +0 -1
- package/dist/renderer/effects/builtins.js +0 -31
- package/dist/renderer/effects/builtins.js.map +0 -1
- package/dist/renderer/effects/composite.js +0 -11
- package/dist/renderer/effects/composite.js.map +0 -1
- package/dist/renderer/effects/effectPrelude.js +0 -10
- package/dist/renderer/effects/effectPrelude.js.map +0 -1
- package/dist/renderer/effects/types.js +0 -10
- package/dist/renderer/effects/types.js.map +0 -1
- package/dist/renderer/glyphOutlineMesh.js +0 -67
- package/dist/renderer/glyphOutlineMesh.js.map +0 -1
- package/dist/renderer/index.js +0 -20
- package/dist/renderer/math/color.js +0 -321
- package/dist/renderer/math/color.js.map +0 -1
- package/dist/renderer/math/mat3.js +0 -80
- package/dist/renderer/math/mat3.js.map +0 -1
- package/dist/renderer/math/patternSpace.js +0 -22
- package/dist/renderer/math/patternSpace.js.map +0 -1
- package/dist/renderer/math/viewToMat3.js +0 -19
- package/dist/renderer/math/viewToMat3.js.map +0 -1
- package/dist/renderer/paintResources.js +0 -18
- package/dist/renderer/paintResources.js.map +0 -1
- package/dist/renderer/paintScratch.js +0 -37
- package/dist/renderer/paintScratch.js.map +0 -1
- package/dist/renderer/shaders/ShaderProgram.js +0 -74
- package/dist/renderer/shaders/ShaderProgram.js.map +0 -1
- package/dist/renderer/shaders/batchFill.js +0 -119
- package/dist/renderer/shaders/batchFill.js.map +0 -1
- package/dist/renderer/shaders/customPrelude.js +0 -34
- package/dist/renderer/shaders/customPrelude.js.map +0 -1
- package/dist/renderer/shaders/extractUniformNames.js +0 -184
- package/dist/renderer/shaders/extractUniformNames.js.map +0 -1
- package/dist/renderer/shaders/glyphPaint.js +0 -61
- package/dist/renderer/shaders/glyphPaint.js.map +0 -1
- package/dist/renderer/shaders/gradFill.js +0 -31
- package/dist/renderer/shaders/gradFill.js.map +0 -1
- package/dist/renderer/shaders/pathFill.js +0 -14
- package/dist/renderer/shaders/pathFill.js.map +0 -1
- package/dist/renderer/shaders/patternFill.js +0 -25
- package/dist/renderer/shaders/patternFill.js.map +0 -1
- package/dist/renderer/shaders/registerProgram.js +0 -18
- package/dist/renderer/shaders/registerProgram.js.map +0 -1
- package/dist/renderer/spriteSheet.js +0 -14
- package/dist/renderer/spriteSheet.js.map +0 -1
- package/dist/renderer/state/GroupState.js +0 -77
- package/dist/renderer/state/GroupState.js.map +0 -1
- package/dist/renderer/strokeLengths.js +0 -50
- package/dist/renderer/strokeLengths.js.map +0 -1
- package/dist/renderer/syntheticItalic.js +0 -6
- package/dist/renderer/syntheticItalic.js.map +0 -1
- package/dist/renderer/textures/registerTexture.js +0 -34
- package/dist/renderer/textures/registerTexture.js.map +0 -1
- package/dist/scheduling/useVisibleRaf.js +0 -69
- package/dist/scheduling/useVisibleRaf.js.map +0 -1
- package/dist/test-seams-DM2B87-g.d.ts +0 -356
|
@@ -1,39 +1,38 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { resolveDerivedPath as
|
|
4
|
-
import { definesFrame as
|
|
5
|
-
import { asNodeId as
|
|
1
|
+
import { composeWorldPose as e, composesFrames as t } from "../core/scene/composeFrame.js";
|
|
2
|
+
import { createNodeMemoScope as n } from "../core/scene/nodeMemo.js";
|
|
3
|
+
import { resolveDerivedPath as r } from "../core/scene/derivedPath.js";
|
|
4
|
+
import { definesFrame as i, derivedDepOf as a, effectivePose as o } from "../core/scene/effectivePose.js";
|
|
5
|
+
import { asNodeId as s } from "../core/scene/types.js";
|
|
6
6
|
//#region src/canvas/derivedPath.ts
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
return n ? c(n) : void 0;
|
|
7
|
+
function c(n, r) {
|
|
8
|
+
let a = r ?? ((e) => o(n, e));
|
|
9
|
+
if (!t(n.composition)) return a;
|
|
10
|
+
let c = {
|
|
11
|
+
getPose: (e) => {
|
|
12
|
+
let t = n.get(s(e));
|
|
13
|
+
return t ? a(t) : void 0;
|
|
15
14
|
},
|
|
16
|
-
getParent: (
|
|
17
|
-
definesFrame: (
|
|
18
|
-
let
|
|
19
|
-
return
|
|
15
|
+
getParent: (e) => n.get(s(e))?.parent ?? null,
|
|
16
|
+
definesFrame: (e) => {
|
|
17
|
+
let t = n.get(s(e));
|
|
18
|
+
return t === void 0 || i(t);
|
|
20
19
|
}
|
|
21
20
|
};
|
|
22
|
-
return (
|
|
21
|
+
return (t) => e(c, t.id, n.composition.compose);
|
|
23
22
|
}
|
|
24
|
-
function l(e,
|
|
25
|
-
let r =
|
|
26
|
-
if (r === void 0) return (t) =>
|
|
27
|
-
let
|
|
28
|
-
at: c(e,
|
|
23
|
+
function l(e, n) {
|
|
24
|
+
let r = m(n, t(e.composition));
|
|
25
|
+
if (r === void 0) return (t) => a(e, t);
|
|
26
|
+
let i = {
|
|
27
|
+
at: c(e, n),
|
|
29
28
|
slot: r,
|
|
30
29
|
childrenOf: (t) => e.childrenOf(t),
|
|
31
30
|
lookup: (t) => {
|
|
32
31
|
let n = e.get(t);
|
|
33
|
-
return n === void 0 ? void 0 : new u(n,
|
|
32
|
+
return n === void 0 ? void 0 : new u(n, i);
|
|
34
33
|
}
|
|
35
34
|
};
|
|
36
|
-
return
|
|
35
|
+
return i.lookup;
|
|
37
36
|
}
|
|
38
37
|
var u = class {
|
|
39
38
|
ctx;
|
|
@@ -43,28 +42,31 @@ var u = class {
|
|
|
43
42
|
this.ctx = t, this.node = e, this.pose = t.at(e);
|
|
44
43
|
}
|
|
45
44
|
get path() {
|
|
46
|
-
return
|
|
45
|
+
return r(this.node, this.ctx.lookup, this.ctx.childrenOf, this.ctx.slot);
|
|
47
46
|
}
|
|
48
47
|
};
|
|
49
|
-
function d(e, t
|
|
50
|
-
|
|
51
|
-
return (e) => n(e, i, o, a);
|
|
48
|
+
function d(e, t) {
|
|
49
|
+
return t.dependsOn !== void 0 || e.overrides.read(t.id)?.path !== void 0;
|
|
52
50
|
}
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
if (t === void 0) return r === "world" ? "kit:derivedPath:world" : void 0;
|
|
57
|
-
let i = f.get(t);
|
|
58
|
-
return i === void 0 && (i = {}, f.set(t, i)), i[r] ??= e();
|
|
51
|
+
function f(e, n) {
|
|
52
|
+
let i = l(e, n), a = m(n, t(e.composition)), o = (t) => e.childrenOf(t), s = (e) => r(e, i, o, a);
|
|
53
|
+
return n === void 0 ? (t) => e.overrides.read(t.id)?.path ?? s(t) : s;
|
|
59
54
|
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
55
|
+
var p = /* @__PURE__ */ new WeakMap();
|
|
56
|
+
function m(e, t) {
|
|
57
|
+
let r = t ? "world" : "local";
|
|
58
|
+
if (e === void 0) return r === "world" ? "kit:derivedPath:world" : void 0;
|
|
59
|
+
let i = p.get(e);
|
|
60
|
+
return i === void 0 && (i = {}, p.set(e, i)), i[r] ??= n();
|
|
61
|
+
}
|
|
62
|
+
function h(e, t, n) {
|
|
63
|
+
let r = f(e, n);
|
|
64
|
+
return (i, a, o, s) => (n === void 0 ? !d(e, i) : i.dependsOn === void 0) ? t(i, a, o, s) : t(i, a, o, {
|
|
65
|
+
...s,
|
|
66
|
+
derivedPath: r(i)
|
|
65
67
|
});
|
|
66
68
|
}
|
|
67
69
|
//#endregion
|
|
68
|
-
export {
|
|
70
|
+
export { r as resolveDerivedPath, l as sceneDepLookup, f as sceneDerivedPathOf, c as scenePaintedPoseOf, d as showsComputedPath, h as withDerivedPaths };
|
|
69
71
|
|
|
70
72
|
//# sourceMappingURL=derivedPath.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"derivedPath.js","names":["
|
|
1
|
+
{"version":3,"file":"derivedPath.js","names":["scenePaintedPoseOf","local","toPose","effectivePose","scene","node","composesFrames","chain","n","asNodeId","id","definesFrame","composeWorldPose","sceneDepLookup","slot","memoSlotFor","derivedDepOf","ctx","SlotDep","posed","resolveDerivedPath","showsComputedPath","sceneDerivedPathOf","depOf","childrenOf","derived","toPoseScopes","frame","composes","scopes","createNodeMemoScope","withDerivedPaths","derivedPathOf","drawOne","pose","view"],"sources":["../../src/canvas/derivedPath.ts"],"sourcesContent":["/**\n * The render walk's half of derived paths: resolving one against a scene, and\n * handing it to the painter.\n *\n * The resolver itself lives in `core/scene/derivedPath.ts`, beside\n * `derivedPose` — a *pose* can derive from a dependency's path, so\n * `effectivePose` has to be able to reach it.\n */\nimport type { DerivedDep, Node, NodeId, Scene } from 'core/scene/types';\nimport type { Path } from '@weasel-js/geom';\nimport { asNodeId } from 'core/scene/types';\nimport { definesFrame, derivedDepOf, effectivePose } from 'core/scene/effectivePose';\nimport { composesFrames, composeWorldPose, type PoseAdapter } from 'core/scene/composeFrame';\nimport { resolveDerivedPath } from 'core/scene/derivedPath';\nimport { createNodeMemoScope, type NodeMemoScope } from 'core/scene/nodeMemo';\nimport type { SceneViewDrawOne } from './NodeShape';\n\nexport { resolveDerivedPath } from 'core/scene/derivedPath';\n\n/**\n * `(node) => the pose it is painted at`: the slot's `toPose` if it has one,\n * else the scene's effective pose, folded through the parent chain when\n * the scene's composition makes a stored pose local to its container.\n */\nexport function scenePaintedPoseOf<TData, TLayer extends string, TPose>(\n scene: Scene<TData, TLayer, TPose>,\n toPose?: (node: Node<TData, TLayer, TPose>) => TPose,\n): (node: Node<TData, TLayer, TPose>) => TPose {\n const local = toPose ?? ((node: Node<TData, TLayer, TPose>) => effectivePose(scene, node));\n if (!composesFrames(scene.composition)) return local;\n const chain: PoseAdapter<TPose> = {\n getPose: (id) => {\n const n = scene.get(asNodeId(id));\n return n ? local(n) : (undefined as unknown as TPose);\n },\n getParent: (id) => scene.get(asNodeId(id))?.parent ?? null,\n definesFrame: (id) => {\n const n = scene.get(asNodeId(id));\n return n === undefined || definesFrame(n);\n },\n };\n return (node) => composeWorldPose(chain, node.id, scene.composition.compose);\n}\n\n/**\n * `(id) => that node, the pose it is painted at, and the path it derives` —\n * resolved against the scene, so a dependency that is itself derived resolves\n * before it is read.\n *\n * A derived edge is drawn from these coordinates and must meet the nodes it\n * connects, so this reads the pose each one is painted at: see\n * {@link scenePaintedPoseOf}.\n */\nexport function sceneDepLookup<TData, TLayer extends string, TPose>(\n scene: Scene<TData, TLayer, TPose>,\n toPose?: (node: Node<TData, TLayer, TPose>) => TPose,\n): (id: NodeId) => DerivedDep<TPose> | undefined {\n const slot = memoSlotFor(toPose, composesFrames(scene.composition));\n if (slot === undefined) return (id) => derivedDepOf(scene, id);\n const ctx: SlotLookup<TPose> = {\n at: scenePaintedPoseOf(scene, toPose) as (node: unknown) => TPose,\n slot,\n childrenOf: (id: NodeId) => scene.childrenOf(id),\n lookup: (id: NodeId) => {\n const node = scene.get(id);\n return node === undefined ? undefined : new SlotDep(node, ctx);\n },\n };\n return ctx.lookup;\n}\n\ninterface SlotLookup<TPose> {\n at: (node: unknown) => TPose;\n slot: string | NodeMemoScope;\n childrenOf: (id: NodeId) => readonly NodeId[];\n lookup: (id: NodeId) => DerivedDep<TPose> | undefined;\n}\n\n/** A class, not an object literal with a `get path()` — see `SceneDep` in\n * `core/scene/effectivePose.ts` for why. */\nclass SlotDep<TPose> implements DerivedDep<TPose> {\n readonly node: Node<unknown, string, TPose>;\n readonly pose: TPose;\n\n constructor(posed: unknown, private readonly ctx: SlotLookup<TPose>) {\n this.node = posed as Node<unknown, string, TPose>;\n this.pose = ctx.at(posed);\n }\n\n get path(): Path | null {\n return resolveDerivedPath(\n this.node as never, this.ctx.lookup, this.ctx.childrenOf, this.ctx.slot,\n );\n }\n}\n\n/** Whether something outside `node`'s data says what path it shows: it derives one, or a\n * pose override carries one. The gate both scene walks check before resolving a path. */\nexport function showsComputedPath<TData, TLayer extends string, TPose>(\n scene: Scene<TData, TLayer, TPose>,\n node: { id: NodeId; dependsOn?: readonly NodeId[] | 'children' },\n): boolean {\n return node.dependsOn !== undefined || scene.overrides.read(node.id)?.path !== undefined;\n}\n\n/**\n * `(node) => the path it shows in place of its data's`: a pose override's `path`, else the\n * one it derives, read through {@link sceneDepLookup}.\n *\n * An override path is in the scene's own frame, so a reader painting through a `toPose` is\n * answered the derived path alone.\n */\nexport function sceneDerivedPathOf<TData, TLayer extends string, TPose>(\n scene: Scene<TData, TLayer, TPose>,\n toPose?: (node: Node<TData, TLayer, TPose>) => TPose,\n): (node: Node<TData, TLayer, TPose>) => Path | null {\n const depOf = sceneDepLookup(scene, toPose);\n const slot = memoSlotFor(toPose, composesFrames(scene.composition));\n const childrenOf = (id: NodeId): readonly NodeId[] => scene.childrenOf(id);\n const derived = (node: Node<TData, TLayer, TPose>): Path | null =>\n resolveDerivedPath(node, depOf, childrenOf, slot);\n if (toPose !== undefined) return derived;\n return (node) => scene.overrides.read(node.id)?.path ?? derived(node);\n}\n\nconst toPoseScopes = new WeakMap<object, { local?: NodeMemoScope; world?: NodeMemoScope }>();\n\n/** Where one way of reading poses memoizes its paths, or `undefined` for the\n * scene's own slot: two readers painting one scene at different poses must\n * not serve each other's paths. Every reader composing stored poses shares a\n * slot; a `toPose` gets a scope that is collected with the function. */\nfunction memoSlotFor(\n toPose: object | undefined,\n composes: boolean,\n): string | NodeMemoScope | undefined {\n const frame = composes ? 'world' : 'local';\n if (toPose === undefined) return frame === 'world' ? 'kit:derivedPath:world' : undefined;\n let scopes = toPoseScopes.get(toPose);\n if (scopes === undefined) {\n scopes = {};\n toPoseScopes.set(toPose, scopes);\n }\n return (scopes[frame] ??= createNodeMemoScope());\n}\n\n/**\n * Wrap a `drawOne` so a node that derives its geometry, or whose pose override\n * carries a path, arrives at the painter with the resolved path. The painter has no scene handle and so cannot read\n * the dependencies' poses itself; both scene walks wrap here instead.\n *\n * A node that derives nothing passes the caller's `ctx` through untouched —\n * this runs per node per frame, and an added `{ derivedPath: null }` would be\n * an allocation per node for a field no painter reads.\n */\nexport function withDerivedPaths<TData, TLayer extends string, TPose>(\n scene: Scene<TData, TLayer, TPose>,\n drawOne: SceneViewDrawOne<TData, TLayer, TPose>,\n toPose?: (node: Node<TData, TLayer, TPose>) => TPose,\n): SceneViewDrawOne<TData, TLayer, TPose> {\n const derivedPathOf = sceneDerivedPathOf(scene, toPose);\n return (node, pose, view, ctx) => {\n if (toPose !== undefined ? node.dependsOn === undefined : !showsComputedPath(scene, node)) {\n return drawOne(node, pose, view, ctx);\n }\n return drawOne(node, pose, view, { ...ctx, derivedPath: derivedPathOf(node) });\n };\n}\n"],"mappings":";;;;;;AAwBA,SAAgBA,EACd,GACA,GAC6C;CAC7C,IAAMC,IAAQC,OAAY,MAAqCC,EAAcC,GAAOC,CAAI;CACxF,IAAI,CAACC,EAAeF,EAAM,WAAW,GAAG,OAAOH;CAC/C,IAAMM,IAA4B;EAChC,UAAU,MAAO;GACf,IAAMC,IAAIJ,EAAM,IAAIK,EAASC,CAAE,CAAC;GAChC,OAAOF,IAAIP,EAAMO,CAAC,IAAK,KAAA;EACzB;EACA,YAAY,MAAOJ,EAAM,IAAIK,EAASC,CAAE,CAAC,CAAC,EAAE,UAAU;EACtD,eAAe,MAAO;GACpB,IAAMF,IAAIJ,EAAM,IAAIK,EAASC,CAAE,CAAC;GAChC,OAAOF,MAAM,KAAA,KAAaG,EAAaH,CAAC;EAC1C;CACF;CACA,QAAQ,MAASI,EAAiBL,GAAOF,EAAK,IAAID,EAAM,YAAY,OAAO;AAC7E;AAWA,SAAgBS,EACd,GACA,GAC+C;CAC/C,IAAMC,IAAOC,EAAYb,GAAQI,EAAeF,EAAM,WAAW,CAAC;CAClE,IAAIU,MAAS,KAAA,GAAW,QAAQ,MAAOE,EAAaZ,GAAOM,CAAE;CAC7D,IAAMO,IAAyB;EAC7B,IAAIjB,EAAmBI,GAAOF,CAAM;EACpC;EACA,aAAa,MAAeE,EAAM,WAAWM,CAAE;EAC/C,SAAS,MAAe;GACtB,IAAML,IAAOD,EAAM,IAAIM,CAAE;GACzB,OAAOL,MAAS,KAAA,IAAY,KAAA,IAAY,IAAIa,EAAQb,GAAMY,CAAG;EAC/D;CACF;CACA,OAAOA,EAAI;AACb;AAWA,IAAMC,IAAN,MAAkD;CAIH;CAH7C;CACA;CAEA,YAAY,GAAgB,GAAyC;EAEnE,AAF2C,KAAA,MAAAD,GAC3C,KAAK,OAAOE,GACZ,KAAK,OAAOF,EAAI,GAAGE,CAAK;CAC1B;CAEA,IAAI,OAAoB;EACtB,OAAOC,EACL,KAAK,MAAe,KAAK,IAAI,QAAQ,KAAK,IAAI,YAAY,KAAK,IAAI,IACrE;CACF;AACF;AAIA,SAAgBC,EACd,GACA,GACS;CACT,OAAOhB,EAAK,cAAc,KAAA,KAAaD,EAAM,UAAU,KAAKC,EAAK,EAAE,CAAC,EAAE,SAAS,KAAA;AACjF;AASA,SAAgBiB,EACd,GACA,GACmD;CACnD,IAAMC,IAAQV,EAAeT,GAAOF,CAAM,GACpCY,IAAOC,EAAYb,GAAQI,EAAeF,EAAM,WAAW,CAAC,GAC5DoB,KAAc,MAAkCpB,EAAM,WAAWM,CAAE,GACnEe,KAAW,MACfL,EAAmBf,GAAMkB,GAAOC,GAAYV,CAAI;CAElD,OADIZ,MAAW,KAAA,KACP,MAASE,EAAM,UAAU,KAAKC,EAAK,EAAE,CAAC,EAAE,QAAQoB,EAAQpB,CAAI,IADnCoB;AAEnC;AAEA,IAAMC,oBAAe,IAAI,QAAkE;AAM3F,SAASX,EACP,GACA,GACoC;CACpC,IAAMY,IAAQC,IAAW,UAAU;CACnC,IAAI1B,MAAW,KAAA,GAAW,OAAOyB,MAAU,UAAU,0BAA0B,KAAA;CAC/E,IAAIE,IAASH,EAAa,IAAIxB,CAAM;CAKpC,OAJI2B,MAAW,KAAA,MACb,IAAS,CAAC,GACVH,EAAa,IAAIxB,GAAQ2B,CAAM,IAEzB,EAAOF,OAAWG,EAAoB;AAChD;AAWA,SAAgBC,EACd,GACA,GACA,GACwC;CACxC,IAAMC,IAAgBV,EAAmBlB,GAAOF,CAAM;CACtD,QAAQ,GAAM,GAAM,GAAM,OACpBA,MAAW,KAAA,IAA2C,CAACmB,EAAkBjB,GAAOC,CAAI,IAA7DA,EAAK,cAAc,KAAA,KACrC4B,EAAQ5B,GAAM6B,GAAMC,GAAMlB,CAAG,IAE/BgB,EAAQ5B,GAAM6B,GAAMC,GAAM;EAAE,GAAGlB;EAAK,aAAae,EAAc3B,CAAI;CAAE,CAAC;AAEjF"}
|
|
@@ -10,13 +10,17 @@ function n(t) {
|
|
|
10
10
|
return e(t, "getIsVisible")?.() ?? null;
|
|
11
11
|
}
|
|
12
12
|
function r(t) {
|
|
13
|
-
return e(t, "getPreviewSources")?.() ??
|
|
13
|
+
return e(t, "getPreviewSources")?.() ?? o;
|
|
14
14
|
}
|
|
15
15
|
function i(t) {
|
|
16
|
-
return e(t, "getGestureOverlays")?.() ??
|
|
16
|
+
return e(t, "getGestureOverlays")?.() ?? s;
|
|
17
17
|
}
|
|
18
|
-
|
|
18
|
+
function a(e) {
|
|
19
|
+
let t = e?.getDebug;
|
|
20
|
+
return typeof t == "function" ? t() : null;
|
|
21
|
+
}
|
|
22
|
+
var o = [], s = [];
|
|
19
23
|
//#endregion
|
|
20
|
-
export { t as chromeStateFrom, i as gestureOverlaysFrom, n as isVisibleFrom, r as previewSourcesFrom };
|
|
24
|
+
export { t as chromeStateFrom, a as debugSinkFrom, i as gestureOverlaysFrom, n as isVisibleFrom, r as previewSourcesFrom };
|
|
21
25
|
|
|
22
26
|
//# sourceMappingURL=drawEnvelope.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drawEnvelope.js","names":["thunk","maybe","data","key","chromeStateFrom","isVisibleFrom","previewSourcesFrom","EMPTY_SOURCES","gestureOverlaysFrom","EMPTY_OVERLAYS"],"sources":["../../src/canvas/drawEnvelope.ts"],"sourcesContent":["/**\n * Reading a layer's draw envelope.\n *\n * Every `RenderLayer.draw` receives the drawing view's
|
|
1
|
+
{"version":3,"file":"drawEnvelope.js","names":["thunk","maybe","data","key","chromeStateFrom","isVisibleFrom","previewSourcesFrom","EMPTY_SOURCES","gestureOverlaysFrom","EMPTY_OVERLAYS","debugSinkFrom","getDebug"],"sources":["../../src/canvas/drawEnvelope.ts"],"sourcesContent":["/**\n * Reading a layer's draw envelope.\n *\n * Every `RenderLayer.draw` receives the drawing view's `CanvasHelpers` as its\n * `data` argument. A layer that answers from a construction closure instead\n * answers for view zero in every view. A layer drawn by a bare consumer may\n * get plain data, so each reader has an \"unwired\" answer rather than throwing.\n */\nimport type { ChromeState } from 'core/selection/chromeState';\nimport type { OngoingOverlay } from '@weasel-js/routing';\nimport type { GesturePreviewSource } from './gestureBounds';\nimport type { DebugSink } from '../debug/types';\nimport type { CanvasSurfaceHelpers, CanvasViewHelpers } from './useViewHelpers';\n\ntype PartialEnvelope = Partial<CanvasViewHelpers<unknown>>;\n\nfunction thunk<K extends keyof CanvasViewHelpers<unknown>>(\n data: unknown,\n key: K,\n): CanvasViewHelpers<unknown>[K] | undefined {\n const maybe = data as PartialEnvelope | null | undefined;\n return typeof maybe?.[key] === 'function' ? maybe[key] : undefined;\n}\n\n/** This view's chrome state, or `null` when the caller passed plain data. */\nexport function chromeStateFrom(data: unknown): ChromeState | null {\n return thunk(data, 'getChromeState')?.() ?? null;\n}\n\n/** This view's chrome-caps predicate, or `null` when the caller passed plain\n * data — the layer then paints unconditionally. */\nexport function isVisibleFrom(data: unknown): ((id: string) => boolean) | null {\n return thunk(data, 'getIsVisible')?.() ?? null;\n}\n\n/** This view's in-flight preview surfaces, in resolution order. Empty when\n * nothing is in flight and when the caller passed plain data. */\nexport function previewSourcesFrom(data: unknown): readonly GesturePreviewSource[] {\n return thunk(data, 'getPreviewSources')?.() ?? EMPTY_SOURCES;\n}\n\n/** The overlay shapes this view's in-flight handles publish. */\nexport function gestureOverlaysFrom(data: unknown): readonly OngoingOverlay[] {\n return thunk(data, 'getGestureOverlays')?.() ?? EMPTY_OVERLAYS;\n}\n\n/** The surface's debug sink, or `null` when debugging is off and when the\n * caller passed plain data. */\nexport function debugSinkFrom(data: unknown): DebugSink | null {\n const getDebug = (data as Partial<CanvasSurfaceHelpers> | null | undefined)?.getDebug;\n return typeof getDebug === 'function' ? getDebug() : null;\n}\n\n/** First non-null `previewPose(id)` across `sources`, or `null`. */\nexport function previewPoseIn(\n sources: readonly GesturePreviewSource[],\n id: string,\n): unknown {\n for (const s of sources) {\n const p = s.previewPose?.(id);\n if (p != null) return p;\n }\n return null;\n}\n\n/** First non-null `previewData(id)` across `sources`, or `null`. */\nexport function previewDataIn(\n sources: readonly GesturePreviewSource[],\n id: string,\n): unknown {\n for (const s of sources) {\n const d = s.previewData?.(id);\n if (d != null) return d;\n }\n return null;\n}\n\nconst EMPTY_SOURCES: readonly GesturePreviewSource[] = [];\nconst EMPTY_OVERLAYS: readonly OngoingOverlay[] = [];\n"],"mappings":";AAgBA,SAASA,EACP,GACA,GAC2C;CAC3C,IAAMC,IAAQC;CACd,OAAO,OAAOD,IAAQE,MAAS,aAAaF,EAAME,KAAO,KAAA;AAC3D;AAGA,SAAgBC,EAAgB,GAAmC;CACjE,OAAOJ,EAAME,GAAM,gBAAgB,CAAC,GAAG,KAAK;AAC9C;AAIA,SAAgBG,EAAc,GAAiD;CAC7E,OAAOL,EAAME,GAAM,cAAc,CAAC,GAAG,KAAK;AAC5C;AAIA,SAAgBI,EAAmB,GAAgD;CACjF,OAAON,EAAME,GAAM,mBAAmB,CAAC,GAAG,KAAKK;AACjD;AAGA,SAAgBC,EAAoB,GAA0C;CAC5E,OAAOR,EAAME,GAAM,oBAAoB,CAAC,GAAG,KAAKO;AAClD;AAIA,SAAgBC,EAAc,GAAiC;CAC7D,IAAMC,IAAYT,GAA2D;CAC7E,OAAO,OAAOS,KAAa,aAAaA,EAAS,IAAI;AACvD;AA0BA,IAAMJ,IAAiD,CAAC,GAClDE,IAA4C,CAAC"}
|
|
@@ -2,13 +2,9 @@
|
|
|
2
2
|
function e(e, t) {
|
|
3
3
|
return (n, r, i) => {
|
|
4
4
|
let a = e(n, r, i);
|
|
5
|
-
|
|
6
|
-
let o = t?.(a) ?? null;
|
|
7
|
-
return {
|
|
5
|
+
return a == null ? null : {
|
|
8
6
|
id: a,
|
|
9
|
-
kind:
|
|
10
|
-
pose: o?.pose,
|
|
11
|
-
data: o?.data ?? { id: a }
|
|
7
|
+
kind: t?.(a)?.kind ?? "unknown"
|
|
12
8
|
};
|
|
13
9
|
};
|
|
14
10
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getNodeAtPoint.js","names":["makeGetNodeAtPoint","id","pickBest","wx","wy","view","
|
|
1
|
+
{"version":3,"file":"getNodeAtPoint.js","names":["makeGetNodeAtPoint","id","pickBest","wx","wy","view","nodeResolver"],"sources":["../../src/canvas/getNodeAtPoint.ts"],"sourcesContent":["import type { PickView } from './SceneCanvas/useSceneSelectTool';\n\n/** The hit record returned by a `getNodeAtPoint` function. */\nexport interface NodeAtPointHit {\n id: string;\n kind: string;\n}\n\n/** Resolves a node's routing kind. */\nexport type NodeResolver = (id: string) => { kind: string } | null;\n\n/** The node a single-hit picker names under a world point, with its kind:\n * `'unknown'` when `nodeResolver` is absent or returns null. */\nexport function makeGetNodeAtPoint(\n pickBest: (wx: number, wy: number, view?: PickView | null) => string | null,\n nodeResolver?: NodeResolver,\n): (wx: number, wy: number, view?: PickView | null) => NodeAtPointHit | null {\n return (wx: number, wy: number, view?: PickView | null): NodeAtPointHit | null => {\n const id = pickBest(wx, wy, view);\n if (id == null) return null;\n\n return { id, kind: nodeResolver?.(id)?.kind ?? 'unknown' };\n };\n}\n"],"mappings":";AAaA,SAAgBA,EACd,GACA,GAC2E;CAC3E,QAAQ,GAAY,GAAY,MAAkD;EAChF,IAAMC,IAAKC,EAASC,GAAIC,GAAIC,CAAI;EAGhC,OAFIJ,KAAM,OAAa,OAEhB;GAAE;GAAI,MAAMK,IAAeL,CAAE,CAAC,EAAE,QAAQ;EAAU;CAC3D;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hud.module.js","names":["hud","sized","readings","muted","absent","header","list","item","itemBest","row","stack","hud_module_default"],"sources":["../../src/canvas/hud.module.css"],"sourcesContent":["/* The debug HUDs <Canvas> can draw: CursorCoordsHud, PickHud, ModalityHud. The\n mono face is for the ids the pick and modality HUDs list; figures take the\n numeric face, on a child so `.hud`'s own font cannot override it. */\n.hud {\n position: fixed;\n z-index: 900;\n background: rgba(0, 0, 0, 0.7);\n color: #e8e8e8;\n font: 11px ui-monospace, SFMono-Regular, Menlo, monospace;\n padding: 6px 8px;\n border-radius: 4px;\n pointer-events: none;\n line-height: 1.4;\n text-align: right;\n}\n\n.sized {\n min-width: 120px;\n max-width: 260px;\n}\n\n.readings {\n composes: numeric from '@weasel-js/theme/numeric.module.css';\n display: grid;\n grid-template-columns: auto auto;\n column-gap: 8px;\n margin: 0;\n}\n\n.readings dt {\n text-align: left;\n}\n\n.readings dd {\n margin: 0;\n white-space: nowrap;\n}\n\n.muted {\n color: #888;\n}\n\n/* A value that is not there: an em dash, \"off-canvas\". */\n.absent {\n color: #888;\n font-style: italic;\n}\n\n.header {\n margin-bottom: 2px;\n}\n\n.list {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n gap: 1px;\n}\n\n.item {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.itemBest {\n font-weight: 700;\n}\n\n.row {\n display: flex;\n gap: 8px;\n justify-content: flex-end;\n white-space: nowrap;\n}\n\n.stack {\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n}\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"hud.module.js","names":["hud","sized","readings","muted","absent","header","list","item","itemBest","row","stack","hud_module_default"],"sources":["../../src/canvas/hud.module.css"],"sourcesContent":["/* The debug HUDs <Canvas> can draw: CursorCoordsHud, PickHud, ModalityHud. The\n mono face is for the ids the pick and modality HUDs list; figures take the\n numeric face, on a child so `.hud`'s own font cannot override it. */\n.hud {\n position: fixed;\n z-index: var(--wzl-z-hud, 900);\n background: rgba(0, 0, 0, 0.7);\n color: #e8e8e8;\n font: 11px ui-monospace, SFMono-Regular, Menlo, monospace;\n padding: var(--wzl-space-3, 6px) var(--wzl-space-4, 8px);\n border-radius: 4px;\n pointer-events: none;\n line-height: 1.4;\n text-align: right;\n}\n\n.sized {\n min-width: 120px;\n max-width: 260px;\n}\n\n.readings {\n composes: numeric from '@weasel-js/theme/numeric.module.css';\n display: grid;\n grid-template-columns: auto auto;\n column-gap: var(--wzl-space-4, 8px);\n margin: 0;\n}\n\n.readings dt {\n text-align: left;\n}\n\n.readings dd {\n margin: 0;\n white-space: nowrap;\n}\n\n.muted {\n color: #888;\n}\n\n/* A value that is not there: an em dash, \"off-canvas\". */\n.absent {\n color: #888;\n font-style: italic;\n}\n\n.header {\n margin-bottom: var(--wzl-space-1, 2px);\n}\n\n.list {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n gap: 1px;\n}\n\n.item {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.itemBest {\n font-weight: 700;\n}\n\n.row {\n display: flex;\n gap: var(--wzl-space-4, 8px);\n justify-content: flex-end;\n white-space: nowrap;\n}\n\n.stack {\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n}\n"],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"insertPreviewExtent.js","names":["insertPreviewExtent","b","ov","box","e","b2","aabbOf","center","radius","radialBox","outerRadius","samples","pts","minX","minY","maxX","maxY","p"],"sources":["../../src/canvas/insertPreviewExtent.ts"],"sourcesContent":["/**\n * The one answer to \"how big is the thing this in-flight insert is making\"
|
|
1
|
+
{"version":3,"file":"insertPreviewExtent.js","names":["insertPreviewExtent","b","ov","box","e","b2","aabbOf","center","radius","radialBox","outerRadius","samples","pts","minX","minY","maxX","maxY","p"],"sources":["../../src/canvas/insertPreviewExtent.ts"],"sourcesContent":["/**\n * The one answer to \"how big is the thing this in-flight insert is making\",\n * shared by the preview paint, the commit, and the gesture's reported bounds.\n *\n * The drag AABB alone is NOT the answer. `insertAction` hands over an\n * `extras` payload that can carry richer geometry than the drag rect, and\n * where it does, that geometry is the shape: a pencil that loops back to its\n * start produces a zero-area drag rect around a trail that swept the page.\n */\nimport type { Bounds } from 'core/viewport/fitViewToBounds';\nimport type { OngoingOverlay } from '@weasel-js/routing';\n\ntype Point = { x: number; y: number };\n\n/** The fields of an `insertPreview` overlay this needs. `canvas/deps/insert`\n * passes the equivalent from its own `(bounds, extras)` commit arguments. */\nexport interface InsertPreviewLike {\n shape: string;\n bounds: { x: number; y: number; width: number; height: number };\n extras: unknown;\n}\n\n/** Resolved preview geometry, in the terms the path builders take. */\nexport type InsertPreviewGeometry =\n | { kind: 'box' }\n | { kind: 'line'; a: Point; b: Point }\n | { kind: 'polygon'; center: Point; radius: number; sides: number; rotation: number }\n | {\n kind: 'star';\n center: Point;\n outerRadius: number;\n innerRadius: number;\n points: number;\n rotation: number;\n }\n | { kind: 'pencil'; samples: ReadonlyArray<Point> };\n\n/** An in-flight insert's shape, resolved from its drag rect and `extras`. */\nexport interface InsertPreviewExtent {\n /** The insert kind, verbatim from the caller. */\n shape: string;\n /** World-space AABB of `geometry` — the extent. */\n bounds: Bounds;\n geometry: InsertPreviewGeometry;\n}\n\n/** The `insertPreview` member of `OngoingOverlay`, which `insertAction` publishes during a drag-to-insert. */\nexport type InsertPreviewOverlay = Extract<OngoingOverlay, { kind: 'insertPreview' }>;\n\n/** Resolve an in-flight insert's geometry and world AABB. Uses the geometry in\n * `extras` where the shape carries it; an unknown shape falls back to its drag rect. */\nexport function insertPreviewExtent(ov: InsertPreviewLike): InsertPreviewExtent {\n const b = ov.bounds;\n const box = { x: b.x, y: b.y, width: b.width, height: b.height };\n\n switch (ov.shape) {\n case 'line': {\n const e = ov.extras as Partial<{ a: Point; b: Point }>;\n const a = e.a ?? { x: b.x, y: b.y };\n const b2 = e.b ?? { x: b.x + b.width, y: b.y + b.height };\n return { shape: ov.shape, bounds: aabbOf([a, b2]) ?? box, geometry: { kind: 'line', a, b: b2 } };\n }\n case 'polygon': {\n const e = ov.extras as Partial<{\n sides: number; rotation: number; center: Point; radius: number;\n }>;\n const center = e.center ?? { x: b.x + b.width / 2, y: b.y + b.height / 2 };\n const radius = e.radius ?? Math.min(b.width, b.height) / 2;\n return {\n shape: ov.shape,\n bounds: radialBox(center, radius),\n geometry: {\n kind: 'polygon',\n center,\n radius,\n sides: Math.max(3, Math.floor(e.sides ?? 6)),\n rotation: e.rotation ?? 0,\n },\n };\n }\n case 'star': {\n const e = ov.extras as Partial<{\n points: number; innerRadiusRatio: number; rotation: number;\n center: Point; outerRadius: number;\n }>;\n const center = e.center ?? { x: b.x + b.width / 2, y: b.y + b.height / 2 };\n const outerRadius = e.outerRadius ?? Math.min(b.width, b.height) / 2;\n return {\n shape: ov.shape,\n bounds: radialBox(center, outerRadius),\n geometry: {\n kind: 'star',\n center,\n outerRadius,\n innerRadius: outerRadius * (e.innerRadiusRatio ?? 0.5),\n points: Math.max(3, Math.floor(e.points ?? 5)),\n rotation: e.rotation ?? 0,\n },\n };\n }\n case 'pencil': {\n const e = ov.extras as Partial<{ samples: ReadonlyArray<Point> }>;\n const samples = e.samples ?? [];\n return {\n shape: ov.shape,\n bounds: aabbOf(samples) ?? box,\n geometry: { kind: 'pencil', samples },\n };\n }\n default:\n return { shape: ov.shape, bounds: box, geometry: { kind: 'box' } };\n }\n}\n\n/** A radial shape's extent is its circumscribed square, not the drag rect. */\nfunction radialBox(center: Point, radius: number): Bounds {\n return { x: center.x - radius, y: center.y - radius, width: radius * 2, height: radius * 2 };\n}\n\nfunction aabbOf(pts: ReadonlyArray<Point>): Bounds | null {\n if (pts.length === 0) return null;\n let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;\n for (const p of pts) {\n if (p.x < minX) minX = p.x;\n if (p.y < minY) minY = p.y;\n if (p.x > maxX) maxX = p.x;\n if (p.y > maxY) maxY = p.y;\n }\n return { x: minX, y: minY, width: maxX - minX, height: maxY - minY };\n}\n"],"mappings":";AAmDA,SAAgBA,EAAoB,GAA4C;CAC9E,IAAMC,IAAIC,EAAG,QACPC,IAAM;EAAE,GAAGF,EAAE;EAAG,GAAGA,EAAE;EAAG,OAAOA,EAAE;EAAO,QAAQA,EAAE;CAAO;CAE/D,QAAQC,EAAG,OAAX;EACE,KAAK,QAAQ;GACX,IAAME,IAAIF,EAAG,QACP,IAAIE,EAAE,KAAK;IAAE,GAAGH,EAAE;IAAG,GAAGA,EAAE;GAAE,GAC5BI,IAAKD,EAAE,KAAK;IAAE,GAAGH,EAAE,IAAIA,EAAE;IAAO,GAAGA,EAAE,IAAIA,EAAE;GAAO;GACxD,OAAO;IAAE,OAAOC,EAAG;IAAO,QAAQI,EAAO,CAAC,GAAGD,CAAE,CAAC,KAAKF;IAAK,UAAU;KAAE,MAAM;KAAQ;KAAG,GAAGE;IAAG;GAAE;EACjG;EACA,KAAK,WAAW;GACd,IAAMD,IAAIF,EAAG,QAGPK,IAASH,EAAE,UAAU;IAAE,GAAGH,EAAE,IAAIA,EAAE,QAAQ;IAAG,GAAGA,EAAE,IAAIA,EAAE,SAAS;GAAE,GACnEO,IAASJ,EAAE,UAAU,KAAK,IAAIH,EAAE,OAAOA,EAAE,MAAM,IAAI;GACzD,OAAO;IACL,OAAOC,EAAG;IACV,QAAQO,EAAUF,GAAQC,CAAM;IAChC,UAAU;KACR,MAAM;KACN;KACA;KACA,OAAO,KAAK,IAAI,GAAG,KAAK,MAAMJ,EAAE,SAAS,CAAC,CAAC;KAC3C,UAAUA,EAAE,YAAY;IAC1B;GACF;EACF;EACA,KAAK,QAAQ;GACX,IAAMA,IAAIF,EAAG,QAIPK,IAASH,EAAE,UAAU;IAAE,GAAGH,EAAE,IAAIA,EAAE,QAAQ;IAAG,GAAGA,EAAE,IAAIA,EAAE,SAAS;GAAE,GACnES,IAAcN,EAAE,eAAe,KAAK,IAAIH,EAAE,OAAOA,EAAE,MAAM,IAAI;GACnE,OAAO;IACL,OAAOC,EAAG;IACV,QAAQO,EAAUF,GAAQG,CAAW;IACrC,UAAU;KACR,MAAM;KACN;KACA;KACA,aAAaA,KAAeN,EAAE,oBAAoB;KAClD,QAAQ,KAAK,IAAI,GAAG,KAAK,MAAMA,EAAE,UAAU,CAAC,CAAC;KAC7C,UAAUA,EAAE,YAAY;IAC1B;GACF;EACF;EACA,KAAK,UAAU;GAEb,IAAMO,IADIT,EAAG,OACK,WAAW,CAAC;GAC9B,OAAO;IACL,OAAOA,EAAG;IACV,QAAQI,EAAOK,CAAO,KAAKR;IAC3B,UAAU;KAAE,MAAM;KAAU;IAAQ;GACtC;EACF;EACA,SACE,OAAO;GAAE,OAAOD,EAAG;GAAO,QAAQC;GAAK,UAAU,EAAE,MAAM,MAAM;EAAE;CACrE;AACF;AAGA,SAASM,EAAU,GAAe,GAAwB;CACxD,OAAO;EAAE,GAAGF,EAAO,IAAIC;EAAQ,GAAGD,EAAO,IAAIC;EAAQ,OAAOA,IAAS;EAAG,QAAQA,IAAS;CAAE;AAC7F;AAEA,SAASF,EAAO,GAA0C;CACxD,IAAIM,EAAI,WAAW,GAAG,OAAO;CAC7B,IAAIC,IAAO,UAAUC,IAAO,UAAUC,IAAO,WAAWC,IAAO;CAC/D,KAAK,IAAMC,KAAKL,GAId,AAHIK,EAAE,IAAIJ,MAAM,IAAOI,EAAE,IACrBA,EAAE,IAAIH,MAAM,IAAOG,EAAE,IACrBA,EAAE,IAAIF,MAAM,IAAOE,EAAE,IACrBA,EAAE,IAAID,MAAM,IAAOC,EAAE;CAE3B,OAAO;EAAE,GAAGJ;EAAM,GAAGC;EAAM,OAAOC,IAAOF;EAAM,QAAQG,IAAOF;CAAK;AACrE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layerOrder.js","names":["STANDARD_SLOT_SET","STANDARD_SLOTS","composeOrderedLayers","afterByParent","beforeByParent","tail","allCustomKeys","key","value","layersMap","isCustomEntry","arr","emitted","out","background","emitChild","child","emitBefore","emitAfter","parentKey","slot","sceneLayers","sl","layer","standardLayers","t","anchorOf","inCycle","at","hops","ref","placeToolOverlays","before","overlays","after","selectionOverlay","ordered"],"sources":["../../src/canvas/layerOrder.ts"],"sourcesContent":["import type { RenderLayer } from '../core/layers/render';\nimport
|
|
1
|
+
{"version":3,"file":"layerOrder.js","names":["STANDARD_SLOT_SET","STANDARD_SLOTS","composeOrderedLayers","afterByParent","beforeByParent","tail","allCustomKeys","key","value","layersMap","isCustomEntry","arr","emitted","out","background","emitChild","child","emitBefore","emitAfter","parentKey","slot","sceneLayers","sl","layer","standardLayers","t","anchorOf","inCycle","at","hops","ref","placeToolOverlays","before","overlays","after","selectionOverlay","ordered"],"sources":["../../src/canvas/layerOrder.ts"],"sourcesContent":["import type { RenderLayer } from '../core/layers/render';\nimport { STANDARD_SLOTS, isCustomEntry } from './layerSlots';\nimport type { OverlayPosition } from '@weasel-js/routing';\n\nconst STANDARD_SLOT_SET = new Set<string>(STANDARD_SLOTS);\n\n/**\n * Compose the final ordered layer list from a layersMap and the resolved\n * standard-slot layers.\n *\n * - Standard slots are emitted in `STANDARD_SLOTS` order.\n * - `after: 'X'` / `before: 'X'` accept standard slot names OR other\n * custom-layer keys, and chains may mix the two.\n * - Customs with neither `after` nor `before` are emitted after all standard\n * slots.\n * - Dangling references and cycles go to the tail with a `console.warn`.\n * - An entry with both `after` and `before` is placed by `after`.\n */\nexport function composeOrderedLayers(\n layersMap: Record<string, unknown>,\n standardLayers: Partial<Record<(typeof STANDARD_SLOTS)[number], RenderLayer<unknown>>>,\n /** The `scene` slot split into per-scene-layer canvas layers (keyed\n * `scene:<layerId>`), in render order. Each key becomes an anchor point;\n * `before/after: 'scene'` brackets the whole group. When omitted, the\n * `scene` slot uses `standardLayers.scene`. */\n sceneLayers?: ReadonlyArray<{ key: string; layer: RenderLayer<unknown> }>,\n /** Drawn beneath everything else, grid and customs anchored before the\n * scene included — a fill that must never cover what is laid over it. */\n background?: RenderLayer<unknown>,\n): RenderLayer<unknown>[] {\n // Map<parent key, [{ key, layer }, ...]> — children grouped by their declared anchor.\n const afterByParent = new Map<string, Array<{ key: string; layer: RenderLayer<unknown> }>>();\n const beforeByParent = new Map<string, Array<{ key: string; layer: RenderLayer<unknown> }>>();\n const tail: Array<{ key: string; layer: RenderLayer<unknown> }> = [];\n const allCustomKeys = new Set<string>();\n\n for (const [key, value] of Object.entries(layersMap)) {\n if (STANDARD_SLOT_SET.has(key)) continue;\n if (!isCustomEntry(value)) continue;\n allCustomKeys.add(key);\n if (value.after) {\n const arr = afterByParent.get(value.after) ?? [];\n arr.push({ key, layer: value.layer });\n afterByParent.set(value.after, arr);\n } else if (value.before) {\n const arr = beforeByParent.get(value.before) ?? [];\n arr.push({ key, layer: value.layer });\n beforeByParent.set(value.before, arr);\n } else {\n tail.push({ key, layer: value.layer });\n }\n }\n\n const emitted = new Set<string>();\n const out: RenderLayer<unknown>[] = background ? [background] : [];\n\n function emitChild(child: { key: string; layer: RenderLayer<unknown> }) {\n // A custom has one anchor, so it is reached twice only when `sceneLayers`\n // repeats a key.\n if (emitted.has(child.key)) return;\n emitted.add(child.key);\n emitBefore(child.key);\n out.push(child.layer);\n emitAfter(child.key);\n }\n\n function emitAfter(parentKey: string) {\n for (const child of afterByParent.get(parentKey) ?? []) emitChild(child);\n }\n\n function emitBefore(parentKey: string) {\n for (const child of beforeByParent.get(parentKey) ?? []) emitChild(child);\n }\n\n for (const slot of STANDARD_SLOTS) {\n if (slot === 'scene' && sceneLayers) {\n emitBefore('scene');\n for (const sl of sceneLayers) {\n emitBefore(sl.key);\n out.push(sl.layer);\n emitAfter(sl.key);\n }\n emitAfter('scene');\n continue;\n }\n emitBefore(slot);\n const layer = standardLayers[slot];\n if (layer) out.push(layer);\n emitAfter(slot);\n }\n\n for (const t of tail) {\n if (emitted.has(t.key)) continue;\n emitted.add(t.key);\n out.push(t.layer);\n }\n\n const anchorOf = (key: string): string | undefined => {\n const value = layersMap[key];\n return isCustomEntry(value) ? value.after ?? value.before : undefined;\n };\n const inCycle = (key: string): boolean => {\n let at = anchorOf(key);\n for (let hops = 0; at !== undefined && hops < allCustomKeys.size; hops++) {\n if (at === key) return true;\n at = anchorOf(at);\n }\n return false;\n };\n\n // Orphans: customs that declared an `after`/`before` but never got emitted,\n // because the chain of anchors loops or ends on a key nothing defines.\n for (const key of allCustomKeys) {\n if (emitted.has(key)) continue;\n const value = layersMap[key];\n if (!isCustomEntry(value)) continue;\n const ref = value.after ?? value.before;\n console.warn(inCycle(key)\n ? `composeOrderedLayers: cycle detected involving custom layer \"${key}\" — falling back to tail`\n : `composeOrderedLayers: dangling reference \"${ref}\" from custom layer \"${key}\" — falling back to tail`);\n emitted.add(key);\n out.push(value.layer);\n }\n\n return out;\n}\n\n/**\n * Splice a tool's positioned overlays into an already-composed layer list.\n * With no selection chrome present the anchored overlays fall back to the\n * tail, keeping their relative order. Mutates and returns `ordered`.\n */\nexport function placeToolOverlays(\n ordered: RenderLayer<unknown>[],\n selectionOverlay: RenderLayer<unknown> | undefined,\n overlays: (position: OverlayPosition) => RenderLayer<unknown>[],\n): RenderLayer<unknown>[] {\n const before = overlays('before-selection');\n const after = overlays('after-selection');\n const at = selectionOverlay ? ordered.indexOf(selectionOverlay) : -1;\n if (at >= 0) {\n ordered.splice(at + 1, 0, ...after);\n ordered.splice(at, 0, ...before);\n } else {\n ordered.push(...before, ...after);\n }\n ordered.push(...overlays('top'));\n return ordered;\n}\n"],"mappings":";;AAIA,IAAMA,IAAoB,IAAI,IAAYC,CAAc;AAcxD,SAAgBC,EACd,GACA,GAKA,GAGA,GACwB;CAExB,IAAMC,oBAAgB,IAAI,IAAiE,GACrFC,oBAAiB,IAAI,IAAiE,GACtFC,IAA4D,CAAC,GAC7DC,oBAAgB,IAAI,IAAY;CAEtC,KAAK,IAAM,CAACC,GAAKC,MAAU,OAAO,QAAQC,CAAS,GACjD,IAAI,GAAkB,IAAIF,CAAG,KACxBG,EAAcF,CAAK,GAExB;MADAF,EAAc,IAAIC,CAAG,GACjBC,EAAM,OAAO;GACf,IAAMG,IAAMR,EAAc,IAAIK,EAAM,KAAK,KAAK,CAAC;GAE/C,AADAG,EAAI,KAAK;IAAE;IAAK,OAAOH,EAAM;GAAM,CAAC,GACpCL,EAAc,IAAIK,EAAM,OAAOG,CAAG;EACpC,OAAO,IAAIH,EAAM,QAAQ;GACvB,IAAMG,IAAMP,EAAe,IAAII,EAAM,MAAM,KAAK,CAAC;GAEjD,AADAG,EAAI,KAAK;IAAE;IAAK,OAAOH,EAAM;GAAM,CAAC,GACpCJ,EAAe,IAAII,EAAM,QAAQG,CAAG;EACtC,OACE,EAAK,KAAK;GAAE;GAAK,OAAOH,EAAM;EAAM,CAAC;CAAA;CAIzC,IAAMI,oBAAU,IAAI,IAAY,GAC1BC,IAA8BC,IAAa,CAACA,CAAU,IAAI,CAAC;CAEjE,SAASC,EAAU,GAAqD;EAGtE,AAAIH,EAAQ,IAAII,EAAM,GAAG,MACzBJ,EAAQ,IAAII,EAAM,GAAG,GACrBC,EAAWD,EAAM,GAAG,GACpBH,EAAI,KAAKG,EAAM,KAAK,GACpBE,EAAUF,EAAM,GAAG;CACrB;CAEA,SAASE,EAAU,GAAmB;EACpC,KAAK,IAAMF,KAASb,EAAc,IAAIgB,CAAS,KAAK,CAAC,GAAG,EAAUH,CAAK;CACzE;CAEA,SAASC,EAAW,GAAmB;EACrC,KAAK,IAAMD,KAASZ,EAAe,IAAIe,CAAS,KAAK,CAAC,GAAG,EAAUH,CAAK;CAC1E;CAEA,KAAK,IAAMI,KAAQnB,GAAgB;EACjC,IAAImB,MAAS,WAAWC,GAAa;GACnC,EAAW,OAAO;GAClB,KAAK,IAAMC,KAAMD,GAGf,AAFAJ,EAAWK,EAAG,GAAG,GACjBT,EAAI,KAAKS,EAAG,KAAK,GACjBJ,EAAUI,EAAG,GAAG;GAElB,EAAU,OAAO;GACjB;EACF;EACA,EAAWF,CAAI;EACf,IAAMG,IAAQC,EAAeJ;EAE7B,AADIG,KAAOV,EAAI,KAAKU,CAAK,GACzBL,EAAUE,CAAI;CAChB;CAEA,KAAK,IAAMK,KAAKpB,GACd,AAAIO,EAAQ,IAAIa,EAAE,GAAG,MACrBb,EAAQ,IAAIa,EAAE,GAAG,GACjBZ,EAAI,KAAKY,EAAE,KAAK;CAGlB,IAAMC,KAAY,MAAoC;EACpD,IAAMlB,IAAQC,EAAUF;EACxB,OAAOG,EAAcF,CAAK,IAAIA,EAAM,SAASA,EAAM,SAAS,KAAA;CAC9D,GACMmB,KAAW,MAAyB;EACxC,IAAIC,IAAKF,EAASnB,CAAG;EACrB,KAAK,IAAIsB,IAAO,GAAGD,MAAO,KAAA,KAAaC,IAAOvB,EAAc,MAAM,KAAQ;GACxE,IAAIsB,MAAOrB,GAAK,OAAO;GACvB,IAAKmB,EAASE,CAAE;EAClB;EACA,OAAO;CACT;CAIA,KAAK,IAAMrB,KAAOD,GAAe;EAC/B,IAAIM,EAAQ,IAAIL,CAAG,GAAG;EACtB,IAAMC,IAAQC,EAAUF;EACxB,IAAI,CAACG,EAAcF,CAAK,GAAG;EAC3B,IAAMsB,IAAMtB,EAAM,SAASA,EAAM;EAKjC,AAJA,QAAQ,KAAKmB,EAAQpB,CAAG,IACpB,gEAAgEA,EAAI,4BACpE,6CAA6CuB,EAAI,uBAAuBvB,EAAI,yBAAyB,GACzGK,EAAQ,IAAIL,CAAG,GACfM,EAAI,KAAKL,EAAM,KAAK;CACtB;CAEA,OAAOK;AACT;AAOA,SAAgBkB,EACd,GACA,GACA,GACwB;CACxB,IAAMC,IAASC,EAAS,kBAAkB,GACpCC,IAAQD,EAAS,iBAAiB,GAClCL,IAAKO,IAAmBC,EAAQ,QAAQD,CAAgB,IAAI;CAQlE,OAPIP,KAAM,KACRQ,EAAQ,OAAOR,IAAK,GAAG,GAAG,GAAGM,CAAK,GAClCE,EAAQ,OAAOR,GAAI,GAAG,GAAGI,CAAM,KAE/BI,EAAQ,KAAK,GAAGJ,GAAQ,GAAGE,CAAK,GAElCE,EAAQ,KAAK,GAAGH,EAAS,KAAK,CAAC,GACxBG;AACT"}
|
|
@@ -8,7 +8,12 @@ var e = [
|
|
|
8
8
|
function t(e) {
|
|
9
9
|
return !!e && typeof e == "object" && "layer" in e;
|
|
10
10
|
}
|
|
11
|
+
function n(e) {
|
|
12
|
+
let n = {};
|
|
13
|
+
for (let [r, i] of Object.entries(e)) (i === null || t(i)) && (n[r] = i);
|
|
14
|
+
return n;
|
|
15
|
+
}
|
|
11
16
|
//#endregion
|
|
12
|
-
export { e as STANDARD_SLOTS, t as isCustomEntry };
|
|
17
|
+
export { e as STANDARD_SLOTS, n as builtLayersOf, t as isCustomEntry };
|
|
13
18
|
|
|
14
19
|
//# sourceMappingURL=layerSlots.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layerSlots.js","names":["STANDARD_SLOTS","isCustomEntry","v"],"sources":["../../src/canvas/layerSlots.ts"],"sourcesContent":["import type { RenderLayer } from '../core/layers/render';\n\n/** Standard slot names — render in this canonical order.\n * `cellHighlight` is not an anchor for custom layers: it sits between the\n * grid and the scene, so anchor to one of those. */\n/** @internal */\nexport const STANDARD_SLOTS = [\n 'grid',\n 'cellHighlight',\n 'scene',\n 'selectionOverlay',\n] as const;\n\n/** Names of the slots `<Canvas>` supports out of the box (excluding the implicit cell-highlight overlay). */\nexport type StandardSlotName = Exclude<(typeof STANDARD_SLOTS)[number], 'cellHighlight'>;\n\n/** Custom layer entry — any key not in `STANDARD_SLOTS`. The presence of\n * `.layer` discriminates this from a slot config. */\nexport interface CustomLayerEntry {\n layer: RenderLayer<unknown>;\n /** Insert immediately after the named standard slot or another custom-layer key. */\n after?: StandardSlotName | (string & {});\n /** Insert immediately before the named standard slot or another custom-layer key. */\n before?: StandardSlotName | (string & {});\n}\n\nexport function isCustomEntry(v: unknown): v is CustomLayerEntry {\n return !!v && typeof v === 'object' && 'layer' in (v as Record<string, unknown>);\n}\n"],"mappings":";
|
|
1
|
+
{"version":3,"file":"layerSlots.js","names":["STANDARD_SLOTS","isCustomEntry","v","builtLayersOf","out","key","value","map"],"sources":["../../src/canvas/layerSlots.ts"],"sourcesContent":["import type { RenderLayer } from '../core/layers/render';\nimport type { SelectionOverlayLayerOpts } from 'features/selection/overlay';\nimport type { SceneSlotConfig } from './buildSceneLayer';\n\n/** Standard slot names — render in this canonical order.\n * `cellHighlight` is not an anchor for custom layers: it sits between the\n * grid and the scene, so anchor to one of those. */\n/** @internal */\nexport const STANDARD_SLOTS = [\n 'grid',\n 'cellHighlight',\n 'scene',\n 'selectionOverlay',\n] as const;\n\n/** Names of the slots `<Canvas>` supports out of the box (excluding the implicit cell-highlight overlay). */\nexport type StandardSlotName = Exclude<(typeof STANDARD_SLOTS)[number], 'cellHighlight'>;\n\n/** Custom layer entry — any key not in `STANDARD_SLOTS`. The presence of\n * `.layer` discriminates this from a slot config. */\nexport interface CustomLayerEntry {\n layer: RenderLayer<unknown>;\n /** Insert immediately after the named standard slot or another custom-layer key. */\n after?: StandardSlotName | (string & {});\n /** Insert immediately before the named standard slot or another custom-layer key. */\n before?: StandardSlotName | (string & {});\n}\n\nexport function isCustomEntry(v: unknown): v is CustomLayerEntry {\n return !!v && typeof v === 'object' && 'layer' in (v as Record<string, unknown>);\n}\n\n/** Selection-overlay slot config — passed through to `createSelectionOverlayLayer`,\n * minus the `getSelection`/`getPose` the canvas wires automatically. */\nexport type SelectionOverlaySlotConfig<TPose> = Omit<\n SelectionOverlayLayerOpts<TPose>,\n 'getSelection' | 'getPose'\n> & {\n /** Override the auto-wired pose lookup (overlay-aware → adapter fallback). */\n poseById?: (id: string) => TPose | null;\n};\n\n/** Per-slot config union. The key narrows it in practice. */\nexport type StandardSlotConfig<TNode extends { id: string }, TPose> =\n | SceneSlotConfig<TNode, TPose>\n | SelectionOverlaySlotConfig<TPose>;\n\n/** What may fill one of the canvas's named layer slots: a config the canvas\n * builds the layer from, a pre-built layer, or `null` to leave the slot\n * empty. */\nexport type LayerSlotValue<TNode extends { id: string }, TPose> =\n | StandardSlotConfig<TNode, TPose>\n | CustomLayerEntry\n | null;\n\n/** The canvas's render stack, as named slots. The standard slots (grid,\n * scene, selection overlay, cell highlight) fix where a layer sits in the\n * stack; scene and selection overlay can be configured, and every one can be\n * given a layer of your own or switched off. Further keys add custom layers.\n * `TSceneSlot` is what the scene slot accepts: `<SceneCanvas>` takes a\n * partial config and fills the rest from its defaults. */\nexport type LayersMap<\n TNode extends { id: string },\n TPose,\n TSceneSlot = SceneSlotConfig<TNode, TPose>,\n> = {\n /** Grid slot, beneath the scene. Takes a pre-built layer (`{ layer }`) —\n * e.g. `createGridLayer` from `@weasel-js/guides` — or `null`. */\n grid?: CustomLayerEntry | null;\n /** Scene slot: the config `<SceneCanvas>` builds its layers from, a\n * pre-built layer that paints the scene in their place, or `null`. A\n * pre-built layer gets no ghost of a node in flight, which needs `drawOne`. */\n scene?: TSceneSlot | CustomLayerEntry | null;\n /** Selection-overlay slot: the config `<SceneCanvas>` builds the layer\n * from, a pre-built layer that paints in its place, or `null` for no\n * selection chrome. */\n selectionOverlay?: SelectionOverlaySlotConfig<TPose> | CustomLayerEntry | null;\n /** Cell-highlight overlay slot, drawn immediately after the grid. Takes a\n * pre-built layer (`{ layer }`) — e.g. `createCellHighlightLayer` from\n * `@weasel-js/guides` — or `null`. */\n cellHighlight?: CustomLayerEntry | null;\n} & {\n [customKey: string]: LayerSlotValue<TNode, TPose> | TSceneSlot | undefined;\n};\n\n/** The scene slot once built: its canvas layers, bottom first. Each `key` is\n * an anchor a custom layer can name (`scene`, or `scene:<layerId>`). */\nexport interface SceneSlotLayers {\n layers: ReadonlyArray<{ key: string; layer: RenderLayer<unknown> }>;\n}\n\n/** What `<Canvas>` composes: a {@link LayersMap} with every slot already a\n * layer. `<SceneCanvas>` builds one from its `layers` prop. */\nexport type CanvasLayers = {\n grid?: CustomLayerEntry | null;\n cellHighlight?: CustomLayerEntry | null;\n scene?: SceneSlotLayers | null;\n selectionOverlay?: CustomLayerEntry | null;\n} & {\n [customKey: string]: CustomLayerEntry | SceneSlotLayers | null | undefined;\n};\n\n/** The layers of `map` that are already built, in its key order: each\n * `{ layer }` entry and each `null`. A slot config is left out, for whoever\n * builds it to put back. */\nexport function builtLayersOf(map: Record<string, unknown>): Record<string, CustomLayerEntry | null> {\n const out: Record<string, CustomLayerEntry | null> = {};\n for (const [key, value] of Object.entries(map)) {\n if (value === null || isCustomEntry(value)) out[key] = value;\n }\n return out;\n}\n"],"mappings":";AAQA,IAAaA,IAAiB;CAC5B;CACA;CACA;CACA;AACF;AAeA,SAAgBC,EAAc,GAAmC;CAC/D,OAAO,CAAC,CAACC,KAAK,OAAOA,KAAM,YAAY,WAAYA;AACrD;AA2EA,SAAgBC,EAAc,GAAuE;CACnG,IAAMC,IAA+C,CAAC;CACtD,KAAK,IAAM,CAACC,GAAKC,MAAU,OAAO,QAAQC,CAAG,GAC3C,CAAID,MAAU,QAAQL,EAAcK,CAAK,OAAG,EAAID,KAAOC;CAEzD,OAAOF;AACT"}
|
|
@@ -1,30 +1,30 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
1
|
+
import { DEFAULT_SHAPE_FILL as e } from "../../util/paint.js";
|
|
2
|
+
import { derivesPath as t } from "./memo.js";
|
|
3
|
+
import { inkReach as n, resolveNodeFill as r, resolveNodeStroke as i, withAnimatedVertexColors as a } from "./nodePaint.js";
|
|
4
|
+
import { commandFill as o, commandStroke as s } from "@weasel-js/renderer";
|
|
5
5
|
import { boundsOfPath as c } from "@weasel-js/geom";
|
|
6
6
|
//#region src/canvas/nodeShapes/derivedPainter.ts
|
|
7
7
|
var l = {
|
|
8
8
|
id: "kit:derived",
|
|
9
|
-
matches:
|
|
10
|
-
paint: (
|
|
9
|
+
matches: t,
|
|
10
|
+
paint: (t, n, l) => {
|
|
11
11
|
let u = l?.derivedPath;
|
|
12
12
|
if (u == null) return [];
|
|
13
|
-
let d = c(u), f =
|
|
13
|
+
let d = c(u), f = t.data, p = i(f?.stroke), m = r(f?.fill, p === null ? e : null), h = m && o(m, d), g = p && s(p, d), _ = {
|
|
14
14
|
kind: "path",
|
|
15
15
|
path: u,
|
|
16
16
|
...h ? { fill: h } : {},
|
|
17
17
|
...h && f?.vertexColors ? { vertexColors: f.vertexColors } : {},
|
|
18
18
|
...g ? { stroke: g } : {}
|
|
19
19
|
};
|
|
20
|
-
return
|
|
20
|
+
return a([_], l);
|
|
21
21
|
},
|
|
22
22
|
silhouette: (e, t, n) => n?.derivedPath ?? null,
|
|
23
|
-
ink: (
|
|
24
|
-
let s =
|
|
23
|
+
ink: (t, a, o) => {
|
|
24
|
+
let s = t.data, c = i(s?.stroke);
|
|
25
25
|
return {
|
|
26
|
-
filled:
|
|
27
|
-
...
|
|
26
|
+
filled: r(s?.fill, c === null ? e : null) !== null,
|
|
27
|
+
...n(c, o?.scale)
|
|
28
28
|
};
|
|
29
29
|
}
|
|
30
30
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"derivedPainter.js","names":["DERIVED_PAINTER","derivesPath","path","ctx","box","boundsOfPath","d","node","strokeSpec","resolveNodeStroke","declared","resolveNodeFill","DEFAULT_SHAPE_FILL","fill","commandFill","stroke","commandStroke","cmd","withAnimatedVertexColors","inkReach"],"sources":["../../../src/canvas/nodeShapes/derivedPainter.ts"],"sourcesContent":["import {\n boundsOfPath\n} from '@weasel-js/geom';\nimport type {
|
|
1
|
+
{"version":3,"file":"derivedPainter.js","names":["DERIVED_PAINTER","derivesPath","path","ctx","box","boundsOfPath","d","node","strokeSpec","resolveNodeStroke","declared","resolveNodeFill","DEFAULT_SHAPE_FILL","fill","commandFill","stroke","commandStroke","cmd","withAnimatedVertexColors","inkReach"],"sources":["../../../src/canvas/nodeShapes/derivedPainter.ts"],"sourcesContent":["import {\n boundsOfPath\n} from '@weasel-js/geom';\nimport type { Stroke, Fill } from '@weasel-js/paint';\nimport type { NodeShapeEntry } from 'canvas/NodeShape';\nimport { commandFill, commandStroke } from '@weasel-js/renderer';\nimport type { DrawCommand } from '@weasel-js/renderer';\nimport { DEFAULT_SHAPE_FILL } from '../../util/paint';\nimport { derivesPath } from './memo';\nimport { inkReach, withAnimatedVertexColors, resolveNodeFill, resolveNodeStroke } from './nodePaint';\n\n/**\n * Built-in painter for nodes whose geometry is computed from other nodes'\n * poses. The path itself arrives on the paint context — see\n * {@link NodePaintCtx.derivedPath}.\n *\n * Fill and stroke resolve as `kit:path`'s do, but against the **derived path's\n * own bounds**, not the pose. `kit:path` projects its path into the pose frame\n * first, so there the two boxes are the same one; here the path is already\n * absolute and the pose is typically a zero-sized placeholder, which would\n * collapse a box-relative gradient onto a point.\n *\n * Not memoized on {@link PAINT_SLOT} on purpose: that key is `(node, pose,\n * data)` and cannot see `ctx.derivedPath`, so it would serve one caller's\n * commands to a caller that passed a different path.\n *\n * Rotation still comes from the pose — `wrapNodeOutput` turns the output about\n * the pose AABB's center, which for a zero-sized pose is its origin.\n */\nexport const DERIVED_PAINTER: NodeShapeEntry = {\n id: 'kit:derived',\n // `dependsOn` alone is not enough: the two fields are independent optionals,\n // and `kit:add` restores a node with its `dependsOn` intact when its\n // `derivePath` key is missing from the registry. Claiming that node would paint\n // nothing where the authored appearance is what the warning promises.\n matches: derivesPath,\n paint: (node, _pose, ctx) => {\n const path = ctx?.derivedPath;\n if (path == null) return [];\n const box = boundsOfPath(path);\n const d = node.data as { fill?: Fill | null; stroke?: Stroke | null; vertexColors?: number[] } | null;\n const strokeSpec = resolveNodeStroke(d?.stroke);\n const declared = resolveNodeFill(d?.fill, strokeSpec === null ? DEFAULT_SHAPE_FILL : null);\n const fill = declared && commandFill(declared, box);\n const stroke = strokeSpec && commandStroke(strokeSpec, box);\n const cmd: DrawCommand = {\n kind: 'path',\n path,\n ...(fill ? { fill } : {}),\n ...(fill && d?.vertexColors ? { vertexColors: d.vertexColors } : {}),\n ...(stroke ? { stroke } : {}),\n };\n return withAnimatedVertexColors([cmd], ctx);\n },\n // The derived path *is* the silhouette, and it is already absolute — the\n // pose is a placeholder, so nothing here can be recovered from it. Without\n // a `ctx` this reports null, which `shapeCoversPoint` reads as \"no\n // opinion\": picking then falls back to that zero-sized pose.\n silhouette: (_node, _pose, ctx) => ctx?.derivedPath ?? null,\n ink: (node, _pose, ctx) => {\n const d = node.data as { fill?: Fill | null; stroke?: Stroke | null } | null;\n const stroke = resolveNodeStroke(d?.stroke);\n return {\n filled: resolveNodeFill(d?.fill, stroke === null ? DEFAULT_SHAPE_FILL : null) !== null,\n ...inkReach(stroke, ctx?.scale),\n };\n },\n};\n"],"mappings":";;;;;;AA6BA,IAAaA,IAAkC;CAC7C,IAAI;CAKJ,SAASC;CACT,QAAQ,GAAM,GAAO,MAAQ;EAC3B,IAAMC,IAAOC,GAAK;EAClB,IAAID,KAAQ,MAAM,OAAO,CAAC;EAC1B,IAAME,IAAMC,EAAaH,CAAI,GACvBI,IAAIC,EAAK,MACTC,IAAaC,EAAkBH,GAAG,MAAM,GACxCI,IAAWC,EAAgBL,GAAG,MAAME,MAAe,OAAOI,IAAqB,IAAI,GACnFC,IAAOH,KAAYI,EAAYJ,GAAUN,CAAG,GAC5CW,IAASP,KAAcQ,EAAcR,GAAYJ,CAAG,GACpDa,IAAmB;GACvB,MAAM;GACN;GACA,GAAIJ,IAAO,EAAE,QAAK,IAAI,CAAC;GACvB,GAAIA,KAAQP,GAAG,eAAe,EAAE,cAAcA,EAAE,aAAa,IAAI,CAAC;GAClE,GAAIS,IAAS,EAAE,UAAO,IAAI,CAAC;EAC7B;EACA,OAAOG,EAAyB,CAACD,CAAG,GAAGd,CAAG;CAC5C;CAKA,aAAa,GAAO,GAAO,MAAQA,GAAK,eAAe;CACvD,MAAM,GAAM,GAAO,MAAQ;EACzB,IAAMG,IAAIC,EAAK,MACTQ,IAASN,EAAkBH,GAAG,MAAM;EAC1C,OAAO;GACL,QAAQK,EAAgBL,GAAG,MAAMS,MAAW,OAAOH,IAAqB,IAAI,MAAM;GAClF,GAAGO,EAASJ,GAAQZ,GAAK,KAAK;EAChC;CACF;AACF"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { paintsPose as e, poseBoxBounds as t } from "./poseBox.js";
|
|
2
|
+
import { getImageBitmap as n, imageStatus as r } from "@weasel-js/renderer";
|
|
3
3
|
import { linePath as i } from "@weasel-js/geom";
|
|
4
4
|
//#region src/canvas/nodeShapes/imagePainter.ts
|
|
5
5
|
function a(e, t) {
|
|
@@ -18,13 +18,13 @@ function o(e, t, n) {
|
|
|
18
18
|
}
|
|
19
19
|
var s = {
|
|
20
20
|
id: "kit:image",
|
|
21
|
-
matches: (
|
|
22
|
-
if (!
|
|
23
|
-
let
|
|
24
|
-
return typeof
|
|
21
|
+
matches: (t) => {
|
|
22
|
+
if (!e(t.pose)) return !1;
|
|
23
|
+
let n = t.data?.image?.src;
|
|
24
|
+
return typeof n == "string" && n.length > 0;
|
|
25
25
|
},
|
|
26
|
-
paint: (
|
|
27
|
-
let c =
|
|
26
|
+
paint: (e, t, s) => {
|
|
27
|
+
let c = e.data, l = t, u = s?.resolveImage ? s.resolveImage(e) : n(c.image.src, o(l, c.image.source, s?.pixelScale));
|
|
28
28
|
if (u) return [{
|
|
29
29
|
kind: "image",
|
|
30
30
|
image: u,
|
|
@@ -37,7 +37,7 @@ var s = {
|
|
|
37
37
|
...c.image.flipX ? { flipX: !0 } : {},
|
|
38
38
|
...c.image.flipY ? { flipY: !0 } : {}
|
|
39
39
|
}];
|
|
40
|
-
let d = !s?.resolveImage &&
|
|
40
|
+
let d = !s?.resolveImage && r(c.image.src) === "error", f = d ? "#d08a8a" : "#bbbbbb", p = [{
|
|
41
41
|
kind: "path",
|
|
42
42
|
path: {
|
|
43
43
|
kind: "rect",
|
|
@@ -76,7 +76,7 @@ var s = {
|
|
|
76
76
|
height: n.height
|
|
77
77
|
};
|
|
78
78
|
},
|
|
79
|
-
bounds: (e,
|
|
79
|
+
bounds: (e, n, r) => t(n, c, r)
|
|
80
80
|
}, c = {
|
|
81
81
|
paint: { color: "#000" },
|
|
82
82
|
width: 1
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"imagePainter.js","names":["sourceInPixels","s","bmp","drawnSize","pixelScale","pose","source","IMAGE_PAINTER","paintsPose","node","src","d","p","ctx","getImageBitmap","error","imageStatus","color","cmds","linePath","poseBoxBounds","IMAGE_PLACEHOLDER_STROKE"],"sources":["../../../src/canvas/nodeShapes/imagePainter.ts"],"sourcesContent":["import {\n linePath\n} from '@weasel-js/geom';\nimport type { Stroke } from '@weasel-js/paint';\nimport type { NodeShapeEntry } from 'canvas/NodeShape';\nimport type { Node, RectPose } from 'core/scene/types';\nimport {\n getImageBitmap, imageStatus, type ImageNodeData, type ImageRasterSize,\n} from '
|
|
1
|
+
{"version":3,"file":"imagePainter.js","names":["sourceInPixels","s","bmp","drawnSize","pixelScale","pose","source","IMAGE_PAINTER","paintsPose","node","src","d","p","ctx","getImageBitmap","error","imageStatus","color","cmds","linePath","poseBoxBounds","IMAGE_PLACEHOLDER_STROKE"],"sources":["../../../src/canvas/nodeShapes/imagePainter.ts"],"sourcesContent":["import {\n linePath\n} from '@weasel-js/geom';\nimport type { Stroke } from '@weasel-js/paint';\nimport type { NodeShapeEntry } from 'canvas/NodeShape';\nimport type { Node, RectPose } from 'core/scene/types';\nimport {\n getImageBitmap, imageStatus, type ImageNodeData, type ImageRasterSize,\n} from '@weasel-js/renderer';\nimport type { DrawCommand } from '@weasel-js/renderer';\nimport { paintsPose, poseBoxBounds } from './poseBox';\n\n// ─── Built-in painters ─────────────────────────────────────────────────\n\nexport function sourceInPixels(\n s: NonNullable<ImageNodeData['image']['source']>,\n bmp: ImageBitmap,\n): { x: number; y: number; w: number; h: number } {\n return {\n x: s.x * bmp.width, y: s.y * bmp.height, w: s.width * bmp.width, h: s.height * bmp.height,\n };\n}\n\n/** The whole bitmap's size in device pixels when `source` of it fills `pose`. */\nexport function drawnSize(\n pose: RectPose,\n source: ImageNodeData['image']['source'],\n pixelScale: number | undefined,\n): ImageRasterSize | undefined {\n if (!(pixelScale && pixelScale > 0)) return undefined;\n return {\n width: Math.abs(pose.width) * pixelScale / (source?.width || 1),\n height: Math.abs(pose.height) * pixelScale / (source?.height || 1),\n };\n}\n\n/** Raster-image painter. Renders `data.image.src` (URL / blob: / data-URI)\n * via an `ImageDrawCommand` once the bitmap has decoded; until then it paints\n * a faint placeholder outline so the node stays visible + selectable (a\n * reddish outline + slash marks a failed load). The decoded bitmap is owned\n * by `imageCache`, keyed on `src`; the node holds only the serializable `src`.\n * Registered before `kit:rect-fallback` so image nodes don't fall through. */\nexport const IMAGE_PAINTER: NodeShapeEntry<unknown, RectPose> = {\n id: 'kit:image',\n matches: (node) => {\n if (!paintsPose(node.pose)) return false;\n const src = (node.data as { image?: { src?: unknown } } | null)?.image?.src;\n return typeof src === 'string' && src.length > 0;\n },\n paint: (node, pose, ctx) => {\n const d = node.data as ImageNodeData;\n const p = pose;\n const bmp = ctx?.resolveImage\n ? ctx.resolveImage(node as unknown as Node<unknown, string, unknown>)\n : getImageBitmap(d.image.src, drawnSize(p, d.image.source, ctx?.pixelScale));\n if (bmp) {\n return [{\n kind: 'image',\n image: bmp,\n x: p.x, y: p.y, w: p.width, h: p.height,\n ...(d.image.opacity !== undefined ? { opacity: d.image.opacity } : {}),\n ...(d.image.source ? { source: sourceInPixels(d.image.source, bmp) } : {}),\n ...(d.image.flipX ? { flipX: true } : {}),\n ...(d.image.flipY ? { flipY: true } : {}),\n }];\n }\n // Not ready — faint placeholder (grey while loading, reddish + slash on\n // error). With a caller-supplied resolver the fallback is deterministic:\n // always the plain grey outline, no ambient load-status read.\n const error = ctx?.resolveImage ? false : imageStatus(d.image.src) === 'error';\n const color = error ? '#d08a8a' : '#bbbbbb';\n const cmds: DrawCommand[] = [{\n kind: 'path',\n path: { kind: 'rect', x: p.x, y: p.y, width: p.width, height: p.height },\n stroke: { paint: { color }, width: 1 },\n }];\n if (error) {\n cmds.push({\n kind: 'path',\n path: linePath({ x: p.x, y: p.y }, { x: p.x + p.width, y: p.y + p.height }),\n stroke: { paint: { color }, width: 1 },\n });\n }\n return cmds;\n },\n silhouette: (_node, pose) => {\n const p = pose;\n return { kind: 'rect', x: p.x, y: p.y, width: p.width, height: p.height };\n },\n // The placeholder's 1-unit outline is the only thing that leaves the box.\n bounds: (_node, pose, ctx) => poseBoxBounds(pose, IMAGE_PLACEHOLDER_STROKE, ctx),\n};\n\nexport const IMAGE_PLACEHOLDER_STROKE: Stroke = { paint: { color: '#000' }, width: 1 };\n"],"mappings":";;;;AAcA,SAAgBA,EACd,GACA,GACgD;CAChD,OAAO;EACL,GAAGC,EAAE,IAAIC,EAAI;EAAO,GAAGD,EAAE,IAAIC,EAAI;EAAQ,GAAGD,EAAE,QAAQC,EAAI;EAAO,GAAGD,EAAE,SAASC,EAAI;CACrF;AACF;AAGA,SAAgBC,EACd,GACA,GACA,GAC6B;CAC7B,IAAMC,KAAcA,IAAa,GACjC,OAAO;EACL,OAAO,KAAK,IAAIC,EAAK,KAAK,IAAID,KAAcE,GAAQ,SAAS;EAC7D,QAAQ,KAAK,IAAID,EAAK,MAAM,IAAID,KAAcE,GAAQ,UAAU;CAClE;AACF;AAQA,IAAaC,IAAmD;CAC9D,IAAI;CACJ,UAAU,MAAS;EACjB,IAAI,CAACC,EAAWC,EAAK,IAAI,GAAG,OAAO;EACnC,IAAMC,IAAOD,EAAK,MAA+C,OAAO;EACxE,OAAO,OAAOC,KAAQ,YAAYA,EAAI,SAAS;CACjD;CACA,QAAQ,GAAM,GAAM,MAAQ;EAC1B,IAAMC,IAAIF,EAAK,MACTG,IAAIP,GACJH,IAAMW,GAAK,eACbA,EAAI,aAAaJ,CAAiD,IAClEK,EAAeH,EAAE,MAAM,KAAKR,EAAUS,GAAGD,EAAE,MAAM,QAAQE,GAAK,UAAU,CAAC;EAC7E,IAAIX,GACF,OAAO,CAAC;GACN,MAAM;GACN,OAAOA;GACP,GAAGU,EAAE;GAAG,GAAGA,EAAE;GAAG,GAAGA,EAAE;GAAO,GAAGA,EAAE;GACjC,GAAID,EAAE,MAAM,YAAY,KAAA,IAA2C,CAAC,IAAhC,EAAE,SAASA,EAAE,MAAM,QAAQ;GAC/D,GAAIA,EAAE,MAAM,SAAS,EAAE,QAAQX,EAAeW,EAAE,MAAM,QAAQT,CAAG,EAAE,IAAI,CAAC;GACxE,GAAIS,EAAE,MAAM,QAAQ,EAAE,OAAO,GAAK,IAAI,CAAC;GACvC,GAAIA,EAAE,MAAM,QAAQ,EAAE,OAAO,GAAK,IAAI,CAAC;EACzC,CAAC;EAKH,IAAMI,IAAQ,IAAK,gBAAuBC,EAAYL,EAAE,MAAM,GAAG,MAAM,SACjEM,IAAQF,IAAQ,YAAY,WAC5BG,IAAsB,CAAC;GAC3B,MAAM;GACN,MAAM;IAAE,MAAM;IAAQ,GAAGN,EAAE;IAAG,GAAGA,EAAE;IAAG,OAAOA,EAAE;IAAO,QAAQA,EAAE;GAAO;GACvE,QAAQ;IAAE,OAAO,EAAE,SAAM;IAAG,OAAO;GAAE;EACvC,CAAC;EAQD,OAPIG,KACFG,EAAK,KAAK;GACR,MAAM;GACN,MAAMC,EAAS;IAAE,GAAGP,EAAE;IAAG,GAAGA,EAAE;GAAE,GAAG;IAAE,GAAGA,EAAE,IAAIA,EAAE;IAAO,GAAGA,EAAE,IAAIA,EAAE;GAAO,CAAC;GAC1E,QAAQ;IAAE,OAAO,EAAE,SAAM;IAAG,OAAO;GAAE;EACvC,CAAC,GAEIM;CACT;CACA,aAAa,GAAO,MAAS;EAC3B,IAAMN,IAAIP;EACV,OAAO;GAAE,MAAM;GAAQ,GAAGO,EAAE;GAAG,GAAGA,EAAE;GAAG,OAAOA,EAAE;GAAO,QAAQA,EAAE;EAAO;CAC1E;CAEA,SAAS,GAAO,GAAM,MAAQQ,EAAcf,GAAMgB,GAA0BR,CAAG;AACjF,GAEaQ,IAAmC;CAAE,OAAO,EAAE,OAAO,OAAO;CAAG,OAAO;AAAE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memo.js","names":["PAINT_SLOT","derivesPath","node"],"sources":["../../../src/canvas/nodeShapes/memo.ts"],"sourcesContent":["\n/**\n * Slot for a painter's memoized `paint` output.\n *\n * Distinct from
|
|
1
|
+
{"version":3,"file":"memo.js","names":["PAINT_SLOT","derivesPath","node"],"sources":["../../../src/canvas/nodeShapes/memo.ts"],"sourcesContent":["\n/**\n * Slot for a painter's memoized `paint` output.\n *\n * Distinct from the silhouette slot even though the two mostly invalidate\n * together: the silhouette bakes `pose.rotation` in (paint does not — the\n * render wrap applies it), and paint alone can depend on `NodePaintCtx` and on\n * ambient readiness.\n *\n * **Only for painters that are a pure function of `(node, pose, data)`.**\n * `kit:text` and `kit:image` do not qualify.\n */\nexport const PAINT_SLOT = 'shape:paint';\n\nexport function derivesPath(node: { dependsOn?: readonly unknown[] | 'children'; derivePath?: unknown }): boolean {\n return (node.dependsOn?.length ?? 0) > 0 && node.derivePath !== undefined;\n}\n"],"mappings":";AAYA,IAAaA,IAAa;AAE1B,SAAgBC,EAAY,GAAsF;CAChH,QAAQC,EAAK,WAAW,UAAU,KAAK,KAAKA,EAAK,eAAe,KAAA;AAClE"}
|