@weasel-js/core 1.6.1 → 1.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1006 -0
- package/README.md +28 -9
- package/dist/WeaselProvider.js +15 -0
- package/dist/WeaselProvider.js.map +1 -0
- package/dist/affordances/composeAffordanceLayer.js +224 -0
- package/dist/affordances/composeAffordanceLayer.js.map +1 -0
- package/dist/affordances/cornerResize.js +69 -0
- package/dist/affordances/cornerResize.js.map +1 -0
- package/dist/affordances/hitAffordanceRegions.js +138 -0
- package/dist/affordances/hitAffordanceRegions.js.map +1 -0
- package/dist/affordances/pathAnchors.js +66 -0
- package/dist/affordances/pathAnchors.js.map +1 -0
- package/dist/affordances/rotationHandle.js +103 -0
- package/dist/affordances/rotationHandle.js.map +1 -0
- package/dist/animation/behaviors/momentum.js +118 -0
- package/dist/animation/behaviors/momentum.js.map +1 -0
- package/dist/animation/colorHelpers.js +135 -0
- package/dist/animation/colorHelpers.js.map +1 -0
- package/dist/animation/colorRegistry.js +37 -0
- package/dist/animation/colorRegistry.js.map +1 -0
- package/dist/animation/index.js +20 -0
- package/dist/animation/loop.js +62 -0
- package/dist/animation/loop.js.map +1 -0
- package/dist/animation/observe.js +23 -0
- package/dist/animation/observe.js.map +1 -0
- package/dist/animation/poseHelpers.js +50 -0
- package/dist/animation/poseHelpers.js.map +1 -0
- package/dist/animation/reflow.js +121 -0
- package/dist/animation/reflow.js.map +1 -0
- package/dist/animation/rig/bindRig.js +74 -0
- package/dist/animation/rig/bindRig.js.map +1 -0
- package/dist/animation/rig/blendPoses.js +43 -0
- package/dist/animation/rig/blendPoses.js.map +1 -0
- package/dist/animation/rig/mirrorPose.js +19 -0
- package/dist/animation/rig/mirrorPose.js.map +1 -0
- package/dist/animation/rig/resolveSkeleton.js +33 -0
- package/dist/animation/rig/resolveSkeleton.js.map +1 -0
- package/dist/animation/rig/solveIk.js +103 -0
- package/dist/animation/rig/solveIk.js.map +1 -0
- package/dist/animation/rig/types.js +12 -0
- package/dist/animation/rig/types.js.map +1 -0
- package/dist/animation/rig/useRig.js +23 -0
- package/dist/animation/rig/useRig.js.map +1 -0
- package/dist/animation/slew.js +27 -0
- package/dist/animation/slew.js.map +1 -0
- package/dist/animation/stagger.js +138 -0
- package/dist/animation/stagger.js.map +1 -0
- package/dist/animation/timeline/booking.js +106 -0
- package/dist/animation/timeline/booking.js.map +1 -0
- package/dist/animation/timeline/createTimeline.js +116 -0
- package/dist/animation/timeline/createTimeline.js.map +1 -0
- package/dist/animation/timeline/sampleTrack.js +29 -0
- package/dist/animation/timeline/sampleTrack.js.map +1 -0
- package/dist/animation/useAnimator.js +329 -0
- package/dist/animation/useAnimator.js.map +1 -0
- package/dist/animation/wrappers/animateLifecycle.js +40 -0
- package/dist/animation/wrappers/animateLifecycle.js.map +1 -0
- package/dist/animation/wrappers/animateOnSetPose.js +44 -0
- package/dist/animation/wrappers/animateOnSetPose.js.map +1 -0
- package/dist/{autoPoseDescriptor-_XOyF7t4.d.ts → autoPoseDescriptor-BT_vp9FO.d.ts} +2 -2
- package/dist/{builtins-HWyuLzE-.d.ts → builtins-BSUfH8nU.d.ts} +1301 -508
- package/dist/canvas/Canvas.js +608 -0
- package/dist/canvas/Canvas.js.map +1 -0
- package/dist/canvas/CanvasView.js +255 -0
- package/dist/canvas/CanvasView.js.map +1 -0
- package/dist/canvas/CursorCoordsHud.js +75 -0
- package/dist/canvas/CursorCoordsHud.js.map +1 -0
- package/dist/canvas/DrawCanvas.js +67 -0
- package/dist/canvas/DrawCanvas.js.map +1 -0
- package/dist/canvas/MinimapCanvas.js +139 -0
- package/dist/canvas/MinimapCanvas.js.map +1 -0
- package/dist/canvas/ModalityHud.js +66 -0
- package/dist/canvas/ModalityHud.js.map +1 -0
- package/dist/canvas/NodeShape.js +391 -0
- package/dist/canvas/NodeShape.js.map +1 -0
- package/dist/canvas/PickHud.js +93 -0
- package/dist/canvas/PickHud.js.map +1 -0
- package/dist/canvas/SceneCanvas/ActionsProviderIfRoot.js +10 -0
- package/dist/canvas/SceneCanvas/ActionsProviderIfRoot.js.map +1 -0
- package/dist/canvas/SceneCanvas/DepRegistryProviderIfRoot.js +10 -0
- package/dist/canvas/SceneCanvas/DepRegistryProviderIfRoot.js.map +1 -0
- package/dist/canvas/SceneCanvas/PointerProviderIfRoot.js +51 -0
- package/dist/canvas/SceneCanvas/PointerProviderIfRoot.js.map +1 -0
- package/dist/canvas/SceneCanvas/contributionFrameHooks.js +42 -0
- package/dist/canvas/SceneCanvas/contributionFrameHooks.js.map +1 -0
- package/dist/canvas/SceneCanvas/defaultNodeProperties.js +549 -0
- package/dist/canvas/SceneCanvas/defaultNodeProperties.js.map +1 -0
- package/dist/canvas/SceneCanvas/defaultNodeRouting.js +26 -0
- package/dist/canvas/SceneCanvas/defaultNodeRouting.js.map +1 -0
- package/dist/canvas/SceneCanvas/dispatcherGestureBounds.js +69 -0
- package/dist/canvas/SceneCanvas/dispatcherGestureBounds.js.map +1 -0
- package/dist/canvas/SceneCanvas/features.js +97 -0
- package/dist/canvas/SceneCanvas/features.js.map +1 -0
- package/dist/canvas/SceneCanvas/poseGeometry.js +46 -0
- package/dist/canvas/SceneCanvas/poseGeometry.js.map +1 -0
- package/dist/canvas/SceneCanvas/useActionsPropResolver.js +48 -0
- package/dist/canvas/SceneCanvas/useActionsPropResolver.js.map +1 -0
- package/dist/canvas/SceneCanvas/useBuiltinShapeTools.js +70 -0
- package/dist/canvas/SceneCanvas/useBuiltinShapeTools.js.map +1 -0
- package/dist/canvas/SceneCanvas/useContributionRoles.js +75 -0
- package/dist/canvas/SceneCanvas/useContributionRoles.js.map +1 -0
- package/dist/canvas/SceneCanvas/useDispatcherOverlayLayer.js +172 -0
- package/dist/canvas/SceneCanvas/useDispatcherOverlayLayer.js.map +1 -0
- package/dist/canvas/SceneCanvas/usePreviewGhostLayer.js +69 -0
- package/dist/canvas/SceneCanvas/usePreviewGhostLayer.js.map +1 -0
- package/dist/canvas/SceneCanvas/useSceneSelectTool.js +127 -0
- package/dist/canvas/SceneCanvas/useSceneSelectTool.js.map +1 -0
- package/dist/canvas/SceneCanvas/useViewportActions.js +30 -0
- package/dist/canvas/SceneCanvas/useViewportActions.js.map +1 -0
- package/dist/canvas/SceneCanvas.js +992 -0
- package/dist/canvas/SceneCanvas.js.map +1 -0
- package/dist/canvas/SceneViewCanvas.js +54 -0
- package/dist/canvas/SceneViewCanvas.js.map +1 -0
- package/dist/canvas/accentColor.js +9 -0
- package/dist/canvas/accentColor.js.map +1 -0
- package/dist/canvas/affordanceAt.js +63 -0
- package/dist/canvas/affordanceAt.js.map +1 -0
- package/dist/canvas/buildSceneTree.js +65 -0
- package/dist/canvas/buildSceneTree.js.map +1 -0
- package/dist/canvas/canvasRenderer.js +89 -0
- package/dist/canvas/canvasRenderer.js.map +1 -0
- package/dist/canvas/colorOverrides.js +16 -0
- package/dist/canvas/colorOverrides.js.map +1 -0
- package/dist/canvas/defaultDrawOne.js +43 -0
- package/dist/canvas/defaultDrawOne.js.map +1 -0
- package/dist/canvas/deps/areaSelect.js +19 -0
- package/dist/canvas/deps/areaSelect.js.map +1 -0
- package/dist/canvas/deps/debug.js +9 -0
- package/dist/canvas/deps/debug.js.map +1 -0
- package/dist/canvas/deps/dispatcher.js +11 -0
- package/dist/canvas/deps/dispatcher.js.map +1 -0
- package/dist/canvas/deps/editAnchors.js +101 -0
- package/dist/canvas/deps/editAnchors.js.map +1 -0
- package/dist/canvas/deps/geometryProjection.js +11 -0
- package/dist/canvas/deps/geometryProjection.js.map +1 -0
- package/dist/canvas/deps/hitTestArea.js +51 -0
- package/dist/canvas/deps/hitTestArea.js.map +1 -0
- package/dist/canvas/deps/ingestion.js +31 -0
- package/dist/canvas/deps/ingestion.js.map +1 -0
- package/dist/canvas/deps/insert.js +116 -0
- package/dist/canvas/deps/insert.js.map +1 -0
- package/dist/canvas/deps/lassoSelect.js +20 -0
- package/dist/canvas/deps/lassoSelect.js.map +1 -0
- package/dist/canvas/deps/layout.js +34 -0
- package/dist/canvas/deps/layout.js.map +1 -0
- package/dist/canvas/deps/nodeAtPoint.js +19 -0
- package/dist/canvas/deps/nodeAtPoint.js.map +1 -0
- package/dist/canvas/deps/poseComposition.js +11 -0
- package/dist/canvas/deps/poseComposition.js.map +1 -0
- package/dist/canvas/deps/poseDescriptor.js +12 -0
- package/dist/canvas/deps/poseDescriptor.js.map +1 -0
- package/dist/canvas/deps/resizePolicy.js +35 -0
- package/dist/canvas/deps/resizePolicy.js.map +1 -0
- package/dist/canvas/deps/slice.js +99 -0
- package/dist/canvas/deps/slice.js.map +1 -0
- package/dist/canvas/deps/snap.js +11 -0
- package/dist/canvas/deps/snap.js.map +1 -0
- package/dist/canvas/deps/textEdit.js +21 -0
- package/dist/canvas/deps/textEdit.js.map +1 -0
- package/dist/canvas/deps/view.js +43 -0
- package/dist/canvas/deps/view.js.map +1 -0
- package/dist/canvas/derivedPath.js +47 -0
- package/dist/canvas/derivedPath.js.map +1 -0
- package/dist/canvas/drawEnvelope.js +22 -0
- package/dist/canvas/drawEnvelope.js.map +1 -0
- package/dist/canvas/getNodeAtPoint.js +18 -0
- package/dist/canvas/getNodeAtPoint.js.map +1 -0
- package/dist/canvas/hostAnchor.js +29 -0
- package/dist/canvas/hostAnchor.js.map +1 -0
- package/dist/canvas/hud.module.js +18 -0
- package/dist/canvas/hud.module.js.map +1 -0
- package/dist/canvas/insertPreviewExtent.js +103 -0
- package/dist/canvas/insertPreviewExtent.js.map +1 -0
- package/dist/canvas/kitRequirements.js +177 -0
- package/dist/canvas/kitRequirements.js.map +1 -0
- package/dist/canvas/layerOrder.js +66 -0
- package/dist/canvas/layerOrder.js.map +1 -0
- package/dist/canvas/layerSlots.js +14 -0
- package/dist/canvas/layerSlots.js.map +1 -0
- package/dist/canvas/minimapMath.js +80 -0
- package/dist/canvas/minimapMath.js.map +1 -0
- package/dist/canvas/mountedCanvases.js +20 -0
- package/dist/canvas/mountedCanvases.js.map +1 -0
- package/dist/canvas/overlayRoleStrokes.js +17 -0
- package/dist/canvas/overlayRoleStrokes.js.map +1 -0
- package/dist/canvas/paintCull.js +20 -0
- package/dist/canvas/paintCull.js.map +1 -0
- package/dist/canvas/pickWalk.js +158 -0
- package/dist/canvas/pickWalk.js.map +1 -0
- package/dist/canvas/planeClips.js +30 -0
- package/dist/canvas/planeClips.js.map +1 -0
- package/dist/canvas/poseRotation.js +35 -0
- package/dist/canvas/poseRotation.js.map +1 -0
- package/dist/canvas/rasterToPng.js +21 -0
- package/dist/canvas/rasterToPng.js.map +1 -0
- package/dist/canvas/renderDebugSnapshot.js +32 -0
- package/dist/canvas/renderDebugSnapshot.js.map +1 -0
- package/dist/canvas/renderNeeds.js +25 -0
- package/dist/canvas/renderNeeds.js.map +1 -0
- package/dist/canvas/renderSceneToPixels.js +143 -0
- package/dist/canvas/renderSceneToPixels.js.map +1 -0
- package/dist/canvas/sceneAdapter.js +270 -0
- package/dist/canvas/sceneAdapter.js.map +1 -0
- package/dist/canvas/sceneLayerPaint.js +37 -0
- package/dist/canvas/sceneLayerPaint.js.map +1 -0
- package/dist/canvas/sceneSlotWiring.js +20 -0
- package/dist/canvas/sceneSlotWiring.js.map +1 -0
- package/dist/canvas/sceneViewRender.js +72 -0
- package/dist/canvas/sceneViewRender.js.map +1 -0
- package/dist/canvas/slopsDebugLayer.js +61 -0
- package/dist/canvas/slopsDebugLayer.js.map +1 -0
- package/dist/canvas/surfaceContribution.js +15 -0
- package/dist/canvas/surfaceContribution.js.map +1 -0
- package/dist/canvas/toolPreview.js +39 -0
- package/dist/canvas/toolPreview.js.map +1 -0
- package/dist/canvas/useCanvasRenderer.js +11 -0
- package/dist/canvas/useCanvasRenderer.js.map +1 -0
- package/dist/canvas/useFrameLoop.js +60 -0
- package/dist/canvas/useFrameLoop.js.map +1 -0
- package/dist/canvas/useHostAnchor.js +71 -0
- package/dist/canvas/useHostAnchor.js.map +1 -0
- package/dist/canvas/useLateContentRedraw.js +21 -0
- package/dist/canvas/useLateContentRedraw.js.map +1 -0
- package/dist/canvas/useRedrawOn.js +21 -0
- package/dist/canvas/useRedrawOn.js.map +1 -0
- package/dist/canvas/useViewHelpers.js +120 -0
- package/dist/canvas/useViewHelpers.js.map +1 -0
- package/dist/canvas/viewInputs.js +17 -0
- package/dist/canvas/viewInputs.js.map +1 -0
- package/dist/canvas/viewRegistry.js +61 -0
- package/dist/canvas/viewRegistry.js.map +1 -0
- package/dist/canvas/wrapNodeOutput.js +14 -0
- package/dist/canvas/wrapNodeOutput.js.map +1 -0
- package/dist/clipboard.d.ts +10 -5
- package/dist/clipboard.js +3 -5
- package/dist/clone.d.ts +3 -3
- package/dist/clone.js +2 -5
- package/dist/core/adapters/arrayAdapter.js +85 -0
- package/dist/core/adapters/arrayAdapter.js.map +1 -0
- package/dist/core/adapters/useArrayAdapter.js +13 -0
- package/dist/core/adapters/useArrayAdapter.js.map +1 -0
- package/dist/core/applyOps.js +12 -0
- package/dist/core/applyOps.js.map +1 -0
- package/dist/core/device/index.js +4 -0
- package/dist/core/device/targets.js +17 -0
- package/dist/core/device/targets.js.map +1 -0
- package/dist/core/device/useDeviceProfile.js +75 -0
- package/dist/core/device/useDeviceProfile.js.map +1 -0
- package/dist/core/fillInPoseFrame.js +102 -0
- package/dist/core/fillInPoseFrame.js.map +1 -0
- package/dist/core/geometry/poseDescriptor.js +98 -0
- package/dist/core/geometry/poseDescriptor.js.map +1 -0
- package/dist/core/geometry/poseRotation.js +58 -0
- package/dist/core/geometry/poseRotation.js.map +1 -0
- package/dist/core/geometry/regionHit.js +102 -0
- package/dist/core/geometry/regionHit.js.map +1 -0
- package/dist/core/geometry/unionBounds.js +60 -0
- package/dist/core/geometry/unionBounds.js.map +1 -0
- package/dist/core/gradient.js +136 -0
- package/dist/core/gradient.js.map +1 -0
- package/dist/core/isPlainObject.js +11 -0
- package/dist/core/isPlainObject.js.map +1 -0
- package/dist/core/layers/render.js +150 -0
- package/dist/core/layers/render.js.map +1 -0
- package/dist/core/markerInset.js +24 -0
- package/dist/core/markerInset.js.map +1 -0
- package/dist/core/mixed.js +6 -0
- package/dist/core/mixed.js.map +1 -0
- package/dist/core/ops/arrange.js +31 -0
- package/dist/core/ops/arrange.js.map +1 -0
- package/dist/core/ops/create.js +32 -0
- package/dist/core/ops/create.js.map +1 -0
- package/dist/core/ops/createHistory.js +20 -0
- package/dist/core/ops/createHistory.js.map +1 -0
- package/dist/core/ops/delete.js +89 -0
- package/dist/core/ops/delete.js.map +1 -0
- package/dist/core/ops/registry.js +17 -0
- package/dist/core/ops/registry.js.map +1 -0
- package/dist/core/ops/reorder/algorithms.js +55 -0
- package/dist/core/ops/reorder/algorithms.js.map +1 -0
- package/dist/core/ops/reorder/index.js +140 -0
- package/dist/core/ops/reorder/index.js.map +1 -0
- package/dist/core/ops/reparent.js +52 -0
- package/dist/core/ops/reparent.js.map +1 -0
- package/dist/core/ops/select.js +34 -0
- package/dist/core/ops/select.js.map +1 -0
- package/dist/core/ops/setData.js +34 -0
- package/dist/core/ops/setData.js.map +1 -0
- package/dist/core/ops/setLayer.js +34 -0
- package/dist/core/ops/setLayer.js.map +1 -0
- package/dist/core/ops/setLayout.js +31 -0
- package/dist/core/ops/setLayout.js.map +1 -0
- package/dist/core/ops/setPath.js +57 -0
- package/dist/core/ops/setPath.js.map +1 -0
- package/dist/core/ops/setText.js +34 -0
- package/dist/core/ops/setText.js.map +1 -0
- package/dist/core/ops/slot.js +37 -0
- package/dist/core/ops/slot.js.map +1 -0
- package/dist/core/ops/transform.js +42 -0
- package/dist/core/ops/transform.js.map +1 -0
- package/dist/core/paintKinds.js +156 -0
- package/dist/core/paintKinds.js.map +1 -0
- package/dist/core/scene/NodeProperties.js +20 -0
- package/dist/core/scene/NodeProperties.js.map +1 -0
- package/dist/core/scene/NodeRouting.js +24 -0
- package/dist/core/scene/NodeRouting.js.map +1 -0
- package/dist/core/scene/arrivals.js +12 -0
- package/dist/core/scene/arrivals.js.map +1 -0
- package/dist/core/scene/composeFrame.js +29 -0
- package/dist/core/scene/composeFrame.js.map +1 -0
- package/dist/core/scene/depMemo.js +18 -0
- package/dist/core/scene/depMemo.js.map +1 -0
- package/dist/core/scene/dependents.js +66 -0
- package/dist/core/scene/dependents.js.map +1 -0
- package/dist/core/scene/derivedPath.js +31 -0
- package/dist/core/scene/derivedPath.js.map +1 -0
- package/dist/core/scene/effectivePose.js +78 -0
- package/dist/core/scene/effectivePose.js.map +1 -0
- package/dist/core/scene/kitRegistry.js +33 -0
- package/dist/core/scene/kitRegistry.js.map +1 -0
- package/dist/core/scene/layoutPass.js +96 -0
- package/dist/core/scene/layoutPass.js.map +1 -0
- package/dist/core/scene/nodeFnFields.js +83 -0
- package/dist/core/scene/nodeFnFields.js.map +1 -0
- package/dist/core/scene/nodeMemo.js +28 -0
- package/dist/core/scene/nodeMemo.js.map +1 -0
- package/dist/core/scene/poseFeed.js +87 -0
- package/dist/core/scene/poseFeed.js.map +1 -0
- package/dist/core/scene/poseOverrides.js +52 -0
- package/dist/core/scene/poseOverrides.js.map +1 -0
- package/dist/core/scene/poseSnapshot.js +54 -0
- package/dist/core/scene/poseSnapshot.js.map +1 -0
- package/dist/core/scene/scene.js +1271 -0
- package/dist/core/scene/scene.js.map +1 -0
- package/dist/core/scene/types.js +6 -0
- package/dist/core/scene/types.js.map +1 -0
- package/dist/core/scene/useScene.js +32 -0
- package/dist/core/scene/useScene.js.map +1 -0
- package/dist/core/selection/chromeState.js +31 -0
- package/dist/core/selection/chromeState.js.map +1 -0
- package/dist/core/selection/selectionTarget.js +6 -0
- package/dist/core/selection/selectionTarget.js.map +1 -0
- package/dist/core/selection/useSelection.js +71 -0
- package/dist/core/selection/useSelection.js.map +1 -0
- package/dist/core/shapeKinds.js +54 -0
- package/dist/core/shapeKinds.js.map +1 -0
- package/dist/core/strokeMarkerShapes.js +139 -0
- package/dist/core/strokeMarkerShapes.js.map +1 -0
- package/dist/core/strokeMarkers.js +28 -0
- package/dist/core/strokeMarkers.js.map +1 -0
- package/dist/core/stylus/stylus.js +39 -0
- package/dist/core/stylus/stylus.js.map +1 -0
- package/dist/core/stylus/usePointerStylus.js +51 -0
- package/dist/core/stylus/usePointerStylus.js.map +1 -0
- package/dist/core/usePaintKinds.js +17 -0
- package/dist/core/usePaintKinds.js.map +1 -0
- package/dist/core/viewport/clampView.js +24 -0
- package/dist/core/viewport/clampView.js.map +1 -0
- package/dist/core/viewport/clientToWorld.js +8 -0
- package/dist/core/viewport/clientToWorld.js.map +1 -0
- package/dist/core/viewport/createVelocityTracker.js +39 -0
- package/dist/core/viewport/createVelocityTracker.js.map +1 -0
- package/dist/core/viewport/fitToBounds.js +18 -0
- package/dist/core/viewport/fitToBounds.js.map +1 -0
- package/dist/core/viewport/fitViewToBounds.js +36 -0
- package/dist/core/viewport/fitViewToBounds.js.map +1 -0
- package/dist/core/viewport/interpolateView.js +34 -0
- package/dist/core/viewport/interpolateView.js.map +1 -0
- package/dist/core/viewport/meanScale.js +8 -0
- package/dist/core/viewport/meanScale.js.map +1 -0
- package/dist/core/viewport/parallax.js +111 -0
- package/dist/core/viewport/parallax.js.map +1 -0
- package/dist/core/viewport/pxExtent.js +42 -0
- package/dist/core/viewport/pxExtent.js.map +1 -0
- package/dist/core/viewport/sceneNodeClientRect.js +18 -0
- package/dist/core/viewport/sceneNodeClientRect.js.map +1 -0
- package/dist/core/viewport/screenSlop.js +27 -0
- package/dist/core/viewport/screenSlop.js.map +1 -0
- package/dist/core/viewport/useAutoCenter.js +32 -0
- package/dist/core/viewport/useAutoCenter.js.map +1 -0
- package/dist/core/viewport/useCanvasSize.js +29 -0
- package/dist/core/viewport/useCanvasSize.js.map +1 -0
- package/dist/core/viewport/useDecayLoop.js +63 -0
- package/dist/core/viewport/useDecayLoop.js.map +1 -0
- package/dist/core/viewport/useVelocityTracker.js +10 -0
- package/dist/core/viewport/useVelocityTracker.js.map +1 -0
- package/dist/core/viewport/useViewAnimation.js +63 -0
- package/dist/core/viewport/useViewAnimation.js.map +1 -0
- package/dist/core/viewport/view.js +37 -0
- package/dist/core/viewport/view.js.map +1 -0
- package/dist/core/viewport/viewTransform.js +11 -0
- package/dist/core/viewport/viewTransform.js.map +1 -0
- package/dist/core/viewport/viewportWorldRect.js +13 -0
- package/dist/core/viewport/viewportWorldRect.js.map +1 -0
- package/dist/core/viewport/wheelHandler.js +30 -0
- package/dist/core/viewport/wheelHandler.js.map +1 -0
- package/dist/core/viewport/zoomAt.js +22 -0
- package/dist/core/viewport/zoomAt.js.map +1 -0
- package/dist/core/viewport/zoomBounds.js +20 -0
- package/dist/core/viewport/zoomBounds.js.map +1 -0
- package/dist/{pointSnapToGrid-7mCcm6qG.d.ts → cornerHandles-CDcZOV8h.d.ts} +54 -71
- package/dist/debug/createDebugOverlayLayer.js +358 -0
- package/dist/debug/createDebugOverlayLayer.js.map +1 -0
- package/dist/debug/createDebugSink.js +83 -0
- package/dist/debug/createDebugSink.js.map +1 -0
- package/dist/debug/defaultTheme.js +31 -0
- package/dist/debug/defaultTheme.js.map +1 -0
- package/dist/debug/flag.js +41 -0
- package/dist/debug/flag.js.map +1 -0
- package/dist/debug/frameStats.js +16 -0
- package/dist/debug/frameStats.js.map +1 -0
- package/dist/debug/parseDebugFlags.js +32 -0
- package/dist/debug/parseDebugFlags.js.map +1 -0
- package/dist/features/chrome-caps/buildChromeCtx.js +16 -0
- package/dist/features/chrome-caps/buildChromeCtx.js.map +1 -0
- package/dist/features/chrome-caps/conditions.js +36 -0
- package/dist/features/chrome-caps/conditions.js.map +1 -0
- package/dist/features/chrome-caps/defaults.js +26 -0
- package/dist/features/chrome-caps/defaults.js.map +1 -0
- package/dist/features/chrome-caps/index.js +7 -0
- package/dist/features/chrome-caps/resolve.js +23 -0
- package/dist/features/chrome-caps/resolve.js.map +1 -0
- package/dist/features/chrome-caps/useHoverTracking.js +27 -0
- package/dist/features/chrome-caps/useHoverTracking.js.map +1 -0
- package/dist/features/cursor/paintedCursorLayer.js +60 -0
- package/dist/features/cursor/paintedCursorLayer.js.map +1 -0
- package/dist/features/focus/gateLayer.js +14 -0
- package/dist/features/focus/gateLayer.js.map +1 -0
- package/dist/features/focus/useCanvasFocus.js +29 -0
- package/dist/features/focus/useCanvasFocus.js.map +1 -0
- package/dist/features/groups/children.js +23 -0
- package/dist/features/groups/children.js.map +1 -0
- package/dist/features/groups/composePose.js +67 -0
- package/dist/features/groups/composePose.js.map +1 -0
- package/dist/features/groups/nestedHit.js +40 -0
- package/dist/features/groups/nestedHit.js.map +1 -0
- package/dist/features/groups/unionOfChildren.js +15 -0
- package/dist/features/groups/unionOfChildren.js.map +1 -0
- package/dist/features/images/imageCache.js +94 -0
- package/dist/features/images/imageCache.js.map +1 -0
- package/dist/features/ingestion/contentHandlers.js +37 -0
- package/dist/features/ingestion/contentHandlers.js.map +1 -0
- package/dist/features/ingestion/imageHandler.js +45 -0
- package/dist/features/ingestion/imageHandler.js.map +1 -0
- package/dist/features/ingestion/index.js +8 -0
- package/dist/features/ingestion/openFilePicker.js +15 -0
- package/dist/features/ingestion/openFilePicker.js.map +1 -0
- package/dist/features/ingestion/registerKitHandlers.js +26 -0
- package/dist/features/ingestion/registerKitHandlers.js.map +1 -0
- package/dist/features/ingestion/svgHandler.js +58 -0
- package/dist/features/ingestion/svgHandler.js.map +1 -0
- package/dist/features/ingestion/weaselJsonHandler.js +39 -0
- package/dist/features/ingestion/weaselJsonHandler.js.map +1 -0
- package/dist/features/longPress/longPressFeedback.js +96 -0
- package/dist/features/longPress/longPressFeedback.js.map +1 -0
- package/dist/features/meshPaint/bake.js +79 -0
- package/dist/features/meshPaint/bake.js.map +1 -0
- package/dist/features/meshPaint/bakeCache.js +59 -0
- package/dist/features/meshPaint/bakeCache.js.map +1 -0
- package/dist/features/meshPaint/handles.js +86 -0
- package/dist/features/meshPaint/handles.js.map +1 -0
- package/dist/features/meshPaint/lazyKind.js +1298 -0
- package/dist/features/meshPaint/lazyKind.js.map +1 -0
- package/dist/features/meshPaint/meshPaint.js +236 -0
- package/dist/features/meshPaint/meshPaint.js.map +1 -0
- package/dist/features/meshPaint/meshShader.js +6 -0
- package/dist/features/meshPaint/meshShader.js.map +1 -0
- package/dist/features/meshPaint/register.js +7 -0
- package/dist/features/meshPaint/register.js.map +1 -0
- package/dist/features/meshPaint/surface.js +110 -0
- package/dist/features/meshPaint/surface.js.map +1 -0
- package/dist/features/minimap/actions.js +53 -0
- package/dist/features/minimap/actions.js.map +1 -0
- package/dist/features/minimap/createMinimapContribution.js +96 -0
- package/dist/features/minimap/createMinimapContribution.js.map +1 -0
- package/dist/features/minimap/layers.js +103 -0
- package/dist/features/minimap/layers.js.map +1 -0
- package/dist/features/modes/modeLayers.js +113 -0
- package/dist/features/modes/modeLayers.js.map +1 -0
- package/dist/features/overlays/useNodeOverlayFrame.js +103 -0
- package/dist/features/overlays/useNodeOverlayFrame.js.map +1 -0
- package/dist/features/parallax/createParallaxLayer.js +26 -0
- package/dist/features/parallax/createParallaxLayer.js.map +1 -0
- package/dist/features/parallax/createParallaxPlane.js +26 -0
- package/dist/features/parallax/createParallaxPlane.js.map +1 -0
- package/dist/features/paths/anchorEdits.js +156 -0
- package/dist/features/paths/anchorEdits.js.map +1 -0
- package/dist/features/paths/anchors.js +154 -0
- package/dist/features/paths/anchors.js.map +1 -0
- package/dist/features/paths/booleans.js +2 -0
- package/dist/features/paths/index.js +15 -0
- package/dist/features/paths/markerCommands.js +116 -0
- package/dist/features/paths/markerCommands.js.map +1 -0
- package/dist/features/paths/markerSites.js +59 -0
- package/dist/features/paths/markerSites.js.map +1 -0
- package/dist/features/paths/markers.js +95 -0
- package/dist/features/paths/markers.js.map +1 -0
- package/dist/features/paths/nearestAnchor.js +36 -0
- package/dist/features/paths/nearestAnchor.js.map +1 -0
- package/dist/features/paths/originProjection.js +16 -0
- package/dist/features/paths/originProjection.js.map +1 -0
- package/dist/features/paths/pathEditingOverlayLayer.js +137 -0
- package/dist/features/paths/pathEditingOverlayLayer.js.map +1 -0
- package/dist/features/paths/pathInWorld.js +41 -0
- package/dist/features/paths/pathInWorld.js.map +1 -0
- package/dist/features/paths/pathLayer.js +44 -0
- package/dist/features/paths/pathLayer.js.map +1 -0
- package/dist/features/paths/penPreviewLayer.js +220 -0
- package/dist/features/paths/penPreviewLayer.js.map +1 -0
- package/dist/features/paths/poseDescriptor.js +44 -0
- package/dist/features/paths/poseDescriptor.js.map +1 -0
- package/dist/features/paths/tessellate/stroke.js +230 -0
- package/dist/features/paths/tessellate/stroke.js.map +1 -0
- package/dist/features/patterns/index.js +23 -0
- package/dist/features/patterns/index.js.map +1 -0
- package/dist/features/patterns/patterns-builtin.js +38 -0
- package/dist/features/patterns/patterns-builtin.js.map +1 -0
- package/dist/features/patterns/resolveSpec.js +57 -0
- package/dist/features/patterns/resolveSpec.js.map +1 -0
- package/dist/features/patterns/tileGeometry.js +158 -0
- package/dist/features/patterns/tileGeometry.js.map +1 -0
- package/dist/features/pointer/PointerContext.js +45 -0
- package/dist/features/pointer/PointerContext.js.map +1 -0
- package/dist/features/poseRun/usePoseRun.js +70 -0
- package/dist/features/poseRun/usePoseRun.js.map +1 -0
- package/dist/features/selection/SelectionContext.js +46 -0
- package/dist/features/selection/SelectionContext.js.map +1 -0
- package/dist/features/selection/overlay.js +442 -0
- package/dist/features/selection/overlay.js.map +1 -0
- package/dist/features/simulation/createSimulation.js +61 -0
- package/dist/features/simulation/createSimulation.js.map +1 -0
- package/dist/features/simulation/types.js +6 -0
- package/dist/features/simulation/types.js.map +1 -0
- package/dist/features/simulation/useSimulation.js +74 -0
- package/dist/features/simulation/useSimulation.js.map +1 -0
- package/dist/features/text/domRuns.js +258 -0
- package/dist/features/text/domRuns.js.map +1 -0
- package/dist/features/text/fitTextPose.js +38 -0
- package/dist/features/text/fitTextPose.js.map +1 -0
- package/dist/features/text/hitTest.js +45 -0
- package/dist/features/text/hitTest.js.map +1 -0
- package/dist/features/text/renderLabel.js +14 -0
- package/dist/features/text/renderLabel.js.map +1 -0
- package/dist/features/text/runs/effectiveRangeStyle.js +66 -0
- package/dist/features/text/runs/effectiveRangeStyle.js.map +1 -0
- package/dist/features/text/runs/flagRange.js +53 -0
- package/dist/features/text/runs/flagRange.js.map +1 -0
- package/dist/features/text/runs/rangeStyle.js +135 -0
- package/dist/features/text/runs/rangeStyle.js.map +1 -0
- package/dist/features/text/textCommand.js +59 -0
- package/dist/features/text/textCommand.js.map +1 -0
- package/dist/features/text/textLayer.js +35 -0
- package/dist/features/text/textLayer.js.map +1 -0
- package/dist/features/text/textToPath.js +181 -0
- package/dist/features/text/textToPath.js.map +1 -0
- package/dist/features/text/useSceneTextEdit.js +138 -0
- package/dist/features/text/useSceneTextEdit.js.map +1 -0
- package/dist/features/text/useTextEdit.js +465 -0
- package/dist/features/text/useTextEdit.js.map +1 -0
- package/dist/features/tiling/createTiledLayer.js +63 -0
- package/dist/features/tiling/createTiledLayer.js.map +1 -0
- package/dist/features/tiling/tiledProject.js +14 -0
- package/dist/features/tiling/tiledProject.js.map +1 -0
- package/dist/features/viewports/viewResolver.js +59 -0
- package/dist/features/viewports/viewResolver.js.map +1 -0
- package/dist/features/viewports/viewportLayer.js +58 -0
- package/dist/features/viewports/viewportLayer.js.map +1 -0
- package/dist/icons/ArrowIcon.js +23 -0
- package/dist/icons/ArrowIcon.js.map +1 -0
- package/dist/icons/EllipseIcon.js +21 -0
- package/dist/icons/EllipseIcon.js.map +1 -0
- package/dist/icons/EyedropperIcon.js +49 -0
- package/dist/icons/EyedropperIcon.js.map +1 -0
- package/dist/icons/HandIcon.js +59 -0
- package/dist/icons/HandIcon.js.map +1 -0
- package/dist/icons/ImageIcon.js +34 -0
- package/dist/icons/ImageIcon.js.map +1 -0
- package/dist/icons/LassoIcon.js +22 -0
- package/dist/icons/LassoIcon.js.map +1 -0
- package/dist/icons/LineIcon.js +22 -0
- package/dist/icons/LineIcon.js.map +1 -0
- package/dist/icons/PenIcon.js +36 -0
- package/dist/icons/PenIcon.js.map +1 -0
- package/dist/icons/PencilIcon.js +25 -0
- package/dist/icons/PencilIcon.js.map +1 -0
- package/dist/icons/PolygonIcon.js +19 -0
- package/dist/icons/PolygonIcon.js.map +1 -0
- package/dist/icons/RectIcon.js +37 -0
- package/dist/icons/RectIcon.js.map +1 -0
- package/dist/icons/SelectIcon.js +20 -0
- package/dist/icons/SelectIcon.js.map +1 -0
- package/dist/icons/StarIcon.js +19 -0
- package/dist/icons/StarIcon.js.map +1 -0
- package/dist/icons/TextIcon.js +19 -0
- package/dist/icons/TextIcon.js.map +1 -0
- package/dist/icons/UnknownIcon.js +33 -0
- package/dist/icons/UnknownIcon.js.map +1 -0
- package/dist/icons/_base.js +12 -0
- package/dist/icons/_base.js.map +1 -0
- package/dist/index.css +2 -86
- package/dist/index.d.ts +2349 -2609
- package/dist/index.js +312 -13
- package/dist/input/keyState.js +76 -0
- package/dist/input/keyState.js.map +1 -0
- package/dist/input/useKeyState.js +22 -0
- package/dist/input/useKeyState.js.map +1 -0
- package/dist/interactions/actions/actionShortcuts.js +32 -0
- package/dist/interactions/actions/actionShortcuts.js.map +1 -0
- package/dist/interactions/actions/align/align.js +81 -0
- package/dist/interactions/actions/align/align.js.map +1 -0
- package/dist/interactions/actions/booleans/booleans.js +120 -0
- package/dist/interactions/actions/booleans/booleans.js.map +1 -0
- package/dist/interactions/actions/booleans/useBooleans.js +20 -0
- package/dist/interactions/actions/booleans/useBooleans.js.map +1 -0
- package/dist/interactions/actions/booleans/useBooleansAdapter.js +9 -0
- package/dist/interactions/actions/booleans/useBooleansAdapter.js.map +1 -0
- package/dist/interactions/actions/clipboard/clipboardOps.js +94 -0
- package/dist/interactions/actions/clipboard/clipboardOps.js.map +1 -0
- package/dist/interactions/actions/clipboard/materializePaste.js +25 -0
- package/dist/interactions/actions/clipboard/materializePaste.js.map +1 -0
- package/dist/interactions/actions/clipboard/wireFormat.js +43 -0
- package/dist/interactions/actions/clipboard/wireFormat.js.map +1 -0
- package/dist/interactions/actions/clone/behaviors/cloneByAltDrag.js +26 -0
- package/dist/interactions/actions/clone/behaviors/cloneByAltDrag.js.map +1 -0
- package/dist/interactions/actions/defaultCommitAdapter.js +42 -0
- package/dist/interactions/actions/defaultCommitAdapter.js.map +1 -0
- package/dist/interactions/actions/defaults/align.js +71 -0
- package/dist/interactions/actions/defaults/align.js.map +1 -0
- package/dist/interactions/actions/defaults/anchorEditing.js +235 -0
- package/dist/interactions/actions/defaults/anchorEditing.js.map +1 -0
- package/dist/interactions/actions/defaults/areaSelect.js +75 -0
- package/dist/interactions/actions/defaults/areaSelect.js.map +1 -0
- package/dist/interactions/actions/defaults/booleans.js +52 -0
- package/dist/interactions/actions/defaults/booleans.js.map +1 -0
- package/dist/interactions/actions/defaults/cancelGesture.js +24 -0
- package/dist/interactions/actions/defaults/cancelGesture.js.map +1 -0
- package/dist/interactions/actions/defaults/clearSelection.js +19 -0
- package/dist/interactions/actions/defaults/clearSelection.js.map +1 -0
- package/dist/interactions/actions/defaults/clipboard.js +78 -0
- package/dist/interactions/actions/defaults/clipboard.js.map +1 -0
- package/dist/interactions/actions/defaults/clone.js +96 -0
- package/dist/interactions/actions/defaults/clone.js.map +1 -0
- package/dist/interactions/actions/defaults/createOutlines.js +47 -0
- package/dist/interactions/actions/defaults/createOutlines.js.map +1 -0
- package/dist/interactions/actions/defaults/createPaintAction.js +85 -0
- package/dist/interactions/actions/defaults/createPaintAction.js.map +1 -0
- package/dist/interactions/actions/defaults/delete.js +61 -0
- package/dist/interactions/actions/defaults/delete.js.map +1 -0
- package/dist/interactions/actions/defaults/distribute.js +66 -0
- package/dist/interactions/actions/defaults/distribute.js.map +1 -0
- package/dist/interactions/actions/defaults/duplicate.js +83 -0
- package/dist/interactions/actions/defaults/duplicate.js.map +1 -0
- package/dist/interactions/actions/defaults/editAnchors.js +100 -0
- package/dist/interactions/actions/defaults/editAnchors.js.map +1 -0
- package/dist/interactions/actions/defaults/enterPathEdit.js +29 -0
- package/dist/interactions/actions/defaults/enterPathEdit.js.map +1 -0
- package/dist/interactions/actions/defaults/enterTextEdit.js +20 -0
- package/dist/interactions/actions/defaults/enterTextEdit.js.map +1 -0
- package/dist/interactions/actions/defaults/escape.js +26 -0
- package/dist/interactions/actions/defaults/escape.js.map +1 -0
- package/dist/interactions/actions/defaults/exitPathEdit.js +22 -0
- package/dist/interactions/actions/defaults/exitPathEdit.js.map +1 -0
- package/dist/interactions/actions/defaults/flip.js +119 -0
- package/dist/interactions/actions/defaults/flip.js.map +1 -0
- package/dist/interactions/actions/defaults/freshNodeId.js +10 -0
- package/dist/interactions/actions/defaults/freshNodeId.js.map +1 -0
- package/dist/interactions/actions/defaults/group.js +131 -0
- package/dist/interactions/actions/defaults/group.js.map +1 -0
- package/dist/interactions/actions/defaults/icons/actionGlyphIcons.js +40 -0
- package/dist/interactions/actions/defaults/icons/actionGlyphIcons.js.map +1 -0
- package/dist/interactions/actions/defaults/icons/actionGlyphs.js +10 -0
- package/dist/interactions/actions/defaults/icons/actionGlyphs.js.map +1 -0
- package/dist/interactions/actions/defaults/icons/alignIcons.js +173 -0
- package/dist/interactions/actions/defaults/icons/alignIcons.js.map +1 -0
- package/dist/interactions/actions/defaults/icons/booleanIcons.js +171 -0
- package/dist/interactions/actions/defaults/icons/booleanIcons.js.map +1 -0
- package/dist/interactions/actions/defaults/icons/distributeIcons.js +63 -0
- package/dist/interactions/actions/defaults/icons/distributeIcons.js.map +1 -0
- package/dist/interactions/actions/defaults/icons/editIcons.js +280 -0
- package/dist/interactions/actions/defaults/icons/editIcons.js.map +1 -0
- package/dist/interactions/actions/defaults/icons/outlineIcons.js +53 -0
- package/dist/interactions/actions/defaults/icons/outlineIcons.js.map +1 -0
- package/dist/interactions/actions/defaults/ingest.js +58 -0
- package/dist/interactions/actions/defaults/ingest.js.map +1 -0
- package/dist/interactions/actions/defaults/insert.js +288 -0
- package/dist/interactions/actions/defaults/insert.js.map +1 -0
- package/dist/interactions/actions/defaults/insertPathAnchor.js +50 -0
- package/dist/interactions/actions/defaults/insertPathAnchor.js.map +1 -0
- package/dist/interactions/actions/defaults/lassoSelect.js +156 -0
- package/dist/interactions/actions/defaults/lassoSelect.js.map +1 -0
- package/dist/interactions/actions/defaults/move.js +656 -0
- package/dist/interactions/actions/defaults/move.js.map +1 -0
- package/dist/interactions/actions/defaults/nudge.js +110 -0
- package/dist/interactions/actions/defaults/nudge.js.map +1 -0
- package/dist/interactions/actions/defaults/pinchZoom.js +63 -0
- package/dist/interactions/actions/defaults/pinchZoom.js.map +1 -0
- package/dist/interactions/actions/defaults/reorder.js +143 -0
- package/dist/interactions/actions/defaults/reorder.js.map +1 -0
- package/dist/interactions/actions/defaults/requiresSelection.js +10 -0
- package/dist/interactions/actions/defaults/requiresSelection.js.map +1 -0
- package/dist/interactions/actions/defaults/resize.js +332 -0
- package/dist/interactions/actions/defaults/resize.js.map +1 -0
- package/dist/interactions/actions/defaults/rotate.js +181 -0
- package/dist/interactions/actions/defaults/rotate.js.map +1 -0
- package/dist/interactions/actions/defaults/selectAll.js +27 -0
- package/dist/interactions/actions/defaults/selectAll.js.map +1 -0
- package/dist/interactions/actions/defaults/setFill.js +27 -0
- package/dist/interactions/actions/defaults/setFill.js.map +1 -0
- package/dist/interactions/actions/defaults/setFillOpacity.js +15 -0
- package/dist/interactions/actions/defaults/setFillOpacity.js.map +1 -0
- package/dist/interactions/actions/defaults/setStroke.js +36 -0
- package/dist/interactions/actions/defaults/setStroke.js.map +1 -0
- package/dist/interactions/actions/defaults/setStrokeOpacity.js +21 -0
- package/dist/interactions/actions/defaults/setStrokeOpacity.js.map +1 -0
- package/dist/interactions/actions/defaults/slice.js +39 -0
- package/dist/interactions/actions/defaults/slice.js.map +1 -0
- package/dist/interactions/actions/defaults/sliceOps.js +60 -0
- package/dist/interactions/actions/defaults/sliceOps.js.map +1 -0
- package/dist/interactions/actions/defaults/toolActivate.js +35 -0
- package/dist/interactions/actions/defaults/toolActivate.js.map +1 -0
- package/dist/interactions/actions/defaults/toolResetToDefault.js +26 -0
- package/dist/interactions/actions/defaults/toolResetToDefault.js.map +1 -0
- package/dist/interactions/actions/defaults/undoRedo.js +51 -0
- package/dist/interactions/actions/defaults/undoRedo.js.map +1 -0
- package/dist/interactions/actions/defaults/viewportDragPan.js +88 -0
- package/dist/interactions/actions/defaults/viewportDragPan.js.map +1 -0
- package/dist/interactions/actions/defaults/viewportWheelPan.js +57 -0
- package/dist/interactions/actions/defaults/viewportWheelPan.js.map +1 -0
- package/dist/interactions/actions/defaults/viewportZoom.js +143 -0
- package/dist/interactions/actions/defaults/viewportZoom.js.map +1 -0
- package/dist/interactions/actions/distribute/distribute.js +42 -0
- package/dist/interactions/actions/distribute/distribute.js.map +1 -0
- package/dist/interactions/actions/distribute/plan.js +29 -0
- package/dist/interactions/actions/distribute/plan.js.map +1 -0
- package/dist/interactions/actions/edit-anchors/geometry.js +61 -0
- package/dist/interactions/actions/edit-anchors/geometry.js.map +1 -0
- package/dist/interactions/actions/edit-anchors/handles.js +43 -0
- package/dist/interactions/actions/edit-anchors/handles.js.map +1 -0
- package/dist/interactions/actions/flip/helpers.js +35 -0
- package/dist/interactions/actions/flip/helpers.js.map +1 -0
- package/dist/interactions/actions/geometryProjection.js +18 -0
- package/dist/interactions/actions/geometryProjection.js.map +1 -0
- package/dist/interactions/actions/gestureLifecycle.js +44 -0
- package/dist/interactions/actions/gestureLifecycle.js.map +1 -0
- package/dist/interactions/actions/lasso-select/behaviors/selectFromLasso.js +39 -0
- package/dist/interactions/actions/lasso-select/behaviors/selectFromLasso.js.map +1 -0
- package/dist/interactions/actions/move/behaviors/snapBackOrDelete.js +36 -0
- package/dist/interactions/actions/move/behaviors/snapBackOrDelete.js.map +1 -0
- package/dist/interactions/actions/move/behaviors/snapToContainer.js +67 -0
- package/dist/interactions/actions/move/behaviors/snapToContainer.js.map +1 -0
- package/dist/interactions/actions/move/gestureAdapter.js +37 -0
- package/dist/interactions/actions/move/gestureAdapter.js.map +1 -0
- package/dist/interactions/actions/outlines/createOutlines.js +84 -0
- package/dist/interactions/actions/outlines/createOutlines.js.map +1 -0
- package/dist/interactions/actions/outlines/useCreateOutlinesAdapter.js +9 -0
- package/dist/interactions/actions/outlines/useCreateOutlinesAdapter.js.map +1 -0
- package/dist/interactions/actions/planeInput.js +168 -0
- package/dist/interactions/actions/planeInput.js.map +1 -0
- package/dist/interactions/actions/poseDescriptorDep.js +9 -0
- package/dist/interactions/actions/poseDescriptorDep.js.map +1 -0
- package/dist/interactions/actions/poseFrame.js +38 -0
- package/dist/interactions/actions/poseFrame.js.map +1 -0
- package/dist/interactions/actions/previewOverrides.js +25 -0
- package/dist/interactions/actions/previewOverrides.js.map +1 -0
- package/dist/interactions/actions/resize/autoPoseDescriptor.js +32 -0
- package/dist/interactions/actions/resize/autoPoseDescriptor.js.map +1 -0
- package/dist/interactions/actions/resize/behaviors/clampMinSize.js +18 -0
- package/dist/interactions/actions/resize/behaviors/clampMinSize.js.map +1 -0
- package/dist/interactions/actions/resize/behaviors/index.js +8 -0
- package/dist/interactions/actions/resize/behaviors/index.js.map +1 -0
- package/dist/interactions/actions/resize/behaviors/lockAspect.js +24 -0
- package/dist/interactions/actions/resize/behaviors/lockAspect.js.map +1 -0
- package/dist/interactions/actions/resize/cornerHandles.js +72 -0
- package/dist/interactions/actions/resize/cornerHandles.js.map +1 -0
- package/dist/interactions/actions/resolveOverlays.js +60 -0
- package/dist/interactions/actions/resolveOverlays.js.map +1 -0
- package/dist/interactions/actions/resolvePreviews.js +61 -0
- package/dist/interactions/actions/resolvePreviews.js.map +1 -0
- package/dist/interactions/actions/rotate/geometry.js +46 -0
- package/dist/interactions/actions/rotate/geometry.js.map +1 -0
- package/dist/interactions/actions/rotate/handle.js +27 -0
- package/dist/interactions/actions/rotate/handle.js.map +1 -0
- package/dist/interactions/actions/spatialReference.js +42 -0
- package/dist/interactions/actions/spatialReference.js.map +1 -0
- package/dist/interactions/actions/useStandardActions.js +142 -0
- package/dist/interactions/actions/useStandardActions.js.map +1 -0
- package/dist/interactions/gestures/dragGesture/dragGesture.js +111 -0
- package/dist/interactions/gestures/dragGesture/dragGesture.js.map +1 -0
- package/dist/interactions/gestures/dragRadial/dragRadial.js +117 -0
- package/dist/interactions/gestures/dragRadial/dragRadial.js.map +1 -0
- package/dist/interactions/gestures/dragRect/dragRect.js +164 -0
- package/dist/interactions/gestures/dragRect/dragRect.js.map +1 -0
- package/dist/interactions/gestures/handleDrag/handleDrag.js +46 -0
- package/dist/interactions/gestures/handleDrag/handleDrag.js.map +1 -0
- package/dist/interactions/gestures/pointerDrag/pointerDrag.js +118 -0
- package/dist/interactions/gestures/pointerDrag/pointerDrag.js.map +1 -0
- package/dist/interactions/gestures/shared/originProjection.js +42 -0
- package/dist/interactions/gestures/shared/originProjection.js.map +1 -0
- package/dist/interactions/gestures/shared/screenTolerance.js +21 -0
- package/dist/interactions/gestures/shared/screenTolerance.js.map +1 -0
- package/dist/interactions/gestures/shared/snap.js +24 -0
- package/dist/interactions/gestures/shared/snap.js.map +1 -0
- package/dist/interactions/gestures/thresholdDrag/thresholdDrag.js +30 -0
- package/dist/interactions/gestures/thresholdDrag/thresholdDrag.js.map +1 -0
- package/dist/layout/arrivals.js +36 -0
- package/dist/layout/arrivals.js.map +1 -0
- package/dist/{math-MCQcf_gc.d.ts → math-CUMxmZzn.d.ts} +8 -116
- package/dist/math.d.ts +4 -5
- package/dist/math.js +6 -4
- package/dist/mesh.d.ts +268 -0
- package/dist/mesh.js +7 -0
- package/dist/move.d.ts +7 -48
- package/dist/move.js +3 -142
- package/dist/originProjection-BSn4xiEy.d.ts +57 -0
- package/dist/patterns-builtin.js +3 -3
- package/dist/{poseDescriptor-rZa9W5hJ.d.ts → poseDescriptor-CjSXMf8X.d.ts} +3 -3
- package/dist/registerProgram-ateHDGjw.d.ts +193 -0
- package/dist/renderer/DrawCommand.js +6 -0
- package/dist/renderer/DrawCommand.js.map +1 -0
- package/dist/renderer/WeaselRenderer.js +328 -0
- package/dist/renderer/WeaselRenderer.js.map +1 -0
- package/dist/renderer/cache/GLImageCache.js +64 -0
- package/dist/renderer/cache/GLImageCache.js.map +1 -0
- package/dist/renderer/cache/GLMeshCache.js +102 -0
- package/dist/renderer/cache/GLMeshCache.js.map +1 -0
- package/dist/renderer/cache/GLTextureCache.js +51 -0
- package/dist/renderer/cache/GLTextureCache.js.map +1 -0
- package/dist/renderer/cache/GradientRampAtlas.js +82 -0
- package/dist/renderer/cache/GradientRampAtlas.js.map +1 -0
- package/dist/renderer/cache/cache.js +13 -0
- package/dist/renderer/cache/cache.js.map +1 -0
- package/dist/renderer/cache/markerCommandCache.js +59 -0
- package/dist/renderer/cache/markerCommandCache.js.map +1 -0
- package/dist/renderer/cache/outlineMeshCache.js +15 -0
- package/dist/renderer/cache/outlineMeshCache.js.map +1 -0
- package/dist/renderer/cache/outlineStrokeMeshCache.js +31 -0
- package/dist/renderer/cache/outlineStrokeMeshCache.js.map +1 -0
- package/dist/renderer/cache/strokeMeshCache.js +44 -0
- package/dist/renderer/cache/strokeMeshCache.js.map +1 -0
- package/dist/renderer/cullDrawCommands.js +89 -0
- package/dist/renderer/cullDrawCommands.js.map +1 -0
- package/dist/renderer/draw.js +1109 -0
- package/dist/renderer/draw.js.map +1 -0
- package/dist/renderer/drawBatch.js +168 -0
- package/dist/renderer/drawBatch.js.map +1 -0
- package/dist/renderer/effects/EffectTargets.js +45 -0
- package/dist/renderer/effects/EffectTargets.js.map +1 -0
- package/dist/renderer/effects/builtins.js +31 -0
- package/dist/renderer/effects/builtins.js.map +1 -0
- package/dist/renderer/effects/composite.js +9 -0
- package/dist/renderer/effects/composite.js.map +1 -0
- package/dist/renderer/effects/effectPrelude.js +10 -0
- package/dist/renderer/effects/effectPrelude.js.map +1 -0
- package/dist/renderer/effects/types.js +10 -0
- package/dist/renderer/effects/types.js.map +1 -0
- package/dist/renderer/index.js +19 -0
- package/dist/renderer/math/color.js +341 -0
- package/dist/renderer/math/color.js.map +1 -0
- package/dist/renderer/math/mat3.js +71 -0
- package/dist/renderer/math/mat3.js.map +1 -0
- package/dist/renderer/math/patternSpace.js +22 -0
- package/dist/renderer/math/patternSpace.js.map +1 -0
- package/dist/renderer/math/viewToMat3.js +19 -0
- package/dist/renderer/math/viewToMat3.js.map +1 -0
- package/dist/renderer/paintResources.js +18 -0
- package/dist/renderer/paintResources.js.map +1 -0
- package/dist/renderer/paintScratch.js +37 -0
- package/dist/renderer/paintScratch.js.map +1 -0
- package/dist/renderer/shaders/ShaderProgram.js +74 -0
- package/dist/renderer/shaders/ShaderProgram.js.map +1 -0
- package/dist/renderer/shaders/batchFill.js +118 -0
- package/dist/renderer/shaders/batchFill.js.map +1 -0
- package/dist/renderer/shaders/customPrelude.js +34 -0
- package/dist/renderer/shaders/customPrelude.js.map +1 -0
- package/dist/renderer/shaders/extractUniformNames.js +184 -0
- package/dist/renderer/shaders/extractUniformNames.js.map +1 -0
- package/dist/renderer/shaders/glyphPaint.js +61 -0
- package/dist/renderer/shaders/glyphPaint.js.map +1 -0
- package/dist/renderer/shaders/gradFill.js +30 -0
- package/dist/renderer/shaders/gradFill.js.map +1 -0
- package/dist/renderer/shaders/imageFill.js +14 -0
- package/dist/renderer/shaders/imageFill.js.map +1 -0
- package/dist/renderer/shaders/pathFill.js +13 -0
- package/dist/renderer/shaders/pathFill.js.map +1 -0
- package/dist/renderer/shaders/patternFill.js +24 -0
- package/dist/renderer/shaders/patternFill.js.map +1 -0
- package/dist/renderer/shaders/registerProgram.js +18 -0
- package/dist/renderer/shaders/registerProgram.js.map +1 -0
- package/dist/renderer/spriteSheet.js +14 -0
- package/dist/renderer/spriteSheet.js.map +1 -0
- package/dist/renderer/state/GroupState.js +77 -0
- package/dist/renderer/state/GroupState.js.map +1 -0
- package/dist/renderer/syntheticItalic.js +6 -0
- package/dist/renderer/syntheticItalic.js.map +1 -0
- package/dist/renderer/textures/registerTexture.js +14 -0
- package/dist/renderer/textures/registerTexture.js.map +1 -0
- package/dist/renderer.d.ts +18 -20
- package/dist/renderer.js +18 -13
- package/dist/resize.d.ts +10 -46
- package/dist/resize.js +7 -5
- package/dist/routing.d.ts +1 -1
- package/dist/routing.js +2 -3
- package/dist/scheduling/useVisibleRaf.js +69 -0
- package/dist/scheduling/useVisibleRaf.js.map +1 -0
- package/dist/test-hook/createTestHook.js +39 -0
- package/dist/test-hook/createTestHook.js.map +1 -0
- package/dist/test-hook/install.js +12 -0
- package/dist/test-hook/install.js.map +1 -0
- package/dist/test-seams-fYf6m5pu.d.ts +356 -0
- package/dist/test-seams.d.ts +6 -0
- package/dist/test-seams.js +3 -0
- package/dist/tools/builtin/ellipse/useEllipseTool.js +33 -0
- package/dist/tools/builtin/ellipse/useEllipseTool.js.map +1 -0
- package/dist/tools/builtin/eyedropper/useEyedropperTool.js +55 -0
- package/dist/tools/builtin/eyedropper/useEyedropperTool.js.map +1 -0
- package/dist/tools/builtin/hand/dragPanContribution.js +17 -0
- package/dist/tools/builtin/hand/dragPanContribution.js.map +1 -0
- package/dist/tools/builtin/hand/useHandTool.js +31 -0
- package/dist/tools/builtin/hand/useHandTool.js.map +1 -0
- package/dist/tools/builtin/image/useImageTool.js +41 -0
- package/dist/tools/builtin/image/useImageTool.js.map +1 -0
- package/dist/tools/builtin/lasso/useLassoTool.js +42 -0
- package/dist/tools/builtin/lasso/useLassoTool.js.map +1 -0
- package/dist/tools/builtin/line/useLineTool.js +33 -0
- package/dist/tools/builtin/line/useLineTool.js.map +1 -0
- package/dist/tools/builtin/pen/usePenTool.js +414 -0
- package/dist/tools/builtin/pen/usePenTool.js.map +1 -0
- package/dist/tools/builtin/pencil/usePencilTool.js +36 -0
- package/dist/tools/builtin/pencil/usePencilTool.js.map +1 -0
- package/dist/tools/builtin/pickTopMostHit.js +45 -0
- package/dist/tools/builtin/pickTopMostHit.js.map +1 -0
- package/dist/tools/builtin/polygon/usePolygonTool.js +81 -0
- package/dist/tools/builtin/polygon/usePolygonTool.js.map +1 -0
- package/dist/tools/builtin/rect/useRectTool.js +32 -0
- package/dist/tools/builtin/rect/useRectTool.js.map +1 -0
- package/dist/tools/builtin/select/selectionContributions.js +109 -0
- package/dist/tools/builtin/select/selectionContributions.js.map +1 -0
- package/dist/tools/builtin/select/useSelectTool.js +162 -0
- package/dist/tools/builtin/select/useSelectTool.js.map +1 -0
- package/dist/tools/builtin/shared/insertToolOptions.js +8 -0
- package/dist/tools/builtin/shared/insertToolOptions.js.map +1 -0
- package/dist/tools/builtin/slice/useSliceTool.js +263 -0
- package/dist/tools/builtin/slice/useSliceTool.js.map +1 -0
- package/dist/tools/builtin/star/useStarTool.js +82 -0
- package/dist/tools/builtin/star/useStarTool.js.map +1 -0
- package/dist/tools/builtin/text/useTextTool.js +177 -0
- package/dist/tools/builtin/text/useTextTool.js.map +1 -0
- package/dist/tools/overlayBinding.js +8 -0
- package/dist/tools/overlayBinding.js.map +1 -0
- package/dist/tools/prefs.js +47 -0
- package/dist/tools/prefs.js.map +1 -0
- package/dist/tools/useKeybindings.js +66 -0
- package/dist/tools/useKeybindings.js.map +1 -0
- package/dist/{types-CxC8P6W0.d.ts → types-CA54-mAZ.d.ts} +188 -17
- package/dist/{types-D_74YlWs.d.ts → types-DSjd6W3n.d.ts} +35 -12
- package/dist/util/color.js +26 -0
- package/dist/util/color.js.map +1 -0
- package/dist/util/constrainTo45.js +17 -0
- package/dist/util/constrainTo45.js.map +1 -0
- package/dist/util/paint.js +72 -0
- package/dist/util/paint.js.map +1 -0
- package/dist/version.js +6 -0
- package/dist/version.js.map +1 -0
- package/package.json +31 -18
- package/dist/chunk-44EWMJV2.js +0 -128
- package/dist/chunk-44EWMJV2.js.map +0 -1
- package/dist/chunk-4RJP2N2L.js +0 -143
- package/dist/chunk-4RJP2N2L.js.map +0 -1
- package/dist/chunk-BJN5ZRIJ.js +0 -167
- package/dist/chunk-BJN5ZRIJ.js.map +0 -1
- package/dist/chunk-D4AAWR64.js +0 -28
- package/dist/chunk-D4AAWR64.js.map +0 -1
- package/dist/chunk-DOBSZOPR.js +0 -29
- package/dist/chunk-DOBSZOPR.js.map +0 -1
- package/dist/chunk-H6N2JSZ3.js +0 -248
- package/dist/chunk-H6N2JSZ3.js.map +0 -1
- package/dist/chunk-HPFJUUTF.js +0 -167
- package/dist/chunk-HPFJUUTF.js.map +0 -1
- package/dist/chunk-L5YNZYEG.js +0 -648
- package/dist/chunk-L5YNZYEG.js.map +0 -1
- package/dist/chunk-MZAIDI6D.js +0 -32492
- package/dist/chunk-MZAIDI6D.js.map +0 -1
- package/dist/chunk-PNNZSYRD.js +0 -318
- package/dist/chunk-PNNZSYRD.js.map +0 -1
- package/dist/chunk-RMR4QMM6.js +0 -250
- package/dist/chunk-RMR4QMM6.js.map +0 -1
- package/dist/clipboard.js.map +0 -1
- package/dist/clone.js.map +0 -1
- package/dist/grid-BXdz8GF2.d.ts +0 -158
- package/dist/index.css.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/insert.d.ts +0 -37
- package/dist/insert.js +0 -81
- package/dist/insert.js.map +0 -1
- package/dist/math.js.map +0 -1
- package/dist/move.js.map +0 -1
- package/dist/options-CzjxFoYZ.d.ts +0 -67
- package/dist/path-JEV2c5If.d.ts +0 -48
- package/dist/patterns-builtin.js.map +0 -1
- package/dist/renderer.css +0 -86
- package/dist/renderer.css.map +0 -1
- package/dist/renderer.js.map +0 -1
- package/dist/resize.js.map +0 -1
- package/dist/routing.js.map +0 -1
- package/dist/types-D2tTKEU0.d.ts +0 -18
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { useMemo as e } from "react";
|
|
2
|
+
import { useLatest as t } from "@weasel-js/react";
|
|
3
|
+
//#region src/canvas/deps/view.ts
|
|
4
|
+
function n(n, r, i, a, o, s, c) {
|
|
5
|
+
let l = t({
|
|
6
|
+
currentViewRef: n,
|
|
7
|
+
onViewChange: r,
|
|
8
|
+
recenter: i,
|
|
9
|
+
hostSize: a,
|
|
10
|
+
animation: o,
|
|
11
|
+
decay: s,
|
|
12
|
+
layerIsPainted: c
|
|
13
|
+
}), u = !!i, d = !!a, f = !!o, p = !!s, m = !!c;
|
|
14
|
+
return e(() => ({
|
|
15
|
+
get: () => l.current.currentViewRef.current,
|
|
16
|
+
set: (e) => {
|
|
17
|
+
l.current.animation?.stopIfExternal(), l.current.onViewChange(e);
|
|
18
|
+
},
|
|
19
|
+
...u ? { recenter: () => l.current.recenter() } : {},
|
|
20
|
+
...d ? { hostSize: () => l.current.hostSize() } : {},
|
|
21
|
+
...f ? {
|
|
22
|
+
animate: (e, t) => l.current.animation.animate(e, t),
|
|
23
|
+
stopAnimation: () => l.current.animation.stop(),
|
|
24
|
+
animationTarget: () => l.current.animation.target()
|
|
25
|
+
} : {},
|
|
26
|
+
...p ? {
|
|
27
|
+
decay: (e) => l.current.decay.start(e),
|
|
28
|
+
stopDecay: () => l.current.decay.cancel()
|
|
29
|
+
} : {},
|
|
30
|
+
...m ? { layerIsPainted: (e) => l.current.layerIsPainted(e) } : {}
|
|
31
|
+
}), [
|
|
32
|
+
l,
|
|
33
|
+
u,
|
|
34
|
+
d,
|
|
35
|
+
f,
|
|
36
|
+
p,
|
|
37
|
+
m
|
|
38
|
+
]);
|
|
39
|
+
}
|
|
40
|
+
//#endregion
|
|
41
|
+
export { n as useViewDepSource };
|
|
42
|
+
|
|
43
|
+
//# sourceMappingURL=view.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"view.js","names":["useViewDepSource","wiring","useLatest","hasRecenter","recenter","hasHostSize","hostSize","hasAnimation","animation","hasDecay","decay","hasLayerIsPainted","layerIsPainted","useMemo","v","to","opts","config","layerId"],"sources":["../../../src/canvas/deps/view.ts"],"sourcesContent":["/**\n * `useViewDepSource` — builds a stable `ViewApi` that reads from\n * `currentViewRef`, writes via `onViewChange`, and (when a camera runner is\n * passed) exposes animation.\n *\n * NOTE: this hook does **not** itself call `useDepSource('view', ...)` because\n * `useStandardActions` already publishes the `view` dep when it is passed in\n * its options bag. Returning the `ViewApi` here lets the registrar hand the\n * same instance to `useStandardActions` (which then registers it) without\n * having to reconstruct it inline.\n *\n * Kept as a per-dep module so the construction logic (closure refresh, ref\n * stability, etc.) has a single home next to the other dep modules.\n */\nimport { useMemo } from 'react';\nimport { useLatest } from '@weasel-js/react';\nimport type React from 'react';\nimport type { ViewApi } from 'interactions/actions/depSchema';\nimport type { ViewAnimationApi } from 'core/viewport/useViewAnimation';\nimport type { DecayLoopConfig } from 'core/viewport/useDecayLoop';\nimport type { View } from 'core/viewport/view';\n\ninterface Wiring {\n currentViewRef: React.RefObject<View>;\n onViewChange: (v: View) => void;\n recenter?: () => View | void;\n hostSize?: () => { width: number; height: number } | null;\n animation?: ViewAnimationApi;\n decay?: DecayApi;\n layerIsPainted?: (layerId: string) => boolean;\n}\n\n/** The slice of `useDecayLoop` the view dep republishes. */\nexport interface DecayApi {\n start(config: DecayLoopConfig): void;\n cancel(): void;\n}\n\nexport function useViewDepSource(\n currentViewRef: React.RefObject<View>,\n onViewChange: (v: View) => void,\n recenter?: () => View | void,\n hostSize?: () => { width: number; height: number } | null,\n animation?: ViewAnimationApi,\n decay?: DecayApi,\n layerIsPainted?: (layerId: string) => boolean,\n): ViewApi {\n // Every method reads through this, so the latest onViewChange / recenter /\n // runner is captured without the API object itself changing identity.\n const wiring = useLatest<Wiring>({\n currentViewRef, onViewChange, recenter, hostSize, animation, decay, layerIsPainted,\n });\n\n // An unwired optional member must read falsy — `viewportZoomAction` branches\n // on `view.recenter`, and a forwarder is truthy — so the identity-stable API\n // is rebuilt whenever that presence set changes.\n const hasRecenter = !!recenter;\n const hasHostSize = !!hostSize;\n const hasAnimation = !!animation;\n const hasDecay = !!decay;\n const hasLayerIsPainted = !!layerIsPainted;\n return useMemo((): ViewApi => ({\n get: () => wiring.current.currentViewRef.current,\n // Not the canvas's only cancel feed (`onViewChange` is), but a `view` dep\n // wired to something other than a `<SceneCanvas>` has only this one.\n set: (v: View) => {\n wiring.current.animation?.stopIfExternal();\n wiring.current.onViewChange(v);\n },\n ...(hasRecenter ? { recenter: () => wiring.current.recenter!() } : {}),\n ...(hasHostSize ? { hostSize: () => wiring.current.hostSize!() } : {}),\n ...(hasAnimation\n ? {\n animate: (to: View, opts?: Parameters<ViewAnimationApi['animate']>[1]) =>\n wiring.current.animation!.animate(to, opts),\n stopAnimation: () => wiring.current.animation!.stop(),\n animationTarget: () => wiring.current.animation!.target(),\n }\n : {}),\n ...(hasDecay\n ? {\n decay: (config: DecayLoopConfig) => wiring.current.decay!.start(config),\n stopDecay: () => wiring.current.decay!.cancel(),\n }\n : {}),\n ...(hasLayerIsPainted\n ? { layerIsPainted: (layerId: string) => wiring.current.layerIsPainted!(layerId) }\n : {}),\n }), [wiring, hasRecenter, hasHostSize, hasAnimation, hasDecay, hasLayerIsPainted]);\n}\n"],"mappings":";;;AAsCA,SAAgBA,EACd,GACA,GACA,GACA,GACA,GACA,GACA,GACS;CAGT,IAAMC,IAASC,EAAkB;EAC/B;EAAgB;EAAc;EAAU;EAAU;EAAW;EAAO;CACtE,CAAC,GAKKC,IAAc,CAAC,CAACC,GAChBC,IAAc,CAAC,CAACC,GAChBC,IAAe,CAAC,CAACC,GACjBC,IAAW,CAAC,CAACC,GACbC,IAAoB,CAAC,CAACC;CAC5B,OAAOC,SAAwB;EAC7B,WAAWZ,EAAO,QAAQ,eAAe;EAGzC,MAAM,MAAY;GAEhB,AADAA,EAAO,QAAQ,WAAW,eAAe,GACzCA,EAAO,QAAQ,aAAaa,CAAC;EAC/B;EACA,GAAIX,IAAc,EAAE,gBAAgBF,EAAO,QAAQ,SAAU,EAAE,IAAI,CAAC;EACpE,GAAII,IAAc,EAAE,gBAAgBJ,EAAO,QAAQ,SAAU,EAAE,IAAI,CAAC;EACpE,GAAIM,IACA;GACE,UAAU,GAAU,MAClBN,EAAO,QAAQ,UAAW,QAAQc,GAAIC,CAAI;GAC5C,qBAAqBf,EAAO,QAAQ,UAAW,KAAK;GACpD,uBAAuBA,EAAO,QAAQ,UAAW,OAAO;EAC1D,IACA,CAAC;EACL,GAAIQ,IACA;GACE,QAAQ,MAA4BR,EAAO,QAAQ,MAAO,MAAMgB,CAAM;GACtE,iBAAiBhB,EAAO,QAAQ,MAAO,OAAO;EAChD,IACA,CAAC;EACL,GAAIU,IACA,EAAE,iBAAiB,MAAoBV,EAAO,QAAQ,eAAgBiB,CAAO,EAAE,IAC/E,CAAC;CACP,IAAI;EAACjB;EAAQE;EAAaE;EAAaE;EAAcE;EAAUE;CAAiB,CAAC;AACnF"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { resolveDerivedPath as e } from "../core/scene/derivedPath.js";
|
|
2
|
+
import { derivedDepOf as t } from "../core/scene/effectivePose.js";
|
|
3
|
+
//#region src/canvas/derivedPath.ts
|
|
4
|
+
function n(e, n) {
|
|
5
|
+
if (n === void 0) return (n) => t(e, n);
|
|
6
|
+
let i = {
|
|
7
|
+
at: n,
|
|
8
|
+
slot: s(n),
|
|
9
|
+
childrenOf: (t) => e.childrenOf(t),
|
|
10
|
+
lookup: (t) => {
|
|
11
|
+
let n = e.get(t);
|
|
12
|
+
return n === void 0 ? void 0 : new r(n, i);
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
return i.lookup;
|
|
16
|
+
}
|
|
17
|
+
var r = class {
|
|
18
|
+
ctx;
|
|
19
|
+
node;
|
|
20
|
+
pose;
|
|
21
|
+
constructor(e, t) {
|
|
22
|
+
this.ctx = t, this.node = e, this.pose = t.at(e);
|
|
23
|
+
}
|
|
24
|
+
get path() {
|
|
25
|
+
return e(this.node, this.ctx.lookup, this.ctx.childrenOf, this.ctx.slot);
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
function i(t, r) {
|
|
29
|
+
let i = n(t, r), a = r === void 0 ? void 0 : s(r), o = (e) => t.childrenOf(e);
|
|
30
|
+
return (t) => e(t, i, o, a);
|
|
31
|
+
}
|
|
32
|
+
var a = /* @__PURE__ */ new WeakMap(), o = 0;
|
|
33
|
+
function s(e) {
|
|
34
|
+
let t = a.get(e);
|
|
35
|
+
return t === void 0 && (t = `kit:derivedPath:toPose:${o++}`, a.set(e, t)), t;
|
|
36
|
+
}
|
|
37
|
+
function c(e, t, n) {
|
|
38
|
+
let r = i(e, n);
|
|
39
|
+
return (e, n, i, a) => e.dependsOn === void 0 ? t(e, n, i, a) : t(e, n, i, {
|
|
40
|
+
...a,
|
|
41
|
+
derivedPath: r(e)
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
//#endregion
|
|
45
|
+
export { e as resolveDerivedPath, n as sceneDepLookup, i as sceneDerivedPathOf, c as withDerivedPaths };
|
|
46
|
+
|
|
47
|
+
//# sourceMappingURL=derivedPath.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"derivedPath.js","names":["sceneDepLookup","toPose","derivedDepOf","scene","id","ctx","memoSlotFor","node","SlotDep","posed","resolveDerivedPath","sceneDerivedPathOf","depOf","slot","childrenOf","toPoseSlots","nextToPoseSlot","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 { derivedDepOf } from 'core/scene/effectivePose';\nimport { resolveDerivedPath } from 'core/scene/derivedPath';\nimport type { SceneViewDrawOne } from './NodeShape';\n\nexport { resolveDerivedPath } from 'core/scene/derivedPath';\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 * `Scene` stores absolute poses and the render walks hand `getPose` straight to\n * `drawOne`, composing nothing, so this has to read exactly what the render\n * adapters read: a derived edge is drawn from these coordinates and must meet\n * the nodes it connects. A slot's `toPose` replaces that read, so `toPose`\n * replaces it here too.\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 if (toPose === undefined) return (id) => derivedDepOf(scene, id);\n const ctx: SlotLookup<TPose> = {\n at: toPose as (node: unknown) => TPose,\n slot: memoSlotFor(toPose),\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;\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/** `(node) => the path it derives`, read through {@link sceneDepLookup}. */\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 = toPose === undefined ? undefined : memoSlotFor(toPose);\n const childrenOf = (id: NodeId): readonly NodeId[] => scene.childrenOf(id);\n return (node) => resolveDerivedPath(node, depOf, childrenOf, slot);\n}\n\nconst toPoseSlots = new WeakMap<object, string>();\nlet nextToPoseSlot = 0;\n\n/** One memo slot per `toPose`: two slots painting one scene at different\n * poses must not serve each other's paths. */\nfunction memoSlotFor(toPose: object): string {\n let slot = toPoseSlots.get(toPose);\n if (slot === undefined) {\n slot = `kit:derivedPath:toPose:${nextToPoseSlot++}`;\n toPoseSlots.set(toPose, slot);\n }\n return slot;\n}\n\n/**\n * Wrap a `drawOne` so a node that derives its geometry arrives at the painter\n * 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 (node.dependsOn === undefined) return drawOne(node, pose, view, ctx);\n return drawOne(node, pose, view, { ...ctx, derivedPath: derivedPathOf(node) });\n };\n}\n"],"mappings":";;;AA2BA,SAAgBA,EACd,GACA,GAC+C;CAC/C,IAAIC,MAAW,KAAA,GAAW,QAAQ,MAAOC,EAAaC,GAAOC,CAAE;CAC/D,IAAMC,IAAyB;EAC7B,IAAIJ;EACJ,MAAMK,EAAYL,CAAM;EACxB,aAAa,MAAeE,EAAM,WAAWC,CAAE;EAC/C,SAAS,MAAe;GACtB,IAAMG,IAAOJ,EAAM,IAAIC,CAAE;GACzB,OAAOG,MAAS,KAAA,IAAY,KAAA,IAAY,IAAIC,EAAQD,GAAMF,CAAG;EAC/D;CACF;CACA,OAAOA,EAAI;AACb;AAWA,IAAMG,IAAN,MAAkD;CAIH;CAH7C;CACA;CAEA,YAAY,GAAgB,GAAyC;EAEnE,AAF2C,KAAA,MAAAH,GAC3C,KAAK,OAAOI,GACZ,KAAK,OAAOJ,EAAI,GAAGI,CAAK;CAC1B;CAEA,IAAI,OAAoB;EACtB,OAAOC,EACL,KAAK,MAAe,KAAK,IAAI,QAAQ,KAAK,IAAI,YAAY,KAAK,IAAI,IACrE;CACF;AACF;AAGA,SAAgBC,EACd,GACA,GACmD;CACnD,IAAMC,IAAQZ,EAAeG,GAAOF,CAAM,GACpCY,IAAOZ,MAAW,KAAA,IAAY,KAAA,IAAYK,EAAYL,CAAM,GAC5Da,KAAc,MAAkCX,EAAM,WAAWC,CAAE;CACzE,QAAQ,MAASM,EAAmBH,GAAMK,GAAOE,GAAYD,CAAI;AACnE;AAEA,IAAME,oBAAc,IAAI,QAAwB,GAC5CC,IAAiB;AAIrB,SAASV,EAAY,GAAwB;CAC3C,IAAIO,IAAOE,EAAY,IAAId,CAAM;CAKjC,OAJIY,MAAS,KAAA,MACX,IAAO,0BAA0B,OACjCE,EAAY,IAAId,GAAQY,CAAI,IAEvBA;AACT;AAWA,SAAgBI,EACd,GACA,GACA,GACwC;CACxC,IAAMC,IAAgBP,EAAmBR,GAAOF,CAAM;CACtD,QAAQ,GAAM,GAAM,GAAM,MACpBM,EAAK,cAAc,KAAA,IAAkBY,EAAQZ,GAAMa,GAAMC,GAAMhB,CAAG,IAC/Dc,EAAQZ,GAAMa,GAAMC,GAAM;EAAE,GAAGhB;EAAK,aAAaa,EAAcX,CAAI;CAAE,CAAC;AAEjF"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
//#region src/canvas/drawEnvelope.ts
|
|
2
|
+
function e(e, t) {
|
|
3
|
+
let n = e;
|
|
4
|
+
return typeof n?.[t] == "function" ? n[t] : void 0;
|
|
5
|
+
}
|
|
6
|
+
function t(t) {
|
|
7
|
+
return e(t, "getChromeState")?.() ?? null;
|
|
8
|
+
}
|
|
9
|
+
function n(t) {
|
|
10
|
+
return e(t, "getIsVisible")?.() ?? null;
|
|
11
|
+
}
|
|
12
|
+
function r(t) {
|
|
13
|
+
return e(t, "getPreviewSources")?.() ?? a;
|
|
14
|
+
}
|
|
15
|
+
function i(t) {
|
|
16
|
+
return e(t, "getGestureOverlays")?.() ?? o;
|
|
17
|
+
}
|
|
18
|
+
var a = [], o = [];
|
|
19
|
+
//#endregion
|
|
20
|
+
export { t as chromeStateFrom, i as gestureOverlaysFrom, n as isVisibleFrom, r as previewSourcesFrom };
|
|
21
|
+
|
|
22
|
+
//# sourceMappingURL=drawEnvelope.js.map
|
|
@@ -0,0 +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 {@link CanvasHelpers} as\n * its `data` argument, and `<CanvasView>` overlays its own half before handing\n * the stack to a second camera. A layer that answers from a construction\n * closure instead therefore answers for view zero in every view — so these\n * lookups exist to make the envelope the easy source.\n *\n * A layer drawn by a bare consumer may get plain data instead, which is why\n * 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 { 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/** 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":";AAmBA,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;AA0BA,IAAMF,IAAiD,CAAC,GAClDE,IAA4C,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
//#region src/canvas/getNodeAtPoint.ts
|
|
2
|
+
function e(e, t) {
|
|
3
|
+
return (n, r, i) => {
|
|
4
|
+
let a = e(n, r, i), o = Array.isArray(a) ? a[0] ?? null : a;
|
|
5
|
+
if (o == null) return null;
|
|
6
|
+
let s = t?.(o) ?? null;
|
|
7
|
+
return {
|
|
8
|
+
id: o,
|
|
9
|
+
kind: s?.kind ?? "unknown",
|
|
10
|
+
pose: s?.pose,
|
|
11
|
+
data: s?.data ?? { id: o }
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
//#endregion
|
|
16
|
+
export { e as makeGetNodeAtPoint };
|
|
17
|
+
|
|
18
|
+
//# sourceMappingURL=getNodeAtPoint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getNodeAtPoint.js","names":["makeGetNodeAtPoint","raw","pickEvery","wx","wy","view","id","resolved","nodeResolver"],"sources":["../../src/canvas/getNodeAtPoint.ts"],"sourcesContent":["/**\n * Stable helper for synthesizing the dispatcher's `getNodeAtPoint` callback\n * from a `pickEvery` function and an optional per-id node resolver.\n *\n * Extracted from `Canvas.tsx`'s inline `__setGetNodeAtPoint` synthesizer so\n * that `SceneCanvas` (and any other scene-aware wrapper) can build the\n * function externally and hand it to `<Canvas>` as a prop. The caller supplies\n * a `nodeResolver` that derives each hit's kind/pose/data (SceneCanvas\n * classifies the node's `data` via its routing registry).\n */\n\nimport type { PickView } from './SceneCanvas/useSceneSelectTool';\n\n/** The hit record returned by a `getNodeAtPoint` function. Matches the\n * shape expected by `ToolsDispatcher.__setGetNodeAtPoint`. */\nexport interface NodeAtPointHit {\n id: string;\n kind: string;\n pose: unknown;\n data: unknown;\n meta?: Record<string, unknown>;\n}\n\n/**\n * Resolves per-id metadata for a node (kind, pose, data). When absent,\n * kind falls back to `'unknown'` and pose/data fall back to trivial values.\n */\nexport type NodeResolver = (id: string) => { kind: string; pose: unknown; data: unknown } | null;\n\n/**\n * Build a stable `getNodeAtPoint(wx, wy)` function suitable for passing to\n * the tool dispatcher via `Canvas`'s `getNodeAtPoint` prop.\n *\n * Algorithm matches the inline synthesizer in Canvas.tsx exactly:\n * - `pickEvery` returns `string | string[] | null`\n * - When an array, the **first** element is the topmost id (front-to-back order)\n * - `nodeResolver` is called for the topmost id to get kind/pose/data\n * - When `nodeResolver` is absent or returns null, kind defaults to `'unknown'`,\n * pose to `undefined`, data to `{ id }`\n *\n * @param pickEvery Raw hit-test function. Same signature as the Canvas prop.\n * @param nodeResolver Optional per-id resolver. SceneCanvas builds this from its adapter.\n */\nexport function makeGetNodeAtPoint(\n pickEvery: (wx: number, wy: number, view?: PickView | null) => string | 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 raw = pickEvery(wx, wy, view);\n // Normalize `string | string[] | null` to topmost id (first entry).\n const id = Array.isArray(raw) ? raw[0] ?? null : raw;\n if (id == null) return null;\n\n const resolved = nodeResolver?.(id) ?? null;\n const kind = resolved?.kind ?? 'unknown';\n const pose = resolved?.pose;\n const data = resolved?.data ?? { id };\n\n return { id, kind, pose, data };\n };\n}\n"],"mappings":";AA2CA,SAAgBA,EACd,GACA,GAC2E;CAC3E,QAAQ,GAAY,GAAY,MAAkD;EAChF,IAAMC,IAAMC,EAAUC,GAAIC,GAAIC,CAAI,GAE5BC,IAAK,MAAM,QAAQL,CAAG,IAAIA,EAAI,MAAM,OAAOA;EACjD,IAAIK,KAAM,MAAM,OAAO;EAEvB,IAAMC,IAAWC,IAAeF,CAAE,KAAK;EAKvC,OAAO;GAAE;GAAI,MAJAC,GAAU,QAAQ;GAIZ,MAHNA,GAAU;GAGE,MAFZA,GAAU,QAAQ,EAAE,MAAG;EAEN;CAChC;AACF"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { clampRectWithin as e } from "@weasel-js/geom";
|
|
2
|
+
//#region src/canvas/hostAnchor.ts
|
|
3
|
+
function t(e, t, n, r, i) {
|
|
4
|
+
return r === "start" ? e + i : r === "end" ? e + t - n - i : e + (t - n) / 2 + i;
|
|
5
|
+
}
|
|
6
|
+
function n(n) {
|
|
7
|
+
let { host: r, panel: i, viewport: a, align: o, offset: s, padding: c = 0 } = n, l = {
|
|
8
|
+
x: t(r.x, r.width, i.width, o.x, s.x),
|
|
9
|
+
y: t(r.y, r.height, i.height, o.y, s.y),
|
|
10
|
+
width: i.width,
|
|
11
|
+
height: i.height
|
|
12
|
+
};
|
|
13
|
+
return e(l, {
|
|
14
|
+
x: 0,
|
|
15
|
+
y: 0,
|
|
16
|
+
width: a.width,
|
|
17
|
+
height: a.height
|
|
18
|
+
}, c);
|
|
19
|
+
}
|
|
20
|
+
function r(e, t, n) {
|
|
21
|
+
return {
|
|
22
|
+
...t.y === "end" ? { bottom: n.height - e.y - e.height } : { top: e.y },
|
|
23
|
+
...t.x === "end" ? { right: n.width - e.x - e.width } : { left: e.x }
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
//#endregion
|
|
27
|
+
export { r as hostAnchorCss, n as hostAnchorRect };
|
|
28
|
+
|
|
29
|
+
//# sourceMappingURL=hostAnchor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hostAnchor.js","names":["insetAlong","align","start","by","extent","size","hostAnchorRect","input","desired","host","panel","offset","clampRectWithin","viewport","padding","hostAnchorCss","rect"],"sources":["../../src/canvas/hostAnchor.ts"],"sourcesContent":["import { clampRectWithin, type PlacementAlign, type Rect } from '@weasel-js/geom';\n\n/** Which of the host's edges the panel is held against, per axis. */\nexport interface HostAnchorAlign {\n x: PlacementAlign;\n y: PlacementAlign;\n}\n\n/** Inset from the anchored corner, in CSS pixels, positive going inward. */\nexport interface HostAnchorOffset {\n x: number;\n y: number;\n}\n\n/** Everything {@link hostAnchorRect} needs, all in viewport coordinates. */\nexport interface HostAnchorInput {\n host: Rect;\n panel: { width: number; height: number };\n viewport: { width: number; height: number };\n align: HostAnchorAlign;\n offset: HostAnchorOffset;\n /** Minimum gap kept between the panel and the viewport edge. Default 0. */\n padding?: number;\n}\n\nfunction insetAlong(start: number, extent: number, size: number, align: PlacementAlign, by: number): number {\n if (align === 'start') return start + by;\n if (align === 'end') return start + extent - size - by;\n return start + (extent - size) / 2 + by;\n}\n\n/**\n * Where a fixed-position panel held against a host element's corner lands, once\n * it has been kept inside the viewport. Returns a rect rather than CSS so the\n * caller decides which edges to pin — see {@link hostAnchorCss}.\n */\nexport function hostAnchorRect(input: HostAnchorInput): Rect {\n const { host, panel, viewport, align, offset, padding = 0 } = input;\n const desired: Rect = {\n x: insetAlong(host.x, host.width, panel.width, align.x, offset.x),\n y: insetAlong(host.y, host.height, panel.height, align.y, offset.y),\n width: panel.width,\n height: panel.height,\n };\n return clampRectWithin(desired, { x: 0, y: 0, width: viewport.width, height: viewport.height }, padding);\n}\n\n/**\n * CSS for a resolved rect, pinning whichever edges the alignment names.\n *\n * Pinning matters beyond taste: a panel whose width tracks its content holds\n * the anchored edge still and grows away from it. Pin the wrong edge and the\n * anchored corner drifts on every content change, correcting only once a\n * resize observer catches up.\n */\nexport function hostAnchorCss(\n rect: Rect,\n align: HostAnchorAlign,\n viewport: { width: number; height: number },\n): { top?: number; right?: number; bottom?: number; left?: number } {\n return {\n ...(align.y === 'end'\n ? { bottom: viewport.height - rect.y - rect.height }\n : { top: rect.y }),\n ...(align.x === 'end'\n ? { right: viewport.width - rect.x - rect.width }\n : { left: rect.x }),\n };\n}\n"],"mappings":";;AAyBA,SAASA,EAAW,GAAe,GAAgB,GAAc,GAAuB,GAAoB;CAG1G,OAFIC,MAAU,UAAgBC,IAAQC,IAClCF,MAAU,QAAcC,IAAQE,IAASC,IAAOF,IAC7CD,KAASE,IAASC,KAAQ,IAAIF;AACvC;AAOA,SAAgBG,EAAe,GAA8B;CAC3D,IAAM,EAAE,SAAM,UAAO,aAAU,UAAO,WAAQ,aAAU,MAAMC,GACxDC,IAAgB;EACpB,GAAGR,EAAWS,EAAK,GAAGA,EAAK,OAAOC,EAAM,OAAOT,EAAM,GAAGU,EAAO,CAAC;EAChE,GAAGX,EAAWS,EAAK,GAAGA,EAAK,QAAQC,EAAM,QAAQT,EAAM,GAAGU,EAAO,CAAC;EAClE,OAAOD,EAAM;EACb,QAAQA,EAAM;CAChB;CACA,OAAOE,EAAgBJ,GAAS;EAAE,GAAG;EAAG,GAAG;EAAG,OAAOK,EAAS;EAAO,QAAQA,EAAS;CAAO,GAAGC,CAAO;AACzG;AAUA,SAAgBC,EACd,GACA,GACA,GACkE;CAClE,OAAO;EACL,GAAId,EAAM,MAAM,QACZ,EAAE,QAAQY,EAAS,SAASG,EAAK,IAAIA,EAAK,OAAO,IACjD,EAAE,KAAKA,EAAK,EAAE;EAClB,GAAIf,EAAM,MAAM,QACZ,EAAE,OAAOY,EAAS,QAAQG,EAAK,IAAIA,EAAK,MAAM,IAC9C,EAAE,MAAMA,EAAK,EAAE;CACrB;AACF"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
//#region src/canvas/hud.module.css
|
|
2
|
+
var e = "_hud_s26ij_2", t = "_sized_s26ij_15", n = "_pre_s26ij_20", r = "_muted_s26ij_24", i = "_absent_s26ij_29", a = "_header_s26ij_34", o = "_list_s26ij_38", s = "_item_s26ij_47", c = "_itemBest_s26ij_53", l = "_row_s26ij_57", u = "_stack_s26ij_64", d = {
|
|
3
|
+
hud: e,
|
|
4
|
+
sized: t,
|
|
5
|
+
pre: n,
|
|
6
|
+
muted: r,
|
|
7
|
+
absent: i,
|
|
8
|
+
header: a,
|
|
9
|
+
list: o,
|
|
10
|
+
item: s,
|
|
11
|
+
itemBest: c,
|
|
12
|
+
row: l,
|
|
13
|
+
stack: u
|
|
14
|
+
};
|
|
15
|
+
//#endregion
|
|
16
|
+
export { i as absent, d as default, a as header, e as hud, s as item, c as itemBest, o as list, r as muted, n as pre, l as row, t as sized, u as stack };
|
|
17
|
+
|
|
18
|
+
//# sourceMappingURL=hud.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hud.module.js","names":["hud","sized","pre","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. */\n.hud {\n position: fixed;\n z-index: 10000;\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.pre {\n white-space: pre;\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":""}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
//#region src/canvas/insertPreviewExtent.ts
|
|
2
|
+
function e(e) {
|
|
3
|
+
let r = e.bounds, i = {
|
|
4
|
+
x: r.x,
|
|
5
|
+
y: r.y,
|
|
6
|
+
width: r.width,
|
|
7
|
+
height: r.height
|
|
8
|
+
};
|
|
9
|
+
switch (e.shape) {
|
|
10
|
+
case "line": {
|
|
11
|
+
let t = e.extras, a = t.a ?? {
|
|
12
|
+
x: r.x,
|
|
13
|
+
y: r.y
|
|
14
|
+
}, o = t.b ?? {
|
|
15
|
+
x: r.x + r.width,
|
|
16
|
+
y: r.y + r.height
|
|
17
|
+
};
|
|
18
|
+
return {
|
|
19
|
+
shape: e.shape,
|
|
20
|
+
bounds: n([a, o]) ?? i,
|
|
21
|
+
geometry: {
|
|
22
|
+
kind: "line",
|
|
23
|
+
a,
|
|
24
|
+
b: o
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
case "polygon": {
|
|
29
|
+
let n = e.extras, i = n.center ?? {
|
|
30
|
+
x: r.x + r.width / 2,
|
|
31
|
+
y: r.y + r.height / 2
|
|
32
|
+
}, a = n.radius ?? Math.min(r.width, r.height) / 2;
|
|
33
|
+
return {
|
|
34
|
+
shape: e.shape,
|
|
35
|
+
bounds: t(i, a),
|
|
36
|
+
geometry: {
|
|
37
|
+
kind: "polygon",
|
|
38
|
+
center: i,
|
|
39
|
+
radius: a,
|
|
40
|
+
sides: Math.max(3, Math.floor(n.sides ?? 6)),
|
|
41
|
+
rotation: n.rotation ?? 0
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
case "star": {
|
|
46
|
+
let n = e.extras, i = n.center ?? {
|
|
47
|
+
x: r.x + r.width / 2,
|
|
48
|
+
y: r.y + r.height / 2
|
|
49
|
+
}, a = n.outerRadius ?? Math.min(r.width, r.height) / 2;
|
|
50
|
+
return {
|
|
51
|
+
shape: e.shape,
|
|
52
|
+
bounds: t(i, a),
|
|
53
|
+
geometry: {
|
|
54
|
+
kind: "star",
|
|
55
|
+
center: i,
|
|
56
|
+
outerRadius: a,
|
|
57
|
+
innerRadius: a * (n.innerRadiusRatio ?? .5),
|
|
58
|
+
points: Math.max(3, Math.floor(n.points ?? 5)),
|
|
59
|
+
rotation: n.rotation ?? 0
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
case "pencil": {
|
|
64
|
+
let t = e.extras.samples ?? [];
|
|
65
|
+
return {
|
|
66
|
+
shape: e.shape,
|
|
67
|
+
bounds: n(t) ?? i,
|
|
68
|
+
geometry: {
|
|
69
|
+
kind: "pencil",
|
|
70
|
+
samples: t
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
default: return {
|
|
75
|
+
shape: e.shape,
|
|
76
|
+
bounds: i,
|
|
77
|
+
geometry: { kind: "box" }
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
function t(e, t) {
|
|
82
|
+
return {
|
|
83
|
+
x: e.x - t,
|
|
84
|
+
y: e.y - t,
|
|
85
|
+
width: t * 2,
|
|
86
|
+
height: t * 2
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
function n(e) {
|
|
90
|
+
if (e.length === 0) return null;
|
|
91
|
+
let t = Infinity, n = Infinity, r = -Infinity, i = -Infinity;
|
|
92
|
+
for (let a of e) a.x < t && (t = a.x), a.y < n && (n = a.y), a.x > r && (r = a.x), a.y > i && (i = a.y);
|
|
93
|
+
return {
|
|
94
|
+
x: t,
|
|
95
|
+
y: n,
|
|
96
|
+
width: r - t,
|
|
97
|
+
height: i - n
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
//#endregion
|
|
101
|
+
export { e as insertPreviewExtent };
|
|
102
|
+
|
|
103
|
+
//# sourceMappingURL=insertPreviewExtent.js.map
|
|
@@ -0,0 +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\".\n *\n * A drag-to-insert has no scene node until commit, so three surfaces have to\n * size the nascent shape themselves: `useDispatcherOverlayLayer` (paints the\n * preview), `canvas/deps/insert` (poses the committed node) and\n * `dispatcherGestureBounds` (reports the gesture's world AABB to `<Canvas>`).\n * They all resolve it here.\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 —\n * a polygon's center+radius, a pencil's sample trail, a line's endpoints —\n * and where it does, that geometry is the shape. A centered Alt-drag\n * produces a `d`-wide drag rect around a `d√2` circumradius; a pencil that\n * loops back to its start produces a zero-area drag rect around a trail that\n * 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":";AA2DA,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"}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import { VERSION as e } from "../version.js";
|
|
2
|
+
//#region src/canvas/kitRequirements.ts
|
|
3
|
+
var t = { core: e }, n = "-unknown", r = /^v?(\d+)\.(\d+)\.(\d+)(?:-([0-9A-Za-z.-]+))?(?:\+[0-9A-Za-z.-]+)?$/, i = /^v?(\d+|[xX*])(?:\.(\d+|[xX*]))?(?:\.(\d+|[xX*]))?(?:-([0-9A-Za-z.-]+))?(?:\+[0-9A-Za-z.-]+)?$/;
|
|
4
|
+
function a(e) {
|
|
5
|
+
return e ? e.split(".").map((e) => /^\d+$/.test(e) ? Number(e) : e) : [];
|
|
6
|
+
}
|
|
7
|
+
function o(e) {
|
|
8
|
+
let t = r.exec(e.trim());
|
|
9
|
+
return t ? {
|
|
10
|
+
triple: [
|
|
11
|
+
Number(t[1]),
|
|
12
|
+
Number(t[2]),
|
|
13
|
+
Number(t[3])
|
|
14
|
+
],
|
|
15
|
+
pre: a(t[4])
|
|
16
|
+
} : null;
|
|
17
|
+
}
|
|
18
|
+
function s(e, t) {
|
|
19
|
+
for (let n = 0; n < 3; n++) {
|
|
20
|
+
let r = e.triple[n] - t.triple[n];
|
|
21
|
+
if (r !== 0) return r;
|
|
22
|
+
}
|
|
23
|
+
if (e.pre.length === 0 || t.pre.length === 0) return t.pre.length - e.pre.length;
|
|
24
|
+
for (let n = 0; n < Math.max(e.pre.length, t.pre.length); n++) {
|
|
25
|
+
let r = e.pre[n], i = t.pre[n];
|
|
26
|
+
if (r === void 0) return -1;
|
|
27
|
+
if (i === void 0) return 1;
|
|
28
|
+
if (r !== i) return typeof r == "number" && typeof i == "number" ? r - i : typeof r == "number" ? -1 : typeof i == "number" ? 1 : r < i ? -1 : 1;
|
|
29
|
+
}
|
|
30
|
+
return 0;
|
|
31
|
+
}
|
|
32
|
+
var c = (e, t, n, r = []) => ({
|
|
33
|
+
triple: [
|
|
34
|
+
e,
|
|
35
|
+
t,
|
|
36
|
+
n
|
|
37
|
+
],
|
|
38
|
+
pre: r
|
|
39
|
+
});
|
|
40
|
+
function l(e) {
|
|
41
|
+
let t = /^(\^|~|>=|<=|>|<|=)?(.*)$/.exec(e), n = t[1] ?? "", r = i.exec(t[2]);
|
|
42
|
+
if (!r) return null;
|
|
43
|
+
let o = [];
|
|
44
|
+
for (let e of [
|
|
45
|
+
r[1],
|
|
46
|
+
r[2],
|
|
47
|
+
r[3]
|
|
48
|
+
]) {
|
|
49
|
+
if (e === void 0 || /^[xX*]$/.test(e)) break;
|
|
50
|
+
o.push(Number(e));
|
|
51
|
+
}
|
|
52
|
+
let s = a(r[4]);
|
|
53
|
+
if (s.length > 0 && o.length < 3) return null;
|
|
54
|
+
let [l = 0, u = 0, d = 0] = o, f = c(l, u, d, s), p = o.length === 0 ? null : o.length === 1 ? c(l + 1, 0, 0) : o.length === 2 ? c(l, u + 1, 0) : c(l, u, d + 1);
|
|
55
|
+
switch (n) {
|
|
56
|
+
case ">=": return [{
|
|
57
|
+
op: ">=",
|
|
58
|
+
v: f
|
|
59
|
+
}];
|
|
60
|
+
case "<": return o.length === 0 ? [{
|
|
61
|
+
op: "<",
|
|
62
|
+
v: c(0, 0, 0)
|
|
63
|
+
}] : [{
|
|
64
|
+
op: "<",
|
|
65
|
+
v: f
|
|
66
|
+
}];
|
|
67
|
+
case ">": return o.length === 3 ? [{
|
|
68
|
+
op: ">",
|
|
69
|
+
v: f
|
|
70
|
+
}] : p ? [{
|
|
71
|
+
op: ">=",
|
|
72
|
+
v: p
|
|
73
|
+
}] : [{
|
|
74
|
+
op: "<",
|
|
75
|
+
v: c(0, 0, 0)
|
|
76
|
+
}];
|
|
77
|
+
case "<=": return o.length === 3 ? [{
|
|
78
|
+
op: "<=",
|
|
79
|
+
v: f
|
|
80
|
+
}] : p ? [{
|
|
81
|
+
op: "<",
|
|
82
|
+
v: p
|
|
83
|
+
}] : [];
|
|
84
|
+
case "~": {
|
|
85
|
+
let e = o.length <= 1 ? c(l + 1, 0, 0) : c(l, u + 1, 0);
|
|
86
|
+
return [{
|
|
87
|
+
op: ">=",
|
|
88
|
+
v: f
|
|
89
|
+
}, {
|
|
90
|
+
op: "<",
|
|
91
|
+
v: e
|
|
92
|
+
}];
|
|
93
|
+
}
|
|
94
|
+
case "^": {
|
|
95
|
+
let e = l > 0 || o.length === 1 ? c(l + 1, 0, 0) : u > 0 || o.length === 2 ? c(0, u + 1, 0) : c(0, 0, d + 1);
|
|
96
|
+
return o.length === 0 ? [] : [{
|
|
97
|
+
op: ">=",
|
|
98
|
+
v: f
|
|
99
|
+
}, {
|
|
100
|
+
op: "<",
|
|
101
|
+
v: e
|
|
102
|
+
}];
|
|
103
|
+
}
|
|
104
|
+
default: return o.length === 3 ? [{
|
|
105
|
+
op: ">=",
|
|
106
|
+
v: f
|
|
107
|
+
}, {
|
|
108
|
+
op: "<=",
|
|
109
|
+
v: f
|
|
110
|
+
}] : p ? [{
|
|
111
|
+
op: ">=",
|
|
112
|
+
v: f
|
|
113
|
+
}, {
|
|
114
|
+
op: "<",
|
|
115
|
+
v: p
|
|
116
|
+
}] : [];
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
function u(e, t) {
|
|
120
|
+
let n = s(e, t.v);
|
|
121
|
+
switch (t.op) {
|
|
122
|
+
case ">=": return n >= 0;
|
|
123
|
+
case ">": return n > 0;
|
|
124
|
+
case "<=": return n <= 0;
|
|
125
|
+
case "<": return n < 0;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
function d(e, t) {
|
|
129
|
+
let n = o(e);
|
|
130
|
+
if (!n) return null;
|
|
131
|
+
let r = t.split("||").map((e) => e.trim()), i = !1;
|
|
132
|
+
for (let e of r) {
|
|
133
|
+
if (e === "") return null;
|
|
134
|
+
let t = [];
|
|
135
|
+
for (let n of e.split(/\s+/)) {
|
|
136
|
+
let e = l(n);
|
|
137
|
+
if (!e) return null;
|
|
138
|
+
t.push(...e);
|
|
139
|
+
}
|
|
140
|
+
t.every((e) => u(n, e)) && (i = !0);
|
|
141
|
+
}
|
|
142
|
+
return i;
|
|
143
|
+
}
|
|
144
|
+
function f(e, r = t) {
|
|
145
|
+
let i = [];
|
|
146
|
+
for (let [t, a] of Object.entries(e)) {
|
|
147
|
+
if (a === void 0) continue;
|
|
148
|
+
let e = r[t];
|
|
149
|
+
if (e === void 0) {
|
|
150
|
+
i.push({
|
|
151
|
+
package: t,
|
|
152
|
+
range: a,
|
|
153
|
+
running: void 0,
|
|
154
|
+
reason: "unknown-package"
|
|
155
|
+
});
|
|
156
|
+
continue;
|
|
157
|
+
}
|
|
158
|
+
if (e.endsWith(n)) continue;
|
|
159
|
+
let o = d(e, a);
|
|
160
|
+
o === null ? i.push({
|
|
161
|
+
package: t,
|
|
162
|
+
range: a,
|
|
163
|
+
running: e,
|
|
164
|
+
reason: "invalid-range"
|
|
165
|
+
}) : o || i.push({
|
|
166
|
+
package: t,
|
|
167
|
+
range: a,
|
|
168
|
+
running: e,
|
|
169
|
+
reason: "unsatisfied"
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
return i;
|
|
173
|
+
}
|
|
174
|
+
//#endregion
|
|
175
|
+
export { t as KIT_VERSIONS, f as checkRequirements, d as satisfiesRange };
|
|
176
|
+
|
|
177
|
+
//# sourceMappingURL=kitRequirements.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kitRequirements.js","names":["KIT_VERSIONS","VERSION","UNKNOWN_SUFFIX","VERSION_RE","PARTIAL_RE","preOf","s","id","parseVersion","m","compare","i","d","a","b","x","y","v","c","parseComparator","token","op","p","nums","part","pre","M","mi","pa","lower","upper","top","holds","version","satisfiesRange","parsed","alternatives","range","alt","any","set","cs","checkRequirements","out","pkg","requires","have","running","ok"],"sources":["../../src/canvas/kitRequirements.ts"],"sourcesContent":["/**\n * Version negotiation for contributions: a `requires` map of semver ranges,\n * matched against the versions the running kit packages report.\n *\n * The range grammar is npm's everyday subset — `^`, `~`, `>=`, `>`, `<=`, `<`,\n * `=`, bare and partial versions (`1.7`, `1.x`, `*`), space for AND and `||`\n * for OR. Hyphen ranges are not read. A prerelease orders below its release,\n * without npm's rule that a range must opt into prereleases by naming one.\n */\nimport { VERSION } from '../version';\n\n/**\n * The versions a contribution can require, keyed by package without its\n * `@weasel-js/` scope. Only core reports its version today.\n */\nexport interface KitVersions {\n core: string;\n}\n\n/** A contribution's `requires`: a semver range per package it was written against. */\nexport type KitRequirements = { readonly [K in keyof KitVersions]?: string };\n\n/** The running kit's versions. */\nexport const KIT_VERSIONS: Readonly<KitVersions> = { core: VERSION };\n\n/** One requirement the running kit does not meet. */\nexport interface RequirementMismatch {\n package: string;\n range: string;\n /** The running version, or `undefined` when that package reports none. */\n running: string | undefined;\n reason: 'unsatisfied' | 'invalid-range' | 'unknown-package';\n}\n\ntype Triple = readonly [number, number, number];\ninterface Version { triple: Triple; pre: readonly (string | number)[] }\ninterface Comparator { op: '>=' | '<' | '>' | '<='; v: Version }\n\nconst UNKNOWN_SUFFIX = '-unknown';\nconst VERSION_RE = /^v?(\\d+)\\.(\\d+)\\.(\\d+)(?:-([0-9A-Za-z.-]+))?(?:\\+[0-9A-Za-z.-]+)?$/;\nconst PARTIAL_RE = /^v?(\\d+|[xX*])(?:\\.(\\d+|[xX*]))?(?:\\.(\\d+|[xX*]))?(?:-([0-9A-Za-z.-]+))?(?:\\+[0-9A-Za-z.-]+)?$/;\n\nfunction preOf(s: string | undefined): (string | number)[] {\n return s ? s.split('.').map((id) => (/^\\d+$/.test(id) ? Number(id) : id)) : [];\n}\n\nfunction parseVersion(s: string): Version | null {\n const m = VERSION_RE.exec(s.trim());\n return m ? { triple: [Number(m[1]), Number(m[2]), Number(m[3])], pre: preOf(m[4]) } : null;\n}\n\nfunction compare(a: Version, b: Version): number {\n for (let i = 0; i < 3; i++) {\n const d = a.triple[i]! - b.triple[i]!;\n if (d !== 0) return d;\n }\n if (a.pre.length === 0 || b.pre.length === 0) return b.pre.length - a.pre.length;\n for (let i = 0; i < Math.max(a.pre.length, b.pre.length); i++) {\n const x = a.pre[i];\n const y = b.pre[i];\n if (x === undefined) return -1;\n if (y === undefined) return 1;\n if (x === y) continue;\n if (typeof x === 'number' && typeof y === 'number') return x - y;\n if (typeof x === 'number') return -1;\n if (typeof y === 'number') return 1;\n return x < y ? -1 : 1;\n }\n return 0;\n}\n\nconst v = (a: number, b: number, c: number, pre: readonly (string | number)[] = []): Version =>\n ({ triple: [a, b, c], pre });\n\n/** One comparator token as the interval it names. `null` when unreadable. */\nfunction parseComparator(token: string): Comparator[] | null {\n const m = /^(\\^|~|>=|<=|>|<|=)?(.*)$/.exec(token)!;\n const op = m[1] ?? '';\n const p = PARTIAL_RE.exec(m[2]!);\n if (!p) return null;\n const nums: number[] = [];\n for (const part of [p[1], p[2], p[3]]) {\n if (part === undefined || /^[xX*]$/.test(part)) break;\n nums.push(Number(part));\n }\n const pre = preOf(p[4]);\n if (pre.length > 0 && nums.length < 3) return null;\n const [M = 0, mi = 0, pa = 0] = nums;\n const lower = v(M, mi, pa, pre);\n // The first version past everything the partial names: `1.7` → `1.8.0`.\n const upper = nums.length === 0 ? null\n : nums.length === 1 ? v(M + 1, 0, 0)\n : nums.length === 2 ? v(M, mi + 1, 0)\n : v(M, mi, pa + 1);\n\n switch (op) {\n case '>=': return [{ op: '>=', v: lower }];\n case '<': return nums.length === 0 ? [{ op: '<', v: v(0, 0, 0) }] : [{ op: '<', v: lower }];\n case '>': return nums.length === 3 ? [{ op: '>', v: lower }] : upper ? [{ op: '>=', v: upper }] : [{ op: '<', v: v(0, 0, 0) }];\n case '<=': return nums.length === 3 ? [{ op: '<=', v: lower }] : upper ? [{ op: '<', v: upper }] : [];\n case '~': {\n const top = nums.length <= 1 ? v(M + 1, 0, 0) : v(M, mi + 1, 0);\n return [{ op: '>=', v: lower }, { op: '<', v: top }];\n }\n case '^': {\n const top = M > 0 || nums.length === 1 ? v(M + 1, 0, 0)\n : mi > 0 || nums.length === 2 ? v(0, mi + 1, 0)\n : v(0, 0, pa + 1);\n return nums.length === 0 ? [] : [{ op: '>=', v: lower }, { op: '<', v: top }];\n }\n default:\n if (nums.length === 3) return [{ op: '>=', v: lower }, { op: '<=', v: lower }];\n return upper ? [{ op: '>=', v: lower }, { op: '<', v: upper }] : [];\n }\n}\n\nfunction holds(version: Version, c: Comparator): boolean {\n const d = compare(version, c.v);\n switch (c.op) {\n case '>=': return d >= 0;\n case '>': return d > 0;\n case '<=': return d <= 0;\n case '<': return d < 0;\n }\n}\n\n/**\n * Whether `version` falls in `range`. `null` when either cannot be read, so a\n * caller can tell a mismatch from a requirement it could not check.\n */\nexport function satisfiesRange(version: string, range: string): boolean | null {\n const parsed = parseVersion(version);\n if (!parsed) return null;\n const alternatives = range.split('||').map((alt) => alt.trim());\n let any = false;\n for (const alt of alternatives) {\n if (alt === '') return null;\n const set: Comparator[] = [];\n for (const token of alt.split(/\\s+/)) {\n const cs = parseComparator(token);\n if (!cs) return null;\n set.push(...cs);\n }\n if (set.every((c) => holds(parsed, c))) any = true;\n }\n return any;\n}\n\n/**\n * Every requirement in `requires` the running kit does not meet. A package\n * whose build does not know its own version (`0.0.0-unknown`, core's source\n * bundled without its define) is skipped: nothing can be said about it.\n */\nexport function checkRequirements(\n requires: KitRequirements,\n running: Readonly<Partial<Record<string, string>>> = KIT_VERSIONS,\n): RequirementMismatch[] {\n const out: RequirementMismatch[] = [];\n for (const [pkg, range] of Object.entries(requires)) {\n if (range === undefined) continue;\n const have = running[pkg];\n if (have === undefined) {\n out.push({ package: pkg, range, running: undefined, reason: 'unknown-package' });\n continue;\n }\n if (have.endsWith(UNKNOWN_SUFFIX)) continue;\n const ok = satisfiesRange(have, range);\n if (ok === null) out.push({ package: pkg, range, running: have, reason: 'invalid-range' });\n else if (!ok) out.push({ package: pkg, range, running: have, reason: 'unsatisfied' });\n }\n return out;\n}\n"],"mappings":";;AAuBA,IAAaA,IAAsC,EAAE,MAAMC,EAAQ,GAe7DC,IAAiB,YACjBC,IAAa,sEACbC,IAAa;AAEnB,SAASC,EAAM,GAA4C;CACzD,OAAOC,IAAIA,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK,MAAQ,QAAQ,KAAKC,CAAE,IAAI,OAAOA,CAAE,IAAIA,CAAG,IAAI,CAAC;AAC/E;AAEA,SAASC,EAAa,GAA2B;CAC/C,IAAMC,IAAIN,EAAW,KAAKG,EAAE,KAAK,CAAC;CAClC,OAAOG,IAAI;EAAE,QAAQ;GAAC,OAAOA,EAAE,EAAE;GAAG,OAAOA,EAAE,EAAE;GAAG,OAAOA,EAAE,EAAE;EAAC;EAAG,KAAKJ,EAAMI,EAAE,EAAE;CAAE,IAAI;AACxF;AAEA,SAASC,EAAQ,GAAY,GAAoB;CAC/C,KAAK,IAAIC,IAAI,GAAGA,IAAI,GAAG,KAAK;EAC1B,IAAMC,IAAIC,EAAE,OAAOF,KAAMG,EAAE,OAAOH;EAClC,IAAIC,MAAM,GAAG,OAAOA;CACtB;CACA,IAAIC,EAAE,IAAI,WAAW,KAAKC,EAAE,IAAI,WAAW,GAAG,OAAOA,EAAE,IAAI,SAASD,EAAE,IAAI;CAC1E,KAAK,IAAIF,IAAI,GAAGA,IAAI,KAAK,IAAIE,EAAE,IAAI,QAAQC,EAAE,IAAI,MAAM,GAAG,KAAK;EAC7D,IAAMC,IAAIF,EAAE,IAAIF,IACVK,IAAIF,EAAE,IAAIH;EAChB,IAAII,MAAM,KAAA,GAAW,OAAO;EAC5B,IAAIC,MAAM,KAAA,GAAW,OAAO;EAC5B,IAAID,MAAMC,GAIV,OAHI,OAAOD,KAAM,YAAY,OAAOC,KAAM,WAAiBD,IAAIC,IAC3D,OAAOD,KAAM,WAAiB,KAC9B,OAAOC,KAAM,WAAiB,IAC3BD,IAAIC,IAAI,KAAK;CACtB;CACA,OAAO;AACT;AAEA,IAAMC,KAAK,GAAW,GAAW,GAAW,IAAoC,CAAC,OAC9E;CAAE,QAAQ;EAACJ;EAAGC;EAAGI;CAAC;CAAG;AAAI;AAG5B,SAASC,EAAgB,GAAoC;CAC3D,IAAMV,IAAI,4BAA4B,KAAKW,CAAK,GAC1CC,IAAKZ,EAAE,MAAM,IACba,IAAIlB,EAAW,KAAKK,EAAE,EAAG;CAC/B,IAAI,CAACa,GAAG,OAAO;CACf,IAAMC,IAAiB,CAAC;CACxB,KAAK,IAAMC,KAAQ;EAACF,EAAE;EAAIA,EAAE;EAAIA,EAAE;CAAE,GAAG;EACrC,IAAIE,MAAS,KAAA,KAAa,UAAU,KAAKA,CAAI,GAAG;EAChD,EAAK,KAAK,OAAOA,CAAI,CAAC;CACxB;CACA,IAAMC,IAAMpB,EAAMiB,EAAE,EAAE;CACtB,IAAIG,EAAI,SAAS,KAAKF,EAAK,SAAS,GAAG,OAAO;CAC9C,IAAM,CAACG,IAAI,GAAGC,IAAK,GAAGC,IAAK,KAAKL,GAC1BM,IAAQZ,EAAES,GAAGC,GAAIC,GAAIH,CAAG,GAExBK,IAAQP,EAAK,WAAW,IAAI,OAC9BA,EAAK,WAAW,IAAIN,EAAES,IAAI,GAAG,GAAG,CAAC,IACjCH,EAAK,WAAW,IAAIN,EAAES,GAAGC,IAAK,GAAG,CAAC,IAClCV,EAAES,GAAGC,GAAIC,IAAK,CAAC;CAEnB,QAAQP,GAAR;EACE,KAAK,MAAM,OAAO,CAAC;GAAE,IAAI;GAAM,GAAGQ;EAAM,CAAC;EACzC,KAAK,KAAK,OAAON,EAAK,WAAW,IAAI,CAAC;GAAE,IAAI;GAAK,GAAGN,EAAE,GAAG,GAAG,CAAC;EAAE,CAAC,IAAI,CAAC;GAAE,IAAI;GAAK,GAAGY;EAAM,CAAC;EAC1F,KAAK,KAAK,OAAON,EAAK,WAAW,IAAI,CAAC;GAAE,IAAI;GAAK,GAAGM;EAAM,CAAC,IAAIC,IAAQ,CAAC;GAAE,IAAI;GAAM,GAAGA;EAAM,CAAC,IAAI,CAAC;GAAE,IAAI;GAAK,GAAGb,EAAE,GAAG,GAAG,CAAC;EAAE,CAAC;EAC7H,KAAK,MAAM,OAAOM,EAAK,WAAW,IAAI,CAAC;GAAE,IAAI;GAAM,GAAGM;EAAM,CAAC,IAAIC,IAAQ,CAAC;GAAE,IAAI;GAAK,GAAGA;EAAM,CAAC,IAAI,CAAC;EACpG,KAAK,KAAK;GACR,IAAMC,IAAMR,EAAK,UAAU,IAAIN,EAAES,IAAI,GAAG,GAAG,CAAC,IAAIT,EAAES,GAAGC,IAAK,GAAG,CAAC;GAC9D,OAAO,CAAC;IAAE,IAAI;IAAM,GAAGE;GAAM,GAAG;IAAE,IAAI;IAAK,GAAGE;GAAI,CAAC;EACrD;EACA,KAAK,KAAK;GACR,IAAMA,IAAML,IAAI,KAAKH,EAAK,WAAW,IAAIN,EAAES,IAAI,GAAG,GAAG,CAAC,IAClDC,IAAK,KAAKJ,EAAK,WAAW,IAAIN,EAAE,GAAGU,IAAK,GAAG,CAAC,IAC5CV,EAAE,GAAG,GAAGW,IAAK,CAAC;GAClB,OAAOL,EAAK,WAAW,IAAI,CAAC,IAAI,CAAC;IAAE,IAAI;IAAM,GAAGM;GAAM,GAAG;IAAE,IAAI;IAAK,GAAGE;GAAI,CAAC;EAC9E;EACA,SAEE,OADIR,EAAK,WAAW,IAAU,CAAC;GAAE,IAAI;GAAM,GAAGM;EAAM,GAAG;GAAE,IAAI;GAAM,GAAGA;EAAM,CAAC,IACtEC,IAAQ,CAAC;GAAE,IAAI;GAAM,GAAGD;EAAM,GAAG;GAAE,IAAI;GAAK,GAAGC;EAAM,CAAC,IAAI,CAAC;CACtE;AACF;AAEA,SAASE,EAAM,GAAkB,GAAwB;CACvD,IAAMpB,IAAIF,EAAQuB,GAASf,EAAE,CAAC;CAC9B,QAAQA,EAAE,IAAV;EACE,KAAK,MAAM,OAAON,KAAK;EACvB,KAAK,KAAK,OAAOA,IAAI;EACrB,KAAK,MAAM,OAAOA,KAAK;EACvB,KAAK,KAAK,OAAOA,IAAI;CACvB;AACF;AAMA,SAAgBsB,EAAe,GAAiB,GAA+B;CAC7E,IAAMC,IAAS3B,EAAayB,CAAO;CACnC,IAAI,CAACE,GAAQ,OAAO;CACpB,IAAMC,IAAeC,EAAM,MAAM,IAAI,CAAC,CAAC,KAAK,MAAQC,EAAI,KAAK,CAAC,GAC1DC,IAAM;CACV,KAAK,IAAMD,KAAOF,GAAc;EAC9B,IAAIE,MAAQ,IAAI,OAAO;EACvB,IAAME,IAAoB,CAAC;EAC3B,KAAK,IAAMpB,KAASkB,EAAI,MAAM,KAAK,GAAG;GACpC,IAAMG,IAAKtB,EAAgBC,CAAK;GAChC,IAAI,CAACqB,GAAI,OAAO;GAChB,EAAI,KAAK,GAAGA,CAAE;EAChB;EACA,AAAID,EAAI,OAAO,MAAMR,EAAMG,GAAQjB,CAAC,CAAC,MAAG,IAAM;CAChD;CACA,OAAOqB;AACT;AAOA,SAAgBG,EACd,GACA,IAAqD1C,GAC9B;CACvB,IAAM2C,IAA6B,CAAC;CACpC,KAAK,IAAM,CAACC,GAAKP,MAAU,OAAO,QAAQQ,CAAQ,GAAG;EACnD,IAAIR,MAAU,KAAA,GAAW;EACzB,IAAMS,IAAOC,EAAQH;EACrB,IAAIE,MAAS,KAAA,GAAW;GACtB,EAAI,KAAK;IAAE,SAASF;IAAK;IAAO,SAAS,KAAA;IAAW,QAAQ;GAAkB,CAAC;GAC/E;EACF;EACA,IAAIE,EAAK,SAAS5C,CAAc,GAAG;EACnC,IAAM8C,IAAKd,EAAeY,GAAMT,CAAK;EACrC,AAAIW,MAAO,OAAML,EAAI,KAAK;GAAE,SAASC;GAAK;GAAO,SAASE;GAAM,QAAQ;EAAgB,CAAC,IAC/EE,KAAIL,EAAI,KAAK;GAAE,SAASC;GAAK;GAAO,SAASE;GAAM,QAAQ;EAAc,CAAC;CACtF;CACA,OAAOH;AACT"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { STANDARD_SLOTS as e, isCustomEntry as t } from "./layerSlots.js";
|
|
2
|
+
//#region src/canvas/layerOrder.ts
|
|
3
|
+
var n = new Set(e);
|
|
4
|
+
function r(r, i, a, o) {
|
|
5
|
+
let s = /* @__PURE__ */ new Map(), c = /* @__PURE__ */ new Map(), l = [], u = /* @__PURE__ */ new Set();
|
|
6
|
+
for (let [e, i] of Object.entries(r)) if (!n.has(e) && t(i)) {
|
|
7
|
+
if (u.add(e), i.after) {
|
|
8
|
+
let t = s.get(i.after) ?? [];
|
|
9
|
+
t.push({
|
|
10
|
+
key: e,
|
|
11
|
+
layer: i.layer
|
|
12
|
+
}), s.set(i.after, t);
|
|
13
|
+
} else if (i.before) {
|
|
14
|
+
let t = c.get(i.before) ?? [];
|
|
15
|
+
t.push({
|
|
16
|
+
key: e,
|
|
17
|
+
layer: i.layer
|
|
18
|
+
}), c.set(i.before, t);
|
|
19
|
+
} else l.push({
|
|
20
|
+
key: e,
|
|
21
|
+
layer: i.layer
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
let d = /* @__PURE__ */ new Set(), f = o ? [o] : [];
|
|
25
|
+
function p(e) {
|
|
26
|
+
if (d.has(e.key)) {
|
|
27
|
+
console.warn(`composeOrderedLayers: cycle detected involving custom layer "${e.key}"`);
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
d.add(e.key), h(e.key), f.push(e.layer), m(e.key);
|
|
31
|
+
}
|
|
32
|
+
function m(e) {
|
|
33
|
+
for (let t of s.get(e) ?? []) p(t);
|
|
34
|
+
}
|
|
35
|
+
function h(e) {
|
|
36
|
+
for (let t of c.get(e) ?? []) p(t);
|
|
37
|
+
}
|
|
38
|
+
for (let t of e) {
|
|
39
|
+
if (t === "scene" && a) {
|
|
40
|
+
h("scene");
|
|
41
|
+
for (let e of a) h(e.key), f.push(e.layer), m(e.key);
|
|
42
|
+
m("scene");
|
|
43
|
+
continue;
|
|
44
|
+
}
|
|
45
|
+
h(t);
|
|
46
|
+
let e = i[t];
|
|
47
|
+
e && f.push(e), m(t);
|
|
48
|
+
}
|
|
49
|
+
for (let e of l) d.has(e.key) || (d.add(e.key), f.push(e.layer));
|
|
50
|
+
for (let e of u) {
|
|
51
|
+
if (d.has(e)) continue;
|
|
52
|
+
let n = r[e];
|
|
53
|
+
if (!t(n)) continue;
|
|
54
|
+
let i = n.after ?? n.before;
|
|
55
|
+
console.warn(`composeOrderedLayers: dangling reference "${i}" from custom layer "${e}" — falling back to tail`), d.add(e), f.push(n.layer);
|
|
56
|
+
}
|
|
57
|
+
return f;
|
|
58
|
+
}
|
|
59
|
+
function i(e, t, n) {
|
|
60
|
+
let r = n("before-selection"), i = n("after-selection"), a = t ? e.indexOf(t) : -1;
|
|
61
|
+
return a >= 0 ? (e.splice(a + 1, 0, ...i), e.splice(a, 0, ...r)) : e.push(...r, ...i), e.push(...n("top")), e;
|
|
62
|
+
}
|
|
63
|
+
//#endregion
|
|
64
|
+
export { r as composeOrderedLayers, i as placeToolOverlays };
|
|
65
|
+
|
|
66
|
+
//# sourceMappingURL=layerOrder.js.map
|