@weasel-js/core 1.9.3 → 1.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1106 -0
- package/README.md +7 -5
- package/dist/WeaselProvider.js +5 -7
- package/dist/WeaselProvider.js.map +1 -1
- package/dist/affordances/composeAffordanceLayer.js +91 -93
- package/dist/affordances/composeAffordanceLayer.js.map +1 -1
- package/dist/affordances/cornerResize.js +27 -18
- package/dist/affordances/cornerResize.js.map +1 -1
- package/dist/affordances/hitAffordanceRegions.js +65 -104
- package/dist/affordances/hitAffordanceRegions.js.map +1 -1
- package/dist/affordances/pathAnchors.js.map +1 -1
- package/dist/affordances/rotationHandle.js +22 -21
- package/dist/affordances/rotationHandle.js.map +1 -1
- package/dist/animation/behaviors/coast.js +21 -0
- package/dist/animation/behaviors/coast.js.map +1 -0
- package/dist/animation/behaviors/coastByWrite.js +107 -0
- package/dist/animation/behaviors/coastByWrite.js.map +1 -0
- package/dist/animation/behaviors/coastOnTargets.js +94 -0
- package/dist/animation/behaviors/coastOnTargets.js.map +1 -0
- package/dist/animation/behaviors/momentum.js +38 -88
- package/dist/animation/behaviors/momentum.js.map +1 -1
- package/dist/animation/clipTargets.js +12 -0
- package/dist/animation/clipTargets.js.map +1 -0
- package/dist/animation/index.js +15 -20
- package/dist/animation/poseHelpers.js +112 -33
- package/dist/animation/poseHelpers.js.map +1 -1
- package/dist/animation/poseTarget.js +115 -0
- package/dist/animation/poseTarget.js.map +1 -0
- package/dist/animation/reflow.js +113 -83
- package/dist/animation/reflow.js.map +1 -1
- package/dist/animation/rewind.js +66 -0
- package/dist/animation/rewind.js.map +1 -0
- package/dist/animation/rig/bindRig.js +85 -53
- package/dist/animation/rig/bindRig.js.map +1 -1
- package/dist/animation/rig/rigNode.js +93 -0
- package/dist/animation/rig/rigNode.js.map +1 -0
- package/dist/animation/rig/rigSeat.js +26 -0
- package/dist/animation/rig/rigSeat.js.map +1 -0
- package/dist/animation/rig/skinBinding.js +56 -0
- package/dist/animation/rig/skinBinding.js.map +1 -0
- package/dist/animation/rig/useRig.js +31 -16
- package/dist/animation/rig/useRig.js.map +1 -1
- package/dist/animation/wrappers/animateLifecycle.js +32 -24
- package/dist/animation/wrappers/animateLifecycle.js.map +1 -1
- package/dist/animation/wrappers/animateOnSetPose.js +31 -29
- package/dist/animation/wrappers/animateOnSetPose.js.map +1 -1
- package/dist/animation/wrappers/instantPose.js +13 -0
- package/dist/animation/wrappers/instantPose.js.map +1 -0
- package/dist/animation/writtenPoseTarget.js +33 -0
- package/dist/animation/writtenPoseTarget.js.map +1 -0
- package/dist/{autoPoseDescriptor-vCdt55xm.d.ts → autoPoseDescriptor-DHg5KqaJ.d.ts} +1 -1
- package/dist/barrel/canvas.js +31 -0
- package/dist/barrel/chrome.js +16 -0
- package/dist/barrel/input.js +18 -0
- package/dist/barrel/interactions.js +38 -0
- package/dist/barrel/paint.js +11 -0
- package/dist/barrel/paths.js +12 -0
- package/dist/barrel/renderer.js +14 -0
- package/dist/barrel/routing.js +57 -0
- package/dist/barrel/scene.js +37 -0
- package/dist/barrel/text.js +9 -0
- package/dist/barrel/viewport.js +42 -0
- package/dist/canvas/Canvas.js +280 -559
- package/dist/canvas/Canvas.js.map +1 -1
- package/dist/canvas/CanvasView.js +147 -167
- package/dist/canvas/CanvasView.js.map +1 -1
- package/dist/canvas/CursorCoordsHud.js +53 -49
- package/dist/canvas/CursorCoordsHud.js.map +1 -1
- package/dist/canvas/DrawCanvas.js +40 -51
- package/dist/canvas/DrawCanvas.js.map +1 -1
- package/dist/canvas/ModalityHud.js.map +1 -1
- package/dist/canvas/NodeShape.js +55 -374
- package/dist/canvas/NodeShape.js.map +1 -1
- package/dist/canvas/PickHud.js +50 -47
- package/dist/canvas/PickHud.js.map +1 -1
- package/dist/canvas/SceneCanvas/DevHuds.js +40 -0
- package/dist/canvas/SceneCanvas/DevHuds.js.map +1 -0
- package/dist/canvas/SceneCanvas/GestureDispatcherMounter.js +126 -0
- package/dist/canvas/SceneCanvas/GestureDispatcherMounter.js.map +1 -0
- package/dist/canvas/SceneCanvas/PointerProviderIfRoot.js +27 -31
- package/dist/canvas/SceneCanvas/PointerProviderIfRoot.js.map +1 -1
- package/dist/canvas/SceneCanvas/StandardActionsRegistrar.js +64 -0
- package/dist/canvas/SceneCanvas/StandardActionsRegistrar.js.map +1 -0
- package/dist/canvas/SceneCanvas/ToolKeybindingsMounter.js +16 -0
- package/dist/canvas/SceneCanvas/ToolKeybindingsMounter.js.map +1 -0
- package/dist/canvas/SceneCanvas/coordTrace.js +46 -0
- package/dist/canvas/SceneCanvas/coordTrace.js.map +1 -0
- package/dist/canvas/SceneCanvas/defaultNodeProperties.js +138 -85
- package/dist/canvas/SceneCanvas/defaultNodeProperties.js.map +1 -1
- package/dist/canvas/SceneCanvas/defaultNodeRouting.js +9 -8
- package/dist/canvas/SceneCanvas/defaultNodeRouting.js.map +1 -1
- package/dist/canvas/SceneCanvas/dispatcherGestureBounds.js.map +1 -1
- package/dist/canvas/SceneCanvas/features.js +74 -43
- package/dist/canvas/SceneCanvas/features.js.map +1 -1
- package/dist/canvas/SceneCanvas/isDev.js +12 -0
- package/dist/canvas/SceneCanvas/isDev.js.map +1 -0
- package/dist/canvas/SceneCanvas/poseGeometry.js +31 -34
- package/dist/canvas/SceneCanvas/poseGeometry.js.map +1 -1
- package/dist/canvas/SceneCanvas/poseRegistrars.js +13 -0
- package/dist/canvas/SceneCanvas/poseRegistrars.js.map +1 -0
- package/dist/canvas/SceneCanvas/props.js +39 -0
- package/dist/canvas/SceneCanvas/props.js.map +1 -0
- package/dist/canvas/SceneCanvas/toolRegistry.js +23 -0
- package/dist/canvas/SceneCanvas/toolRegistry.js.map +1 -0
- package/dist/canvas/SceneCanvas/useActionsPropResolver.js +6 -1
- package/dist/canvas/SceneCanvas/useActionsPropResolver.js.map +1 -1
- package/dist/canvas/SceneCanvas/useBuiltinShapeTools.js +21 -62
- package/dist/canvas/SceneCanvas/useBuiltinShapeTools.js.map +1 -1
- package/dist/canvas/SceneCanvas/useBuiltinTools.js +21 -0
- package/dist/canvas/SceneCanvas/useBuiltinTools.js.map +1 -0
- package/dist/canvas/SceneCanvas/useCanvasCamera.js +38 -0
- package/dist/canvas/SceneCanvas/useCanvasCamera.js.map +1 -0
- package/dist/canvas/SceneCanvas/useCanvasDispatcher.js +20 -0
- package/dist/canvas/SceneCanvas/useCanvasDispatcher.js.map +1 -0
- package/dist/canvas/SceneCanvas/useCanvasSelection.js +16 -0
- package/dist/canvas/SceneCanvas/useCanvasSelection.js.map +1 -0
- package/dist/canvas/SceneCanvas/useCanvasTools.js +67 -0
- package/dist/canvas/SceneCanvas/useCanvasTools.js.map +1 -0
- package/dist/canvas/SceneCanvas/useDispatcherOverlayLayer.js +29 -29
- package/dist/canvas/SceneCanvas/useDispatcherOverlayLayer.js.map +1 -1
- package/dist/canvas/SceneCanvas/useHeldModifiers.js +20 -0
- package/dist/canvas/SceneCanvas/useHeldModifiers.js.map +1 -0
- package/dist/canvas/SceneCanvas/useNodeAtPoint.js +26 -0
- package/dist/canvas/SceneCanvas/useNodeAtPoint.js.map +1 -0
- package/dist/canvas/SceneCanvas/useNodeKinds.js +26 -0
- package/dist/canvas/SceneCanvas/useNodeKinds.js.map +1 -0
- package/dist/canvas/SceneCanvas/usePreviewGhostLayer.js +48 -48
- package/dist/canvas/SceneCanvas/usePreviewGhostLayer.js.map +1 -1
- package/dist/canvas/SceneCanvas/useSceneCanvasHandle.js +47 -0
- package/dist/canvas/SceneCanvas/useSceneCanvasHandle.js.map +1 -0
- package/dist/canvas/SceneCanvas/useSceneCanvasLayers.js +66 -0
- package/dist/canvas/SceneCanvas/useSceneCanvasLayers.js.map +1 -0
- package/dist/canvas/SceneCanvas/useSceneChrome.js +59 -0
- package/dist/canvas/SceneCanvas/useSceneChrome.js.map +1 -0
- package/dist/canvas/SceneCanvas/useSceneRedrawSources.js +23 -0
- package/dist/canvas/SceneCanvas/useSceneRedrawSources.js.map +1 -0
- package/dist/canvas/SceneCanvas/useSceneSelectTool.js +74 -78
- package/dist/canvas/SceneCanvas/useSceneSelectTool.js.map +1 -1
- package/dist/canvas/SceneCanvas/useSceneSlotLayers.js +37 -0
- package/dist/canvas/SceneCanvas/useSceneSlotLayers.js.map +1 -0
- package/dist/canvas/SceneCanvas/useSelectionOverlayLayer.js +38 -0
- package/dist/canvas/SceneCanvas/useSelectionOverlayLayer.js.map +1 -0
- package/dist/canvas/SceneCanvas/useViewLayerGate.js +20 -0
- package/dist/canvas/SceneCanvas/useViewLayerGate.js.map +1 -0
- package/dist/canvas/SceneCanvas/useViewportActions.js +9 -1
- package/dist/canvas/SceneCanvas/useViewportActions.js.map +1 -1
- package/dist/canvas/SceneCanvas/worldPointAt.js +9 -0
- package/dist/canvas/SceneCanvas/worldPointAt.js.map +1 -0
- package/dist/canvas/SceneCanvas.js +311 -969
- package/dist/canvas/SceneCanvas.js.map +1 -1
- package/dist/canvas/SceneViewCanvas.js +42 -46
- package/dist/canvas/SceneViewCanvas.js.map +1 -1
- package/dist/canvas/adapterDerivedPath.js +26 -0
- package/dist/canvas/adapterDerivedPath.js.map +1 -0
- package/dist/canvas/affordanceAt.js +11 -1
- package/dist/canvas/affordanceAt.js.map +1 -1
- package/dist/canvas/buildSceneLayer.js +111 -0
- package/dist/canvas/buildSceneLayer.js.map +1 -0
- package/dist/canvas/buildSceneTree.js +16 -19
- package/dist/canvas/buildSceneTree.js.map +1 -1
- package/dist/canvas/canvasRenderer.js +67 -55
- package/dist/canvas/canvasRenderer.js.map +1 -1
- package/dist/canvas/colorOverrides.js.map +1 -1
- package/dist/canvas/defaultDrawOne.js +12 -12
- package/dist/canvas/defaultDrawOne.js.map +1 -1
- package/dist/canvas/deps/areaSelect.js +4 -4
- package/dist/canvas/deps/areaSelect.js.map +1 -1
- package/dist/canvas/deps/changes.js +13 -0
- package/dist/canvas/deps/changes.js.map +1 -0
- package/dist/canvas/deps/debug.js.map +1 -1
- package/dist/canvas/deps/editAnchors.js +38 -57
- package/dist/canvas/deps/editAnchors.js.map +1 -1
- package/dist/canvas/deps/geometryProjection.js.map +1 -1
- package/dist/canvas/deps/hitTestArea.js +31 -26
- package/dist/canvas/deps/hitTestArea.js.map +1 -1
- package/dist/canvas/deps/insert.js +130 -91
- package/dist/canvas/deps/insert.js.map +1 -1
- package/dist/canvas/deps/lassoSelect.js +5 -5
- package/dist/canvas/deps/lassoSelect.js.map +1 -1
- package/dist/canvas/deps/poseDescriptor.js +1 -1
- package/dist/canvas/deps/poseDescriptor.js.map +1 -1
- package/dist/canvas/deps/resizePolicy.js.map +1 -1
- package/dist/canvas/deps/slice.js +26 -26
- package/dist/canvas/deps/slice.js.map +1 -1
- package/dist/canvas/deps/textEdit.js +6 -5
- package/dist/canvas/deps/textEdit.js.map +1 -1
- package/dist/canvas/deps/view.js.map +1 -1
- package/dist/canvas/derivedPath.js +47 -22
- package/dist/canvas/derivedPath.js.map +1 -1
- package/dist/canvas/drawEnvelope.js +8 -4
- package/dist/canvas/drawEnvelope.js.map +1 -1
- package/dist/canvas/getNodeAtPoint.js +4 -8
- package/dist/canvas/getNodeAtPoint.js.map +1 -1
- package/dist/canvas/hud.module.js +1 -1
- package/dist/canvas/hud.module.js.map +1 -1
- package/dist/canvas/insertPreviewExtent.js.map +1 -1
- package/dist/canvas/kitRequirements.js +2 -2
- package/dist/canvas/kitRequirements.js.map +1 -1
- package/dist/canvas/layerOrder.js +13 -6
- package/dist/canvas/layerOrder.js.map +1 -1
- package/dist/canvas/layerSlots.js +6 -1
- package/dist/canvas/layerSlots.js.map +1 -1
- package/dist/canvas/nodeShapes/derivedPainter.js +34 -0
- package/dist/canvas/nodeShapes/derivedPainter.js.map +1 -0
- package/dist/canvas/nodeShapes/imagePainter.js +87 -0
- package/dist/canvas/nodeShapes/imagePainter.js.map +1 -0
- package/dist/canvas/nodeShapes/memo.js +9 -0
- package/dist/canvas/nodeShapes/memo.js.map +1 -0
- package/dist/canvas/nodeShapes/nodePaint.js +68 -0
- package/dist/canvas/nodeShapes/nodePaint.js.map +1 -0
- package/dist/canvas/nodeShapes/pathPainter.js +39 -0
- package/dist/canvas/nodeShapes/pathPainter.js.map +1 -0
- package/dist/canvas/nodeShapes/poseBox.js +20 -0
- package/dist/canvas/nodeShapes/poseBox.js.map +1 -0
- package/dist/canvas/nodeShapes/rectFallbackPainter.js +38 -0
- package/dist/canvas/nodeShapes/rectFallbackPainter.js.map +1 -0
- package/dist/canvas/nodeShapes/shapePainter.js +72 -0
- package/dist/canvas/nodeShapes/shapePainter.js.map +1 -0
- package/dist/canvas/nodeShapes/textPainter.js +55 -0
- package/dist/canvas/nodeShapes/textPainter.js.map +1 -0
- package/dist/canvas/overlayRoleStrokes.js.map +1 -1
- package/dist/canvas/paintCull.js +11 -14
- package/dist/canvas/paintCull.js.map +1 -1
- package/dist/{features/cursor → canvas}/paintedCursorLayer.js +2 -2
- package/dist/canvas/paintedCursorLayer.js.map +1 -0
- package/dist/canvas/pickWalk.js +59 -68
- package/dist/canvas/pickWalk.js.map +1 -1
- package/dist/canvas/planeClips.js +18 -19
- package/dist/canvas/planeClips.js.map +1 -1
- package/dist/canvas/poseCascade.js +41 -0
- package/dist/canvas/poseCascade.js.map +1 -0
- package/dist/canvas/poseRotation.js +9 -23
- package/dist/canvas/poseRotation.js.map +1 -1
- package/dist/canvas/rasterReadback.js +22 -0
- package/dist/canvas/rasterReadback.js.map +1 -0
- package/dist/canvas/renderDebugSnapshot.js +11 -11
- package/dist/canvas/renderDebugSnapshot.js.map +1 -1
- package/dist/canvas/renderNeeds.js +3 -3
- package/dist/canvas/renderNeeds.js.map +1 -1
- package/dist/canvas/renderSceneToPixels.js +64 -81
- package/dist/canvas/renderSceneToPixels.js.map +1 -1
- package/dist/canvas/sceneAdapter.js +68 -214
- package/dist/canvas/sceneAdapter.js.map +1 -1
- package/dist/canvas/sceneClipboard.js +112 -0
- package/dist/canvas/sceneClipboard.js.map +1 -0
- package/dist/canvas/sceneLayerPaint.js +4 -4
- package/dist/canvas/sceneLayerPaint.js.map +1 -1
- package/dist/canvas/sceneSlotWiring.js.map +1 -1
- package/dist/canvas/sceneViewRender.js +39 -39
- package/dist/canvas/sceneViewRender.js.map +1 -1
- package/dist/canvas/slopsDebugLayer.js +4 -4
- package/dist/canvas/slopsDebugLayer.js.map +1 -1
- package/dist/canvas/surface.module.js +6 -0
- package/dist/canvas/surface.module.js.map +1 -0
- package/dist/canvas/surfaceBox.js +16 -0
- package/dist/canvas/surfaceBox.js.map +1 -0
- package/dist/canvas/useCanvasRenderer.js +26 -6
- package/dist/canvas/useCanvasRenderer.js.map +1 -1
- package/dist/canvas/useCanvasSurface.js +31 -0
- package/dist/canvas/useCanvasSurface.js.map +1 -0
- package/dist/canvas/useCanvasView.js +67 -0
- package/dist/canvas/useCanvasView.js.map +1 -0
- package/dist/canvas/useFrameLoop.js +39 -31
- package/dist/canvas/useFrameLoop.js.map +1 -1
- package/dist/canvas/useHostAnchor.js +35 -33
- package/dist/canvas/useHostAnchor.js.map +1 -1
- package/dist/canvas/useLateContentRedraw.js +8 -8
- package/dist/canvas/useLateContentRedraw.js.map +1 -1
- package/dist/canvas/useSceneLayerList.js +11 -0
- package/dist/canvas/useSceneLayerList.js.map +1 -0
- package/dist/canvas/useSurfaceInput.js +42 -0
- package/dist/canvas/useSurfaceInput.js.map +1 -0
- package/dist/canvas/useToolCursor.js +29 -0
- package/dist/canvas/useToolCursor.js.map +1 -0
- package/dist/canvas/useViewHelpers.js +46 -85
- package/dist/canvas/useViewHelpers.js.map +1 -1
- package/dist/canvas/viewInputs.js.map +1 -1
- package/dist/canvas/viewRegistry.js +25 -27
- package/dist/canvas/viewRegistry.js.map +1 -1
- package/dist/canvas/watchElementMove.js +43 -0
- package/dist/canvas/watchElementMove.js.map +1 -0
- package/dist/canvas/wrapNodeOutput.js.map +1 -1
- package/dist/clipboard.d.ts +16 -19
- package/dist/{types-B_9g6hMM.d.ts → clone-2a5hVbBd.d.ts} +123 -74
- package/dist/clone.d.ts +4 -7
- package/dist/clone.js +0 -2
- package/dist/core/device/index.js +5 -4
- package/dist/core/device/targets.js.map +1 -1
- package/dist/core/device/useDeviceProfile.js +38 -44
- package/dist/core/device/useDeviceProfile.js.map +1 -1
- package/dist/core/device/watchDevicePixelRatio.js +17 -0
- package/dist/core/device/watchDevicePixelRatio.js.map +1 -0
- package/dist/{interactions/actions/resize → core/geometry}/autoPoseDescriptor.js +8 -7
- package/dist/core/geometry/autoPoseDescriptor.js.map +1 -0
- package/dist/core/geometry/pathPoseDescriptor.js +88 -0
- package/dist/core/geometry/pathPoseDescriptor.js.map +1 -0
- package/dist/core/geometry/poseDescriptor.js +68 -19
- package/dist/core/geometry/poseDescriptor.js.map +1 -1
- package/dist/core/geometry/regionHit.js +31 -34
- package/dist/core/geometry/regionHit.js.map +1 -1
- package/dist/core/geometry/targetFrame.js +94 -0
- package/dist/core/geometry/targetFrame.js.map +1 -0
- package/dist/core/geometry/unionBounds.js +30 -29
- package/dist/core/geometry/unionBounds.js.map +1 -1
- package/dist/core/isPlainObject.js +2 -11
- package/dist/core/layers/backgroundFill.js +31 -0
- package/dist/core/layers/backgroundFill.js.map +1 -0
- package/dist/{features/groups → core/layers}/children.js +1 -1
- package/dist/core/layers/children.js.map +1 -0
- package/dist/core/layers/gateLayer.js +13 -0
- package/dist/core/layers/gateLayer.js.map +1 -0
- package/dist/core/layers/layerGroup.js +40 -0
- package/dist/core/layers/layerGroup.js.map +1 -0
- package/dist/core/layers/render.js +50 -76
- package/dist/core/layers/render.js.map +1 -1
- package/dist/core/ops/arrange.js +1 -0
- package/dist/core/ops/arrange.js.map +1 -1
- package/dist/core/ops/create.js +10 -5
- package/dist/core/ops/create.js.map +1 -1
- package/dist/core/ops/createHistory.js +9 -9
- package/dist/core/ops/createHistory.js.map +1 -1
- package/dist/core/ops/delete.js +12 -24
- package/dist/core/ops/delete.js.map +1 -1
- package/dist/core/ops/reorder/index.js +43 -40
- package/dist/core/ops/reorder/index.js.map +1 -1
- package/dist/core/ops/reorder/setChildOrder.js +34 -0
- package/dist/core/ops/reorder/setChildOrder.js.map +1 -0
- package/dist/core/paint/meshKind.js +16 -0
- package/dist/core/paint/meshKind.js.map +1 -0
- package/dist/{features/meshPaint/lazyKind.js → core/paint/meshKindLazy.js} +282 -105
- package/dist/core/paint/meshKindLazy.js.map +1 -0
- package/dist/core/paint/paintKindEntry.js +8 -0
- package/dist/core/paint/paintKindEntry.js.map +1 -0
- package/dist/core/paint/paintKinds.js +144 -0
- package/dist/core/paint/paintKinds.js.map +1 -0
- package/dist/core/paint/registerMesh.js +7 -0
- package/dist/core/paint/registerMesh.js.map +1 -0
- package/dist/core/scene/NodeProperties.js.map +1 -1
- package/dist/core/scene/NodeRouting.js.map +1 -1
- package/dist/core/scene/appliedLog.js +37 -0
- package/dist/core/scene/appliedLog.js.map +1 -0
- package/dist/core/scene/arrivalWindow.js +102 -0
- package/dist/core/scene/arrivalWindow.js.map +1 -0
- package/dist/core/scene/boundOps.js +40 -0
- package/dist/core/scene/boundOps.js.map +1 -0
- package/dist/core/scene/composeFrame.js +9 -6
- package/dist/core/scene/composeFrame.js.map +1 -1
- package/dist/{features/groups → core/scene}/composePose.js +18 -18
- package/dist/core/scene/composePose.js.map +1 -0
- package/dist/core/scene/depMemo.js +31 -6
- package/dist/core/scene/depMemo.js.map +1 -1
- package/dist/core/scene/derivedPath.js +19 -20
- package/dist/core/scene/derivedPath.js.map +1 -1
- package/dist/core/scene/editMode.js +26 -0
- package/dist/core/scene/editMode.js.map +1 -0
- package/dist/core/scene/effectivePose.js +38 -39
- package/dist/core/scene/effectivePose.js.map +1 -1
- package/dist/core/scene/fieldEdits.js +98 -0
- package/dist/core/scene/fieldEdits.js.map +1 -0
- package/dist/core/scene/historyFacade.js +130 -0
- package/dist/core/scene/historyFacade.js.map +1 -0
- package/dist/core/scene/historyForm.js +6 -0
- package/dist/core/scene/historyForm.js.map +1 -0
- package/dist/core/scene/kitOps.js +185 -0
- package/dist/core/scene/kitOps.js.map +1 -0
- package/dist/core/scene/kitRegistry.js.map +1 -1
- package/dist/core/scene/layerStack.js +131 -0
- package/dist/core/scene/layerStack.js.map +1 -0
- package/dist/core/scene/layoutPass.js +58 -59
- package/dist/core/scene/layoutPass.js.map +1 -1
- package/dist/core/scene/lockGuard.js +37 -0
- package/dist/core/scene/lockGuard.js.map +1 -0
- package/dist/{features/groups → core/scene}/nestedHit.js +3 -3
- package/dist/core/scene/nestedHit.js.map +1 -0
- package/dist/core/scene/nodeFnFields.js +10 -11
- package/dist/core/scene/nodeFnFields.js.map +1 -1
- package/dist/core/scene/nodeMemo.js +45 -19
- package/dist/core/scene/nodeMemo.js.map +1 -1
- package/dist/core/scene/nodeStore.js +127 -0
- package/dist/core/scene/nodeStore.js.map +1 -0
- package/dist/core/scene/notifier.js +37 -0
- package/dist/core/scene/notifier.js.map +1 -0
- package/dist/core/scene/opTable.js +50 -0
- package/dist/core/scene/opTable.js.map +1 -0
- package/dist/core/scene/outerOps.js +66 -0
- package/dist/core/scene/outerOps.js.map +1 -0
- package/dist/core/scene/poseFeed.js +38 -38
- package/dist/core/scene/poseFeed.js.map +1 -1
- package/dist/core/scene/poseHold.js +39 -0
- package/dist/core/scene/poseHold.js.map +1 -0
- package/dist/core/scene/poseOverrides.js +44 -40
- package/dist/core/scene/poseOverrides.js.map +1 -1
- package/dist/core/scene/poseSnapshot.js.map +1 -1
- package/dist/core/scene/reconcileSpecs.js +3 -2
- package/dist/core/scene/reconcileSpecs.js.map +1 -1
- package/dist/core/scene/recorder.js +86 -0
- package/dist/core/scene/recorder.js.map +1 -0
- package/dist/core/scene/renderOrder.js +84 -0
- package/dist/core/scene/renderOrder.js.map +1 -0
- package/dist/core/scene/scene.js +80 -1266
- package/dist/core/scene/scene.js.map +1 -1
- package/dist/core/scene/sceneEdits.js +58 -0
- package/dist/core/scene/sceneEdits.js.map +1 -0
- package/dist/core/scene/sceneMutators.js +49 -0
- package/dist/core/scene/sceneMutators.js.map +1 -0
- package/dist/core/scene/scenePoseAdapter.js +16 -0
- package/dist/core/scene/scenePoseAdapter.js.map +1 -0
- package/dist/core/scene/sceneRecording.js +90 -0
- package/dist/core/scene/sceneRecording.js.map +1 -0
- package/dist/core/scene/sceneSelection.js +28 -0
- package/dist/core/scene/sceneSelection.js.map +1 -0
- package/dist/core/scene/sceneState.js +49 -0
- package/dist/core/scene/sceneState.js.map +1 -0
- package/dist/core/scene/serialization.js +71 -0
- package/dist/core/scene/serialization.js.map +1 -0
- package/dist/core/scene/staleReplay.js +51 -0
- package/dist/core/scene/staleReplay.js.map +1 -0
- package/dist/core/scene/statedFields.js +9 -0
- package/dist/core/scene/statedFields.js.map +1 -0
- package/dist/core/scene/treeEdits.js +127 -0
- package/dist/core/scene/treeEdits.js.map +1 -0
- package/dist/core/scene/treeOrder.js +13 -0
- package/dist/core/scene/treeOrder.js.map +1 -0
- package/dist/core/scene/treeReads.js +26 -0
- package/dist/core/scene/treeReads.js.map +1 -0
- package/dist/core/scene/types.js.map +1 -1
- package/dist/{features/groups → core/scene}/unionOfChildren.js +3 -3
- package/dist/core/scene/unionOfChildren.js.map +1 -0
- package/dist/core/scene/unitScopes.js +13 -0
- package/dist/core/scene/unitScopes.js.map +1 -0
- package/dist/core/scene/useScene.js.map +1 -1
- package/dist/core/selection/readOnlySelection.js +32 -0
- package/dist/core/selection/readOnlySelection.js.map +1 -0
- package/dist/core/selection/usePublishSceneSelection.js +26 -0
- package/dist/core/selection/usePublishSceneSelection.js.map +1 -0
- package/dist/core/selection/useSelection.js +34 -25
- package/dist/core/selection/useSelection.js.map +1 -1
- package/dist/core/shapeKinds.js.map +1 -1
- package/dist/core/stylus/stylus.js.map +1 -1
- package/dist/core/stylus/usePointerStylus.js.map +1 -1
- package/dist/core/usePaintKinds.js +1 -1
- package/dist/core/usePaintKinds.js.map +1 -1
- package/dist/core/viewport/clientToWorld.js.map +1 -1
- package/dist/core/viewport/fitViewToBounds.js.map +1 -1
- package/dist/core/viewport/parallax.js.map +1 -1
- package/dist/core/viewport/screenSlop.js +11 -11
- package/dist/core/viewport/screenSlop.js.map +1 -1
- package/dist/core/viewport/useCanvasSize.js.map +1 -1
- package/dist/core/viewport/useDecayLoop.js +8 -8
- package/dist/core/viewport/useDecayLoop.js.map +1 -1
- package/dist/core/viewport/useNodeOverlayFrame.js +84 -0
- package/dist/core/viewport/useNodeOverlayFrame.js.map +1 -0
- package/dist/core/viewport/useViewAnimation.js +102 -43
- package/dist/core/viewport/useViewAnimation.js.map +1 -1
- package/dist/core/viewport/view.js +9 -9
- package/dist/core/viewport/view.js.map +1 -1
- package/dist/core/viewport/wheelHandler.js.map +1 -1
- package/dist/core/viewport/zoomBounds.js +10 -8
- package/dist/core/viewport/zoomBounds.js.map +1 -1
- package/dist/{cornerHandles-BCrDp_mH.d.ts → cornerHandles-BEshc4z3.d.ts} +11 -24
- package/dist/debug/createDebugOverlayLayer.js +97 -97
- package/dist/debug/createDebugOverlayLayer.js.map +1 -1
- package/dist/debug/createDebugSink.js.map +1 -1
- package/dist/debug/flag.js +2 -41
- package/dist/debug/frameStats.js.map +1 -1
- package/dist/debug/useDebugSink.js +52 -0
- package/dist/debug/useDebugSink.js.map +1 -0
- package/dist/features/chrome-caps/buildChromeCtx.js.map +1 -1
- package/dist/features/chrome-caps/conditions.js.map +1 -1
- package/dist/features/chrome-caps/defaults.js.map +1 -1
- package/dist/features/chrome-caps/resolve.js.map +1 -1
- package/dist/features/chrome-caps/useChromeCaps.js +54 -0
- package/dist/features/chrome-caps/useChromeCaps.js.map +1 -0
- package/dist/features/chrome-caps/useHoverTracking.js +22 -17
- package/dist/features/chrome-caps/useHoverTracking.js.map +1 -1
- package/dist/features/ingestion/contentHandlers.js +28 -19
- package/dist/features/ingestion/contentHandlers.js.map +1 -1
- package/dist/features/ingestion/imageHandler.js +21 -24
- package/dist/features/ingestion/imageHandler.js.map +1 -1
- package/dist/features/ingestion/openFilePicker.js.map +1 -1
- package/dist/features/ingestion/placement.js +16 -0
- package/dist/features/ingestion/placement.js.map +1 -0
- package/dist/features/ingestion/registerKitHandlers.js +7 -7
- package/dist/features/ingestion/svgHandler.js +5 -0
- package/dist/features/ingestion/svgHandler.js.map +1 -1
- package/dist/features/ingestion/textHandler.js +28 -0
- package/dist/features/ingestion/textHandler.js.map +1 -0
- package/dist/features/ingestion/useCanvasIngestion.js +48 -0
- package/dist/features/ingestion/useCanvasIngestion.js.map +1 -0
- package/dist/features/ingestion/weaselJsonHandler.js +22 -14
- package/dist/features/ingestion/weaselJsonHandler.js.map +1 -1
- package/dist/features/longPress/longPressFeedback.js.map +1 -1
- package/dist/features/modes/modeLayers.js +7 -7
- package/dist/features/modes/modeLayers.js.map +1 -1
- package/dist/features/paths/editablePath.js +47 -0
- package/dist/features/paths/editablePath.js.map +1 -0
- package/dist/features/paths/index.js +9 -14
- package/dist/features/paths/pathEditState.js +41 -0
- package/dist/features/paths/pathEditState.js.map +1 -0
- package/dist/features/paths/pathEditingOverlayLayer.js +36 -38
- package/dist/features/paths/pathEditingOverlayLayer.js.map +1 -1
- package/dist/features/paths/pathLayer.js +3 -2
- package/dist/features/paths/pathLayer.js.map +1 -1
- package/dist/features/paths/penPreviewLayer.js +86 -88
- package/dist/features/paths/penPreviewLayer.js.map +1 -1
- package/dist/features/paths/usePathEdit.js +34 -0
- package/dist/features/paths/usePathEdit.js.map +1 -0
- package/dist/features/poseRun/usePoseRun.js +44 -52
- package/dist/features/poseRun/usePoseRun.js.map +1 -1
- package/dist/features/selection/overlay.js +171 -179
- package/dist/features/selection/overlay.js.map +1 -1
- package/dist/features/text/index.js +6 -0
- package/dist/features/text/textLayer.js +1 -1
- package/dist/features/text/textLayer.js.map +1 -1
- package/dist/features/text/useSceneTextEdit.js +100 -93
- package/dist/features/text/useSceneTextEdit.js.map +1 -1
- package/dist/features/viewports/viewportLayer.js +25 -36
- package/dist/features/viewports/viewportLayer.js.map +1 -1
- package/dist/index.d.ts +8473 -9141
- package/dist/index.js +269 -307
- package/dist/input/keyState.js +38 -39
- package/dist/input/keyState.js.map +1 -1
- package/dist/input/useKeyModifiers.js +11 -0
- package/dist/input/useKeyModifiers.js.map +1 -0
- package/dist/interactions/actions/actionShortcuts.js.map +1 -1
- package/dist/interactions/actions/{defaults/align.js → align/action.js} +18 -20
- package/dist/interactions/actions/align/action.js.map +1 -0
- package/dist/interactions/actions/align/align.js +20 -20
- package/dist/interactions/actions/align/align.js.map +1 -1
- package/dist/interactions/actions/booleans/action.js +65 -0
- package/dist/interactions/actions/booleans/action.js.map +1 -0
- package/dist/interactions/actions/booleans/booleans.js +69 -78
- package/dist/interactions/actions/booleans/booleans.js.map +1 -1
- package/dist/interactions/actions/booleans/operands.js +40 -0
- package/dist/interactions/actions/booleans/operands.js.map +1 -0
- package/dist/interactions/actions/booleans/pieces.js +45 -0
- package/dist/interactions/actions/booleans/pieces.js.map +1 -0
- package/dist/interactions/actions/booleans/placement.js +24 -0
- package/dist/interactions/actions/booleans/placement.js.map +1 -0
- package/dist/interactions/actions/booleans/useBooleans.js +11 -9
- package/dist/interactions/actions/booleans/useBooleans.js.map +1 -1
- package/dist/interactions/actions/booleans/useBooleansAdapter.js.map +1 -1
- package/dist/interactions/actions/{defaults/clipboard.js → clipboard/action.js} +31 -15
- package/dist/interactions/actions/clipboard/action.js.map +1 -0
- package/dist/interactions/actions/clipboard/clipboardOps.js +44 -42
- package/dist/interactions/actions/clipboard/clipboardOps.js.map +1 -1
- package/dist/interactions/actions/clipboard/materializePaste.js +10 -7
- package/dist/interactions/actions/clipboard/materializePaste.js.map +1 -1
- package/dist/interactions/actions/clipboard/wireFormat.js.map +1 -1
- package/dist/interactions/actions/clone/action.js +98 -0
- package/dist/interactions/actions/clone/action.js.map +1 -0
- package/dist/interactions/actions/clone/behaviors.js +52 -0
- package/dist/interactions/actions/clone/behaviors.js.map +1 -0
- package/dist/interactions/actions/defaultCommitAdapter.js +7 -32
- package/dist/interactions/actions/defaultCommitAdapter.js.map +1 -1
- package/dist/interactions/actions/defaults/anchorEditing.js +60 -84
- package/dist/interactions/actions/defaults/anchorEditing.js.map +1 -1
- package/dist/interactions/actions/defaults/areaSelect.js +35 -38
- package/dist/interactions/actions/defaults/areaSelect.js.map +1 -1
- package/dist/interactions/actions/defaults/cancelGesture.js.map +1 -1
- package/dist/interactions/actions/defaults/clearSelection.js.map +1 -1
- package/dist/interactions/actions/defaults/copySubtree.js +40 -0
- package/dist/interactions/actions/defaults/copySubtree.js.map +1 -0
- package/dist/interactions/actions/defaults/createPaintAction.js.map +1 -1
- package/dist/interactions/actions/defaults/delete.js.map +1 -1
- package/dist/interactions/actions/defaults/duplicate.js +13 -53
- package/dist/interactions/actions/defaults/duplicate.js.map +1 -1
- package/dist/interactions/actions/defaults/enterTextEdit.js.map +1 -1
- package/dist/interactions/actions/defaults/group.js +40 -50
- package/dist/interactions/actions/defaults/group.js.map +1 -1
- package/dist/interactions/actions/defaults/icons/booleanIcons.js +24 -1
- package/dist/interactions/actions/defaults/icons/booleanIcons.js.map +1 -1
- package/dist/interactions/actions/defaults/icons/outlineIcons.js +39 -1
- package/dist/interactions/actions/defaults/icons/outlineIcons.js.map +1 -1
- package/dist/interactions/actions/defaults/ingest.js +44 -38
- package/dist/interactions/actions/defaults/ingest.js.map +1 -1
- package/dist/interactions/actions/defaults/insertPathAnchor.js +11 -12
- package/dist/interactions/actions/defaults/insertPathAnchor.js.map +1 -1
- package/dist/interactions/actions/defaults/nudge.js +40 -69
- package/dist/interactions/actions/defaults/nudge.js.map +1 -1
- package/dist/interactions/actions/defaults/nudgeSteps.js +37 -0
- package/dist/interactions/actions/defaults/nudgeSteps.js.map +1 -0
- package/dist/interactions/actions/defaults/pinchZoom.js.map +1 -1
- package/dist/interactions/actions/defaults/reorder.js +2 -0
- package/dist/interactions/actions/defaults/reorder.js.map +1 -1
- package/dist/interactions/actions/defaults/requiresSelection.js.map +1 -1
- package/dist/interactions/actions/defaults/setFill.js +14 -8
- package/dist/interactions/actions/defaults/setFill.js.map +1 -1
- package/dist/interactions/actions/defaults/setFillOpacity.js +7 -4
- package/dist/interactions/actions/defaults/setFillOpacity.js.map +1 -1
- package/dist/interactions/actions/defaults/setStroke.js +12 -12
- package/dist/interactions/actions/defaults/setStroke.js.map +1 -1
- package/dist/interactions/actions/defaults/setStrokeOpacity.js +6 -6
- package/dist/interactions/actions/defaults/sliceOps.js +8 -10
- package/dist/interactions/actions/defaults/sliceOps.js.map +1 -1
- package/dist/interactions/actions/defaults/toolActivate.js.map +1 -1
- package/dist/interactions/actions/defaults/toolResetToDefault.js.map +1 -1
- package/dist/interactions/actions/defaults/viewportDragPan.js +37 -26
- package/dist/interactions/actions/defaults/viewportDragPan.js.map +1 -1
- package/dist/interactions/actions/defaults/viewportWheelPan.js.map +1 -1
- package/dist/interactions/actions/defaults/viewportZoom.js.map +1 -1
- package/dist/interactions/actions/distribute/action.js +66 -0
- package/dist/interactions/actions/distribute/action.js.map +1 -0
- package/dist/interactions/actions/distribute/distribute.js +11 -11
- package/dist/interactions/actions/distribute/distribute.js.map +1 -1
- package/dist/interactions/actions/{defaults/editAnchors.js → edit-anchors/action.js} +7 -9
- package/dist/interactions/actions/edit-anchors/action.js.map +1 -0
- package/dist/interactions/actions/edit-anchors/geometry.js +30 -27
- package/dist/interactions/actions/edit-anchors/geometry.js.map +1 -1
- package/dist/interactions/actions/flip/action.js +124 -0
- package/dist/interactions/actions/flip/action.js.map +1 -0
- package/dist/interactions/actions/flip/helpers.js +30 -17
- package/dist/interactions/actions/flip/helpers.js.map +1 -1
- package/dist/interactions/actions/gestureFrames.js +18 -0
- package/dist/interactions/actions/gestureFrames.js.map +1 -0
- package/dist/interactions/actions/gestureLifecycle.js +47 -20
- package/dist/interactions/actions/gestureLifecycle.js.map +1 -1
- package/dist/interactions/actions/hitSelection.js +8 -0
- package/dist/interactions/actions/hitSelection.js.map +1 -0
- package/dist/interactions/actions/insert/action.js +72 -0
- package/dist/interactions/actions/insert/action.js.map +1 -0
- package/dist/interactions/actions/insert/commit.js +28 -0
- package/dist/interactions/actions/insert/commit.js.map +1 -0
- package/dist/interactions/actions/insert/extras.js +65 -0
- package/dist/interactions/actions/insert/extras.js.map +1 -0
- package/dist/interactions/actions/insert/frame.js +48 -0
- package/dist/interactions/actions/insert/frame.js.map +1 -0
- package/dist/interactions/actions/insert/geometry.js +35 -0
- package/dist/interactions/actions/insert/geometry.js.map +1 -0
- package/dist/interactions/actions/insert/rotateAction.js +21 -0
- package/dist/interactions/actions/insert/rotateAction.js.map +1 -0
- package/dist/interactions/actions/insert/session.js +59 -0
- package/dist/interactions/actions/insert/session.js.map +1 -0
- package/dist/interactions/actions/insert/shape.js +34 -0
- package/dist/interactions/actions/insert/shape.js.map +1 -0
- package/dist/interactions/actions/lasso-select/action.js +143 -0
- package/dist/interactions/actions/lasso-select/action.js.map +1 -0
- package/dist/interactions/actions/lasso-select/behaviors/selectFromLasso.js +14 -18
- package/dist/interactions/actions/lasso-select/behaviors/selectFromLasso.js.map +1 -1
- package/dist/interactions/actions/move/action.js +87 -0
- package/dist/interactions/actions/move/action.js.map +1 -0
- package/dist/interactions/actions/move/behaviors/layoutDrop.js +51 -0
- package/dist/interactions/actions/move/behaviors/layoutDrop.js.map +1 -0
- package/dist/interactions/actions/move/behaviors/reparentOnDrop.js +15 -0
- package/dist/interactions/actions/move/behaviors/reparentOnDrop.js.map +1 -0
- package/dist/interactions/actions/move/behaviors/snapBackOrDelete.js +5 -5
- package/dist/interactions/actions/move/behaviors/snapBackOrDelete.js.map +1 -1
- package/dist/interactions/actions/move/behaviors/snapToContainer.js +39 -27
- package/dist/interactions/actions/move/behaviors/snapToContainer.js.map +1 -1
- package/dist/interactions/actions/move/capture.js +99 -0
- package/dist/interactions/actions/move/capture.js.map +1 -0
- package/dist/interactions/actions/move/commit/index.js +41 -0
- package/dist/interactions/actions/move/commit/index.js.map +1 -0
- package/dist/interactions/actions/move/commit/layoutDrop.js +44 -0
- package/dist/interactions/actions/move/commit/layoutDrop.js.map +1 -0
- package/dist/interactions/actions/move/commit/layoutRelease.js +100 -0
- package/dist/interactions/actions/move/commit/layoutRelease.js.map +1 -0
- package/dist/interactions/actions/move/commit/rebase.js +18 -0
- package/dist/interactions/actions/move/commit/rebase.js.map +1 -0
- package/dist/interactions/actions/move/commit/reparent.js +65 -0
- package/dist/interactions/actions/move/commit/reparent.js.map +1 -0
- package/dist/interactions/actions/move/delta.js +51 -0
- package/dist/interactions/actions/move/delta.js.map +1 -0
- package/dist/interactions/actions/move/frame.js +59 -0
- package/dist/interactions/actions/move/frame.js.map +1 -0
- package/dist/interactions/actions/move/gestureAdapter.js +22 -30
- package/dist/interactions/actions/move/gestureAdapter.js.map +1 -1
- package/dist/interactions/actions/move/landedDescendants.js +33 -0
- package/dist/interactions/actions/move/landedDescendants.js.map +1 -0
- package/dist/interactions/actions/move/layout/container.js +94 -0
- package/dist/interactions/actions/move/layout/container.js.map +1 -0
- package/dist/interactions/actions/move/layout/dragged.js +58 -0
- package/dist/interactions/actions/move/layout/dragged.js.map +1 -0
- package/dist/interactions/actions/move/layout/dropPass.js +122 -0
- package/dist/interactions/actions/move/layout/dropPass.js.map +1 -0
- package/dist/interactions/actions/move/layout/exits.js +38 -0
- package/dist/interactions/actions/move/layout/exits.js.map +1 -0
- package/dist/interactions/actions/move/layout/glide.js +48 -0
- package/dist/interactions/actions/move/layout/glide.js.map +1 -0
- package/dist/interactions/actions/move/session.js +63 -0
- package/dist/interactions/actions/move/session.js.map +1 -0
- package/dist/interactions/actions/move/translate.js +61 -0
- package/dist/interactions/actions/move/translate.js.map +1 -0
- package/dist/interactions/actions/outlines/createOutlines.js +16 -63
- package/dist/interactions/actions/outlines/createOutlines.js.map +1 -1
- package/dist/interactions/actions/outlines/createOutlinesAction.js +51 -0
- package/dist/interactions/actions/outlines/createOutlinesAction.js.map +1 -0
- package/dist/interactions/actions/outlines/outlineStroke.js +72 -0
- package/dist/interactions/actions/outlines/outlineStroke.js.map +1 -0
- package/dist/interactions/actions/outlines/outlineStrokeAction.js +37 -0
- package/dist/interactions/actions/outlines/outlineStrokeAction.js.map +1 -0
- package/dist/interactions/actions/outlines/replaceWithPaths.js +54 -0
- package/dist/interactions/actions/outlines/replaceWithPaths.js.map +1 -0
- package/dist/interactions/actions/outlines/strokeRegion.js +27 -0
- package/dist/interactions/actions/outlines/strokeRegion.js.map +1 -0
- package/dist/interactions/actions/planeInput.js.map +1 -1
- package/dist/interactions/actions/pointerState.js +12 -0
- package/dist/interactions/actions/pointerState.js.map +1 -0
- package/dist/interactions/actions/poseDescriptorDep.js +16 -4
- package/dist/interactions/actions/poseDescriptorDep.js.map +1 -1
- package/dist/interactions/actions/poseFrame.js +25 -20
- package/dist/interactions/actions/poseFrame.js.map +1 -1
- package/dist/interactions/actions/resize/action.js +55 -0
- package/dist/interactions/actions/resize/action.js.map +1 -0
- package/dist/interactions/actions/resize/behaviors/lockAspect.js.map +1 -1
- package/dist/interactions/actions/resize/boxFrame.js +16 -0
- package/dist/interactions/actions/resize/boxFrame.js.map +1 -0
- package/dist/interactions/actions/resize/capture.js +85 -0
- package/dist/interactions/actions/resize/capture.js.map +1 -0
- package/dist/interactions/actions/resize/commit.js +69 -0
- package/dist/interactions/actions/resize/commit.js.map +1 -0
- package/dist/interactions/actions/resize/frame.js +74 -0
- package/dist/interactions/actions/resize/frame.js.map +1 -0
- package/dist/interactions/actions/resize/pointSnap.js +111 -0
- package/dist/interactions/actions/resize/pointSnap.js.map +1 -0
- package/dist/interactions/actions/resize/ruleBounds.js +9 -0
- package/dist/interactions/actions/resize/ruleBounds.js.map +1 -0
- package/dist/interactions/actions/resize/session.js +49 -0
- package/dist/interactions/actions/resize/session.js.map +1 -0
- package/dist/interactions/actions/resolveOverlays.js.map +1 -1
- package/dist/interactions/actions/resolvePreviews.js.map +1 -1
- package/dist/interactions/actions/rotate/action.js +56 -0
- package/dist/interactions/actions/rotate/action.js.map +1 -0
- package/dist/interactions/actions/rotate/behaviors/index.js +7 -0
- package/dist/interactions/actions/rotate/behaviors/index.js.map +1 -0
- package/dist/interactions/actions/rotate/behaviors/snapRotation.js +12 -0
- package/dist/interactions/actions/rotate/behaviors/snapRotation.js.map +1 -0
- package/dist/interactions/actions/rotate/commit.js +40 -0
- package/dist/interactions/actions/rotate/commit.js.map +1 -0
- package/dist/interactions/actions/rotate/frame.js +65 -0
- package/dist/interactions/actions/rotate/frame.js.map +1 -0
- package/dist/interactions/actions/rotate/handle.js +12 -12
- package/dist/interactions/actions/rotate/handle.js.map +1 -1
- package/dist/interactions/actions/rotate/session.js +92 -0
- package/dist/interactions/actions/rotate/session.js.map +1 -0
- package/dist/interactions/actions/selectionSubtree.js +69 -0
- package/dist/interactions/actions/selectionSubtree.js.map +1 -0
- package/dist/interactions/actions/spatialReference.js.map +1 -1
- package/dist/interactions/actions/useStandardActions.js +87 -78
- package/dist/interactions/actions/useStandardActions.js.map +1 -1
- package/dist/interactions/gestures/dragGesture/dragGesture.js +4 -7
- package/dist/interactions/gestures/dragGesture/dragGesture.js.map +1 -1
- package/dist/interactions/gestures/dragGesture/dragPointOf.js +23 -0
- package/dist/interactions/gestures/dragGesture/dragPointOf.js.map +1 -0
- package/dist/interactions/gestures/handleDrag/handleDrag.js +21 -26
- package/dist/interactions/gestures/handleDrag/handleDrag.js.map +1 -1
- package/dist/interactions/gestures/pointerDrag/pointerDrag.js +62 -41
- package/dist/interactions/gestures/pointerDrag/pointerDrag.js.map +1 -1
- package/dist/interactions/gestures/shared/originProjection.js +1 -1
- package/dist/interactions/gestures/shared/originProjection.js.map +1 -1
- package/dist/interactions/gestures/shared/screenTolerance.js +8 -2
- package/dist/interactions/gestures/shared/screenTolerance.js.map +1 -1
- package/dist/interactions/gestures/shared/snap.js.map +1 -1
- package/dist/interactions/gestures/thresholdDrag/thresholdDrag.js +8 -4
- package/dist/interactions/gestures/thresholdDrag/thresholdDrag.js.map +1 -1
- package/dist/layout/arrivals.js +20 -23
- package/dist/layout/arrivals.js.map +1 -1
- package/dist/math-CYUjoyyU.d.ts +33 -0
- package/dist/math.d.ts +5 -3
- package/dist/math.js +6 -6
- package/dist/mesh.d.ts +4 -268
- package/dist/mesh.js +3 -7
- package/dist/move.d.ts +14 -11
- package/dist/{originProjection-DEklpDc_.d.ts → originProjection-PPT88jZv.d.ts} +1 -1
- package/dist/patterns-builtin.d.ts +1 -118
- package/dist/patterns-builtin.js +2 -3
- package/dist/{poseDescriptor-D-OH-tu5.d.ts → poseDescriptor-Bqk-11Rl.d.ts} +26 -36
- package/dist/renderer.d.ts +1 -91
- package/dist/renderer.js +2 -18
- package/dist/resize.d.ts +10 -22
- package/dist/resize.js +6 -6
- package/dist/style.css +1 -1
- package/dist/test-hook/install.js +12 -6
- package/dist/test-hook/install.js.map +1 -1
- package/dist/test-hook/useTestHook.js +22 -0
- package/dist/test-hook/useTestHook.js.map +1 -0
- package/dist/test-seams-D0pyV3pR.d.ts +149 -0
- package/dist/test-seams.d.ts +4 -4
- package/dist/test-seams.js +2 -2
- package/dist/tools/builtin/bone/boneActions.js +130 -0
- package/dist/tools/builtin/bone/boneActions.js.map +1 -0
- package/dist/tools/builtin/bone/boneOverlay.js +58 -0
- package/dist/tools/builtin/bone/boneOverlay.js.map +1 -0
- package/dist/tools/builtin/bone/placedRig.js +24 -0
- package/dist/tools/builtin/bone/placedRig.js.map +1 -0
- package/dist/tools/builtin/bone/rigEditState.js +21 -0
- package/dist/tools/builtin/bone/rigEditState.js.map +1 -0
- package/dist/tools/builtin/bone/useBoneTool.js +98 -0
- package/dist/tools/builtin/bone/useBoneTool.js.map +1 -0
- package/dist/tools/builtin/ellipse/useEllipseTool.js +1 -0
- package/dist/tools/builtin/ellipse/useEllipseTool.js.map +1 -1
- package/dist/tools/builtin/eyedropper/useEyedropperTool.js.map +1 -1
- package/dist/tools/builtin/hand/useHandTool.js +1 -0
- package/dist/tools/builtin/hand/useHandTool.js.map +1 -1
- package/dist/tools/builtin/image/useImageTool.js.map +1 -1
- package/dist/tools/builtin/lasso/useLassoTool.js +11 -11
- package/dist/tools/builtin/lasso/useLassoTool.js.map +1 -1
- package/dist/tools/builtin/line/useLineTool.js +1 -0
- package/dist/tools/builtin/line/useLineTool.js.map +1 -1
- package/dist/tools/builtin/pen/usePenTool.js +198 -150
- package/dist/tools/builtin/pen/usePenTool.js.map +1 -1
- package/dist/tools/builtin/pencil/usePencilTool.js +1 -0
- package/dist/tools/builtin/pencil/usePencilTool.js.map +1 -1
- package/dist/tools/builtin/pickTopMostHit.js.map +1 -1
- package/dist/tools/builtin/polygon/usePolygonTool.js +13 -8
- package/dist/tools/builtin/polygon/usePolygonTool.js.map +1 -1
- package/dist/tools/builtin/rect/useRectTool.js +1 -0
- package/dist/tools/builtin/rect/useRectTool.js.map +1 -1
- package/dist/tools/builtin/select/adapterPointQuery.js +36 -0
- package/dist/tools/builtin/select/adapterPointQuery.js.map +1 -0
- package/dist/tools/builtin/select/selectionContributions.js +25 -24
- package/dist/tools/builtin/select/selectionContributions.js.map +1 -1
- package/dist/tools/builtin/select/useSelectTool.js +42 -67
- package/dist/tools/builtin/select/useSelectTool.js.map +1 -1
- package/dist/tools/builtin/shared/pointerFollower.js +17 -0
- package/dist/tools/builtin/shared/pointerFollower.js.map +1 -0
- package/dist/tools/builtin/slice/useSliceTool.js +72 -82
- package/dist/tools/builtin/slice/useSliceTool.js.map +1 -1
- package/dist/tools/builtin/star/useStarTool.js +22 -16
- package/dist/tools/builtin/star/useStarTool.js.map +1 -1
- package/dist/tools/builtin/text/useTextTool.js +9 -0
- package/dist/tools/builtin/text/useTextTool.js.map +1 -1
- package/dist/tools/builtin/weight/useWeightTool.js +77 -0
- package/dist/tools/builtin/weight/useWeightTool.js.map +1 -0
- package/dist/tools/builtin/weight/weightActions.js +112 -0
- package/dist/tools/builtin/weight/weightActions.js.map +1 -0
- package/dist/tools/builtin/weight/weightOverlay.js +61 -0
- package/dist/tools/builtin/weight/weightOverlay.js.map +1 -0
- package/dist/tools/overlayBinding.js.map +1 -1
- package/dist/tools/useKeybindings.js +12 -22
- package/dist/tools/useKeybindings.js.map +1 -1
- package/dist/{types-A37hYkeR.d.ts → types-CIKDwlsP.d.ts} +113 -169
- package/dist/util/color.js +3 -3
- package/dist/util/color.js.map +1 -1
- package/dist/util/paint.js +1 -1
- package/dist/util/paint.js.map +1 -1
- package/dist/version.js +1 -1
- package/package.json +28 -21
- package/dist/animation/colorHelpers.js +0 -135
- package/dist/animation/colorHelpers.js.map +0 -1
- package/dist/animation/colorRegistry.js +0 -37
- package/dist/animation/colorRegistry.js.map +0 -1
- package/dist/animation/engine/axes.js +0 -36
- package/dist/animation/engine/axes.js.map +0 -1
- package/dist/animation/engine/codec.js +0 -170
- package/dist/animation/engine/codec.js.map +0 -1
- package/dist/animation/engine/integrator.js +0 -12
- package/dist/animation/engine/integrator.js.map +0 -1
- package/dist/animation/loop.js +0 -62
- package/dist/animation/loop.js.map +0 -1
- package/dist/animation/observe.js +0 -23
- package/dist/animation/observe.js.map +0 -1
- package/dist/animation/rig/blendPoses.js +0 -43
- package/dist/animation/rig/blendPoses.js.map +0 -1
- package/dist/animation/rig/mirrorPose.js +0 -19
- package/dist/animation/rig/mirrorPose.js.map +0 -1
- package/dist/animation/rig/resolveSkeleton.js +0 -33
- package/dist/animation/rig/resolveSkeleton.js.map +0 -1
- package/dist/animation/rig/solveIk.js +0 -103
- package/dist/animation/rig/solveIk.js.map +0 -1
- package/dist/animation/rig/types.js +0 -12
- package/dist/animation/rig/types.js.map +0 -1
- package/dist/animation/slew.js +0 -27
- package/dist/animation/slew.js.map +0 -1
- package/dist/animation/stagger.js +0 -138
- package/dist/animation/stagger.js.map +0 -1
- package/dist/animation/timeline/booking.js +0 -106
- package/dist/animation/timeline/booking.js.map +0 -1
- package/dist/animation/timeline/createTimeline.js +0 -116
- package/dist/animation/timeline/createTimeline.js.map +0 -1
- package/dist/animation/timeline/sampleTrack.js +0 -71
- package/dist/animation/timeline/sampleTrack.js.map +0 -1
- package/dist/animation/useAnimator.js +0 -378
- package/dist/animation/useAnimator.js.map +0 -1
- package/dist/builtins-C-VgUlWI.d.ts +0 -4514
- package/dist/canvas/MinimapCanvas.js +0 -139
- package/dist/canvas/MinimapCanvas.js.map +0 -1
- package/dist/canvas/deps/poseComposition.js +0 -11
- package/dist/canvas/deps/poseComposition.js.map +0 -1
- package/dist/canvas/minimapMath.js +0 -80
- package/dist/canvas/minimapMath.js.map +0 -1
- package/dist/canvas/toolPreview.js +0 -39
- package/dist/canvas/toolPreview.js.map +0 -1
- package/dist/core/adapters/arrayAdapter.js +0 -85
- package/dist/core/adapters/arrayAdapter.js.map +0 -1
- package/dist/core/adapters/useArrayAdapter.js +0 -13
- package/dist/core/adapters/useArrayAdapter.js.map +0 -1
- package/dist/core/fillInPoseFrame.js +0 -102
- package/dist/core/fillInPoseFrame.js.map +0 -1
- package/dist/core/geometry/poseRotation.js +0 -58
- package/dist/core/geometry/poseRotation.js.map +0 -1
- package/dist/core/gradient.js +0 -136
- package/dist/core/gradient.js.map +0 -1
- package/dist/core/isPlainObject.js.map +0 -1
- package/dist/core/markerInset.js +0 -24
- package/dist/core/markerInset.js.map +0 -1
- package/dist/core/mixed.js +0 -6
- package/dist/core/mixed.js.map +0 -1
- package/dist/core/paintKinds.js +0 -156
- package/dist/core/paintKinds.js.map +0 -1
- package/dist/core/strokeMarkerShapes.js +0 -139
- package/dist/core/strokeMarkerShapes.js.map +0 -1
- package/dist/core/strokeMarkers.js +0 -28
- package/dist/core/strokeMarkers.js.map +0 -1
- package/dist/core/viewport/meanScale.js +0 -8
- package/dist/core/viewport/meanScale.js.map +0 -1
- package/dist/core/viewport/pxExtent.js +0 -42
- package/dist/core/viewport/pxExtent.js.map +0 -1
- package/dist/debug/flag.js.map +0 -1
- package/dist/features/cursor/paintedCursorLayer.js.map +0 -1
- package/dist/features/focus/gateLayer.js +0 -14
- package/dist/features/focus/gateLayer.js.map +0 -1
- package/dist/features/focus/useCanvasFocus.js +0 -29
- package/dist/features/focus/useCanvasFocus.js.map +0 -1
- package/dist/features/groups/children.js.map +0 -1
- package/dist/features/groups/composePose.js.map +0 -1
- package/dist/features/groups/nestedHit.js.map +0 -1
- package/dist/features/groups/unionOfChildren.js.map +0 -1
- package/dist/features/images/imageCache.js +0 -94
- package/dist/features/images/imageCache.js.map +0 -1
- package/dist/features/ingestion/index.js +0 -8
- package/dist/features/meshPaint/bake.js +0 -79
- package/dist/features/meshPaint/bake.js.map +0 -1
- package/dist/features/meshPaint/bakeCache.js +0 -59
- package/dist/features/meshPaint/bakeCache.js.map +0 -1
- package/dist/features/meshPaint/handles.js +0 -86
- package/dist/features/meshPaint/handles.js.map +0 -1
- package/dist/features/meshPaint/lazyKind.js.map +0 -1
- package/dist/features/meshPaint/meshPaint.js +0 -236
- package/dist/features/meshPaint/meshPaint.js.map +0 -1
- package/dist/features/meshPaint/meshShader.js +0 -6
- package/dist/features/meshPaint/meshShader.js.map +0 -1
- package/dist/features/meshPaint/register.js +0 -7
- package/dist/features/meshPaint/register.js.map +0 -1
- package/dist/features/meshPaint/surface.js +0 -110
- package/dist/features/meshPaint/surface.js.map +0 -1
- package/dist/features/minimap/actions.js +0 -53
- package/dist/features/minimap/actions.js.map +0 -1
- package/dist/features/minimap/createMinimapContribution.js +0 -96
- package/dist/features/minimap/createMinimapContribution.js.map +0 -1
- package/dist/features/minimap/layers.js +0 -103
- package/dist/features/minimap/layers.js.map +0 -1
- package/dist/features/overlays/useNodeOverlayFrame.js +0 -103
- package/dist/features/overlays/useNodeOverlayFrame.js.map +0 -1
- package/dist/features/parallax/createParallaxLayer.js +0 -26
- package/dist/features/parallax/createParallaxLayer.js.map +0 -1
- package/dist/features/parallax/createParallaxPlane.js +0 -26
- package/dist/features/parallax/createParallaxPlane.js.map +0 -1
- package/dist/features/paths/anchorEdits.js +0 -156
- package/dist/features/paths/anchorEdits.js.map +0 -1
- package/dist/features/paths/anchors.js +0 -154
- package/dist/features/paths/anchors.js.map +0 -1
- package/dist/features/paths/booleans.js +0 -2
- package/dist/features/paths/markerCommands.js +0 -148
- package/dist/features/paths/markerCommands.js.map +0 -1
- package/dist/features/paths/markerSites.js +0 -59
- package/dist/features/paths/markerSites.js.map +0 -1
- package/dist/features/paths/markers.js +0 -95
- package/dist/features/paths/markers.js.map +0 -1
- package/dist/features/paths/nearestAnchor.js +0 -36
- package/dist/features/paths/nearestAnchor.js.map +0 -1
- package/dist/features/paths/pathInWorld.js +0 -41
- package/dist/features/paths/pathInWorld.js.map +0 -1
- package/dist/features/paths/poseDescriptor.js +0 -39
- package/dist/features/paths/poseDescriptor.js.map +0 -1
- package/dist/features/paths/tessellate/dash.js +0 -52
- package/dist/features/paths/tessellate/dash.js.map +0 -1
- package/dist/features/paths/tessellate/insets.js +0 -32
- package/dist/features/paths/tessellate/insets.js.map +0 -1
- package/dist/features/paths/tessellate/metric.js +0 -72
- package/dist/features/paths/tessellate/metric.js.map +0 -1
- package/dist/features/paths/tessellate/stroke.js +0 -170
- package/dist/features/paths/tessellate/stroke.js.map +0 -1
- package/dist/features/paths/tessellate/vertexWidths.js +0 -32
- package/dist/features/paths/tessellate/vertexWidths.js.map +0 -1
- package/dist/features/patterns/index.js +0 -23
- package/dist/features/patterns/index.js.map +0 -1
- package/dist/features/patterns/patterns-builtin.js +0 -38
- package/dist/features/patterns/patterns-builtin.js.map +0 -1
- package/dist/features/patterns/resolveSpec.js +0 -57
- package/dist/features/patterns/resolveSpec.js.map +0 -1
- package/dist/features/patterns/tileGeometry.js +0 -158
- package/dist/features/patterns/tileGeometry.js.map +0 -1
- package/dist/features/pointer/PointerContext.js +0 -45
- package/dist/features/pointer/PointerContext.js.map +0 -1
- package/dist/features/selection/SelectionContext.js +0 -46
- package/dist/features/selection/SelectionContext.js.map +0 -1
- package/dist/features/simulation/createSimulation.js +0 -61
- package/dist/features/simulation/createSimulation.js.map +0 -1
- package/dist/features/simulation/types.js +0 -6
- package/dist/features/simulation/types.js.map +0 -1
- package/dist/features/simulation/useSimulation.js +0 -74
- package/dist/features/simulation/useSimulation.js.map +0 -1
- package/dist/features/text/domRuns.js +0 -258
- package/dist/features/text/domRuns.js.map +0 -1
- package/dist/features/text/fitTextPose.js +0 -38
- package/dist/features/text/fitTextPose.js.map +0 -1
- package/dist/features/text/hitTest.js +0 -45
- package/dist/features/text/hitTest.js.map +0 -1
- package/dist/features/text/renderLabel.js +0 -14
- package/dist/features/text/renderLabel.js.map +0 -1
- package/dist/features/text/runs/effectiveRangeStyle.js +0 -66
- package/dist/features/text/runs/effectiveRangeStyle.js.map +0 -1
- package/dist/features/text/runs/flagRange.js +0 -53
- package/dist/features/text/runs/flagRange.js.map +0 -1
- package/dist/features/text/runs/rangeStyle.js +0 -135
- package/dist/features/text/runs/rangeStyle.js.map +0 -1
- package/dist/features/text/textCommand.js +0 -59
- package/dist/features/text/textCommand.js.map +0 -1
- package/dist/features/text/textToPath.js +0 -181
- package/dist/features/text/textToPath.js.map +0 -1
- package/dist/features/text/useTextEdit.js +0 -467
- package/dist/features/text/useTextEdit.js.map +0 -1
- package/dist/features/tiling/createTiledLayer.js +0 -63
- package/dist/features/tiling/createTiledLayer.js.map +0 -1
- package/dist/features/tiling/tiledProject.js +0 -14
- package/dist/features/tiling/tiledProject.js.map +0 -1
- package/dist/interactions/actions/clone/behaviors/cloneByAltDrag.js +0 -26
- package/dist/interactions/actions/clone/behaviors/cloneByAltDrag.js.map +0 -1
- package/dist/interactions/actions/defaults/align.js.map +0 -1
- package/dist/interactions/actions/defaults/booleans.js +0 -52
- package/dist/interactions/actions/defaults/booleans.js.map +0 -1
- package/dist/interactions/actions/defaults/clipboard.js.map +0 -1
- package/dist/interactions/actions/defaults/clone.js +0 -107
- package/dist/interactions/actions/defaults/clone.js.map +0 -1
- package/dist/interactions/actions/defaults/createOutlines.js +0 -47
- package/dist/interactions/actions/defaults/createOutlines.js.map +0 -1
- package/dist/interactions/actions/defaults/distribute.js +0 -66
- package/dist/interactions/actions/defaults/distribute.js.map +0 -1
- package/dist/interactions/actions/defaults/editAnchors.js.map +0 -1
- package/dist/interactions/actions/defaults/flip.js +0 -119
- package/dist/interactions/actions/defaults/flip.js.map +0 -1
- package/dist/interactions/actions/defaults/freshNodeId.js +0 -10
- package/dist/interactions/actions/defaults/freshNodeId.js.map +0 -1
- package/dist/interactions/actions/defaults/insert.js +0 -288
- package/dist/interactions/actions/defaults/insert.js.map +0 -1
- package/dist/interactions/actions/defaults/lassoSelect.js +0 -156
- package/dist/interactions/actions/defaults/lassoSelect.js.map +0 -1
- package/dist/interactions/actions/defaults/move.js +0 -760
- package/dist/interactions/actions/defaults/move.js.map +0 -1
- package/dist/interactions/actions/defaults/resize.js +0 -335
- package/dist/interactions/actions/defaults/resize.js.map +0 -1
- package/dist/interactions/actions/defaults/rotate.js +0 -184
- package/dist/interactions/actions/defaults/rotate.js.map +0 -1
- package/dist/interactions/actions/previewOverrides.js +0 -25
- package/dist/interactions/actions/previewOverrides.js.map +0 -1
- package/dist/interactions/actions/resize/autoPoseDescriptor.js.map +0 -1
- package/dist/math-Drrw4ewZ.d.ts +0 -160
- package/dist/registerProgram-BMZRDgrh.d.ts +0 -197
- package/dist/renderer/DrawCommand.js +0 -6
- package/dist/renderer/DrawCommand.js.map +0 -1
- package/dist/renderer/WeaselRenderer.js +0 -331
- package/dist/renderer/WeaselRenderer.js.map +0 -1
- package/dist/renderer/batchClip.js +0 -46
- package/dist/renderer/batchClip.js.map +0 -1
- package/dist/renderer/cache/GLImageCache.js +0 -64
- package/dist/renderer/cache/GLImageCache.js.map +0 -1
- package/dist/renderer/cache/GLMeshCache.js +0 -102
- package/dist/renderer/cache/GLMeshCache.js.map +0 -1
- package/dist/renderer/cache/GLTextureCache.js +0 -51
- package/dist/renderer/cache/GLTextureCache.js.map +0 -1
- package/dist/renderer/cache/GradientRampAtlas.js +0 -82
- package/dist/renderer/cache/GradientRampAtlas.js.map +0 -1
- package/dist/renderer/cache/cache.js +0 -13
- package/dist/renderer/cache/cache.js.map +0 -1
- package/dist/renderer/cache/markerCommandCache.js +0 -63
- package/dist/renderer/cache/markerCommandCache.js.map +0 -1
- package/dist/renderer/cache/outlineMeshCache.js +0 -15
- package/dist/renderer/cache/outlineMeshCache.js.map +0 -1
- package/dist/renderer/cache/outlineStrokeMeshCache.js +0 -36
- package/dist/renderer/cache/outlineStrokeMeshCache.js.map +0 -1
- package/dist/renderer/cache/strokeMeshCache.js +0 -55
- package/dist/renderer/cache/strokeMeshCache.js.map +0 -1
- package/dist/renderer/cullDrawCommands.js +0 -90
- package/dist/renderer/cullDrawCommands.js.map +0 -1
- package/dist/renderer/draw.js +0 -1135
- package/dist/renderer/draw.js.map +0 -1
- package/dist/renderer/drawBatch.js +0 -198
- package/dist/renderer/drawBatch.js.map +0 -1
- package/dist/renderer/effects/EffectTargets.js +0 -45
- package/dist/renderer/effects/EffectTargets.js.map +0 -1
- package/dist/renderer/effects/builtins.js +0 -31
- package/dist/renderer/effects/builtins.js.map +0 -1
- package/dist/renderer/effects/composite.js +0 -9
- package/dist/renderer/effects/composite.js.map +0 -1
- package/dist/renderer/effects/effectPrelude.js +0 -10
- package/dist/renderer/effects/effectPrelude.js.map +0 -1
- package/dist/renderer/effects/types.js +0 -10
- package/dist/renderer/effects/types.js.map +0 -1
- package/dist/renderer/glyphOutlineMesh.js +0 -67
- package/dist/renderer/glyphOutlineMesh.js.map +0 -1
- package/dist/renderer/index.js +0 -19
- package/dist/renderer/math/color.js +0 -341
- package/dist/renderer/math/color.js.map +0 -1
- package/dist/renderer/math/mat3.js +0 -76
- package/dist/renderer/math/mat3.js.map +0 -1
- package/dist/renderer/math/patternSpace.js +0 -22
- package/dist/renderer/math/patternSpace.js.map +0 -1
- package/dist/renderer/math/viewToMat3.js +0 -19
- package/dist/renderer/math/viewToMat3.js.map +0 -1
- package/dist/renderer/paintResources.js +0 -18
- package/dist/renderer/paintResources.js.map +0 -1
- package/dist/renderer/paintScratch.js +0 -37
- package/dist/renderer/paintScratch.js.map +0 -1
- package/dist/renderer/shaders/ShaderProgram.js +0 -74
- package/dist/renderer/shaders/ShaderProgram.js.map +0 -1
- package/dist/renderer/shaders/batchFill.js +0 -119
- package/dist/renderer/shaders/batchFill.js.map +0 -1
- package/dist/renderer/shaders/customPrelude.js +0 -34
- package/dist/renderer/shaders/customPrelude.js.map +0 -1
- package/dist/renderer/shaders/extractUniformNames.js +0 -184
- package/dist/renderer/shaders/extractUniformNames.js.map +0 -1
- package/dist/renderer/shaders/glyphPaint.js +0 -61
- package/dist/renderer/shaders/glyphPaint.js.map +0 -1
- package/dist/renderer/shaders/gradFill.js +0 -30
- package/dist/renderer/shaders/gradFill.js.map +0 -1
- package/dist/renderer/shaders/imageFill.js +0 -14
- package/dist/renderer/shaders/imageFill.js.map +0 -1
- package/dist/renderer/shaders/pathFill.js +0 -13
- package/dist/renderer/shaders/pathFill.js.map +0 -1
- package/dist/renderer/shaders/patternFill.js +0 -24
- package/dist/renderer/shaders/patternFill.js.map +0 -1
- package/dist/renderer/shaders/registerProgram.js +0 -18
- package/dist/renderer/shaders/registerProgram.js.map +0 -1
- package/dist/renderer/spriteSheet.js +0 -14
- package/dist/renderer/spriteSheet.js.map +0 -1
- package/dist/renderer/state/GroupState.js +0 -77
- package/dist/renderer/state/GroupState.js.map +0 -1
- package/dist/renderer/strokeLengths.js +0 -50
- package/dist/renderer/strokeLengths.js.map +0 -1
- package/dist/renderer/syntheticItalic.js +0 -6
- package/dist/renderer/syntheticItalic.js.map +0 -1
- package/dist/renderer/textures/registerTexture.js +0 -14
- package/dist/renderer/textures/registerTexture.js.map +0 -1
- package/dist/scheduling/useVisibleRaf.js +0 -69
- package/dist/scheduling/useVisibleRaf.js.map +0 -1
- package/dist/test-seams-CuIxe0xY.d.ts +0 -356
- package/dist/tools/prefs.js +0 -62
- package/dist/tools/prefs.js.map +0 -1
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { createContext as e, useContext as t, useState as n, useSyncExternalStore as r } from "react";
|
|
2
|
-
import { jsx as i } from "react/jsx-runtime";
|
|
3
|
-
//#region src/features/pointer/PointerContext.tsx
|
|
4
|
-
function a(e, t) {
|
|
5
|
-
return e === null || t === null ? e === t : e.worldX === t.worldX && e.worldY === t.worldY && e.viewId === t.viewId;
|
|
6
|
-
}
|
|
7
|
-
function o() {
|
|
8
|
-
let e = null, t = 0, n = /* @__PURE__ */ new Set(), r = () => e;
|
|
9
|
-
return {
|
|
10
|
-
get: r,
|
|
11
|
-
set(r) {
|
|
12
|
-
if (!a(e, r)) {
|
|
13
|
-
e = r, t++;
|
|
14
|
-
for (let e of [...n]) e();
|
|
15
|
-
}
|
|
16
|
-
},
|
|
17
|
-
subscribe(e) {
|
|
18
|
-
return n.add(e), () => {
|
|
19
|
-
n.delete(e);
|
|
20
|
-
};
|
|
21
|
-
},
|
|
22
|
-
getVersion: () => t,
|
|
23
|
-
getDropPoint: r
|
|
24
|
-
};
|
|
25
|
-
}
|
|
26
|
-
var s = e(null);
|
|
27
|
-
function c({ children: e, store: t }) {
|
|
28
|
-
let [r] = n(o);
|
|
29
|
-
return /* @__PURE__ */ i(s.Provider, {
|
|
30
|
-
value: t ?? r,
|
|
31
|
-
children: e
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
function l() {
|
|
35
|
-
return t(s);
|
|
36
|
-
}
|
|
37
|
-
var u = () => () => {}, d = () => null;
|
|
38
|
-
function f() {
|
|
39
|
-
let e = l();
|
|
40
|
-
return r(e ? e.subscribe : u, e ? e.get : d, e ? e.get : d);
|
|
41
|
-
}
|
|
42
|
-
//#endregion
|
|
43
|
-
export { c as PointerContextProvider, o as createPointerStore, l as usePointerContext, f as usePointerPosition };
|
|
44
|
-
|
|
45
|
-
//# sourceMappingURL=PointerContext.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PointerContext.js","names":["samePos","a","b","createPointerStore","current","version","listeners","get","next","fn","PointerContext","createContext","PointerContextProvider","own","useState","store","usePointerContext","useContext","noSubscribe","noPointer","usePointerPosition","useSyncExternalStore"],"sources":["../../../src/features/pointer/PointerContext.tsx"],"sourcesContent":["/**\n * @experimental\n * PointerContext — the world-space position of the canvas pointer, and the\n * view it is over, refreshed on every `pointermove` and cleared on\n * `pointerleave`.\n *\n * It is an external store rather than React state: cursor moves fire dozens of\n * times per second, and a consumer that only reads on demand (paste at the\n * pointer) must not re-render for each one. Readers that do need to follow it\n * — a linked cursor — subscribe, or use `usePointerPosition()`.\n *\n * `<SceneCanvas>` publishes automatically, and defers to a provider already in\n * scope, so several surfaces under one provider share one pointer: a detached\n * minimap and its main canvas each see where the other's pointer is.\n */\nimport {\n createContext, useContext, useState, useSyncExternalStore, type ReactNode,\n} from 'react';\n\n/** @experimental World-space pointer position and the view it is over — a\n * view id, or `null` for a surface's own camera. `null` as a whole when the\n * pointer is over no publishing surface. */\nexport type PointerWorldPos = { worldX: number; worldY: number; viewId: string | null } | null;\n\n/** @experimental */\nexport interface PointerContextValue {\n /** The latest position. */\n get(): PointerWorldPos;\n /** Publish a position. Subscribers hear only a changed value. */\n set(next: PointerWorldPos): void;\n /** Called after every change; returns the unsubscribe. */\n subscribe(fn: () => void): () => void;\n /** Bumps on every change. */\n getVersion(): number;\n /** `get()` as a stable thunk, for hooks taking a drop-point option. */\n readonly getDropPoint: () => PointerWorldPos;\n}\n\nfunction samePos(a: PointerWorldPos, b: PointerWorldPos): boolean {\n if (a === null || b === null) return a === b;\n return a.worldX === b.worldX && a.worldY === b.worldY && a.viewId === b.viewId;\n}\n\n/** @experimental A pointer store with no provider around it. */\nexport function createPointerStore(): PointerContextValue {\n let current: PointerWorldPos = null;\n let version = 0;\n const listeners = new Set<() => void>();\n const get = (): PointerWorldPos => current;\n return {\n get,\n set(next) {\n if (samePos(current, next)) return;\n current = next;\n version++;\n for (const fn of [...listeners]) fn();\n },\n subscribe(fn) {\n listeners.add(fn);\n return () => { listeners.delete(fn); };\n },\n getVersion: () => version,\n getDropPoint: get,\n };\n}\n\nconst PointerContext = createContext<PointerContextValue | null>(null);\n\n/**\n * @experimental\n * Wrap the part of the React tree that should share one pointer. Usually at\n * the app root, alongside `<ActionsProvider>` and `<SelectionContextProvider>`.\n *\n * Most consumers don't need to mount this directly — `<SceneCanvas>` mounts\n * one when none is in scope. Mount it yourself when two surfaces should share\n * a pointer. Pass `store` to publish into one you hold elsewhere\n * (`createPointerStore()`).\n */\nexport function PointerContextProvider(\n { children, store }: { children: ReactNode; store?: PointerContextValue },\n): ReactNode {\n const [own] = useState(createPointerStore);\n return <PointerContext.Provider value={store ?? own}>{children}</PointerContext.Provider>;\n}\n\n/** @experimental The surrounding pointer store, or `null` when no provider is\n * in scope. */\nexport function usePointerContext(): PointerContextValue | null {\n return useContext(PointerContext);\n}\n\nconst noSubscribe = (): (() => void) => () => {};\nconst noPointer = (): PointerWorldPos => null;\n\n/** @experimental The pointer, re-rendering the caller whenever it changes.\n * `null` outside a provider. */\nexport function usePointerPosition(): PointerWorldPos {\n const store = usePointerContext();\n return useSyncExternalStore(\n store ? store.subscribe : noSubscribe,\n store ? store.get : noPointer,\n store ? store.get : noPointer,\n );\n}\n"],"mappings":";;;AAsCA,SAASA,EAAQ,GAAoB,GAA6B;CAEhE,OADIC,MAAM,QAAQC,MAAM,OAAaD,MAAMC,IACpCD,EAAE,WAAWC,EAAE,UAAUD,EAAE,WAAWC,EAAE,UAAUD,EAAE,WAAWC,EAAE;AAC1E;AAGA,SAAgBC,IAA0C;CACxD,IAAIC,IAA2B,MAC3BC,IAAU,GACRC,oBAAY,IAAI,IAAgB,GAChCC,UAA6BH;CACnC,OAAO;EACL;EACA,IAAI,GAAM;GACR,IAAI,GAAQA,GAASI,CAAI,GAEzB;IADA,IAAUA,GACV;IACA,KAAK,IAAMC,KAAM,CAAC,GAAGH,CAAS,GAAG,EAAG;GADpC;EAEF;EACA,UAAU,GAAI;GAEZ,OADAA,EAAU,IAAIG,CAAE,SACH;IAAE,EAAU,OAAOA,CAAE;GAAG;EACvC;EACA,kBAAkBJ;EAClB,cAAcE;CAChB;AACF;AAEA,IAAMG,IAAiBC,EAA0C,IAAI;AAYrE,SAAgBC,EACd,EAAE,aAAU,YACD;CACX,IAAM,CAACC,KAAOC,EAASX,CAAkB;CACzC,OAAO,kBAACO,EAAe,UAAhB;EAAyB,OAAOK,KAASF;EAAM;CAAkC,CAAA;AAC1F;AAIA,SAAgBG,IAAgD;CAC9D,OAAOC,EAAWP,CAAc;AAClC;AAEA,IAAMQ,gBAAwC,CAAC,GACzCC,UAAmC;AAIzC,SAAgBC,IAAsC;CACpD,IAAML,IAAQC,EAAkB;CAChC,OAAOK,EACLN,IAAQA,EAAM,YAAYG,GAC1BH,IAAQA,EAAM,MAAMI,GACpBJ,IAAQA,EAAM,MAAMI,CACtB;AACF"}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import { createContext as e, useCallback as t, useContext as n, useEffect as r, useMemo as i, useRef as a, useState as o } from "react";
|
|
2
|
-
import { useLatest as s } from "@weasel-js/react";
|
|
3
|
-
import { Fragment as c, jsx as l } from "react/jsx-runtime";
|
|
4
|
-
//#region src/features/selection/SelectionContext.tsx
|
|
5
|
-
var u = e(null);
|
|
6
|
-
function d({ children: e }) {
|
|
7
|
-
let [n, r] = o({
|
|
8
|
-
selection: [],
|
|
9
|
-
kinds: void 0
|
|
10
|
-
}), s = a(""), c = t((e, t) => {
|
|
11
|
-
let n = JSON.stringify([e, t]);
|
|
12
|
-
n !== s.current && (s.current = n, r({
|
|
13
|
-
selection: e,
|
|
14
|
-
kinds: t
|
|
15
|
-
}));
|
|
16
|
-
}, []), d = i(() => ({
|
|
17
|
-
selection: n.selection,
|
|
18
|
-
...n.kinds === void 0 ? {} : { kinds: n.kinds },
|
|
19
|
-
publishSelection: c
|
|
20
|
-
}), [n, c]);
|
|
21
|
-
return /* @__PURE__ */ l(u.Provider, {
|
|
22
|
-
value: d,
|
|
23
|
-
children: e
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
function f() {
|
|
27
|
-
return n(u);
|
|
28
|
-
}
|
|
29
|
-
function p({ children: e }) {
|
|
30
|
-
return n(u) === null ? /* @__PURE__ */ l(d, { children: e }) : /* @__PURE__ */ l(c, { children: e });
|
|
31
|
-
}
|
|
32
|
-
function m(e, t) {
|
|
33
|
-
let i = n(u), a = s(e), o = s(t), c = JSON.stringify([e, t]), l = i?.publishSelection;
|
|
34
|
-
r(() => {
|
|
35
|
-
l && l(a.current, o.current);
|
|
36
|
-
}, [
|
|
37
|
-
l,
|
|
38
|
-
c,
|
|
39
|
-
a,
|
|
40
|
-
o
|
|
41
|
-
]);
|
|
42
|
-
}
|
|
43
|
-
//#endregion
|
|
44
|
-
export { d as SelectionContextProvider, p as SelectionContextProviderIfRoot, m as usePublishSelection, f as useSelectionContext };
|
|
45
|
-
|
|
46
|
-
//# sourceMappingURL=SelectionContext.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SelectionContext.js","names":["_Fragment","SelectionContext","createContext","SelectionContextProvider","state","setState","useState","lastSerializedRef","useRef","publishSelection","useCallback","next","ids","kinds","value","useMemo","useSelectionContext","useContext","SelectionContextProviderIfRoot","Fragment","usePublishSelection","ctx","idsRef","useLatest","kindsRef","serialized","publish"],"sources":["../../../src/features/selection/SelectionContext.tsx"],"sourcesContent":["/**\n * @experimental\n * SelectionContext — a tiny ambient context that publishes \"what's currently\n * selected\" so non-canvas UI (command palette, status bar, breadcrumbs,\n * undo-label generation) can read it without threading a selection prop\n * through the tree.\n *\n * **Single-slot semantics (v1):** the context holds one selection array.\n * Whichever canvas (or other publisher) calls `publishSelection` most\n * recently owns the slot. For single-canvas pages — the typical case —\n * this Just Works. Multi-canvas pages get last-writer-wins, which is\n * approximately \"most recently rendered.\" A v2 could become focus-aware\n * (canvas claims the slot on focus, releases on blur), but that's deferred\n * until a real multi-canvas use case lands.\n *\n * `<SceneCanvas>` calls `publishSelection` automatically when wrapped in a\n * `<SelectionContext>`. Bare-`<Canvas>` consumers opt in by calling\n * `useSelectionContext().publishSelection(ids)` themselves.\n */\nimport {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n type ReactNode,\n} from 'react';\nimport { useLatest } from '@weasel-js/react';\nimport type { NodeId } from 'core/scene/types';\n\n/** @experimental */\nexport interface SelectionContextValue {\n /** The most-recently-published selection. Empty array when no canvas\n * has published or when the active canvas's selection is empty. */\n readonly selection: readonly NodeId[];\n /** Optional per-id kind label, parallel to `selection`. Publishers that\n * know their domain populate it (e.g. `'rectangle'`, `'path'`, `'group'`)\n * so consumers can render type-aware copy. Sparse entries (`undefined`)\n * are allowed; consumers should treat the kinds array as best-effort.\n *\n * See `docs/TODO.md` (Tier 1.5 → \"Typed scene-object references\") for the\n * longer-term direction toward a proper id+kind value type. */\n readonly kinds?: readonly (string | undefined)[];\n /** Publish the calling canvas's selection. Idempotent — calling with\n * the same array (by content equality) does not trigger a re-render\n * of the consumer tree. */\n publishSelection(ids: readonly NodeId[], kinds?: readonly (string | undefined)[]): void;\n}\n\nconst SelectionContext = createContext<SelectionContextValue | null>(null);\n\n/**\n * @experimental\n * Wrap the part of the React tree that should share a selection context.\n * Usually placed at the demo / app root, alongside `<ActionsProvider>`.\n */\nexport function SelectionContextProvider({ children }: { children: ReactNode }): ReactNode {\n const [state, setState] = useState<{\n selection: readonly NodeId[];\n kinds: readonly (string | undefined)[] | undefined;\n }>({ selection: [], kinds: undefined });\n const lastSerializedRef = useRef<string>('');\n\n const publishSelection = useCallback((\n ids: readonly NodeId[],\n kinds?: readonly (string | undefined)[],\n ): void => {\n // Cheap content equality via JSON serialization over both ids and kinds.\n // Selection arrays are typically small (≤ a few dozen entries); the cost\n // is dwarfed by avoiding a re-render when nothing changed.\n const next = JSON.stringify([ids, kinds]);\n if (next === lastSerializedRef.current) return;\n lastSerializedRef.current = next;\n setState({ selection: ids, kinds });\n }, []);\n\n const value = useMemo<SelectionContextValue>(\n () => ({\n selection: state.selection,\n ...(state.kinds !== undefined ? { kinds: state.kinds } : {}),\n publishSelection,\n }),\n [state, publishSelection],\n );\n\n return <SelectionContext.Provider value={value}>{children}</SelectionContext.Provider>;\n}\n\n/**\n * @experimental\n * Read the current selection-context value. Returns `null` when no\n * `<SelectionContextProvider>` is in scope; consumers should fall back\n * gracefully (e.g. command palette hides the \"N selected\" header).\n */\nexport function useSelectionContext(): SelectionContextValue | null {\n return useContext(SelectionContext);\n}\n\n/**\n * @experimental\n * Conditional `<SelectionContextProvider>` wrapper. Mounts a provider only\n * when no parent provider is in scope — otherwise renders children unwrapped\n * so callers (e.g. `<WeaselProvider>`) defer to the host's existing scope.\n * Mirrors `ActionsProviderIfRoot` / `DepRegistryProviderIfRoot`.\n */\nexport function SelectionContextProviderIfRoot({\n children,\n}: {\n children: ReactNode;\n}): ReactNode {\n const parent = useContext(SelectionContext);\n if (parent !== null) return <>{children}</>;\n return <SelectionContextProvider>{children}</SelectionContextProvider>;\n}\n\n/**\n * @experimental\n * Convenience hook for canvas components: publishes the supplied `ids`\n * into the surrounding `<SelectionContextProvider>` whenever the\n * content of `ids` changes. No-op when there's no provider in scope.\n *\n * Used by `<SceneCanvas>` internally to auto-publish; bare-Canvas\n * consumers call `useSelectionContext()` and `publishSelection` directly.\n */\nexport function usePublishSelection(\n ids: readonly NodeId[],\n kinds?: readonly (string | undefined)[],\n): void {\n const ctx = useContext(SelectionContext);\n // Track latest values via refs so the effect's deps array can use a stable\n // serialization — avoids re-firing on identity-only changes.\n const idsRef = useLatest(ids);\n const kindsRef = useLatest(kinds);\n const serialized = JSON.stringify([ids, kinds]);\n // Depend on `publishSelection` rather than `ctx`: the provider mints a new\n // context value on every publish, so keying on `ctx` refires this effect for\n // every publisher whenever any one of them publishes.\n const publish = ctx?.publishSelection;\n useEffect(() => {\n if (!publish) return;\n publish(idsRef.current, kindsRef.current);\n }, [publish, serialized, idsRef, kindsRef]);\n}\n"],"mappings":";;;;AAmDA,IAAMC,IAAmBC,EAA4C,IAAI;AAOzE,SAAgBC,EAAyB,EAAE,eAAgD;CACzF,IAAM,CAACC,GAAOC,KAAYC,EAGvB;EAAE,WAAW,CAAC;EAAG,OAAO,KAAA;CAAU,CAAC,GAChCC,IAAoBC,EAAe,EAAE,GAErCC,IAAmBC,GACvB,GACA,MACS;EAIT,IAAMC,IAAO,KAAK,UAAU,CAACC,GAAKC,CAAK,CAAC;EACxC,AAAIF,MAASJ,EAAkB,YAC/B,EAAkB,UAAUI,GAC5BN,EAAS;GAAE,WAAWO;GAAK;EAAM,CAAC;CACpC,GAAG,CAAC,CAAC,GAECE,IAAQC,SACL;EACL,WAAWX,EAAM;EACjB,GAAIA,EAAM,UAAU,KAAA,IAAqC,CAAC,IAA1B,EAAE,OAAOA,EAAM,MAAM;EACrD;CACF,IACA,CAACA,GAAOK,CAAgB,CAC1B;CAEA,OAAO,kBAACR,EAAiB,UAAlB;EAAkC;EAAQ;CAAoC,CAAA;AACvF;AAQA,SAAgBe,IAAoD;CAClE,OAAOC,EAAWhB,CAAgB;AACpC;AASA,SAAgBiB,EAA+B,EAC7C,eAGY;CAGZ,OAFeD,EAAWhB,CACtB,MAAW,OACR,kBAACE,GAAD,EAA2B,YAAmC,CAAA,IADzC,kBAAAH,GAAA,EAAG,YAAW,CAAA;AAE5C;AAWA,SAAgBoB,EACd,GACA,GACM;CACN,IAAMC,IAAMJ,EAAWhB,CAAgB,GAGjCqB,IAASC,EAAUX,CAAG,GACtBY,IAAWD,EAAUV,CAAK,GAC1BY,IAAa,KAAK,UAAU,CAACb,GAAKC,CAAK,CAAC,GAIxCa,IAAUL,GAAK;CACrB,QAAgB;EACd,AAAKK,KACLA,EAAQJ,EAAO,SAASE,EAAS,OAAO;CAC1C,GAAG;EAACE;EAASD;EAAYH;EAAQE;CAAQ,CAAC;AAC5C"}
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
import { DEFAULT_ALPHA_DECAY as e, DEFAULT_ALPHA_MIN as t, DEFAULT_VELOCITY_DECAY as n } from "./types.js";
|
|
2
|
-
//#region src/features/simulation/createSimulation.ts
|
|
3
|
-
function r(r) {
|
|
4
|
-
let i = r.nodes, a = r.forces ?? [], o = r.alpha ?? 1, s = r.alphaMin ?? t, c = r.alphaDecay ?? e, l = r.alphaTarget ?? 0, u = r.velocityDecay ?? n, d = r.random ?? Math.random;
|
|
5
|
-
function f(e) {
|
|
6
|
-
e.forEach((e, t) => {
|
|
7
|
-
e.index = t, e.vx ??= 0, e.vy ??= 0;
|
|
8
|
-
});
|
|
9
|
-
}
|
|
10
|
-
f(i);
|
|
11
|
-
for (let e of a) e.initialize?.(i, d);
|
|
12
|
-
function p() {
|
|
13
|
-
o += (l - o) * c;
|
|
14
|
-
for (let e of a) e(o);
|
|
15
|
-
let e = 1 - u;
|
|
16
|
-
for (let t of i) t.fx == null ? (t.vx = (t.vx ?? 0) * e, Number.isFinite(t.vx) || (t.vx = 0), t.x += t.vx, Number.isFinite(t.x) || (t.x = 0)) : (t.x = t.fx, t.vx = 0), t.fy == null ? (t.vy = (t.vy ?? 0) * e, Number.isFinite(t.vy) || (t.vy = 0), t.y += t.vy, Number.isFinite(t.y) || (t.y = 0)) : (t.y = t.fy, t.vy = 0);
|
|
17
|
-
}
|
|
18
|
-
let m = {
|
|
19
|
-
get nodes() {
|
|
20
|
-
return i;
|
|
21
|
-
},
|
|
22
|
-
setNodes(e) {
|
|
23
|
-
i = e, f(i);
|
|
24
|
-
for (let e of a) e.initialize?.(i, d);
|
|
25
|
-
return m;
|
|
26
|
-
},
|
|
27
|
-
setForces(e) {
|
|
28
|
-
let t = a;
|
|
29
|
-
a = e;
|
|
30
|
-
for (let n of e) t.includes(n) || n.initialize?.(i, d);
|
|
31
|
-
return m;
|
|
32
|
-
},
|
|
33
|
-
alpha(e) {
|
|
34
|
-
return e === void 0 ? o : (o = e, m);
|
|
35
|
-
},
|
|
36
|
-
alphaTarget(e) {
|
|
37
|
-
return e === void 0 ? l : (l = e, m);
|
|
38
|
-
},
|
|
39
|
-
alphaDecay(e) {
|
|
40
|
-
return e === void 0 ? c : (c = e, m);
|
|
41
|
-
},
|
|
42
|
-
alphaMin(e) {
|
|
43
|
-
return e === void 0 ? s : (s = e, m);
|
|
44
|
-
},
|
|
45
|
-
velocityDecay(e) {
|
|
46
|
-
return e === void 0 ? u : (u = e, m);
|
|
47
|
-
},
|
|
48
|
-
tick(e = 1) {
|
|
49
|
-
for (let t = 0; t < e; t++) p();
|
|
50
|
-
return m;
|
|
51
|
-
},
|
|
52
|
-
isSettled() {
|
|
53
|
-
return o < s && l === 0;
|
|
54
|
-
}
|
|
55
|
-
};
|
|
56
|
-
return m;
|
|
57
|
-
}
|
|
58
|
-
//#endregion
|
|
59
|
-
export { r as createSimulation };
|
|
60
|
-
|
|
61
|
-
//# sourceMappingURL=createSimulation.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"createSimulation.js","names":["createSimulation","nodes","opts","forces","alpha","alphaMin","DEFAULT_ALPHA_MIN","alphaDecay","DEFAULT_ALPHA_DECAY","alphaTarget","velocityDecay","DEFAULT_VELOCITY_DECAY","random","prime","i","n","f","step","friction","core","next","old","value","iterations"],"sources":["../../../src/features/simulation/createSimulation.ts"],"sourcesContent":["/**\n * The integrator, with no clock attached.\n *\n * Velocity-Verlet over a pluggable force list, contract-compatible with\n * d3-force so d3's own bundled forces drop in untranslated. Nothing here\n * advances time: `tick()` is the only thing that moves a node, and the caller\n * decides how often to call it. `useSimulation` calls it once a frame; a\n * layout pass calls it a few hundred times in one go and reads the result.\n *\n * Splitting it out is what lets a *pure* function run a relaxation — a React\n * hook cannot, and the alternative was a second integrator drifting away from\n * this one.\n */\nimport {\n DEFAULT_ALPHA_DECAY,\n DEFAULT_ALPHA_MIN,\n DEFAULT_VELOCITY_DECAY,\n type SimulationCore,\n type SimulationForce,\n type SimulationNode,\n type SimulationOptions,\n} from './types';\n\n/**\n * A d3-force-compatible simulation with no clock: nothing moves until `tick()`.\n * Nodes are mutated in place, and primed with `index`, `vx` and `vy` on creation.\n */\nexport function createSimulation<TNode extends SimulationNode>(\n opts: SimulationOptions<TNode>,\n): SimulationCore<TNode> {\n let nodes = opts.nodes;\n let forces = opts.forces ?? [];\n let alpha = opts.alpha ?? 1;\n let alphaMin = opts.alphaMin ?? DEFAULT_ALPHA_MIN;\n let alphaDecay = opts.alphaDecay ?? DEFAULT_ALPHA_DECAY;\n let alphaTarget = opts.alphaTarget ?? 0;\n let velocityDecay = opts.velocityDecay ?? DEFAULT_VELOCITY_DECAY;\n const random = opts.random ?? Math.random;\n\n /** `index` is what `forceLink` and friends address nodes by, and a d3 force\n * does `n.vx += …` without checking, so both must exist before the first\n * tick or the first tick produces NaN. */\n function prime(list: TNode[]): void {\n list.forEach((n, i) => {\n n.index = i;\n if (n.vx == null) n.vx = 0;\n if (n.vy == null) n.vy = 0;\n });\n }\n\n prime(nodes);\n for (const f of forces) f.initialize?.(nodes, random);\n\n function step(): void {\n alpha += (alphaTarget - alpha) * alphaDecay;\n for (const f of forces) f(alpha);\n\n const friction = 1 - velocityDecay;\n for (const n of nodes) {\n if (n.fx == null) {\n n.vx = (n.vx ?? 0) * friction;\n // A non-finite velocity — force overflow, or two nodes exactly\n // coincident — would reach the renderer as geometry and cost\n // pathological tessellation work without throwing anywhere.\n if (!Number.isFinite(n.vx)) n.vx = 0;\n n.x += n.vx;\n if (!Number.isFinite(n.x)) n.x = 0;\n } else {\n n.x = n.fx;\n n.vx = 0;\n }\n if (n.fy == null) {\n n.vy = (n.vy ?? 0) * friction;\n if (!Number.isFinite(n.vy)) n.vy = 0;\n n.y += n.vy;\n if (!Number.isFinite(n.y)) n.y = 0;\n } else {\n n.y = n.fy;\n n.vy = 0;\n }\n }\n }\n\n /* eslint-disable @typescript-eslint/no-explicit-any */\n const core: any = {\n get nodes() {\n return nodes;\n },\n setNodes(next: TNode[]) {\n nodes = next;\n prime(nodes);\n for (const f of forces) f.initialize?.(nodes, random);\n return core;\n },\n setForces(next: SimulationForce<TNode>[]) {\n const old = forces;\n forces = next;\n for (const f of next) {\n if (!old.includes(f)) f.initialize?.(nodes, random);\n }\n return core;\n },\n alpha(value?: number) {\n if (value === undefined) return alpha;\n alpha = value;\n return core;\n },\n alphaTarget(value?: number) {\n if (value === undefined) return alphaTarget;\n alphaTarget = value;\n return core;\n },\n alphaDecay(value?: number) {\n if (value === undefined) return alphaDecay;\n alphaDecay = value;\n return core;\n },\n alphaMin(value?: number) {\n if (value === undefined) return alphaMin;\n alphaMin = value;\n return core;\n },\n velocityDecay(value?: number) {\n if (value === undefined) return velocityDecay;\n velocityDecay = value;\n return core;\n },\n tick(iterations: number = 1) {\n for (let i = 0; i < iterations; i++) step();\n return core;\n },\n isSettled() {\n return alpha < alphaMin && alphaTarget === 0;\n },\n };\n /* eslint-enable @typescript-eslint/no-explicit-any */\n return core as SimulationCore<TNode>;\n}\n"],"mappings":";;AA2BA,SAAgBA,EACd,GACuB;CACvB,IAAIC,IAAQC,EAAK,OACbC,IAASD,EAAK,UAAU,CAAC,GACzBE,IAAQF,EAAK,SAAS,GACtBG,IAAWH,EAAK,YAAYI,GAC5BC,IAAaL,EAAK,cAAcM,GAChCC,IAAcP,EAAK,eAAe,GAClCQ,IAAgBR,EAAK,iBAAiBS,GACpCC,IAASV,EAAK,UAAU,KAAK;CAKnC,SAASW,EAAM,GAAqB;EAClC,EAAK,SAAS,GAAG,MAAM;GAGrB,AAFA,EAAE,QAAQC,GACV,AAAkBC,EAAE,OAAK,GACzB,AAAkBA,EAAE,OAAK;EAC3B,CAAC;CACH;CAEA,EAAMd,CAAK;CACX,KAAK,IAAMe,KAAKb,GAAQ,EAAE,aAAaF,GAAOW,CAAM;CAEpD,SAASK,IAAa;EACpB,MAAUR,IAAcL,KAASG;EACjC,KAAK,IAAMS,KAAKb,GAAQ,EAAEC,CAAK;EAE/B,IAAMc,IAAW,IAAIR;EACrB,KAAK,IAAMK,KAAKd,GAad,AAZIc,EAAE,MAAM,QACV,EAAE,MAAMA,EAAE,MAAM,KAAKG,GAIhB,OAAO,SAASH,EAAE,EAAE,MAAG,EAAE,KAAK,IACnC,EAAE,KAAKA,EAAE,IACJ,OAAO,SAASA,EAAE,CAAC,MAAG,EAAE,IAAI,OAEjC,EAAE,IAAIA,EAAE,IACR,EAAE,KAAK,IAELA,EAAE,MAAM,QACV,EAAE,MAAMA,EAAE,MAAM,KAAKG,GAChB,OAAO,SAASH,EAAE,EAAE,MAAG,EAAE,KAAK,IACnC,EAAE,KAAKA,EAAE,IACJ,OAAO,SAASA,EAAE,CAAC,MAAG,EAAE,IAAI,OAEjC,EAAE,IAAIA,EAAE,IACR,EAAE,KAAK;CAGb;CAGA,IAAMI,IAAY;EAChB,IAAI,QAAQ;GACV,OAAOlB;EACT;EACA,SAAS,GAAe;GAEtB,AADA,IAAQmB,GACRP,EAAMZ,CAAK;GACX,KAAK,IAAMe,KAAKb,GAAQ,EAAE,aAAaF,GAAOW,CAAM;GACpD,OAAOO;EACT;EACA,UAAU,GAAgC;GACxC,IAAME,IAAMlB;GACZ,IAASiB;GACT,KAAK,IAAMJ,KAAKI,GACd,AAAKC,EAAI,SAASL,CAAC,KAAGA,EAAE,aAAaf,GAAOW,CAAM;GAEpD,OAAOO;EACT;EACA,MAAM,GAAgB;GAGpB,OAFIG,MAAU,KAAA,IAAkBlB,KAChC,IAAQkB,GACDH;EACT;EACA,YAAY,GAAgB;GAG1B,OAFIG,MAAU,KAAA,IAAkBb,KAChC,IAAca,GACPH;EACT;EACA,WAAW,GAAgB;GAGzB,OAFIG,MAAU,KAAA,IAAkBf,KAChC,IAAae,GACNH;EACT;EACA,SAAS,GAAgB;GAGvB,OAFIG,MAAU,KAAA,IAAkBjB,KAChC,IAAWiB,GACJH;EACT;EACA,cAAc,GAAgB;GAG5B,OAFIG,MAAU,KAAA,IAAkBZ,KAChC,IAAgBY,GACTH;EACT;EACA,KAAK,IAAqB,GAAG;GAC3B,KAAK,IAAIL,IAAI,GAAGA,IAAIS,GAAY,KAAK,EAAK;GAC1C,OAAOJ;EACT;EACA,YAAY;GACV,OAAOf,IAAQC,KAAYI,MAAgB;EAC7C;CACF;CAEA,OAAOU;AACT"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","names":["DEFAULT_ALPHA_DECAY","DEFAULT_ALPHA_MIN","DEFAULT_VELOCITY_DECAY"],"sources":["../../../src/features/simulation/types.ts"],"sourcesContent":["/**\n * Minimal node interface for the simulation primitive. Matches d3-force's\n * node shape exactly so d3-force's bundled forces work without translation.\n *\n * Consumers extend this with arbitrary additional fields (id, label, etc.).\n */\nexport interface SimulationNode {\n x: number;\n y: number;\n vx?: number;\n vy?: number;\n /** Pin x to this value when non-null. The integrator skips x/vx for the node. */\n fx?: number | null;\n fy?: number | null;\n /** Array index, written by `initialize`. Some forces (e.g. forceLink) rely on it. */\n index?: number;\n}\n\n/**\n * Force protocol — contract-compatible with d3-force. A force is a function\n * called once per tick with the current alpha; it mutates `vx`/`vy` on nodes.\n * Optional `initialize` lets the force compute setup (link indices, etc.).\n */\nexport interface SimulationForce<TNode extends SimulationNode = SimulationNode> {\n (alpha: number): void;\n initialize?(nodes: TNode[], random?: () => number): void;\n}\n\n/** Options for `useSimulation`: everything {@link SimulationOptions} carries,\n * plus the loop's own callbacks and clock. */\nexport interface UseSimulationOptions<TNode extends SimulationNode>\n extends SimulationOptions<TNode> {\n /** Fired after each integration step. */\n onTick?: (nodes: TNode[]) => void;\n /** Fired once when the sim settles (alpha < alphaMin && alphaTarget === 0). */\n onEnd?: () => void;\n\n // Test injection (mirrors useAnimator):\n /** Optional rAF injection. Defaults to window.requestAnimationFrame. */\n requestFrame?: (cb: (t: number) => void) => number;\n cancelFrame?: (handle: number) => void;\n}\n\n/**\n * A force simulation over a set of nodes, with no clock of its own.\n *\n * Each tick applies every force and then integrates velocities, scaled by\n * `alpha` — a temperature that decays toward `alphaTarget` so the layout\n * settles instead of jittering forever. Raise `alphaTarget` to reheat it,\n * which is what a drag does.\n *\n * Nodes are mutated in place; the simulation holds the array, not a copy.\n *\n * Nothing here advances time. {@link Simulation} adds the frame loop; a caller\n * that wants the whole relaxation at once — a layout pass, a pre-warm, a test\n * — drives {@link SimulationCore.tick} itself.\n */\nexport interface SimulationCore<TNode extends SimulationNode> {\n readonly nodes: TNode[];\n\n setNodes(nodes: TNode[]): this;\n setForces(forces: SimulationForce<TNode>[]): this;\n\n alpha(): number;\n alpha(value: number): this;\n alphaTarget(): number;\n alphaTarget(value: number): this;\n alphaDecay(): number;\n alphaDecay(value: number): this;\n alphaMin(): number;\n alphaMin(value: number): this;\n velocityDecay(): number;\n velocityDecay(value: number): this;\n\n /**\n * Run the tick body synchronously `iterations` times. Does NOT fire\n * onTick or onEnd (matches d3-force). Used for offscreen pre-warm and tests.\n */\n tick(iterations?: number): this;\n\n isSettled(): boolean;\n}\n\n/** A {@link SimulationCore} running on a frame loop. */\nexport interface Simulation<TNode extends SimulationNode> extends SimulationCore<TNode> {\n /** Resume the RAF loop. If alpha < alphaMin, reset alpha to 1. */\n restart(): this;\n /** Cancel the RAF loop. Does not change alpha. */\n stop(): this;\n}\n\n/** What {@link SimulationCore} needs: the nodes, the forces acting on them,\n * and the cooling schedule. {@link UseSimulationOptions} adds the loop's. */\nexport interface SimulationOptions<TNode extends SimulationNode> {\n /** Mutable array of nodes. Kit + forces mutate vx/vy/x/y in place. */\n nodes: TNode[];\n /** Forces applied per tick. Each may implement `initialize` for setup. */\n forces?: SimulationForce<TNode>[];\n\n /** Initial alpha. Default 1. */\n alpha?: number;\n /** Settle threshold. When alpha drops below and alphaTarget is 0, onEnd fires. Default 0.001. */\n alphaMin?: number;\n /** Per-tick decay rate toward alphaTarget. Default 1 - 0.001^(1/300) ≈ 0.0228. */\n alphaDecay?: number;\n /** Target alpha. Set above alphaMin to keep sim warm (e.g. during drag). Default 0. */\n alphaTarget?: number;\n /** Friction multiplier on velocity per tick: vx *= (1 - velocityDecay). Default 0.4. */\n velocityDecay?: number;\n /** Handed to each force's `initialize`. Default `Math.random`; pass a seeded\n * source to make a run reproducible. */\n random?: () => number;\n}\n\n/** Default alpha decay: such that alpha drops from 1 to alphaMin (0.001) in 300 ticks. */\nexport const DEFAULT_ALPHA_DECAY = 1 - Math.pow(0.001, 1 / 300);\n/** Alpha below which a cooling simulation is considered settled. */\nexport const DEFAULT_ALPHA_MIN = 0.001;\n/** Fraction of velocity shed each tick — friction. Higher settles sooner and\n * overshoots less. */\nexport const DEFAULT_VELOCITY_DECAY = 0.4;\n"],"mappings":";AAmHA,IAAaA,IAAsB,IAAa,SAAO,IAAI,MAE9CC,IAAoB,MAGpBC,IAAyB"}
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import { createSimulation as e } from "./createSimulation.js";
|
|
2
|
-
import { useVisibleRaf as t } from "../../scheduling/useVisibleRaf.js";
|
|
3
|
-
import { useLayoutEffect as n, useMemo as r, useRef as i } from "react";
|
|
4
|
-
import { useLatest as a } from "@weasel-js/react";
|
|
5
|
-
//#region src/features/simulation/useSimulation.ts
|
|
6
|
-
function o(o) {
|
|
7
|
-
let s = a(o), c = i(null);
|
|
8
|
-
c.current ??= e(o);
|
|
9
|
-
let l = c.current, u = i(!1), d = i(!0), f = t(() => {
|
|
10
|
-
m();
|
|
11
|
-
}, {
|
|
12
|
-
requestFrame: o.requestFrame,
|
|
13
|
-
cancelFrame: o.cancelFrame
|
|
14
|
-
}), p = () => {
|
|
15
|
-
f.cancel();
|
|
16
|
-
}, m = () => {
|
|
17
|
-
if (d.current) {
|
|
18
|
-
if (l.tick(), s.current.onTick?.(l.nodes), l.alpha() < l.alphaMin()) {
|
|
19
|
-
p(), u.current || (u.current = !0, s.current.onEnd?.());
|
|
20
|
-
return;
|
|
21
|
-
}
|
|
22
|
-
f.request();
|
|
23
|
-
}
|
|
24
|
-
}, h = () => {
|
|
25
|
-
d.current && f.request();
|
|
26
|
-
};
|
|
27
|
-
return n(() => (d.current = !0, f.request(), () => {
|
|
28
|
-
d.current = !1, f.cancel();
|
|
29
|
-
}), [f]), r(() => {
|
|
30
|
-
let e = {
|
|
31
|
-
get nodes() {
|
|
32
|
-
return l.nodes;
|
|
33
|
-
},
|
|
34
|
-
setNodes(t) {
|
|
35
|
-
return l.setNodes(t), e;
|
|
36
|
-
},
|
|
37
|
-
setForces(t) {
|
|
38
|
-
return l.setForces(t), e;
|
|
39
|
-
},
|
|
40
|
-
alpha(t) {
|
|
41
|
-
return t === void 0 ? l.alpha() : (l.alpha(t), t >= l.alphaMin() && (u.current = !1), e);
|
|
42
|
-
},
|
|
43
|
-
alphaTarget(t) {
|
|
44
|
-
return t === void 0 ? l.alphaTarget() : (l.alphaTarget(t), t > 0 && (u.current = !1), e);
|
|
45
|
-
},
|
|
46
|
-
alphaDecay(t) {
|
|
47
|
-
return t === void 0 ? l.alphaDecay() : (l.alphaDecay(t), e);
|
|
48
|
-
},
|
|
49
|
-
alphaMin(t) {
|
|
50
|
-
return t === void 0 ? l.alphaMin() : (l.alphaMin(t), e);
|
|
51
|
-
},
|
|
52
|
-
velocityDecay(t) {
|
|
53
|
-
return t === void 0 ? l.velocityDecay() : (l.velocityDecay(t), e);
|
|
54
|
-
},
|
|
55
|
-
restart() {
|
|
56
|
-
return l.alpha() < l.alphaMin() && l.alpha(1), u.current = !1, h(), e;
|
|
57
|
-
},
|
|
58
|
-
stop() {
|
|
59
|
-
return p(), e;
|
|
60
|
-
},
|
|
61
|
-
tick(t = 1) {
|
|
62
|
-
return l.tick(t), e;
|
|
63
|
-
},
|
|
64
|
-
isSettled() {
|
|
65
|
-
return l.isSettled();
|
|
66
|
-
}
|
|
67
|
-
};
|
|
68
|
-
return e;
|
|
69
|
-
}, []);
|
|
70
|
-
}
|
|
71
|
-
//#endregion
|
|
72
|
-
export { o as useSimulation };
|
|
73
|
-
|
|
74
|
-
//# sourceMappingURL=useSimulation.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useSimulation.js","names":["useSimulation","optsRef","useLatest","opts","coreRef","useRef","createSimulation","core","endedRef","mountedRef","frameLoop","useVisibleRaf","stopRaf","rafTick","startRaf","useLayoutEffect","useMemo","h","newNodes","newForces","value","iterations"],"sources":["../../../src/features/simulation/useSimulation.ts"],"sourcesContent":["import { useLayoutEffect, useMemo, useRef } from 'react';\nimport { useLatest } from '@weasel-js/react';\nimport { useVisibleRaf } from '../../scheduling/useVisibleRaf';\nimport { createSimulation } from './createSimulation';\nimport {\n type Simulation,\n type SimulationCore,\n type SimulationForce,\n type SimulationNode,\n type UseSimulationOptions,\n} from './types';\n\n/**\n * Continuous N-body simulation primitive: `createSimulation`'s integrator on a\n * frame loop.\n *\n * The kit is adapter-agnostic — `onTick(nodes)` fires after each integration\n * step and the consumer decides how (and whether) to write through to scene\n * state. Per-tick history bypass and settle-commit semantics are consumer\n * concerns; the kit doesn't have an opinion.\n */\nexport function useSimulation<TNode extends SimulationNode>(\n opts: UseSimulationOptions<TNode>,\n): Simulation<TNode> {\n const optsRef = useLatest(opts);\n\n const coreRef = useRef<SimulationCore<TNode> | null>(null);\n coreRef.current ??= createSimulation(opts);\n const core = coreRef.current;\n\n /** Whether onEnd has fired since the last energization (restart / alpha set / target raise). */\n const endedRef = useRef(false);\n const mountedRef = useRef(true);\n\n // The loop runs behind the visibility gate: a settling simulation stops\n // integrating on a page nobody is looking at, and picks up where it left off.\n // Its step is fixed rather than time-based, so there is no clock to rebase.\n // The gate defaults an absent clock to `requestAnimationFrame`, so an\n // injected one passes straight through rather than being defaulted twice.\n const frameLoop = useVisibleRaf(\n () => { rafTick(); },\n {\n requestFrame: opts.requestFrame,\n cancelFrame: opts.cancelFrame,\n },\n );\n\n const stopRaf = (): void => { frameLoop.cancel(); };\n\n const rafTick = (): void => {\n if (!mountedRef.current) return;\n\n core.tick();\n optsRef.current.onTick?.(core.nodes);\n\n if (core.alpha() < core.alphaMin()) {\n stopRaf();\n if (!endedRef.current) {\n endedRef.current = true;\n optsRef.current.onEnd?.();\n }\n return;\n }\n\n frameLoop.request();\n };\n\n const startRaf = (): void => {\n if (!mountedRef.current) return;\n frameLoop.request();\n };\n\n // Starts on every mount, StrictMode's simulated remount included, and in a\n // layout effect so a host's own layout effects can already `stop()` it.\n // `createSimulation` has already primed the nodes.\n useLayoutEffect(() => {\n mountedRef.current = true;\n frameLoop.request();\n return () => {\n mountedRef.current = false;\n frameLoop.cancel();\n };\n }, [frameLoop]);\n\n // Stable handle. All methods read through the core, so a fixed identity is safe.\n const handle = useMemo<Simulation<TNode>>(() => {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n const h: any = {\n get nodes() {\n return core.nodes;\n },\n setNodes(newNodes: TNode[]) {\n core.setNodes(newNodes);\n return h;\n },\n setForces(newForces: SimulationForce<TNode>[]) {\n core.setForces(newForces);\n return h;\n },\n alpha(value?: number) {\n if (value === undefined) return core.alpha();\n core.alpha(value);\n if (value >= core.alphaMin()) endedRef.current = false;\n return h;\n },\n alphaTarget(value?: number) {\n if (value === undefined) return core.alphaTarget();\n core.alphaTarget(value);\n if (value > 0) endedRef.current = false;\n return h;\n },\n alphaDecay(value?: number) {\n if (value === undefined) return core.alphaDecay();\n core.alphaDecay(value);\n return h;\n },\n alphaMin(value?: number) {\n if (value === undefined) return core.alphaMin();\n core.alphaMin(value);\n return h;\n },\n velocityDecay(value?: number) {\n if (value === undefined) return core.velocityDecay();\n core.velocityDecay(value);\n return h;\n },\n restart() {\n if (core.alpha() < core.alphaMin()) core.alpha(1);\n endedRef.current = false;\n startRaf();\n return h;\n },\n stop() {\n stopRaf();\n return h;\n },\n tick(iterations: number = 1) {\n core.tick(iterations);\n return h;\n },\n isSettled() {\n return core.isSettled();\n },\n };\n return h as Simulation<TNode>;\n /* eslint-enable @typescript-eslint/no-explicit-any */\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return handle;\n}\n"],"mappings":";;;;;AAqBA,SAAgBA,EACd,GACmB;CACnB,IAAMC,IAAUC,EAAUC,CAAI,GAExBC,IAAUC,EAAqC,IAAI;CACzD,EAAQ,YAAYC,EAAiBH,CAAI;CACzC,IAAMI,IAAOH,EAAQ,SAGfI,IAAWH,EAAO,EAAK,GACvBI,IAAaJ,EAAO,EAAI,GAOxBK,IAAYC,QACV;EAAE,EAAQ;CAAG,GACnB;EACE,cAAcR,EAAK;EACnB,aAAaA,EAAK;CACpB,CACF,GAEMS,UAAsB;EAAE,EAAU,OAAO;CAAG,GAE5CC,UAAsB;EAC1B,IAAKJ,EAAW,SAKhB;OAHAF,EAAK,KAAK,GACVN,EAAQ,QAAQ,SAASM,EAAK,KAAK,GAE/BA,EAAK,MAAM,IAAIA,EAAK,SAAS,GAAG;IAElC,AADAK,EAAQ,GACHJ,EAAS,YACZ,EAAS,UAAU,IACnBP,EAAQ,QAAQ,QAAQ;IAE1B;GACF;GAEA,EAAU,QAAQ;EAFlB;CAGF,GAEMa,UAAuB;EAC3B,AAAKL,EAAW,WAChBC,EAAU,QAAQ;CACpB;CA+EA,OA1EAK,SACE,EAAW,UAAU,IACrBL,EAAU,QAAQ,SACL;EAEX,AADA,EAAW,UAAU,IACrBA,EAAU,OAAO;CACnB,IACC,CAACA,CAAS,CAAC,GAGCM,QAAiC;EAE9C,IAAMC,IAAS;GACb,IAAI,QAAQ;IACV,OAAOV,EAAK;GACd;GACA,SAAS,GAAmB;IAE1B,OADAA,EAAK,SAASW,CAAQ,GACfD;GACT;GACA,UAAU,GAAqC;IAE7C,OADAV,EAAK,UAAUY,CAAS,GACjBF;GACT;GACA,MAAM,GAAgB;IAIpB,OAHIG,MAAU,KAAA,IAAkBb,EAAK,MAAM,KAC3CA,EAAK,MAAMa,CAAK,GACZA,KAASb,EAAK,SAAS,MAAG,EAAS,UAAU,KAC1CU;GACT;GACA,YAAY,GAAgB;IAI1B,OAHIG,MAAU,KAAA,IAAkBb,EAAK,YAAY,KACjDA,EAAK,YAAYa,CAAK,GAClBA,IAAQ,MAAG,EAAS,UAAU,KAC3BH;GACT;GACA,WAAW,GAAgB;IAGzB,OAFIG,MAAU,KAAA,IAAkBb,EAAK,WAAW,KAChDA,EAAK,WAAWa,CAAK,GACdH;GACT;GACA,SAAS,GAAgB;IAGvB,OAFIG,MAAU,KAAA,IAAkBb,EAAK,SAAS,KAC9CA,EAAK,SAASa,CAAK,GACZH;GACT;GACA,cAAc,GAAgB;IAG5B,OAFIG,MAAU,KAAA,IAAkBb,EAAK,cAAc,KACnDA,EAAK,cAAca,CAAK,GACjBH;GACT;GACA,UAAU;IAIR,OAHIV,EAAK,MAAM,IAAIA,EAAK,SAAS,KAAGA,EAAK,MAAM,CAAC,GAChD,EAAS,UAAU,IACnBO,EAAS,GACFG;GACT;GACA,OAAO;IAEL,OADAL,EAAQ,GACDK;GACT;GACA,KAAK,IAAqB,GAAG;IAE3B,OADAV,EAAK,KAAKc,CAAU,GACbJ;GACT;GACA,YAAY;IACV,OAAOV,EAAK,UAAU;GACxB;EACF;EACA,OAAOU;CAGT,GAAG,CAAC,CAEG;AACT"}
|
|
@@ -1,258 +0,0 @@
|
|
|
1
|
-
import { cssFontFamily as e } from "@weasel-js/font";
|
|
2
|
-
import { DEFAULT_TEXT_STYLE as t, SMALL_CAPS_SCALE as n, isHardLineBreak as r, numericWeight as i, smallCapsScaleFor as a, smallCapsText as o, transformRunTexts as s } from "@weasel-js/text";
|
|
3
|
-
//#region src/features/text/domRuns.ts
|
|
4
|
-
function c(e) {
|
|
5
|
-
return e && "color" in e ? e.color : null;
|
|
6
|
-
}
|
|
7
|
-
var l = /* @__PURE__ */ new Set([
|
|
8
|
-
"none",
|
|
9
|
-
"uppercase",
|
|
10
|
-
"lowercase",
|
|
11
|
-
"capitalize"
|
|
12
|
-
]), u = {
|
|
13
|
-
bold: !1,
|
|
14
|
-
italic: !1,
|
|
15
|
-
underline: !1,
|
|
16
|
-
strikethrough: !1,
|
|
17
|
-
overline: !1
|
|
18
|
-
};
|
|
19
|
-
function d(e) {
|
|
20
|
-
let t = parseFloat(e);
|
|
21
|
-
if (!Number.isFinite(t)) return;
|
|
22
|
-
let n = /^-?[\d.]+([a-z%]+)$/i.exec(e.trim())?.[1]?.toLowerCase();
|
|
23
|
-
return n && n !== "px" && console.warn(`weasel domRuns: letter-spacing "${e}" uses unit "${n}", which is not converted; treated as ${t} world units`), t;
|
|
24
|
-
}
|
|
25
|
-
var f = (e) => e.hasAttribute("data-small-caps");
|
|
26
|
-
function p(e) {
|
|
27
|
-
let t = e.style.fontVariant || e.style.getPropertyValue("font-variant-caps");
|
|
28
|
-
return t === "small-caps" || t === "normal" ? t : void 0;
|
|
29
|
-
}
|
|
30
|
-
function m(e, t) {
|
|
31
|
-
if (f(e)) return t;
|
|
32
|
-
let n = { ...t }, r = e.tagName;
|
|
33
|
-
if ((r === "B" || r === "STRONG") && (n.bold = !0, n.fontWeight = void 0), (r === "I" || r === "EM") && (n.italic = !0), r === "U" && (n.underline = !0), (r === "S" || r === "STRIKE" || r === "DEL") && (n.strikethrough = !0), r === "SUP" && (n.script = "super"), r === "SUB" && (n.script = "sub"), e instanceof HTMLElement) {
|
|
34
|
-
let t = e.style.fontWeight, r = Number(e.getAttribute("data-font-weight") ?? t);
|
|
35
|
-
e.hasAttribute("data-font-weight") || ![
|
|
36
|
-
"",
|
|
37
|
-
"700",
|
|
38
|
-
"bold",
|
|
39
|
-
"400",
|
|
40
|
-
"normal"
|
|
41
|
-
].includes(t) ? Number.isFinite(r) && r > 0 && (n.fontWeight = r, n.bold = !1) : t !== "" && (n.bold = t === "700" || t === "bold", n.fontWeight = void 0);
|
|
42
|
-
let i = e.style.fontStyle;
|
|
43
|
-
i === "italic" && (n.italic = !0), i === "normal" && (n.italic = !1);
|
|
44
|
-
let a = e.style.textDecoration || e.style.textDecorationLine;
|
|
45
|
-
if (a && !a.includes("none") && (n.underline ||= a.includes("underline"), n.strikethrough ||= a.includes("line-through"), n.overline ||= a.includes("overline")), e.style.fontSize) {
|
|
46
|
-
let t = parseFloat(e.style.fontSize);
|
|
47
|
-
Number.isFinite(t) && (e.style.fontSize.trim().endsWith("%") ? n.fontScale = t / 100 : n.fontSize = t);
|
|
48
|
-
}
|
|
49
|
-
let o = e.style.verticalAlign;
|
|
50
|
-
(o === "super" || o === "sub") && (n.script = o === "super" ? "super" : "sub"), o === "baseline" && (n.script = void 0);
|
|
51
|
-
let s = e.getAttribute("data-baseline-shift");
|
|
52
|
-
if (s != null) {
|
|
53
|
-
let e = parseFloat(s);
|
|
54
|
-
Number.isFinite(e) && (n.baselineShift = e);
|
|
55
|
-
}
|
|
56
|
-
let c = e.style.textTransform;
|
|
57
|
-
l.has(c) && (n.textTransform = c);
|
|
58
|
-
let u = p(e);
|
|
59
|
-
u && (n.fontVariantCaps = u);
|
|
60
|
-
let f = e.getAttribute("data-font-family") ?? e.style.fontFamily;
|
|
61
|
-
f && (n.fontFamily = f), e.style.color && (n.color = e.style.color);
|
|
62
|
-
let m = e.style.letterSpacing;
|
|
63
|
-
if (m === "normal") n.letterSpacing = void 0;
|
|
64
|
-
else if (m) {
|
|
65
|
-
let e = d(m);
|
|
66
|
-
e != null && (n.letterSpacing = e);
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
return n;
|
|
70
|
-
}
|
|
71
|
-
function h(e, t) {
|
|
72
|
-
return e.bold === t.bold && e.italic === t.italic && e.underline === t.underline && e.strikethrough === t.strikethrough && e.overline === t.overline && e.fontWeight === t.fontWeight && e.fontSize === t.fontSize && e.fontFamily === t.fontFamily && e.color === t.color && e.letterSpacing === t.letterSpacing && e.script === t.script && e.baselineShift === t.baselineShift && e.fontScale === t.fontScale && e.textTransform === t.textTransform && e.fontVariantCaps === t.fontVariantCaps;
|
|
73
|
-
}
|
|
74
|
-
function g(e, t) {
|
|
75
|
-
let n = { text: e };
|
|
76
|
-
return t.bold && (n.bold = !0), t.italic && (n.italic = !0), t.fontWeight != null && (n.fontWeight = t.fontWeight), t.fontSize != null && (n.fontSize = t.fontSize), t.fontFamily != null && (n.fontFamily = t.fontFamily), t.color != null && (n.fill = {
|
|
77
|
-
fill: "solid",
|
|
78
|
-
color: t.color
|
|
79
|
-
}), t.letterSpacing != null && (n.letterSpacing = t.letterSpacing), t.underline && (n.underline = !0), t.strikethrough && (n.strikethrough = !0), t.overline && (n.overline = !0), t.script != null && (n.script = t.script), t.baselineShift != null && (n.baselineShift = t.baselineShift), t.fontScale != null && (n.fontScale = t.fontScale), t.textTransform != null && (n.textTransform = t.textTransform), t.fontVariantCaps != null && (n.fontVariantCaps = t.fontVariantCaps), n;
|
|
80
|
-
}
|
|
81
|
-
var _ = "data-break";
|
|
82
|
-
function v(e) {
|
|
83
|
-
let t = e.textContent ?? "", n = parseInt(e.getAttribute(_) ?? "", 16);
|
|
84
|
-
return t.startsWith("\n") && Number.isFinite(n) ? String.fromCharCode(n) + t.slice(1) : t;
|
|
85
|
-
}
|
|
86
|
-
function y(e, t) {
|
|
87
|
-
let n = 0;
|
|
88
|
-
for (let i = 0; i < t.length; i++) {
|
|
89
|
-
let a = t.charCodeAt(i);
|
|
90
|
-
if (a === 10 || !r(a) || a === 13 && t.charCodeAt(i + 1) === 10) continue;
|
|
91
|
-
i > n && e.appendChild(document.createTextNode(t.slice(n, i)));
|
|
92
|
-
let o = document.createElement("span");
|
|
93
|
-
o.setAttribute(_, a.toString(16)), o.textContent = "\n", e.appendChild(o), n = i + 1;
|
|
94
|
-
}
|
|
95
|
-
n < t.length && e.appendChild(document.createTextNode(t.slice(n)));
|
|
96
|
-
}
|
|
97
|
-
function b(e) {
|
|
98
|
-
let t = [];
|
|
99
|
-
function n(e, r) {
|
|
100
|
-
if (e.nodeType === Node.TEXT_NODE) {
|
|
101
|
-
let n = e.data;
|
|
102
|
-
n.length > 0 && t.push({
|
|
103
|
-
text: n,
|
|
104
|
-
style: r
|
|
105
|
-
});
|
|
106
|
-
return;
|
|
107
|
-
}
|
|
108
|
-
if (e.nodeType !== Node.ELEMENT_NODE) return;
|
|
109
|
-
let i = e;
|
|
110
|
-
if (i.tagName === "BR") {
|
|
111
|
-
t.push({
|
|
112
|
-
text: "\n",
|
|
113
|
-
style: r
|
|
114
|
-
});
|
|
115
|
-
return;
|
|
116
|
-
}
|
|
117
|
-
if (i.hasAttribute(_)) {
|
|
118
|
-
let e = v(i);
|
|
119
|
-
e.length > 0 && t.push({
|
|
120
|
-
text: e,
|
|
121
|
-
style: r
|
|
122
|
-
});
|
|
123
|
-
return;
|
|
124
|
-
}
|
|
125
|
-
i.tagName === "DIV" && t.length > 0 && t.push({
|
|
126
|
-
text: "\n",
|
|
127
|
-
style: r
|
|
128
|
-
});
|
|
129
|
-
let a = m(i, r);
|
|
130
|
-
for (let e of Array.from(i.childNodes)) n(e, a);
|
|
131
|
-
}
|
|
132
|
-
for (let t of Array.from(e.childNodes)) n(t, u);
|
|
133
|
-
let r = [], i = 0;
|
|
134
|
-
for (; i < t.length;) {
|
|
135
|
-
let e = i + 1;
|
|
136
|
-
for (; e < t.length && h(t[i].style, t[e].style);) e++;
|
|
137
|
-
let n = t.slice(i, e).map((e) => e.text).join("");
|
|
138
|
-
r.push(g(n, t[i].style)), i = e;
|
|
139
|
-
}
|
|
140
|
-
return r;
|
|
141
|
-
}
|
|
142
|
-
var x = "--weasel-small-caps";
|
|
143
|
-
function S(e, t) {
|
|
144
|
-
let [n] = s([e], [t]), r = o(n.text, n.srcMap), i = Array(e.length).fill(!1);
|
|
145
|
-
r.small?.forEach((e, t) => {
|
|
146
|
-
e && (i[r.srcMap ? r.srcMap.starts[t] : t] = !0);
|
|
147
|
-
});
|
|
148
|
-
let a = [], c = 0;
|
|
149
|
-
for (let t of e) {
|
|
150
|
-
let e = a[a.length - 1];
|
|
151
|
-
e && e.small === i[c] ? e.text += t : a.push({
|
|
152
|
-
text: t,
|
|
153
|
-
small: i[c]
|
|
154
|
-
}), c += t.length;
|
|
155
|
-
}
|
|
156
|
-
return a;
|
|
157
|
-
}
|
|
158
|
-
function C(e, t, r) {
|
|
159
|
-
e.replaceChildren();
|
|
160
|
-
for (let i of S(t, r)) {
|
|
161
|
-
if (!i.small) {
|
|
162
|
-
y(e, i.text);
|
|
163
|
-
continue;
|
|
164
|
-
}
|
|
165
|
-
let t = document.createElement("span");
|
|
166
|
-
t.setAttribute("data-small-caps", ""), t.style.fontSize = `calc(var(${x}, ${n}) * 1em)`, t.style.textTransform = "uppercase", t.textContent = i.text, e.appendChild(t);
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
function w(n, r, o = t) {
|
|
170
|
-
r.replaceChildren();
|
|
171
|
-
for (let t of n) {
|
|
172
|
-
let n = document.createElement("span");
|
|
173
|
-
if (n.setAttribute("data-run", ""), (t.fontVariantCaps ?? o.fontVariantCaps) === "small-caps") {
|
|
174
|
-
let e = a(t.fontFamily ?? o.fontFamily, t.fontWeight ?? (t.bold ? 700 : i(o.fontWeight)), t.italic ? "italic" : o.fontStyle);
|
|
175
|
-
n.style.setProperty(x, String(e)), C(n, t.text, t.textTransform ?? o.textTransform);
|
|
176
|
-
} else y(n, t.text);
|
|
177
|
-
t.fontVariantCaps != null && (n.style.fontVariant = t.fontVariantCaps), t.fontWeight == null ? t.bold && (n.style.fontWeight = "700") : (n.style.fontWeight = String(t.fontWeight), n.setAttribute("data-font-weight", String(t.fontWeight))), t.italic && (n.style.fontStyle = "italic"), t.fontSize == null ? t.fontScale != null && (n.style.fontSize = `${t.fontScale * 100}%`) : n.style.fontSize = `${t.fontSize}px`, t.fontFamily != null && (n.style.fontFamily = e(t.fontFamily, {
|
|
178
|
-
weight: t.fontWeight ?? (t.bold ? 700 : void 0),
|
|
179
|
-
style: t.italic ? "italic" : void 0
|
|
180
|
-
}), n.setAttribute("data-font-family", t.fontFamily));
|
|
181
|
-
let s = c(t.fill);
|
|
182
|
-
s != null && (n.style.color = s);
|
|
183
|
-
let l = [];
|
|
184
|
-
t.underline && l.push("underline"), t.strikethrough && l.push("line-through"), t.overline && l.push("overline"), l.length > 0 && (n.style.textDecoration = l.join(" ")), t.script != null && (n.style.verticalAlign = t.script), t.baselineShift != null && n.setAttribute("data-baseline-shift", String(t.baselineShift)), t.letterSpacing != null && (n.style.letterSpacing = `${t.letterSpacing}px`), t.textTransform != null && (n.style.textTransform = t.textTransform), r.appendChild(n);
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
function T(e) {
|
|
188
|
-
let t = "";
|
|
189
|
-
for (let n of e.childNodes) n.nodeType === Node.TEXT_NODE ? t += n.data : n instanceof Element && (t += n.hasAttribute(_) ? v(n) : T(n));
|
|
190
|
-
return t;
|
|
191
|
-
}
|
|
192
|
-
function E(e, t) {
|
|
193
|
-
let n = S(T(e), t), r = [];
|
|
194
|
-
for (let t of e.childNodes) {
|
|
195
|
-
let e, n;
|
|
196
|
-
if (t.nodeType === Node.TEXT_NODE) e = !1, n = t.data;
|
|
197
|
-
else if (t instanceof HTMLElement && t.hasAttribute(_)) e = !1, n = v(t);
|
|
198
|
-
else if (t instanceof HTMLElement && f(t) && t.children.length === 0) e = !0, n = t.textContent ?? "";
|
|
199
|
-
else return !1;
|
|
200
|
-
if (n.length === 0) continue;
|
|
201
|
-
let i = r[r.length - 1];
|
|
202
|
-
i && i.small === e ? i.text += n : r.push({
|
|
203
|
-
text: n,
|
|
204
|
-
small: e
|
|
205
|
-
});
|
|
206
|
-
}
|
|
207
|
-
return n.length === r.length && n.every((e, t) => e.text === r[t].text && e.small === r[t].small);
|
|
208
|
-
}
|
|
209
|
-
function D(e) {
|
|
210
|
-
let t = !1, n = (e, r, i) => {
|
|
211
|
-
let a = p(e) ?? r, o = e.style.textTransform, s = l.has(o) ? o : i;
|
|
212
|
-
if (e.hasAttribute("data-run")) {
|
|
213
|
-
if (a === "small-caps") E(e, s) || (C(e, T(e), s), t = !0);
|
|
214
|
-
else if (e.querySelector("[data-small-caps]")) {
|
|
215
|
-
let n = T(e);
|
|
216
|
-
e.replaceChildren(), y(e, n), t = !0;
|
|
217
|
-
}
|
|
218
|
-
return;
|
|
219
|
-
}
|
|
220
|
-
for (let t of e.children) t instanceof HTMLElement && n(t, a, s);
|
|
221
|
-
};
|
|
222
|
-
return n(e, "normal", "none"), t;
|
|
223
|
-
}
|
|
224
|
-
function O(e, t) {
|
|
225
|
-
let n = t, r = document.createTreeWalker(e, NodeFilter.SHOW_TEXT), i = null, a = r.nextNode();
|
|
226
|
-
for (; a;) {
|
|
227
|
-
let e = a.data.length;
|
|
228
|
-
if (n <= e) return {
|
|
229
|
-
node: a,
|
|
230
|
-
offset: n
|
|
231
|
-
};
|
|
232
|
-
n -= e, i = a, a = r.nextNode();
|
|
233
|
-
}
|
|
234
|
-
return i ? {
|
|
235
|
-
node: i,
|
|
236
|
-
offset: i.data.length
|
|
237
|
-
} : {
|
|
238
|
-
node: e,
|
|
239
|
-
offset: 0
|
|
240
|
-
};
|
|
241
|
-
}
|
|
242
|
-
function k(e, t, n) {
|
|
243
|
-
let r = 0, i = document.createTreeWalker(e, NodeFilter.SHOW_TEXT), a = i.nextNode();
|
|
244
|
-
if (t.nodeType === Node.TEXT_NODE) {
|
|
245
|
-
for (; a;) {
|
|
246
|
-
if (a === t) return r + n;
|
|
247
|
-
r += a.data.length, a = i.nextNode();
|
|
248
|
-
}
|
|
249
|
-
return r;
|
|
250
|
-
}
|
|
251
|
-
let o = document.createRange();
|
|
252
|
-
for (o.setStart(t, Math.max(0, Math.min(n, t.childNodes.length))), o.collapse(!0); a;) o.comparePoint(a, 0) < 0 && (r += a.data.length), a = i.nextNode();
|
|
253
|
-
return r;
|
|
254
|
-
}
|
|
255
|
-
//#endregion
|
|
256
|
-
export { x as SMALL_CAPS_SCALE_PROPERTY, y as appendOverlayText, O as charOffsetToDomPosition, k as domPositionToCharOffset, b as domToRuns, D as normalizeSmallCaps, w as runsToDom };
|
|
257
|
-
|
|
258
|
-
//# sourceMappingURL=domRuns.js.map
|