@weasel-js/core 1.9.4 → 1.10.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +918 -0
- package/README.md +38 -3
- package/dist/WeaselProvider.js +5 -7
- package/dist/WeaselProvider.js.map +1 -1
- package/dist/affordances/composeAffordanceLayer.js +92 -84
- package/dist/affordances/composeAffordanceLayer.js.map +1 -1
- package/dist/affordances/cornerResize.js +3 -2
- package/dist/affordances/cornerResize.js.map +1 -1
- package/dist/affordances/hitAffordanceRegions.js +71 -101
- package/dist/affordances/hitAffordanceRegions.js.map +1 -1
- package/dist/affordances/pathAnchors.js +50 -28
- package/dist/affordances/pathAnchors.js.map +1 -1
- package/dist/affordances/rotateCursor.js +12 -0
- package/dist/affordances/rotateCursor.js.map +1 -0
- package/dist/affordances/rotationHandle.js +44 -46
- package/dist/affordances/rotationHandle.js.map +1 -1
- package/dist/animation/behaviors/coast.js +21 -0
- package/dist/animation/behaviors/coast.js.map +1 -0
- package/dist/animation/behaviors/coastByWrite.js +107 -0
- package/dist/animation/behaviors/coastByWrite.js.map +1 -0
- package/dist/animation/behaviors/coastOnTargets.js +94 -0
- package/dist/animation/behaviors/coastOnTargets.js.map +1 -0
- package/dist/animation/behaviors/momentum.js +48 -136
- package/dist/animation/behaviors/momentum.js.map +1 -1
- package/dist/animation/clipTargets.js +12 -0
- package/dist/animation/clipTargets.js.map +1 -0
- package/dist/animation/index.js +15 -20
- package/dist/animation/poseHelpers.js +112 -33
- package/dist/animation/poseHelpers.js.map +1 -1
- package/dist/animation/poseTarget.js +115 -0
- package/dist/animation/poseTarget.js.map +1 -0
- package/dist/animation/reflow.js +113 -83
- package/dist/animation/reflow.js.map +1 -1
- package/dist/animation/rewind.js +66 -0
- package/dist/animation/rewind.js.map +1 -0
- package/dist/animation/rig/bindRig.js +85 -53
- package/dist/animation/rig/bindRig.js.map +1 -1
- package/dist/animation/rig/rigNode.js +99 -0
- package/dist/animation/rig/rigNode.js.map +1 -0
- package/dist/animation/rig/rigSeat.js +59 -0
- package/dist/animation/rig/rigSeat.js.map +1 -0
- package/dist/animation/rig/skinBinding.js +64 -0
- package/dist/animation/rig/skinBinding.js.map +1 -0
- package/dist/animation/rig/useRig.js +31 -16
- package/dist/animation/rig/useRig.js.map +1 -1
- package/dist/animation/wrappers/animateLifecycle.js +8 -7
- package/dist/animation/wrappers/animateLifecycle.js.map +1 -1
- package/dist/animation/wrappers/animateOnSetPose.js +31 -31
- package/dist/animation/wrappers/animateOnSetPose.js.map +1 -1
- package/dist/animation/wrappers/instantPose.js.map +1 -1
- package/dist/animation/writtenPoseTarget.js +33 -0
- package/dist/animation/writtenPoseTarget.js.map +1 -0
- package/dist/autoPoseDescriptor-DHg5KqaJ.d.ts +27 -0
- package/dist/barrel/canvas.js +32 -0
- package/dist/barrel/chrome.js +10 -10
- package/dist/barrel/input.js +16 -17
- package/dist/barrel/interactions.js +34 -37
- package/dist/barrel/paint.js +11 -18
- package/dist/barrel/paths.js +13 -19
- package/dist/barrel/renderer.js +14 -20
- package/dist/barrel/routing.js +54 -47
- package/dist/barrel/scene.js +37 -0
- package/dist/barrel/text.js +9 -18
- package/dist/barrel/viewport.js +44 -51
- package/dist/canvas/Canvas.js +270 -475
- package/dist/canvas/Canvas.js.map +1 -1
- package/dist/canvas/CanvasView.js +168 -190
- package/dist/canvas/CanvasView.js.map +1 -1
- package/dist/canvas/CursorCoordsHud.js +24 -25
- package/dist/canvas/CursorCoordsHud.js.map +1 -1
- package/dist/canvas/DrawCanvas.js +39 -56
- package/dist/canvas/DrawCanvas.js.map +1 -1
- package/dist/canvas/ModalityHud.js.map +1 -1
- package/dist/canvas/NodeShape.js +28 -29
- package/dist/canvas/NodeShape.js.map +1 -1
- package/dist/canvas/PickHud.js.map +1 -1
- package/dist/canvas/SceneCanvas/DevHuds.js +40 -0
- package/dist/canvas/SceneCanvas/DevHuds.js.map +1 -0
- package/dist/canvas/SceneCanvas/GestureDispatcherMounter.js +66 -107
- package/dist/canvas/SceneCanvas/GestureDispatcherMounter.js.map +1 -1
- package/dist/canvas/SceneCanvas/PointerProviderIfRoot.js +33 -36
- package/dist/canvas/SceneCanvas/PointerProviderIfRoot.js.map +1 -1
- package/dist/canvas/SceneCanvas/StandardActionsRegistrar.js +38 -50
- package/dist/canvas/SceneCanvas/StandardActionsRegistrar.js.map +1 -1
- package/dist/canvas/SceneCanvas/ToolKeybindingsMounter.js +3 -3
- package/dist/canvas/SceneCanvas/ToolKeybindingsMounter.js.map +1 -1
- package/dist/canvas/SceneCanvas/coordTrace.js +37 -1
- package/dist/canvas/SceneCanvas/coordTrace.js.map +1 -1
- package/dist/canvas/SceneCanvas/defaultNodeProperties.js +319 -270
- package/dist/canvas/SceneCanvas/defaultNodeProperties.js.map +1 -1
- package/dist/canvas/SceneCanvas/defaultNodeRouting.js +1 -1
- package/dist/canvas/SceneCanvas/defaultNodeRouting.js.map +1 -1
- package/dist/canvas/SceneCanvas/dispatcherGestureBounds.js.map +1 -1
- package/dist/canvas/SceneCanvas/features.js +71 -62
- package/dist/canvas/SceneCanvas/features.js.map +1 -1
- package/dist/canvas/SceneCanvas/insertPreviewCommands.js +97 -0
- package/dist/canvas/SceneCanvas/insertPreviewCommands.js.map +1 -0
- package/dist/canvas/SceneCanvas/isDev.js.map +1 -1
- package/dist/canvas/SceneCanvas/poseGeometry.js +33 -37
- package/dist/canvas/SceneCanvas/poseGeometry.js.map +1 -1
- package/dist/canvas/SceneCanvas/props.js +15 -14
- package/dist/canvas/SceneCanvas/props.js.map +1 -1
- package/dist/canvas/SceneCanvas/scenePointQuery.js +50 -0
- package/dist/canvas/SceneCanvas/scenePointQuery.js.map +1 -0
- package/dist/canvas/SceneCanvas/shapeGeneratorProperties.js +52 -0
- package/dist/canvas/SceneCanvas/shapeGeneratorProperties.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/useActionTunings.js +17 -0
- package/dist/canvas/SceneCanvas/useActionTunings.js.map +1 -0
- package/dist/canvas/SceneCanvas/useActionsPropResolver.js +6 -1
- package/dist/canvas/SceneCanvas/useActionsPropResolver.js.map +1 -1
- package/dist/canvas/SceneCanvas/useBuiltinShapeTools.js.map +1 -1
- package/dist/canvas/SceneCanvas/useBuiltinTools.js +21 -0
- package/dist/canvas/SceneCanvas/useBuiltinTools.js.map +1 -0
- package/dist/canvas/SceneCanvas/useCanvasCamera.js +46 -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 +49 -113
- 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 +51 -41
- 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 +65 -101
- 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 +8 -0
- package/dist/canvas/SceneCanvas/worldPointAt.js.map +1 -0
- package/dist/canvas/SceneCanvas.js +301 -708
- package/dist/canvas/SceneCanvas.js.map +1 -1
- package/dist/canvas/SceneViewCanvas.js +41 -47
- package/dist/canvas/SceneViewCanvas.js.map +1 -1
- package/dist/canvas/SurfaceCanvas.js +40 -0
- package/dist/canvas/SurfaceCanvas.js.map +1 -0
- package/dist/canvas/adapterDerivedPath.js +26 -0
- package/dist/canvas/adapterDerivedPath.js.map +1 -0
- package/dist/canvas/adapterPickSource.js +34 -0
- package/dist/canvas/adapterPickSource.js.map +1 -0
- package/dist/canvas/affordanceAt.js +12 -2
- package/dist/canvas/affordanceAt.js.map +1 -1
- package/dist/canvas/buildSceneLayer.js +81 -61
- package/dist/canvas/buildSceneLayer.js.map +1 -1
- package/dist/canvas/buildSceneTree.js +56 -34
- package/dist/canvas/buildSceneTree.js.map +1 -1
- package/dist/canvas/canvasRenderer.js +40 -44
- package/dist/canvas/canvasRenderer.js.map +1 -1
- package/dist/canvas/colorOverrides.js.map +1 -1
- package/dist/canvas/copiesAbove.js +27 -0
- package/dist/canvas/copiesAbove.js.map +1 -0
- package/dist/canvas/defaultDrawOne.js +25 -24
- package/dist/canvas/defaultDrawOne.js.map +1 -1
- package/dist/canvas/deps/areaSelect.js +4 -4
- package/dist/canvas/deps/areaSelect.js.map +1 -1
- package/dist/canvas/deps/debug.js.map +1 -1
- package/dist/canvas/deps/editAnchors.js +47 -71
- package/dist/canvas/deps/editAnchors.js.map +1 -1
- package/dist/canvas/deps/geometryProjection.js.map +1 -1
- package/dist/canvas/deps/hitTestArea.js +45 -25
- package/dist/canvas/deps/hitTestArea.js.map +1 -1
- package/dist/canvas/deps/insert.js +149 -104
- 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/layout.js +9 -15
- package/dist/canvas/deps/layout.js.map +1 -1
- package/dist/canvas/deps/poseDescriptor.js +1 -1
- package/dist/canvas/deps/poseDescriptor.js.map +1 -1
- package/dist/canvas/deps/resizePolicy.js.map +1 -1
- package/dist/canvas/deps/slice.js +44 -45
- package/dist/canvas/deps/slice.js.map +1 -1
- package/dist/canvas/deps/textEdit.js +8 -8
- package/dist/canvas/deps/textEdit.js.map +1 -1
- package/dist/canvas/deps/view.js.map +1 -1
- package/dist/canvas/derivedPath.js +69 -43
- package/dist/canvas/derivedPath.js.map +1 -1
- package/dist/canvas/drawEnvelope.js +8 -4
- package/dist/canvas/drawEnvelope.js.map +1 -1
- package/dist/canvas/getNodeAtPoint.js +2 -6
- package/dist/canvas/getNodeAtPoint.js.map +1 -1
- package/dist/canvas/hud.module.js.map +1 -1
- package/dist/canvas/insertPreviewExtent.js +33 -31
- package/dist/canvas/insertPreviewExtent.js.map +1 -1
- package/dist/canvas/layerOrder.js.map +1 -1
- package/dist/canvas/layerSlots.js +6 -1
- package/dist/canvas/layerSlots.js.map +1 -1
- package/dist/canvas/nodeShapes/derivedPainter.js +12 -12
- package/dist/canvas/nodeShapes/derivedPainter.js.map +1 -1
- package/dist/canvas/nodeShapes/imagePainter.js +10 -10
- package/dist/canvas/nodeShapes/imagePainter.js.map +1 -1
- package/dist/canvas/nodeShapes/memo.js.map +1 -1
- package/dist/canvas/nodeShapes/nodePaint.js +34 -23
- package/dist/canvas/nodeShapes/nodePaint.js.map +1 -1
- package/dist/canvas/nodeShapes/pathPainter.js +23 -22
- package/dist/canvas/nodeShapes/pathPainter.js.map +1 -1
- package/dist/canvas/nodeShapes/poseBox.js +6 -6
- package/dist/canvas/nodeShapes/poseBox.js.map +1 -1
- package/dist/canvas/nodeShapes/rectFallbackPainter.js +8 -8
- package/dist/canvas/nodeShapes/rectFallbackPainter.js.map +1 -1
- package/dist/canvas/nodeShapes/shapePainter.js +16 -16
- package/dist/canvas/nodeShapes/shapePainter.js.map +1 -1
- package/dist/canvas/nodeShapes/textPainter.js +1 -1
- package/dist/canvas/nodeShapes/textPainter.js.map +1 -1
- package/dist/canvas/overChildren.js +29 -0
- package/dist/canvas/overChildren.js.map +1 -0
- package/dist/canvas/overlayRoleStrokes.js.map +1 -1
- package/dist/canvas/paintCull.js +6 -8
- package/dist/canvas/paintCull.js.map +1 -1
- package/dist/{features/cursor → canvas}/paintedCursorLayer.js +2 -2
- package/dist/canvas/paintedCursorLayer.js.map +1 -0
- package/dist/canvas/pickReach.js +23 -0
- package/dist/canvas/pickReach.js.map +1 -0
- package/dist/canvas/pickWalk.js +43 -70
- package/dist/canvas/pickWalk.js.map +1 -1
- package/dist/canvas/planeClips.js +18 -19
- package/dist/canvas/planeClips.js.map +1 -1
- package/dist/canvas/poseCascade.js +41 -0
- package/dist/canvas/poseCascade.js.map +1 -0
- package/dist/canvas/poseRotation.js +1 -3
- package/dist/canvas/poseRotation.js.map +1 -1
- package/dist/canvas/rasterReadback.js +22 -0
- package/dist/canvas/rasterReadback.js.map +1 -0
- package/dist/canvas/renderDebugSnapshot.js +12 -12
- package/dist/canvas/renderDebugSnapshot.js.map +1 -1
- package/dist/canvas/renderNeeds.js +3 -3
- package/dist/canvas/renderNeeds.js.map +1 -1
- package/dist/canvas/renderSceneToPixels.js +64 -83
- package/dist/canvas/renderSceneToPixels.js.map +1 -1
- package/dist/canvas/sceneAdapter.js +59 -144
- package/dist/canvas/sceneAdapter.js.map +1 -1
- package/dist/canvas/sceneClipboard.js +1 -1
- package/dist/canvas/sceneClipboard.js.map +1 -1
- package/dist/canvas/sceneLayerPaint.js +4 -4
- package/dist/canvas/sceneLayerPaint.js.map +1 -1
- package/dist/canvas/sceneSlotWiring.js +10 -9
- package/dist/canvas/sceneSlotWiring.js.map +1 -1
- package/dist/canvas/sceneViewRender.js +37 -42
- 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/useCanvasRenderer.js +23 -11
- package/dist/canvas/useCanvasRenderer.js.map +1 -1
- package/dist/canvas/useCanvasSurface.js +31 -0
- package/dist/canvas/useCanvasSurface.js.map +1 -0
- package/dist/canvas/useCanvasView.js +51 -44
- package/dist/canvas/useCanvasView.js.map +1 -1
- package/dist/canvas/useFrameLoop.js +11 -12
- package/dist/canvas/useFrameLoop.js.map +1 -1
- package/dist/canvas/useHostAnchor.js +35 -33
- package/dist/canvas/useHostAnchor.js.map +1 -1
- package/dist/canvas/useLateContentRedraw.js +8 -8
- package/dist/canvas/useLateContentRedraw.js.map +1 -1
- package/dist/canvas/useSceneAdapter.js +22 -0
- package/dist/canvas/useSceneAdapter.js.map +1 -0
- package/dist/canvas/useSceneLayerList.js +4 -14
- package/dist/canvas/useSceneLayerList.js.map +1 -1
- package/dist/canvas/useSurfaceInput.js +39 -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 +40 -34
- 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 +7 -2
- package/dist/canvas/wrapNodeOutput.js.map +1 -1
- package/dist/clipboard.d.ts +7 -14
- package/dist/{types-B4iJRHC3.d.ts → clone-C0eADtS0.d.ts} +129 -84
- package/dist/clone.d.ts +4 -8
- package/dist/clone.js +0 -2
- package/dist/core/device/targets.js.map +1 -1
- package/dist/core/device/useDeviceProfile.js +13 -13
- package/dist/core/device/useDeviceProfile.js.map +1 -1
- package/dist/{interactions/actions/resize → core/geometry}/autoPoseDescriptor.js +8 -7
- package/dist/core/geometry/autoPoseDescriptor.js.map +1 -0
- package/dist/core/geometry/pathPoseDescriptor.js +88 -0
- package/dist/core/geometry/pathPoseDescriptor.js.map +1 -0
- package/dist/core/geometry/poseDescriptor.js +102 -29
- package/dist/core/geometry/poseDescriptor.js.map +1 -1
- package/dist/core/geometry/regionHit.js +35 -37
- package/dist/core/geometry/regionHit.js.map +1 -1
- package/dist/core/geometry/targetFrame.js +94 -0
- package/dist/core/geometry/targetFrame.js.map +1 -0
- package/dist/core/geometry/unionBounds.js +4 -5
- package/dist/core/geometry/unionBounds.js.map +1 -1
- package/dist/core/layers/backgroundFill.js +31 -0
- package/dist/core/layers/backgroundFill.js.map +1 -0
- package/dist/{features/groups → core/layers}/children.js +2 -4
- package/dist/core/layers/children.js.map +1 -0
- package/dist/{features/focus → core/layers}/gateLayer.js +2 -2
- package/dist/core/layers/gateLayer.js.map +1 -0
- package/dist/core/layers/layerGroup.js +40 -0
- package/dist/core/layers/layerGroup.js.map +1 -0
- package/dist/core/layers/render.js +50 -76
- package/dist/core/layers/render.js.map +1 -1
- package/dist/core/ops/create.js +2 -2
- 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 +19 -23
- package/dist/core/ops/delete.js.map +1 -1
- package/dist/core/ops/reorder/index.js +3 -7
- package/dist/core/ops/reorder/index.js.map +1 -1
- package/dist/core/ops/reorder/setChildOrder.js +2 -4
- package/dist/core/ops/reorder/setChildOrder.js.map +1 -1
- package/dist/core/ops/reparent.js +0 -1
- package/dist/core/ops/reparent.js.map +1 -1
- package/dist/core/ops/slot.js +3 -6
- package/dist/core/ops/slot.js.map +1 -1
- package/dist/core/pages/fitViewToPage.js +15 -0
- package/dist/core/pages/fitViewToPage.js.map +1 -0
- package/dist/core/pages/pages.js +65 -0
- package/dist/core/pages/pages.js.map +1 -0
- package/dist/core/pages/pagesLayer.js +27 -0
- package/dist/core/pages/pagesLayer.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} +104 -93
- package/dist/core/paint/meshKindLazy.js.map +1 -0
- package/dist/core/paint/paintKindEntry.js +8 -0
- package/dist/core/paint/paintKindEntry.js.map +1 -0
- package/dist/core/paint/paintKinds.js +144 -0
- package/dist/core/paint/paintKinds.js.map +1 -0
- package/dist/core/paint/registerMesh.js +7 -0
- package/dist/core/paint/registerMesh.js.map +1 -0
- package/dist/core/scene/NodeProperties.js.map +1 -1
- package/dist/core/scene/NodeRouting.js.map +1 -1
- package/dist/core/scene/arrivalWindow.js +65 -64
- package/dist/core/scene/arrivalWindow.js.map +1 -1
- package/dist/core/scene/boundOps.js +40 -0
- package/dist/core/scene/boundOps.js.map +1 -0
- package/dist/core/scene/composeFrame.js +9 -6
- package/dist/core/scene/composeFrame.js.map +1 -1
- package/dist/core/scene/composePose.js +105 -0
- 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 +42 -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 +122 -70
- package/dist/core/scene/historyFacade.js.map +1 -1
- package/dist/core/scene/historyForm.js +6 -0
- package/dist/core/scene/historyForm.js.map +1 -0
- package/dist/core/scene/kitOps.js +83 -71
- package/dist/core/scene/kitOps.js.map +1 -1
- package/dist/core/scene/kitRegistry.js.map +1 -1
- package/dist/core/scene/layerStack.js +105 -12
- package/dist/core/scene/layerStack.js.map +1 -1
- package/dist/core/scene/layoutPass.js +58 -59
- package/dist/core/scene/layoutPass.js.map +1 -1
- package/dist/{features/groups → core/scene}/nestedHit.js +3 -3
- package/dist/core/scene/nestedHit.js.map +1 -0
- package/dist/core/scene/nodeFnFields.js +16 -9
- package/dist/core/scene/nodeFnFields.js.map +1 -1
- package/dist/core/scene/nodeMemo.js.map +1 -1
- package/dist/core/scene/nodeStore.js +72 -71
- package/dist/core/scene/nodeStore.js.map +1 -1
- package/dist/core/scene/notifier.js +37 -0
- package/dist/core/scene/notifier.js.map +1 -0
- package/dist/core/scene/opTable.js +50 -0
- package/dist/core/scene/opTable.js.map +1 -0
- package/dist/core/scene/outerOps.js +67 -0
- package/dist/core/scene/outerOps.js.map +1 -0
- package/dist/core/scene/poseHold.js +39 -0
- package/dist/core/scene/poseHold.js.map +1 -0
- package/dist/core/scene/poseOverrides.js +44 -36
- package/dist/core/scene/poseOverrides.js.map +1 -1
- package/dist/core/scene/poseSnapshot.js.map +1 -1
- package/dist/core/scene/reconcileSpecs.js +4 -3
- package/dist/core/scene/reconcileSpecs.js.map +1 -1
- package/dist/core/scene/recorder.js +86 -0
- package/dist/core/scene/recorder.js.map +1 -0
- package/dist/core/scene/renderOrder.js.map +1 -1
- package/dist/core/scene/scene.js +81 -690
- package/dist/core/scene/scene.js.map +1 -1
- package/dist/core/scene/sceneEdits.js +58 -0
- package/dist/core/scene/sceneEdits.js.map +1 -0
- package/dist/core/scene/sceneMutators.js +49 -0
- package/dist/core/scene/sceneMutators.js.map +1 -0
- package/dist/core/scene/scenePoseAdapter.js +16 -0
- package/dist/core/scene/scenePoseAdapter.js.map +1 -0
- package/dist/core/scene/sceneRecording.js +91 -0
- package/dist/core/scene/sceneRecording.js.map +1 -0
- package/dist/core/scene/sceneSelection.js +28 -0
- package/dist/core/scene/sceneSelection.js.map +1 -0
- package/dist/core/scene/sceneState.js +49 -0
- package/dist/core/scene/sceneState.js.map +1 -0
- package/dist/core/scene/serialization.js +8 -5
- package/dist/core/scene/serialization.js.map +1 -1
- package/dist/core/scene/staleReplay.js +51 -0
- package/dist/core/scene/staleReplay.js.map +1 -0
- package/dist/core/scene/statedFields.js +9 -0
- package/dist/core/scene/statedFields.js.map +1 -0
- package/dist/core/scene/treeEdits.js +127 -0
- package/dist/core/scene/treeEdits.js.map +1 -0
- package/dist/core/scene/treeReads.js +26 -0
- package/dist/core/scene/treeReads.js.map +1 -0
- package/dist/core/scene/types.js.map +1 -1
- package/dist/{features/groups → core/scene}/unionOfChildren.js +3 -3
- package/dist/core/scene/unionOfChildren.js.map +1 -0
- package/dist/core/scene/unitScopes.js +13 -0
- package/dist/core/scene/unitScopes.js.map +1 -0
- package/dist/core/scene/useScene.js.map +1 -1
- package/dist/core/selection/readOnlySelection.js +32 -0
- package/dist/core/selection/readOnlySelection.js.map +1 -0
- package/dist/core/selection/usePublishSceneSelection.js +26 -0
- package/dist/core/selection/usePublishSceneSelection.js.map +1 -0
- package/dist/core/selection/useSelection.js +34 -25
- package/dist/core/selection/useSelection.js.map +1 -1
- package/dist/core/shapeKinds.js.map +1 -1
- package/dist/core/stylus/stylus.js.map +1 -1
- package/dist/core/stylus/usePointerStylus.js.map +1 -1
- package/dist/core/usePaintKinds.js +1 -1
- package/dist/core/usePaintKinds.js.map +1 -1
- package/dist/core/viewport/clientToWorld.js.map +1 -1
- package/dist/core/viewport/fitViewToBounds.js.map +1 -1
- package/dist/core/viewport/parallax.js.map +1 -1
- package/dist/core/viewport/screenSlop.js +11 -11
- package/dist/core/viewport/screenSlop.js.map +1 -1
- package/dist/core/viewport/useCanvasSize.js.map +1 -1
- package/dist/core/viewport/useDecayLoop.js +31 -33
- 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 +113 -53
- package/dist/core/viewport/useViewAnimation.js.map +1 -1
- package/dist/core/viewport/view.js +14 -11
- package/dist/core/viewport/view.js.map +1 -1
- package/dist/core/viewport/wheelHandler.js.map +1 -1
- package/dist/core/viewport/zoomAt.js +11 -2
- package/dist/core/viewport/zoomAt.js.map +1 -1
- package/dist/{cornerHandles-CtCb8a3G.d.ts → cornerHandles-BSKbyuvQ.d.ts} +11 -24
- package/dist/debug/createDebugOverlayLayer.js +100 -100
- package/dist/debug/createDebugOverlayLayer.js.map +1 -1
- package/dist/debug/createDebugSink.js.map +1 -1
- package/dist/debug/frameStats.js.map +1 -1
- package/dist/debug/useDebugSink.js +52 -0
- package/dist/debug/useDebugSink.js.map +1 -0
- package/dist/features/chrome-caps/buildChromeCtx.js.map +1 -1
- package/dist/features/chrome-caps/conditions.js.map +1 -1
- package/dist/features/chrome-caps/defaults.js.map +1 -1
- package/dist/features/chrome-caps/resolve.js.map +1 -1
- package/dist/features/chrome-caps/useChromeCaps.js +54 -0
- package/dist/features/chrome-caps/useChromeCaps.js.map +1 -0
- package/dist/features/chrome-caps/useHoverTracking.js.map +1 -1
- package/dist/features/ingestion/contentHandlers.js +25 -19
- package/dist/features/ingestion/contentHandlers.js.map +1 -1
- package/dist/features/ingestion/imageHandler.js +21 -24
- package/dist/features/ingestion/imageHandler.js.map +1 -1
- package/dist/features/ingestion/openFilePicker.js.map +1 -1
- package/dist/features/ingestion/placement.js +16 -0
- package/dist/features/ingestion/placement.js.map +1 -0
- package/dist/features/ingestion/svgHandler.js +5 -0
- package/dist/features/ingestion/svgHandler.js.map +1 -1
- package/dist/features/ingestion/textHandler.js +28 -0
- package/dist/features/ingestion/textHandler.js.map +1 -0
- package/dist/features/ingestion/useCanvasIngestion.js +48 -0
- package/dist/features/ingestion/useCanvasIngestion.js.map +1 -0
- package/dist/features/ingestion/weaselJsonHandler.js +5 -0
- package/dist/features/ingestion/weaselJsonHandler.js.map +1 -1
- package/dist/features/longPress/longPressFeedback.js.map +1 -1
- package/dist/features/modes/modeLayers.js +7 -7
- package/dist/features/modes/modeLayers.js.map +1 -1
- package/dist/features/paths/editablePath.js +63 -0
- package/dist/features/paths/editablePath.js.map +1 -0
- package/dist/features/paths/index.js +9 -16
- package/dist/features/paths/pathEditState.js +41 -0
- package/dist/features/paths/pathEditState.js.map +1 -0
- package/dist/features/paths/pathEditingOverlayLayer.js +36 -38
- package/dist/features/paths/pathEditingOverlayLayer.js.map +1 -1
- package/dist/features/paths/pathLayer.js +3 -2
- package/dist/features/paths/pathLayer.js.map +1 -1
- package/dist/features/paths/penPreviewLayer.js +86 -88
- package/dist/features/paths/penPreviewLayer.js.map +1 -1
- package/dist/features/paths/shapeGenerator.js +89 -0
- package/dist/features/paths/shapeGenerator.js.map +1 -0
- package/dist/features/paths/usePathEdit.js +34 -0
- package/dist/features/paths/usePathEdit.js.map +1 -0
- package/dist/features/poseRun/usePoseRun.js +44 -57
- package/dist/features/poseRun/usePoseRun.js.map +1 -1
- package/dist/features/selection/overlay.js +170 -178
- package/dist/features/selection/overlay.js.map +1 -1
- package/dist/features/text/index.js +6 -0
- package/dist/features/text/textLayer.js +1 -1
- package/dist/features/text/textLayer.js.map +1 -1
- package/dist/features/text/useSceneTextEdit.js +119 -88
- package/dist/features/text/useSceneTextEdit.js.map +1 -1
- package/dist/features/viewports/viewResolver.js +28 -24
- package/dist/features/viewports/viewResolver.js.map +1 -1
- package/dist/features/viewports/viewportLayer.js +25 -36
- package/dist/features/viewports/viewportLayer.js.map +1 -1
- package/dist/icons/SliceIcon.js +24 -0
- package/dist/icons/SliceIcon.js.map +1 -0
- package/dist/index.d.ts +5200 -8777
- package/dist/index.js +284 -320
- package/dist/input/keyState.js +14 -14
- package/dist/interactions/actions/actionShortcuts.js.map +1 -1
- package/dist/interactions/actions/{defaults/align.js → align/action.js} +15 -16
- package/dist/interactions/actions/align/action.js.map +1 -0
- package/dist/interactions/actions/align/align.js +24 -24
- 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 +74 -83
- package/dist/interactions/actions/booleans/booleans.js.map +1 -1
- package/dist/interactions/actions/booleans/operands.js +40 -0
- package/dist/interactions/actions/booleans/operands.js.map +1 -0
- package/dist/interactions/actions/booleans/pieces.js +45 -0
- package/dist/interactions/actions/booleans/pieces.js.map +1 -0
- package/dist/interactions/actions/booleans/placement.js +24 -0
- package/dist/interactions/actions/booleans/placement.js.map +1 -0
- package/dist/interactions/actions/booleans/useBooleans.js +11 -9
- package/dist/interactions/actions/booleans/useBooleans.js.map +1 -1
- package/dist/interactions/actions/booleans/useBooleansAdapter.js.map +1 -1
- package/dist/interactions/actions/{defaults/clipboard.js → clipboard/action.js} +19 -19
- package/dist/interactions/actions/clipboard/action.js.map +1 -0
- package/dist/interactions/actions/clipboard/clipboardOps.js +15 -15
- package/dist/interactions/actions/clipboard/clipboardOps.js.map +1 -1
- package/dist/interactions/actions/clipboard/wireFormat.js.map +1 -1
- package/dist/interactions/actions/clone/action.js +103 -0
- package/dist/interactions/actions/clone/action.js.map +1 -0
- package/dist/interactions/actions/clone/behaviors.js +52 -0
- package/dist/interactions/actions/clone/behaviors.js.map +1 -0
- package/dist/interactions/actions/defaultCommitAdapter.js +10 -37
- package/dist/interactions/actions/defaultCommitAdapter.js.map +1 -1
- package/dist/interactions/actions/defaults/anchorEditing.js +69 -74
- package/dist/interactions/actions/defaults/anchorEditing.js.map +1 -1
- package/dist/interactions/actions/defaults/anchorHandles.js +42 -0
- package/dist/interactions/actions/defaults/anchorHandles.js.map +1 -0
- package/dist/interactions/actions/defaults/anchorJoin.js +92 -0
- package/dist/interactions/actions/defaults/anchorJoin.js.map +1 -0
- package/dist/interactions/actions/defaults/areaSelect.js.map +1 -1
- package/dist/interactions/actions/defaults/bendSegment.js +46 -0
- package/dist/interactions/actions/defaults/bendSegment.js.map +1 -0
- 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 +1 -1
- package/dist/interactions/actions/defaults/copySubtree.js.map +1 -1
- package/dist/interactions/actions/defaults/createPaintAction.js.map +1 -1
- package/dist/interactions/actions/defaults/delete.js.map +1 -1
- package/dist/interactions/actions/defaults/duplicate.js +36 -21
- package/dist/interactions/actions/defaults/duplicate.js.map +1 -1
- package/dist/interactions/actions/defaults/enterPathEdit.js +19 -7
- package/dist/interactions/actions/defaults/enterPathEdit.js.map +1 -1
- package/dist/interactions/actions/defaults/enterTextEdit.js.map +1 -1
- package/dist/interactions/actions/defaults/group.js +35 -40
- package/dist/interactions/actions/defaults/group.js.map +1 -1
- package/dist/interactions/actions/defaults/icons/anchorIcons.js +75 -0
- package/dist/interactions/actions/defaults/icons/anchorIcons.js.map +1 -0
- 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/editIcons.js +35 -8
- package/dist/interactions/actions/defaults/icons/editIcons.js.map +1 -1
- package/dist/interactions/actions/defaults/icons/outlineIcons.js +39 -1
- package/dist/interactions/actions/defaults/icons/outlineIcons.js.map +1 -1
- package/dist/interactions/actions/defaults/ingest.js +19 -15
- package/dist/interactions/actions/defaults/ingest.js.map +1 -1
- package/dist/interactions/actions/defaults/insertPathAnchor.js +18 -34
- package/dist/interactions/actions/defaults/insertPathAnchor.js.map +1 -1
- package/dist/interactions/actions/defaults/nudge.js +43 -39
- package/dist/interactions/actions/defaults/nudge.js.map +1 -1
- package/dist/interactions/actions/defaults/pinchZoom.js +29 -29
- package/dist/interactions/actions/defaults/pinchZoom.js.map +1 -1
- package/dist/interactions/actions/defaults/requiresSelection.js.map +1 -1
- package/dist/interactions/actions/defaults/segmentUnder.js +22 -0
- package/dist/interactions/actions/defaults/segmentUnder.js.map +1 -0
- package/dist/interactions/actions/defaults/setFill.js +9 -3
- package/dist/interactions/actions/defaults/setFill.js.map +1 -1
- package/dist/interactions/actions/defaults/setFillOpacity.js +4 -1
- package/dist/interactions/actions/defaults/setFillOpacity.js.map +1 -1
- package/dist/interactions/actions/defaults/setStroke.js.map +1 -1
- package/dist/interactions/actions/defaults/sliceOps.js +20 -22
- package/dist/interactions/actions/defaults/sliceOps.js.map +1 -1
- package/dist/interactions/actions/defaults/toolActivate.js.map +1 -1
- package/dist/interactions/actions/defaults/toolResetToDefault.js.map +1 -1
- package/dist/interactions/actions/defaults/viewportDragPan.js +1 -1
- package/dist/interactions/actions/defaults/viewportDragPan.js.map +1 -1
- package/dist/interactions/actions/defaults/viewportWheelPan.js.map +1 -1
- package/dist/interactions/actions/defaults/viewportZoom.js +82 -79
- package/dist/interactions/actions/defaults/viewportZoom.js.map +1 -1
- package/dist/interactions/actions/{defaults/distribute.js → distribute/action.js} +18 -19
- package/dist/interactions/actions/distribute/action.js.map +1 -0
- package/dist/interactions/actions/distribute/distribute.js +15 -15
- package/dist/interactions/actions/distribute/distribute.js.map +1 -1
- package/dist/interactions/actions/edit-anchors/action.js +101 -0
- package/dist/interactions/actions/edit-anchors/action.js.map +1 -0
- package/dist/interactions/actions/edit-anchors/geometry.js +2 -4
- package/dist/interactions/actions/edit-anchors/geometry.js.map +1 -1
- package/dist/interactions/actions/edit-anchors/preview.js +26 -0
- package/dist/interactions/actions/edit-anchors/preview.js.map +1 -0
- package/dist/interactions/actions/edit-anchors/symmetry.js +11 -0
- package/dist/interactions/actions/edit-anchors/symmetry.js.map +1 -0
- package/dist/interactions/actions/flip/action.js +124 -0
- package/dist/interactions/actions/flip/action.js.map +1 -0
- package/dist/interactions/actions/flip/helpers.js +1 -1
- package/dist/interactions/actions/flip/helpers.js.map +1 -1
- package/dist/interactions/actions/geometryProjection.js.map +1 -1
- package/dist/interactions/actions/gestureFrames.js +18 -0
- package/dist/interactions/actions/gestureFrames.js.map +1 -0
- package/dist/interactions/actions/gestureLifecycle.js +47 -20
- package/dist/interactions/actions/gestureLifecycle.js.map +1 -1
- package/dist/interactions/actions/insert/action.js +79 -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 +55 -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/repositionAction.js +31 -0
- package/dist/interactions/actions/insert/repositionAction.js.map +1 -0
- package/dist/interactions/actions/insert/rotateAction.js +21 -0
- package/dist/interactions/actions/insert/rotateAction.js.map +1 -0
- package/dist/interactions/actions/insert/session.js +59 -0
- package/dist/interactions/actions/insert/session.js.map +1 -0
- package/dist/interactions/actions/insert/shape.js +34 -0
- package/dist/interactions/actions/insert/shape.js.map +1 -0
- package/dist/interactions/actions/lasso-select/action.js +143 -0
- package/dist/interactions/actions/lasso-select/action.js.map +1 -0
- package/dist/interactions/actions/move/action.js +91 -0
- package/dist/interactions/actions/move/action.js.map +1 -0
- package/dist/interactions/actions/move/behaviors/layoutDrop.js +51 -0
- package/dist/interactions/actions/move/behaviors/layoutDrop.js.map +1 -0
- package/dist/interactions/actions/move/behaviors/reparentOnDrop.js +15 -0
- package/dist/interactions/actions/move/behaviors/reparentOnDrop.js.map +1 -0
- package/dist/interactions/actions/move/behaviors/snapToContainer.js +35 -28
- package/dist/interactions/actions/move/behaviors/snapToContainer.js.map +1 -1
- package/dist/interactions/actions/move/capture.js +108 -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 +47 -0
- package/dist/interactions/actions/move/frame.js.map +1 -0
- package/dist/interactions/actions/move/gestureAdapter.js +15 -40
- package/dist/interactions/actions/move/gestureAdapter.js.map +1 -1
- package/dist/interactions/actions/move/landedDescendants.js +8 -8
- package/dist/interactions/actions/move/layout/container.js +94 -0
- package/dist/interactions/actions/move/layout/container.js.map +1 -0
- package/dist/interactions/actions/move/layout/dragged.js +58 -0
- package/dist/interactions/actions/move/layout/dragged.js.map +1 -0
- package/dist/interactions/actions/move/layout/dropPass.js +122 -0
- package/dist/interactions/actions/move/layout/dropPass.js.map +1 -0
- package/dist/interactions/actions/move/layout/exits.js +38 -0
- package/dist/interactions/actions/move/layout/exits.js.map +1 -0
- package/dist/interactions/actions/move/layout/glide.js +48 -0
- package/dist/interactions/actions/move/layout/glide.js.map +1 -0
- package/dist/interactions/actions/move/session.js +63 -0
- package/dist/interactions/actions/move/session.js.map +1 -0
- package/dist/interactions/actions/move/translate.js +61 -0
- package/dist/interactions/actions/move/translate.js.map +1 -0
- package/dist/interactions/actions/outlines/createOutlines.js +17 -64
- package/dist/interactions/actions/outlines/createOutlines.js.map +1 -1
- package/dist/interactions/actions/outlines/createOutlinesAction.js +51 -0
- package/dist/interactions/actions/outlines/createOutlinesAction.js.map +1 -0
- package/dist/interactions/actions/outlines/outlineStroke.js +72 -0
- package/dist/interactions/actions/outlines/outlineStroke.js.map +1 -0
- package/dist/interactions/actions/outlines/outlineStrokeAction.js +37 -0
- package/dist/interactions/actions/outlines/outlineStrokeAction.js.map +1 -0
- package/dist/interactions/actions/outlines/replaceWithPaths.js +54 -0
- package/dist/interactions/actions/outlines/replaceWithPaths.js.map +1 -0
- package/dist/interactions/actions/outlines/strokeRegion.js +27 -0
- package/dist/interactions/actions/outlines/strokeRegion.js.map +1 -0
- package/dist/interactions/actions/pathCommands/cutJoin.js +102 -0
- package/dist/interactions/actions/pathCommands/cutJoin.js.map +1 -0
- package/dist/interactions/actions/pathCommands/livePathEdit.js +64 -0
- package/dist/interactions/actions/pathCommands/livePathEdit.js.map +1 -0
- package/dist/interactions/actions/pathCommands/pathNodes.js +99 -0
- package/dist/interactions/actions/pathCommands/pathNodes.js.map +1 -0
- package/dist/interactions/actions/pathCommands/simplifyOffset.js +42 -0
- package/dist/interactions/actions/pathCommands/simplifyOffset.js.map +1 -0
- package/dist/interactions/actions/planeInput.js.map +1 -1
- package/dist/interactions/actions/pointerState.js +12 -0
- package/dist/interactions/actions/pointerState.js.map +1 -0
- package/dist/interactions/actions/poseDescriptorDep.js +1 -1
- package/dist/interactions/actions/poseDescriptorDep.js.map +1 -1
- package/dist/interactions/actions/poseFrame.js +26 -26
- package/dist/interactions/actions/poseFrame.js.map +1 -1
- package/dist/interactions/actions/resize/action.js +66 -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 +88 -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/replay.js +47 -0
- package/dist/interactions/actions/resize/replay.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 +63 -0
- package/dist/interactions/actions/resize/session.js.map +1 -0
- package/dist/interactions/actions/resolveOverlays.js +2 -1
- 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 +71 -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/replay.js +22 -0
- package/dist/interactions/actions/rotate/replay.js.map +1 -0
- package/dist/interactions/actions/rotate/session.js +102 -0
- package/dist/interactions/actions/rotate/session.js.map +1 -0
- package/dist/interactions/actions/spatialReference.js.map +1 -1
- package/dist/interactions/actions/transform-again/action.js +63 -0
- package/dist/interactions/actions/transform-again/action.js.map +1 -0
- package/dist/interactions/actions/transform-again/memory.js +35 -0
- package/dist/interactions/actions/transform-again/memory.js.map +1 -0
- package/dist/interactions/actions/useStandardActions.js +84 -61
- package/dist/interactions/actions/useStandardActions.js.map +1 -1
- package/dist/interactions/gestures/pointerDrag/pointerDrag.js +61 -42
- package/dist/interactions/gestures/pointerDrag/pointerDrag.js.map +1 -1
- package/dist/interactions/gestures/shared/originProjection.js +1 -1
- package/dist/interactions/gestures/shared/originProjection.js.map +1 -1
- package/dist/interactions/gestures/shared/screenTolerance.js +8 -2
- package/dist/interactions/gestures/shared/screenTolerance.js.map +1 -1
- package/dist/interactions/gestures/shared/snap.js.map +1 -1
- package/dist/math-CYUjoyyU.d.ts +33 -0
- package/dist/math.d.ts +5 -2
- package/dist/math.js +6 -6
- package/dist/mesh.d.ts +4 -268
- package/dist/mesh.js +3 -7
- package/dist/move.d.ts +6 -4
- package/dist/{originProjection-gHnOup4e.d.ts → originProjection-CoNVpITV.d.ts} +1 -1
- package/dist/patterns-builtin.d.ts +1 -118
- package/dist/patterns-builtin.js +2 -3
- package/dist/poseDescriptor-Bqk-11Rl.d.ts +73 -0
- package/dist/renderer.d.ts +1 -92
- package/dist/renderer.js +2 -19
- package/dist/resize.d.ts +11 -22
- package/dist/resize.js +1 -1
- package/dist/style.css +1 -1
- package/dist/test-hook/install.js.map +1 -1
- package/dist/test-hook/useTestHook.js +22 -0
- package/dist/test-hook/useTestHook.js.map +1 -0
- package/dist/test-seams-D0pyV3pR.d.ts +149 -0
- package/dist/test-seams.d.ts +4 -4
- package/dist/test-seams.js +2 -2
- package/dist/tools/builtin/bone/boneActions.js +130 -0
- package/dist/tools/builtin/bone/boneActions.js.map +1 -0
- package/dist/tools/builtin/bone/boneOverlay.js +58 -0
- package/dist/tools/builtin/bone/boneOverlay.js.map +1 -0
- package/dist/tools/builtin/bone/placedRig.js +24 -0
- package/dist/tools/builtin/bone/placedRig.js.map +1 -0
- package/dist/tools/builtin/bone/rigEditState.js +21 -0
- package/dist/tools/builtin/bone/rigEditState.js.map +1 -0
- package/dist/tools/builtin/bone/useBoneTool.js +98 -0
- package/dist/tools/builtin/bone/useBoneTool.js.map +1 -0
- package/dist/tools/builtin/ellipse/useEllipseTool.js +16 -15
- package/dist/tools/builtin/ellipse/useEllipseTool.js.map +1 -1
- package/dist/tools/builtin/eyedropper/useEyedropperTool.js.map +1 -1
- package/dist/tools/builtin/hand/useHandTool.js.map +1 -1
- package/dist/tools/builtin/image/useImageTool.js.map +1 -1
- package/dist/tools/builtin/lasso/useLassoTool.js.map +1 -1
- package/dist/tools/builtin/line/useLineTool.js +16 -15
- package/dist/tools/builtin/line/useLineTool.js.map +1 -1
- package/dist/tools/builtin/pen/usePenTool.js +162 -164
- package/dist/tools/builtin/pen/usePenTool.js.map +1 -1
- package/dist/tools/builtin/pencil/usePencilTool.js.map +1 -1
- package/dist/tools/builtin/pickTopMostHit.js +11 -14
- package/dist/tools/builtin/pickTopMostHit.js.map +1 -1
- package/dist/tools/builtin/polygon/usePolygonTool.js +17 -15
- package/dist/tools/builtin/polygon/usePolygonTool.js.map +1 -1
- package/dist/tools/builtin/rect/useRectTool.js +15 -14
- package/dist/tools/builtin/rect/useRectTool.js.map +1 -1
- package/dist/tools/builtin/select/adapterPointQuery.js +40 -0
- package/dist/tools/builtin/select/adapterPointQuery.js.map +1 -0
- package/dist/tools/builtin/select/selectionContributions.js +5 -5
- package/dist/tools/builtin/select/selectionContributions.js.map +1 -1
- package/dist/tools/builtin/select/useSelectTool.js +44 -71
- package/dist/tools/builtin/select/useSelectTool.js.map +1 -1
- package/dist/tools/builtin/shared/pointerFollower.js.map +1 -1
- package/dist/tools/builtin/slice/useSliceTool.js +69 -72
- package/dist/tools/builtin/slice/useSliceTool.js.map +1 -1
- package/dist/tools/builtin/star/useStarTool.js +18 -16
- package/dist/tools/builtin/star/useStarTool.js.map +1 -1
- package/dist/tools/builtin/text/useTextTool.js +10 -2
- package/dist/tools/builtin/text/useTextTool.js.map +1 -1
- package/dist/tools/builtin/weight/useWeightTool.js +77 -0
- package/dist/tools/builtin/weight/useWeightTool.js.map +1 -0
- package/dist/tools/builtin/weight/weightActions.js +112 -0
- package/dist/tools/builtin/weight/weightActions.js.map +1 -0
- package/dist/tools/builtin/weight/weightOverlay.js +61 -0
- package/dist/tools/builtin/weight/weightOverlay.js.map +1 -0
- package/dist/tools/overlayBinding.js.map +1 -1
- package/dist/tools/useKeybindings.js +20 -14
- package/dist/tools/useKeybindings.js.map +1 -1
- package/dist/{types-k-5Oqh-U.d.ts → types-DBbbCy0i.d.ts} +103 -176
- package/dist/util/paint.js +1 -1
- package/dist/util/paint.js.map +1 -1
- package/dist/version.js +1 -1
- package/package.json +26 -21
- package/dist/animation/colorHelpers.js +0 -135
- package/dist/animation/colorHelpers.js.map +0 -1
- package/dist/animation/colorRegistry.js +0 -37
- package/dist/animation/colorRegistry.js.map +0 -1
- package/dist/animation/engine/axes.js +0 -36
- package/dist/animation/engine/axes.js.map +0 -1
- package/dist/animation/engine/codec.js +0 -170
- package/dist/animation/engine/codec.js.map +0 -1
- package/dist/animation/engine/integrator.js +0 -12
- package/dist/animation/engine/integrator.js.map +0 -1
- package/dist/animation/loop.js +0 -60
- package/dist/animation/loop.js.map +0 -1
- package/dist/animation/observe.js +0 -23
- package/dist/animation/observe.js.map +0 -1
- package/dist/animation/rig/blendPoses.js +0 -43
- package/dist/animation/rig/blendPoses.js.map +0 -1
- package/dist/animation/rig/mirrorPose.js +0 -19
- package/dist/animation/rig/mirrorPose.js.map +0 -1
- package/dist/animation/rig/resolveSkeleton.js +0 -33
- package/dist/animation/rig/resolveSkeleton.js.map +0 -1
- package/dist/animation/rig/solveIk.js +0 -103
- package/dist/animation/rig/solveIk.js.map +0 -1
- package/dist/animation/rig/types.js +0 -12
- package/dist/animation/rig/types.js.map +0 -1
- package/dist/animation/slew.js +0 -27
- package/dist/animation/slew.js.map +0 -1
- package/dist/animation/stagger.js +0 -146
- package/dist/animation/stagger.js.map +0 -1
- package/dist/animation/timeline/booking.js +0 -114
- package/dist/animation/timeline/booking.js.map +0 -1
- package/dist/animation/timeline/createTimeline.js +0 -125
- package/dist/animation/timeline/createTimeline.js.map +0 -1
- package/dist/animation/timeline/sampleTrack.js +0 -79
- package/dist/animation/timeline/sampleTrack.js.map +0 -1
- package/dist/animation/useAnimator.js +0 -388
- package/dist/animation/useAnimator.js.map +0 -1
- package/dist/autoPoseDescriptor-Ct7yqivU.d.ts +0 -108
- package/dist/builtins-DPcdghtB.d.ts +0 -1223
- package/dist/canvas/MinimapCanvas.js +0 -140
- package/dist/canvas/MinimapCanvas.js.map +0 -1
- package/dist/canvas/deps/poseComposition.js +0 -11
- package/dist/canvas/deps/poseComposition.js.map +0 -1
- package/dist/canvas/minimapMath.js +0 -82
- package/dist/canvas/minimapMath.js.map +0 -1
- package/dist/canvas/toolPreview.js +0 -39
- package/dist/canvas/toolPreview.js.map +0 -1
- package/dist/core/adapters/arrayAdapter.js +0 -94
- package/dist/core/adapters/arrayAdapter.js.map +0 -1
- package/dist/core/adapters/useArrayAdapter.js +0 -13
- package/dist/core/adapters/useArrayAdapter.js.map +0 -1
- package/dist/core/fillInPoseFrame.js +0 -102
- package/dist/core/fillInPoseFrame.js.map +0 -1
- package/dist/core/geometry/poseFrame.js +0 -44
- package/dist/core/geometry/poseFrame.js.map +0 -1
- package/dist/core/geometry/poseRotation.js +0 -58
- package/dist/core/geometry/poseRotation.js.map +0 -1
- package/dist/core/gradient.js +0 -136
- package/dist/core/gradient.js.map +0 -1
- package/dist/core/markerInset.js +0 -24
- package/dist/core/markerInset.js.map +0 -1
- package/dist/core/mixed.js +0 -6
- package/dist/core/mixed.js.map +0 -1
- package/dist/core/paintKinds.js +0 -156
- package/dist/core/paintKinds.js.map +0 -1
- package/dist/core/scene/pickability.js +0 -6
- package/dist/core/scene/pickability.js.map +0 -1
- package/dist/core/strokeMarkerShapes.js +0 -139
- package/dist/core/strokeMarkerShapes.js.map +0 -1
- package/dist/core/strokeMarkers.js +0 -28
- package/dist/core/strokeMarkers.js.map +0 -1
- package/dist/core/viewport/meanScale.js +0 -8
- package/dist/core/viewport/meanScale.js.map +0 -1
- package/dist/core/viewport/pxExtent.js +0 -42
- package/dist/core/viewport/pxExtent.js.map +0 -1
- package/dist/features/cursor/paintedCursorLayer.js.map +0 -1
- package/dist/features/focus/gateLayer.js.map +0 -1
- package/dist/features/focus/useCanvasFocus.js +0 -29
- package/dist/features/focus/useCanvasFocus.js.map +0 -1
- package/dist/features/groups/children.js.map +0 -1
- package/dist/features/groups/composePose.js +0 -67
- package/dist/features/groups/composePose.js.map +0 -1
- package/dist/features/groups/nestedHit.js.map +0 -1
- package/dist/features/groups/unionOfChildren.js.map +0 -1
- package/dist/features/images/imageCache.js +0 -104
- package/dist/features/images/imageCache.js.map +0 -1
- package/dist/features/ingestion/index.js +0 -8
- package/dist/features/meshPaint/bake.js +0 -79
- package/dist/features/meshPaint/bake.js.map +0 -1
- package/dist/features/meshPaint/bakeCache.js +0 -59
- package/dist/features/meshPaint/bakeCache.js.map +0 -1
- package/dist/features/meshPaint/handles.js +0 -86
- package/dist/features/meshPaint/handles.js.map +0 -1
- package/dist/features/meshPaint/lazyKind.js.map +0 -1
- package/dist/features/meshPaint/meshPaint.js +0 -239
- package/dist/features/meshPaint/meshPaint.js.map +0 -1
- package/dist/features/meshPaint/meshShader.js +0 -6
- package/dist/features/meshPaint/meshShader.js.map +0 -1
- package/dist/features/meshPaint/register.js +0 -7
- package/dist/features/meshPaint/register.js.map +0 -1
- package/dist/features/meshPaint/surface.js +0 -110
- package/dist/features/meshPaint/surface.js.map +0 -1
- package/dist/features/minimap/actions.js +0 -53
- package/dist/features/minimap/actions.js.map +0 -1
- package/dist/features/minimap/createMinimapContribution.js +0 -96
- package/dist/features/minimap/createMinimapContribution.js.map +0 -1
- package/dist/features/minimap/layers.js +0 -85
- package/dist/features/minimap/layers.js.map +0 -1
- package/dist/features/overlays/useNodeOverlayFrame.js +0 -103
- package/dist/features/overlays/useNodeOverlayFrame.js.map +0 -1
- package/dist/features/parallax/createParallaxLayer.js +0 -26
- package/dist/features/parallax/createParallaxLayer.js.map +0 -1
- package/dist/features/parallax/createParallaxPlane.js +0 -22
- package/dist/features/parallax/createParallaxPlane.js.map +0 -1
- package/dist/features/paths/anchorEdits.js +0 -167
- package/dist/features/paths/anchorEdits.js.map +0 -1
- package/dist/features/paths/anchors.js +0 -159
- package/dist/features/paths/anchors.js.map +0 -1
- package/dist/features/paths/booleans.js +0 -2
- package/dist/features/paths/markerCommands.js +0 -149
- package/dist/features/paths/markerCommands.js.map +0 -1
- package/dist/features/paths/markerSites.js +0 -59
- package/dist/features/paths/markerSites.js.map +0 -1
- package/dist/features/paths/markers.js +0 -95
- package/dist/features/paths/markers.js.map +0 -1
- package/dist/features/paths/nearestAnchor.js +0 -36
- package/dist/features/paths/nearestAnchor.js.map +0 -1
- package/dist/features/paths/pathInWorld.js +0 -41
- package/dist/features/paths/pathInWorld.js.map +0 -1
- package/dist/features/paths/poseDescriptor.js +0 -39
- package/dist/features/paths/poseDescriptor.js.map +0 -1
- package/dist/features/paths/strokeToPath.js +0 -40
- package/dist/features/paths/strokeToPath.js.map +0 -1
- package/dist/features/paths/tessellate/dash.js +0 -52
- package/dist/features/paths/tessellate/dash.js.map +0 -1
- package/dist/features/paths/tessellate/insets.js +0 -32
- package/dist/features/paths/tessellate/insets.js.map +0 -1
- package/dist/features/paths/tessellate/metric.js +0 -72
- package/dist/features/paths/tessellate/metric.js.map +0 -1
- package/dist/features/paths/tessellate/stroke.js +0 -170
- package/dist/features/paths/tessellate/stroke.js.map +0 -1
- package/dist/features/paths/tessellate/vertexWidths.js +0 -32
- package/dist/features/paths/tessellate/vertexWidths.js.map +0 -1
- package/dist/features/patterns/commandPaint.js +0 -18
- package/dist/features/patterns/commandPaint.js.map +0 -1
- package/dist/features/patterns/index.js +0 -11
- package/dist/features/patterns/index.js.map +0 -1
- package/dist/features/patterns/patterns-builtin.js +0 -38
- package/dist/features/patterns/patterns-builtin.js.map +0 -1
- package/dist/features/patterns/rasterizeTile.js +0 -17
- package/dist/features/patterns/rasterizeTile.js.map +0 -1
- package/dist/features/patterns/resolveSpec.js +0 -65
- package/dist/features/patterns/resolveSpec.js.map +0 -1
- package/dist/features/patterns/tileGeometry.js +0 -158
- package/dist/features/patterns/tileGeometry.js.map +0 -1
- package/dist/features/pointer/PointerContext.js +0 -45
- package/dist/features/pointer/PointerContext.js.map +0 -1
- package/dist/features/selection/SelectionContext.js +0 -51
- package/dist/features/selection/SelectionContext.js.map +0 -1
- package/dist/features/simulation/createSimulation.js +0 -61
- package/dist/features/simulation/createSimulation.js.map +0 -1
- package/dist/features/simulation/types.js +0 -6
- package/dist/features/simulation/types.js.map +0 -1
- package/dist/features/simulation/useSimulation.js +0 -74
- package/dist/features/simulation/useSimulation.js.map +0 -1
- package/dist/features/text/domOffsets.js +0 -82
- package/dist/features/text/domOffsets.js.map +0 -1
- package/dist/features/text/domRuns.js +0 -230
- package/dist/features/text/domRuns.js.map +0 -1
- package/dist/features/text/fitTextPose.js +0 -38
- package/dist/features/text/fitTextPose.js.map +0 -1
- package/dist/features/text/hitTest.js +0 -48
- package/dist/features/text/hitTest.js.map +0 -1
- package/dist/features/text/isTextData.js +0 -8
- package/dist/features/text/isTextData.js.map +0 -1
- package/dist/features/text/overlayDirection.js +0 -15
- package/dist/features/text/overlayDirection.js.map +0 -1
- package/dist/features/text/renderLabel.js +0 -14
- package/dist/features/text/renderLabel.js.map +0 -1
- package/dist/features/text/runs/effectiveRangeStyle.js +0 -66
- package/dist/features/text/runs/effectiveRangeStyle.js.map +0 -1
- package/dist/features/text/runs/flagRange.js +0 -53
- package/dist/features/text/runs/flagRange.js.map +0 -1
- package/dist/features/text/runs/rangeStyle.js +0 -133
- package/dist/features/text/runs/rangeStyle.js.map +0 -1
- package/dist/features/text/textCommand.js +0 -60
- package/dist/features/text/textCommand.js.map +0 -1
- package/dist/features/text/textToPath.js +0 -181
- package/dist/features/text/textToPath.js.map +0 -1
- package/dist/features/text/useTextEdit.js +0 -491
- package/dist/features/text/useTextEdit.js.map +0 -1
- package/dist/features/tiling/createTiledLayer.js +0 -65
- package/dist/features/tiling/createTiledLayer.js.map +0 -1
- package/dist/features/tiling/tiledProject.js +0 -14
- package/dist/features/tiling/tiledProject.js.map +0 -1
- package/dist/interactions/actions/clone/behaviors/cloneByAltDrag.js +0 -26
- package/dist/interactions/actions/clone/behaviors/cloneByAltDrag.js.map +0 -1
- package/dist/interactions/actions/defaults/align.js.map +0 -1
- package/dist/interactions/actions/defaults/booleans.js +0 -52
- package/dist/interactions/actions/defaults/booleans.js.map +0 -1
- package/dist/interactions/actions/defaults/clipboard.js.map +0 -1
- package/dist/interactions/actions/defaults/clone.js +0 -91
- package/dist/interactions/actions/defaults/clone.js.map +0 -1
- package/dist/interactions/actions/defaults/createOutlines.js +0 -47
- package/dist/interactions/actions/defaults/createOutlines.js.map +0 -1
- package/dist/interactions/actions/defaults/distribute.js.map +0 -1
- package/dist/interactions/actions/defaults/editAnchors.js +0 -100
- package/dist/interactions/actions/defaults/editAnchors.js.map +0 -1
- package/dist/interactions/actions/defaults/flip.js +0 -125
- package/dist/interactions/actions/defaults/flip.js.map +0 -1
- package/dist/interactions/actions/defaults/insert.js +0 -287
- package/dist/interactions/actions/defaults/insert.js.map +0 -1
- package/dist/interactions/actions/defaults/lassoSelect.js +0 -153
- package/dist/interactions/actions/defaults/lassoSelect.js.map +0 -1
- package/dist/interactions/actions/defaults/move.js +0 -778
- package/dist/interactions/actions/defaults/move.js.map +0 -1
- package/dist/interactions/actions/defaults/resize.js +0 -341
- package/dist/interactions/actions/defaults/resize.js.map +0 -1
- package/dist/interactions/actions/defaults/rotate.js +0 -185
- package/dist/interactions/actions/defaults/rotate.js.map +0 -1
- package/dist/interactions/actions/previewOverrides.js +0 -25
- package/dist/interactions/actions/previewOverrides.js.map +0 -1
- package/dist/interactions/actions/resize/autoPoseDescriptor.js.map +0 -1
- package/dist/layout/arrivals.js +0 -36
- package/dist/layout/arrivals.js.map +0 -1
- package/dist/math-J-ACHyEg.d.ts +0 -159
- package/dist/registerProgram-T9S_PfAX.d.ts +0 -208
- package/dist/renderer/DrawCommand.js +0 -6
- package/dist/renderer/DrawCommand.js.map +0 -1
- package/dist/renderer/WeaselRenderer.js +0 -333
- package/dist/renderer/WeaselRenderer.js.map +0 -1
- package/dist/renderer/batchClip.js +0 -46
- package/dist/renderer/batchClip.js.map +0 -1
- package/dist/renderer/cache/GLImageCache.js +0 -74
- package/dist/renderer/cache/GLImageCache.js.map +0 -1
- package/dist/renderer/cache/GLMeshCache.js +0 -102
- package/dist/renderer/cache/GLMeshCache.js.map +0 -1
- package/dist/renderer/cache/GLTextureCache.js +0 -68
- package/dist/renderer/cache/GLTextureCache.js.map +0 -1
- package/dist/renderer/cache/GradientRampAtlas.js +0 -82
- package/dist/renderer/cache/GradientRampAtlas.js.map +0 -1
- package/dist/renderer/cache/cache.js +0 -13
- package/dist/renderer/cache/cache.js.map +0 -1
- package/dist/renderer/cache/markerCommandCache.js +0 -63
- package/dist/renderer/cache/markerCommandCache.js.map +0 -1
- package/dist/renderer/cache/outlineMeshCache.js +0 -15
- package/dist/renderer/cache/outlineMeshCache.js.map +0 -1
- package/dist/renderer/cache/outlineStrokeMeshCache.js +0 -36
- package/dist/renderer/cache/outlineStrokeMeshCache.js.map +0 -1
- package/dist/renderer/cache/strokeMeshCache.js +0 -55
- package/dist/renderer/cache/strokeMeshCache.js.map +0 -1
- package/dist/renderer/cullDrawCommands.js +0 -90
- package/dist/renderer/cullDrawCommands.js.map +0 -1
- package/dist/renderer/draw/batch.js +0 -133
- package/dist/renderer/draw/batch.js.map +0 -1
- package/dist/renderer/draw/clip.js +0 -89
- package/dist/renderer/draw/clip.js.map +0 -1
- package/dist/renderer/draw/customShader.js +0 -230
- package/dist/renderer/draw/customShader.js.map +0 -1
- package/dist/renderer/draw/drawTriangles.js +0 -8
- package/dist/renderer/draw/drawTriangles.js.map +0 -1
- package/dist/renderer/draw/effects.js +0 -28
- package/dist/renderer/draw/effects.js.map +0 -1
- package/dist/renderer/draw/flushBatch.js +0 -35
- package/dist/renderer/draw/flushBatch.js.map +0 -1
- package/dist/renderer/draw/gradient.js +0 -90
- package/dist/renderer/draw/gradient.js.map +0 -1
- package/dist/renderer/draw/image.js +0 -38
- package/dist/renderer/draw/image.js.map +0 -1
- package/dist/renderer/draw/mesh.js +0 -16
- package/dist/renderer/draw/mesh.js.map +0 -1
- package/dist/renderer/draw/paintBind.js +0 -70
- package/dist/renderer/draw/paintBind.js.map +0 -1
- package/dist/renderer/draw/pathPaint.js +0 -142
- package/dist/renderer/draw/pathPaint.js.map +0 -1
- package/dist/renderer/draw/scratchPass.js +0 -83
- package/dist/renderer/draw/scratchPass.js.map +0 -1
- package/dist/renderer/draw/stencil.js +0 -28
- package/dist/renderer/draw/stencil.js.map +0 -1
- package/dist/renderer/draw/text.js +0 -167
- package/dist/renderer/draw/text.js.map +0 -1
- package/dist/renderer/draw/uniforms.js +0 -77
- package/dist/renderer/draw/uniforms.js.map +0 -1
- package/dist/renderer/draw.js +0 -79
- package/dist/renderer/draw.js.map +0 -1
- package/dist/renderer/drawBatch.js +0 -198
- package/dist/renderer/drawBatch.js.map +0 -1
- package/dist/renderer/effects/EffectTargets.js +0 -48
- package/dist/renderer/effects/EffectTargets.js.map +0 -1
- package/dist/renderer/effects/builtins.js +0 -31
- package/dist/renderer/effects/builtins.js.map +0 -1
- package/dist/renderer/effects/composite.js +0 -11
- package/dist/renderer/effects/composite.js.map +0 -1
- package/dist/renderer/effects/effectPrelude.js +0 -10
- package/dist/renderer/effects/effectPrelude.js.map +0 -1
- package/dist/renderer/effects/types.js +0 -10
- package/dist/renderer/effects/types.js.map +0 -1
- package/dist/renderer/glyphOutlineMesh.js +0 -67
- package/dist/renderer/glyphOutlineMesh.js.map +0 -1
- package/dist/renderer/index.js +0 -20
- package/dist/renderer/math/color.js +0 -321
- package/dist/renderer/math/color.js.map +0 -1
- package/dist/renderer/math/mat3.js +0 -80
- package/dist/renderer/math/mat3.js.map +0 -1
- package/dist/renderer/math/patternSpace.js +0 -22
- package/dist/renderer/math/patternSpace.js.map +0 -1
- package/dist/renderer/math/viewToMat3.js +0 -19
- package/dist/renderer/math/viewToMat3.js.map +0 -1
- package/dist/renderer/paintResources.js +0 -18
- package/dist/renderer/paintResources.js.map +0 -1
- package/dist/renderer/paintScratch.js +0 -37
- package/dist/renderer/paintScratch.js.map +0 -1
- package/dist/renderer/shaders/ShaderProgram.js +0 -74
- package/dist/renderer/shaders/ShaderProgram.js.map +0 -1
- package/dist/renderer/shaders/batchFill.js +0 -119
- package/dist/renderer/shaders/batchFill.js.map +0 -1
- package/dist/renderer/shaders/customPrelude.js +0 -34
- package/dist/renderer/shaders/customPrelude.js.map +0 -1
- package/dist/renderer/shaders/extractUniformNames.js +0 -184
- package/dist/renderer/shaders/extractUniformNames.js.map +0 -1
- package/dist/renderer/shaders/glyphPaint.js +0 -61
- package/dist/renderer/shaders/glyphPaint.js.map +0 -1
- package/dist/renderer/shaders/gradFill.js +0 -31
- package/dist/renderer/shaders/gradFill.js.map +0 -1
- package/dist/renderer/shaders/pathFill.js +0 -14
- package/dist/renderer/shaders/pathFill.js.map +0 -1
- package/dist/renderer/shaders/patternFill.js +0 -25
- package/dist/renderer/shaders/patternFill.js.map +0 -1
- package/dist/renderer/shaders/registerProgram.js +0 -18
- package/dist/renderer/shaders/registerProgram.js.map +0 -1
- package/dist/renderer/spriteSheet.js +0 -14
- package/dist/renderer/spriteSheet.js.map +0 -1
- package/dist/renderer/state/GroupState.js +0 -77
- package/dist/renderer/state/GroupState.js.map +0 -1
- package/dist/renderer/strokeLengths.js +0 -50
- package/dist/renderer/strokeLengths.js.map +0 -1
- package/dist/renderer/syntheticItalic.js +0 -6
- package/dist/renderer/syntheticItalic.js.map +0 -1
- package/dist/renderer/textures/registerTexture.js +0 -34
- package/dist/renderer/textures/registerTexture.js.map +0 -1
- package/dist/scheduling/useVisibleRaf.js +0 -69
- package/dist/scheduling/useVisibleRaf.js.map +0 -1
- package/dist/test-seams-DM2B87-g.d.ts +0 -356
|
@@ -1,184 +0,0 @@
|
|
|
1
|
-
//#region src/renderer/shaders/extractUniformNames.ts
|
|
2
|
-
var e = /* @__PURE__ */ new Set([
|
|
3
|
-
"lowp",
|
|
4
|
-
"mediump",
|
|
5
|
-
"highp",
|
|
6
|
-
"precise",
|
|
7
|
-
"invariant",
|
|
8
|
-
"centroid",
|
|
9
|
-
"flat",
|
|
10
|
-
"smooth",
|
|
11
|
-
"noperspective"
|
|
12
|
-
]), t = /^[A-Za-z_]\w*$/, n = 16;
|
|
13
|
-
function r(e) {
|
|
14
|
-
return [...a(e).names];
|
|
15
|
-
}
|
|
16
|
-
function i(e) {
|
|
17
|
-
return a(e).arrays;
|
|
18
|
-
}
|
|
19
|
-
function a(r) {
|
|
20
|
-
let { code: i, defines: a } = o(r), c = s(i), u = /* @__PURE__ */ new Map(), d = /* @__PURE__ */ new Map(), f = /* @__PURE__ */ new Set(), p = /* @__PURE__ */ new Map(), m = (e, t) => {
|
|
21
|
-
if (t > n) return null;
|
|
22
|
-
let r = null;
|
|
23
|
-
for (let n of a.get(e) ?? []) {
|
|
24
|
-
let e = l(s(n), (e) => m(e, t + 1));
|
|
25
|
-
e !== null && (r === null || e > r) && (r = e);
|
|
26
|
-
}
|
|
27
|
-
return r ?? u.get(e) ?? null;
|
|
28
|
-
}, h = (e, t) => l(c.slice(e, t), (e) => m(e, 0)), g = (e) => {
|
|
29
|
-
let t = 0;
|
|
30
|
-
for (let n = e; n < c.length; n++) if (c[n] === "(" || c[n] === "[" || c[n] === "{") t++;
|
|
31
|
-
else if ((c[n] === ")" || c[n] === "]" || c[n] === "}") && --t === 0) return n;
|
|
32
|
-
return c.length;
|
|
33
|
-
}, _ = (e) => {
|
|
34
|
-
if (c[e] !== "[") return [void 0, e];
|
|
35
|
-
let t = g(e);
|
|
36
|
-
return [h(e + 1, t), t + 1];
|
|
37
|
-
}, v = (e, n) => {
|
|
38
|
-
let r = [];
|
|
39
|
-
for (; e < c.length && c[e] !== ";" && c[e] !== "}";) {
|
|
40
|
-
let i = c[e], [a, o] = _(e + 1);
|
|
41
|
-
for (e = o, t.test(i) && r.push({
|
|
42
|
-
name: i,
|
|
43
|
-
size: a === void 0 ? n : a
|
|
44
|
-
}); e < c.length && c[e] !== "," && c[e] !== ";" && c[e] !== "}";) e = c[e] === "(" || c[e] === "[" || c[e] === "{" ? g(e) + 1 : e + 1;
|
|
45
|
-
c[e] === "," && e++;
|
|
46
|
-
}
|
|
47
|
-
return [r, e];
|
|
48
|
-
}, y = (t) => {
|
|
49
|
-
let n = t + 1, r = c[n] === "{" ? void 0 : c[n++], i = [];
|
|
50
|
-
if (c[n] !== "{") return [i, n];
|
|
51
|
-
let a = g(n);
|
|
52
|
-
for (n++; n < a;) {
|
|
53
|
-
for (; e.has(c[n]);) n++;
|
|
54
|
-
let t;
|
|
55
|
-
c[n] === "struct" ? [t, n] = y(n) : t = c[n++];
|
|
56
|
-
let [r, a] = _(n), [o, s] = v(a, r);
|
|
57
|
-
for (let e of o) e.size !== null && i.push({
|
|
58
|
-
type: t,
|
|
59
|
-
name: e.name,
|
|
60
|
-
size: e.size ?? null
|
|
61
|
-
});
|
|
62
|
-
n = s + 1;
|
|
63
|
-
}
|
|
64
|
-
if (r) {
|
|
65
|
-
let e = d.get(r) ?? [];
|
|
66
|
-
for (let t of i) e.some((e) => e.name === t.name) || e.push(t);
|
|
67
|
-
d.set(r, e);
|
|
68
|
-
}
|
|
69
|
-
return [i, a + 1];
|
|
70
|
-
}, b = (e, t, r, i) => {
|
|
71
|
-
if (i > n) return;
|
|
72
|
-
if (r !== null) {
|
|
73
|
-
if (typeof t == "string" && !d.has(t)) {
|
|
74
|
-
let n = p.get(e);
|
|
75
|
-
(!n || r > n.size) && p.set(e, {
|
|
76
|
-
type: t,
|
|
77
|
-
size: r
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
for (let n = 0; n < r; n++) b(`${e}[${n}]`, t, null, i + 1);
|
|
81
|
-
return;
|
|
82
|
-
}
|
|
83
|
-
let a = typeof t == "string" ? d.get(t) : t;
|
|
84
|
-
if (!a) {
|
|
85
|
-
f.add(e);
|
|
86
|
-
return;
|
|
87
|
-
}
|
|
88
|
-
for (let t of a) b(`${e}.${t.name}`, t.type, t.size, i + 1);
|
|
89
|
-
}, x = 0;
|
|
90
|
-
for (let n = 0; n < c.length; n++) {
|
|
91
|
-
let r = c[n];
|
|
92
|
-
if (r === "{") x++;
|
|
93
|
-
else if (r === "}") x--;
|
|
94
|
-
else if (r === "struct") n = y(n)[1] - 1;
|
|
95
|
-
else if (x === 0 && r === "const") {
|
|
96
|
-
let r = n + 1;
|
|
97
|
-
for (; e.has(c[r]);) r++;
|
|
98
|
-
if ((c[r] === "int" || c[r] === "uint") && t.test(c[r + 1] ?? "") && c[r + 2] === "=") {
|
|
99
|
-
let e = r + 3;
|
|
100
|
-
for (; e < c.length && c[e] !== ";";) e++;
|
|
101
|
-
let t = h(r + 3, e), n = u.get(c[r + 1]);
|
|
102
|
-
t !== null && (n === void 0 || t > n) && u.set(c[r + 1], t);
|
|
103
|
-
}
|
|
104
|
-
} else if (x === 0 && r === "uniform") {
|
|
105
|
-
let t = n + 1;
|
|
106
|
-
for (; e.has(c[t]);) t++;
|
|
107
|
-
let r;
|
|
108
|
-
if (c[t] === "struct") [r, t] = y(t);
|
|
109
|
-
else if (c[t + 1] === "{") {
|
|
110
|
-
for (t = g(t + 1) + 1; t < c.length && c[t] !== ";";) t++;
|
|
111
|
-
n = t;
|
|
112
|
-
continue;
|
|
113
|
-
} else r = c[t++];
|
|
114
|
-
let [i, a] = _(t), [o, s] = v(a, i);
|
|
115
|
-
for (let e of o) e.size !== null && b(e.name, r, e.size ?? null, 0);
|
|
116
|
-
n = s;
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
return {
|
|
120
|
-
names: f,
|
|
121
|
-
arrays: p
|
|
122
|
-
};
|
|
123
|
-
}
|
|
124
|
-
function o(e) {
|
|
125
|
-
let t = e.replace(/\\\r?\n/g, ""), n = "";
|
|
126
|
-
for (let e = 0; e < t.length; e++) if (t[e] === "/" && t[e + 1] === "/") {
|
|
127
|
-
for (; e < t.length && t[e] !== "\n";) e++;
|
|
128
|
-
n += "\n";
|
|
129
|
-
} else if (t[e] === "/" && t[e + 1] === "*") {
|
|
130
|
-
let r = t.indexOf("*/", e + 2);
|
|
131
|
-
e = r < 0 ? t.length : r + 1, n += " ";
|
|
132
|
-
} else n += t[e];
|
|
133
|
-
let r = /* @__PURE__ */ new Map();
|
|
134
|
-
return {
|
|
135
|
-
code: n.split("\n").map((e) => {
|
|
136
|
-
if (!/^\s*#/.test(e)) return e;
|
|
137
|
-
let t = /^\s*#\s*define\s+([A-Za-z_]\w*)(\(?)(.*)$/.exec(e);
|
|
138
|
-
return t && !t[2] && r.set(t[1], [...r.get(t[1]) ?? [], t[3].trim()]), "";
|
|
139
|
-
}).join("\n"),
|
|
140
|
-
defines: r
|
|
141
|
-
};
|
|
142
|
-
}
|
|
143
|
-
function s(e) {
|
|
144
|
-
return e.match(/[A-Za-z_]\w*|\d[\w.]*|\S/g) ?? [];
|
|
145
|
-
}
|
|
146
|
-
function c(e) {
|
|
147
|
-
let t = /^(?:0[xX]([0-9a-fA-F]+)|(0[0-7]*)|([1-9]\d*))[uU]?$/.exec(e);
|
|
148
|
-
return t ? t[1] === void 0 ? t[2] === void 0 ? parseInt(t[3], 10) : parseInt(t[2], 8) : parseInt(t[1], 16) : null;
|
|
149
|
-
}
|
|
150
|
-
function l(e, n) {
|
|
151
|
-
let r = 0, i = () => {
|
|
152
|
-
let a = e[r++];
|
|
153
|
-
if (a === "(") {
|
|
154
|
-
let t = o();
|
|
155
|
-
return e[r++] === ")" ? t : null;
|
|
156
|
-
}
|
|
157
|
-
if (a === "-") {
|
|
158
|
-
let e = i();
|
|
159
|
-
return e === null ? null : -e;
|
|
160
|
-
}
|
|
161
|
-
return a === "+" ? i() : a === void 0 ? null : c(a) ?? (t.test(a) ? n(a) : null);
|
|
162
|
-
}, a = () => {
|
|
163
|
-
let t = i();
|
|
164
|
-
for (; t !== null && (e[r] === "*" || e[r] === "/" || e[r] === "%");) {
|
|
165
|
-
let n = e[r++], a = i();
|
|
166
|
-
if (a === null || n !== "*" && a === 0) return null;
|
|
167
|
-
t = n === "*" ? t * a : n === "/" ? Math.trunc(t / a) : t % a;
|
|
168
|
-
}
|
|
169
|
-
return t;
|
|
170
|
-
}, o = () => {
|
|
171
|
-
let t = a();
|
|
172
|
-
for (; t !== null && (e[r] === "+" || e[r] === "-");) {
|
|
173
|
-
let n = e[r++], i = a();
|
|
174
|
-
if (i === null) return null;
|
|
175
|
-
t = n === "+" ? t + i : t - i;
|
|
176
|
-
}
|
|
177
|
-
return t;
|
|
178
|
-
}, s = o();
|
|
179
|
-
return r === e.length && s !== null && s >= 0 ? s : null;
|
|
180
|
-
}
|
|
181
|
-
//#endregion
|
|
182
|
-
export { i as extractUniformArrays, r as extractUniformNames };
|
|
183
|
-
|
|
184
|
-
//# sourceMappingURL=extractUniformNames.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"extractUniformNames.js","names":["QUALIFIERS","IDENT","MAX_DEPTH","extractUniformNames","scanUniforms","glsl","extractUniformArrays","preprocess","toks","tokenize","code","consts","structs","out","arrays","resolveName","depth","best","body","defines","name","v","evalInt","n","evalSize","from","to","closer","k","open","arraySuffix","j","end","declarators","found","size","next","typeSize","structSpecifier","i","members","type","afterType","decls","term","d","prior","m","p","expand","t","spliced","stripped","line","def","src","intLiteral","tok","primary","sum","lookup","product","op","r"],"sources":["../../../src/renderer/shaders/extractUniformNames.ts"],"sourcesContent":["/** Qualifiers GLSL allows between `uniform` and the type name, and before a\n * struct member's type. */\nconst QUALIFIERS = new Set([\n 'lowp', 'mediump', 'highp', 'precise', 'invariant',\n 'centroid', 'flat', 'smooth', 'noperspective',\n]);\n\nconst IDENT = /^[A-Za-z_]\\w*$/;\nconst MAX_DEPTH = 16;\n\ninterface Member {\n readonly type: string | readonly Member[];\n readonly name: string;\n /** `null` for a non-array. */\n readonly size: number | null;\n}\n\n/**\n * The names a program's uniforms answer to in `getUniformLocation`: array\n * uniforms per slot (`u_ripples[0]`), struct uniforms per leaf\n * (`u_lights[1].pos`), nested structs and array members included.\n *\n * A declaration scanner over a token stream, not a GLSL parser. Comments are\n * stripped; interface blocks are skipped, since a UBO's members are bound\n * through a buffer rather than a location. Array sizes resolve through integer\n * literals, `#define`s and top-level `const int`s, with `+ - * / %` between\n * them; a size it cannot resolve drops that declarator, and a later write to\n * it warns.\n */\nexport function extractUniformNames(glsl: string): string[] {\n return [...scanUniforms(glsl).names];\n}\n\n/** An array uniform of a basic type: its element type as spelled (`vec3`,\n * `int`, `mat4`) and its declared length. */\nexport interface UniformArrayDecl {\n readonly type: string;\n readonly size: number;\n}\n\n/**\n * Every array of a basic type a program declares, keyed by the name its slots\n * hang off (`u_ripples` for `u_ripples[0]`). An array inside a struct is keyed\n * by its full path (`u_lights[1].weights`); an array of structs is not an\n * entry, since it has no single element type.\n */\nexport function extractUniformArrays(glsl: string): Map<string, UniformArrayDecl> {\n return scanUniforms(glsl).arrays;\n}\n\nfunction scanUniforms(glsl: string): { names: Set<string>; arrays: Map<string, UniformArrayDecl> } {\n const { code, defines } = preprocess(glsl);\n const toks = tokenize(code);\n const consts = new Map<string, number>();\n const structs = new Map<string, Member[]>();\n const out = new Set<string>();\n const arrays = new Map<string, UniformArrayDecl>();\n\n const resolveName = (name: string, depth: number): number | null => {\n if (depth > MAX_DEPTH) return null;\n let best: number | null = null;\n for (const body of defines.get(name) ?? []) {\n const v = evalInt(tokenize(body), (n) => resolveName(n, depth + 1));\n if (v !== null && (best === null || v > best)) best = v;\n }\n return best ?? consts.get(name) ?? null;\n };\n const evalSize = (from: number, to: number) => evalInt(toks.slice(from, to), (n) => resolveName(n, 0));\n\n /** Index of the token closing the bracket opened at `open`. */\n const closer = (open: number): number => {\n let depth = 0;\n for (let k = open; k < toks.length; k++) {\n if (toks[k] === '(' || toks[k] === '[' || toks[k] === '{') depth++;\n else if (toks[k] === ')' || toks[k] === ']' || toks[k] === '}') {\n if (--depth === 0) return k;\n }\n }\n return toks.length;\n };\n\n /** Parses `[size]` at `j` if present: the size (undefined if absent, null\n * if unresolvable) and where scanning resumes. */\n const arraySuffix = (j: number): [number | null | undefined, number] => {\n if (toks[j] !== '[') return [undefined, j];\n const end = closer(j);\n return [evalSize(j + 1, end), end + 1];\n };\n\n /** Declarators `a, b[2], c` up to the terminating `;` (or `}`), after the\n * type at `j`. Returns them and the index of the terminator. */\n const declarators = (\n j: number,\n typeSize: number | null | undefined,\n ): [{ name: string; size: number | null | undefined }[], number] => {\n const found: { name: string; size: number | null | undefined }[] = [];\n while (j < toks.length && toks[j] !== ';' && toks[j] !== '}') {\n const name = toks[j];\n const [size, next] = arraySuffix(j + 1);\n j = next;\n if (IDENT.test(name)) found.push({ name, size: size === undefined ? typeSize : size });\n // Skip an initializer, or anything else, to the next declarator.\n while (j < toks.length && toks[j] !== ',' && toks[j] !== ';' && toks[j] !== '}') {\n j = toks[j] === '(' || toks[j] === '[' || toks[j] === '{' ? closer(j) + 1 : j + 1;\n }\n if (toks[j] === ',') j++;\n }\n return [found, j];\n };\n\n /** `struct Name? { members }` at `i`; records a named struct. */\n const structSpecifier = (i: number): [Member[], number] => {\n let j = i + 1;\n const name = toks[j] !== '{' ? toks[j++] : undefined;\n const members: Member[] = [];\n if (toks[j] !== '{') return [members, j];\n const end = closer(j);\n j++;\n while (j < end) {\n while (QUALIFIERS.has(toks[j])) j++;\n let type: string | Member[];\n if (toks[j] === 'struct') [type, j] = structSpecifier(j);\n else type = toks[j++];\n const [typeSize, afterType] = arraySuffix(j);\n const [decls, term] = declarators(afterType, typeSize);\n for (const d of decls) if (d.size !== null) members.push({ type, name: d.name, size: d.size ?? null });\n j = term + 1;\n }\n if (name) {\n // A struct redefined in another preprocessor branch keeps both members lists.\n const prior = structs.get(name) ?? [];\n for (const m of members) if (!prior.some((p) => p.name === m.name)) prior.push(m);\n structs.set(name, prior);\n }\n return [members, end + 1];\n };\n\n const expand = (name: string, type: string | readonly Member[], size: number | null, depth: number): void => {\n if (depth > MAX_DEPTH) return;\n if (size !== null) {\n if (typeof type === 'string' && !structs.has(type)) {\n const prior = arrays.get(name);\n if (!prior || size > prior.size) arrays.set(name, { type, size });\n }\n for (let k = 0; k < size; k++) expand(`${name}[${k}]`, type, null, depth + 1);\n return;\n }\n const members = typeof type === 'string' ? structs.get(type) : type;\n if (!members) {\n out.add(name);\n return;\n }\n for (const m of members) expand(`${name}.${m.name}`, m.type, m.size, depth + 1);\n };\n\n let depth = 0;\n for (let i = 0; i < toks.length; i++) {\n const t = toks[i];\n if (t === '{') depth++;\n else if (t === '}') depth--;\n else if (t === 'struct') i = structSpecifier(i)[1] - 1;\n else if (depth === 0 && t === 'const') {\n let j = i + 1;\n while (QUALIFIERS.has(toks[j])) j++;\n if ((toks[j] === 'int' || toks[j] === 'uint') && IDENT.test(toks[j + 1] ?? '') && toks[j + 2] === '=') {\n let end = j + 3;\n while (end < toks.length && toks[end] !== ';') end++;\n const v = evalSize(j + 3, end);\n const prior = consts.get(toks[j + 1]);\n if (v !== null && (prior === undefined || v > prior)) consts.set(toks[j + 1], v);\n }\n } else if (depth === 0 && t === 'uniform') {\n let j = i + 1;\n while (QUALIFIERS.has(toks[j])) j++;\n let type: string | Member[];\n if (toks[j] === 'struct') {\n [type, j] = structSpecifier(j);\n } else if (toks[j + 1] === '{') {\n // An interface block: skip it and its instance name.\n j = closer(j + 1) + 1;\n while (j < toks.length && toks[j] !== ';') j++;\n i = j;\n continue;\n } else {\n type = toks[j++];\n }\n const [typeSize, afterType] = arraySuffix(j);\n const [decls, term] = declarators(afterType, typeSize);\n for (const d of decls) if (d.size !== null) expand(d.name, type, d.size ?? null, 0);\n i = term;\n }\n }\n return { names: out, arrays };\n}\n\n/** Comments stripped and directives removed. Every conditional branch is kept:\n * an extra name only looks up a null location, a missing one drops writes. */\nfunction preprocess(glsl: string): { code: string; defines: Map<string, string[]> } {\n const spliced = glsl.replace(/\\\\\\r?\\n/g, '');\n let stripped = '';\n for (let k = 0; k < spliced.length; k++) {\n if (spliced[k] === '/' && spliced[k + 1] === '/') {\n while (k < spliced.length && spliced[k] !== '\\n') k++;\n stripped += '\\n';\n } else if (spliced[k] === '/' && spliced[k + 1] === '*') {\n const end = spliced.indexOf('*/', k + 2);\n k = end < 0 ? spliced.length : end + 1;\n stripped += ' ';\n } else {\n stripped += spliced[k];\n }\n }\n const defines = new Map<string, string[]>();\n const lines = stripped.split('\\n').map((line) => {\n if (!/^\\s*#/.test(line)) return line;\n const def = /^\\s*#\\s*define\\s+([A-Za-z_]\\w*)(\\(?)(.*)$/.exec(line);\n if (def && !def[2]) defines.set(def[1], [...(defines.get(def[1]) ?? []), def[3].trim()]);\n return '';\n });\n return { code: lines.join('\\n'), defines };\n}\n\nfunction tokenize(src: string): string[] {\n return src.match(/[A-Za-z_]\\w*|\\d[\\w.]*|\\S/g) ?? [];\n}\n\nfunction intLiteral(tok: string): number | null {\n const m = /^(?:0[xX]([0-9a-fA-F]+)|(0[0-7]*)|([1-9]\\d*))[uU]?$/.exec(tok);\n if (!m) return null;\n if (m[1] !== undefined) return parseInt(m[1], 16);\n if (m[2] !== undefined) return parseInt(m[2], 8);\n return parseInt(m[3], 10);\n}\n\n/** Integer constant expression over `+ - * / %` and parentheses. */\nfunction evalInt(toks: readonly string[], lookup: (name: string) => number | null): number | null {\n let p = 0;\n const primary = (): number | null => {\n const t = toks[p++];\n if (t === '(') {\n const v = sum();\n return toks[p++] === ')' ? v : null;\n }\n if (t === '-') {\n const v = primary();\n return v === null ? null : -v;\n }\n if (t === '+') return primary();\n if (t === undefined) return null;\n return intLiteral(t) ?? (IDENT.test(t) ? lookup(t) : null);\n };\n const product = (): number | null => {\n let v = primary();\n while (v !== null && (toks[p] === '*' || toks[p] === '/' || toks[p] === '%')) {\n const op = toks[p++];\n const r = primary();\n if (r === null || (op !== '*' && r === 0)) return null;\n v = op === '*' ? v * r : op === '/' ? Math.trunc(v / r) : v % r;\n }\n return v;\n };\n const sum = (): number | null => {\n let v = product();\n while (v !== null && (toks[p] === '+' || toks[p] === '-')) {\n const op = toks[p++];\n const r = product();\n if (r === null) return null;\n v = op === '+' ? v + r : v - r;\n }\n return v;\n };\n const v = sum();\n return p === toks.length && v !== null && v >= 0 ? v : null;\n}\n"],"mappings":"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"}
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
import { BATCH_ATTRIBUTE_LOCATIONS as e, BATCH_TEXTURE_SLOTS as t } from "./batchFill.js";
|
|
2
|
-
import { GRAD_FILL_UNIFORMS as n, GRAD_PAINT_GLSL as r } from "./gradFill.js";
|
|
3
|
-
import { PATTERN_FILL_UNIFORMS as i, PATTERN_PAINT_GLSL as a } from "./patternFill.js";
|
|
4
|
-
import { GLYPH_COVERAGE_GLSL as o } from "@weasel-js/font";
|
|
5
|
-
//#region src/renderer/shaders/glyphPaint.ts
|
|
6
|
-
var s = e, c = `#version 300 es
|
|
7
|
-
layout(location = ${s.a_position}) in vec2 a_position;
|
|
8
|
-
layout(location = ${s.a_uv}) in vec2 a_uv;
|
|
9
|
-
layout(location = ${s.a_texSlot}) in float a_texSlot;
|
|
10
|
-
uniform mat3 u_proj;
|
|
11
|
-
uniform mat3 u_model;
|
|
12
|
-
uniform mat3 u_worldInv;
|
|
13
|
-
out vec2 v_world;
|
|
14
|
-
out vec2 v_uv;
|
|
15
|
-
flat out float v_glyphMode;
|
|
16
|
-
void main() {
|
|
17
|
-
vec3 screen = u_model * vec3(a_position, 1.0);
|
|
18
|
-
vec3 clip = u_proj * vec3(screen.xy, 1.0);
|
|
19
|
-
gl_Position = vec4(clip.xy, 0.0, 1.0);
|
|
20
|
-
v_world = (u_worldInv * vec3(screen.xy, 1.0)).xy;
|
|
21
|
-
v_uv = a_uv;
|
|
22
|
-
v_glyphMode = float(int(a_texSlot + 0.5) / ${t});
|
|
23
|
-
}
|
|
24
|
-
`;
|
|
25
|
-
function l(e) {
|
|
26
|
-
return `#version 300 es
|
|
27
|
-
precision highp float;
|
|
28
|
-
in vec2 v_world;
|
|
29
|
-
in vec2 v_uv;
|
|
30
|
-
flat in float v_glyphMode;
|
|
31
|
-
uniform sampler2D u_atlas;
|
|
32
|
-
uniform float u_synthBold;
|
|
33
|
-
uniform vec2 u_fieldScale;
|
|
34
|
-
${e}
|
|
35
|
-
${o}
|
|
36
|
-
out vec4 outColor;
|
|
37
|
-
void main() {
|
|
38
|
-
float coverage = glyphCoverage(texture(u_atlas, v_uv), v_glyphMode, u_synthBold, v_uv, u_fieldScale);
|
|
39
|
-
outColor = shadePaint(v_world) * coverage;
|
|
40
|
-
}
|
|
41
|
-
`;
|
|
42
|
-
}
|
|
43
|
-
var u = "\nuniform sampler2D u_sampler;\nvec4 shadePaint(vec2 uv) {\n return texture(u_sampler, uv);\n}\n", d = l(a), f = l(r), p = l(u), m = [
|
|
44
|
-
"u_atlas",
|
|
45
|
-
"u_synthBold",
|
|
46
|
-
"u_fieldScale"
|
|
47
|
-
], h = (e) => e !== "u_origin", g = [...i.filter(h), ...m], _ = [...n.filter(h), ...m], v = [
|
|
48
|
-
"u_proj",
|
|
49
|
-
"u_model",
|
|
50
|
-
"u_worldInv",
|
|
51
|
-
"u_sampler",
|
|
52
|
-
...m
|
|
53
|
-
], y = [
|
|
54
|
-
"a_position",
|
|
55
|
-
"a_uv",
|
|
56
|
-
"a_texSlot"
|
|
57
|
-
];
|
|
58
|
-
//#endregion
|
|
59
|
-
export { f as GLYPH_GRAD_FRAG_SRC, _ as GLYPH_GRAD_UNIFORMS, y as GLYPH_PAINT_ATTRIBUTES, c as GLYPH_PAINT_VERT_SRC, d as GLYPH_PATTERN_FRAG_SRC, g as GLYPH_PATTERN_UNIFORMS, p as GLYPH_TEXTURE_FRAG_SRC, v as GLYPH_TEXTURE_UNIFORMS };
|
|
60
|
-
|
|
61
|
-
//# sourceMappingURL=glyphPaint.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"glyphPaint.js","names":["L","BATCH_ATTRIBUTE_LOCATIONS","GLYPH_PAINT_VERT_SRC","BATCH_TEXTURE_SLOTS","fragSrc","paintGlsl","GLYPH_COVERAGE_GLSL","TEXTURE_PAINT_GLSL","GLYPH_PATTERN_FRAG_SRC","PATTERN_PAINT_GLSL","GLYPH_GRAD_FRAG_SRC","GRAD_PAINT_GLSL","GLYPH_TEXTURE_FRAG_SRC","GLYPH_UNIFORMS","notOrigin","name","GLYPH_PATTERN_UNIFORMS","PATTERN_FILL_UNIFORMS","GLYPH_GRAD_UNIFORMS","GRAD_FILL_UNIFORMS","GLYPH_TEXTURE_UNIFORMS","GLYPH_PAINT_ATTRIBUTES"],"sources":["../../../src/renderer/shaders/glyphPaint.ts"],"sourcesContent":["/**\n * GLSL ES 3.0 sources for atlas glyphs filled by a texture paint — a pattern, a\n * gradient or a registered kind — rather than one color.\n *\n * **The glyph is a mask over the paint.** The fragment takes its coverage from\n * the distance field exactly as the batch program does, and its color from the\n * same `shadePaint` the path program for that paint runs, at the same\n * paint-space point: `u_worldInv` applied to the screen position. An outline\n * glyph is a path, so it goes through that path program — which is what makes\n * a paint read the same on either side of the outline-tier threshold.\n *\n * **The vertices are the batch's.** A glyph run stages into `DrawBatch` as\n * usual and this program draws it in place of the batch program, so the\n * attribute locations are pinned to the batch shader's and one VAO serves\n * both. Positions arrive already in screen space, so `u_model` is identity.\n *\n * Coverage is taken before `shadePaint` runs, and outside any branch: `fwidth`\n * in non-uniform control flow is undefined. The gradient's branches are on a\n * uniform, so they could not make it so, but the order keeps it from mattering.\n *\n * Output: PREMULTIPLIED alpha, the paint's own scaled by coverage.\n */\n\nimport { GLYPH_COVERAGE_GLSL } from '@weasel-js/font';\nimport { BATCH_ATTRIBUTE_LOCATIONS, BATCH_TEXTURE_SLOTS } from './batchFill';\nimport { GRAD_FILL_UNIFORMS, GRAD_PAINT_GLSL } from './gradFill';\nimport { PATTERN_FILL_UNIFORMS, PATTERN_PAINT_GLSL } from './patternFill';\n\nconst L = BATCH_ATTRIBUTE_LOCATIONS;\n\nexport const GLYPH_PAINT_VERT_SRC = /* glsl */ `#version 300 es\nlayout(location = ${L.a_position}) in vec2 a_position;\nlayout(location = ${L.a_uv}) in vec2 a_uv;\nlayout(location = ${L.a_texSlot}) in float a_texSlot;\nuniform mat3 u_proj;\nuniform mat3 u_model;\nuniform mat3 u_worldInv;\nout vec2 v_world;\nout vec2 v_uv;\nflat out float v_glyphMode;\nvoid main() {\n vec3 screen = u_model * vec3(a_position, 1.0);\n vec3 clip = u_proj * vec3(screen.xy, 1.0);\n gl_Position = vec4(clip.xy, 0.0, 1.0);\n v_world = (u_worldInv * vec3(screen.xy, 1.0)).xy;\n v_uv = a_uv;\n v_glyphMode = float(int(a_texSlot + 0.5) / ${BATCH_TEXTURE_SLOTS});\n}\n`;\n\nfunction fragSrc(paintGlsl: string): string {\n return /* glsl */ `#version 300 es\nprecision highp float;\nin vec2 v_world;\nin vec2 v_uv;\nflat in float v_glyphMode;\nuniform sampler2D u_atlas;\nuniform float u_synthBold;\nuniform vec2 u_fieldScale;\n${paintGlsl}\n${GLYPH_COVERAGE_GLSL}\nout vec4 outColor;\nvoid main() {\n float coverage = glyphCoverage(texture(u_atlas, v_uv), v_glyphMode, u_synthBold, v_uv, u_fieldScale);\n outColor = shadePaint(v_world) * coverage;\n}\n`;\n}\n\n/**\n * A registered paint kind binds a whole program of its own, which nothing can\n * wrap in a mask, so it renders into an offscreen buffer first and the glyphs\n * sample that. `u_worldInv` takes the screen position straight to the\n * buffer's texture coordinate, and the texel is already premultiplied and\n * faded — the kind's own program did both.\n */\nconst TEXTURE_PAINT_GLSL = /* glsl */ `\nuniform sampler2D u_sampler;\nvec4 shadePaint(vec2 uv) {\n return texture(u_sampler, uv);\n}\n`;\n\nexport const GLYPH_PATTERN_FRAG_SRC = fragSrc(PATTERN_PAINT_GLSL);\nexport const GLYPH_GRAD_FRAG_SRC = fragSrc(GRAD_PAINT_GLSL);\nexport const GLYPH_TEXTURE_FRAG_SRC = fragSrc(TEXTURE_PAINT_GLSL);\n\nconst GLYPH_UNIFORMS = ['u_atlas', 'u_synthBold', 'u_fieldScale'] as const;\n// `u_origin` belongs to the path vertex stage, which these programs replace.\nconst notOrigin = (name: string): boolean => name !== 'u_origin';\nexport const GLYPH_PATTERN_UNIFORMS: readonly string[] = [\n ...PATTERN_FILL_UNIFORMS.filter(notOrigin), ...GLYPH_UNIFORMS,\n];\nexport const GLYPH_GRAD_UNIFORMS: readonly string[] = [\n ...GRAD_FILL_UNIFORMS.filter(notOrigin), ...GLYPH_UNIFORMS,\n];\nexport const GLYPH_TEXTURE_UNIFORMS = [\n 'u_proj', 'u_model', 'u_worldInv', 'u_sampler', ...GLYPH_UNIFORMS,\n] as const;\nexport const GLYPH_PAINT_ATTRIBUTES = ['a_position', 'a_uv', 'a_texSlot'] as const;\n"],"mappings":";;;;;AA4BA,IAAMA,IAAIC,GAEGC,IAAkC;oBAC3BF,EAAE,WAAW;oBACbA,EAAE,KAAK;oBACPA,EAAE,UAAU;;;;;;;;;;;;;+CAaeG,EAAoB;;;AAInE,SAASC,EAAQ,GAA2B;CAC1C,OAAkB;;;;;;;;EAQlBC,EAAU;EACVC,EAAoB;;;;;;;AAOtB;AASA,IAAMC,IAAgC,qGAOzBC,IAAyBJ,EAAQK,CAAkB,GACnDC,IAAsBN,EAAQO,CAAe,GAC7CC,IAAyBR,EAAQG,CAAkB,GAE1DM,IAAiB;CAAC;CAAW;CAAe;AAAc,GAE1DC,KAAa,MAA0BC,MAAS,YACzCC,IAA4C,CACvD,GAAGC,EAAsB,OAAOH,CAAS,GAAG,GAAGD,CACjD,GACaK,IAAyC,CACpD,GAAGC,EAAmB,OAAOL,CAAS,GAAG,GAAGD,CAC9C,GACaO,IAAyB;CACpC;CAAU;CAAW;CAAc;CAAa,GAAGP;AACrD,GACaQ,IAAyB;CAAC;CAAc;CAAQ;AAAW"}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
//#region src/renderer/shaders/gradFill.ts
|
|
2
|
-
var e = "#version 300 es\nin vec2 a_position;\nuniform mat3 u_proj;\nuniform mat3 u_model;\nuniform vec2 u_origin;\nuniform mat3 u_worldInv;\nout vec2 v_world;\nvoid main() {\n vec3 screen = u_model * vec3(a_position - u_origin, 1.0);\n vec3 clip = u_proj * vec3(screen.xy, 1.0);\n gl_Position = vec4(clip.xy, 0.0, 1.0);\n vec3 world = u_worldInv * vec3(screen.xy, 1.0);\n v_world = world.xy;\n}\n", t = "\nuniform sampler2D u_ramp;\nuniform float u_rampV;\nuniform float u_alpha;\nuniform mat4 u_colorMatrix;\nuniform vec4 u_colorBias;\nuniform float u_opacity;\nuniform int u_gradKind;\nuniform vec2 u_gradP0;\nuniform vec2 u_gradDir;\nuniform float u_gradLen;\nuniform float u_gradRadius;\nuniform float u_gradAngle;\n\nconst float PI = 3.14159265358979323846;\n\nvec4 shadePaint(vec2 world) {\n float t;\n if (u_gradKind == 0) {\n vec2 d = world - u_gradP0;\n t = dot(d, u_gradDir) / max(u_gradLen, 0.0001);\n } else if (u_gradKind == 1) {\n t = length(world - u_gradP0) / max(u_gradRadius, 0.0001);\n } else {\n float a = atan(world.y - u_gradP0.y, world.x - u_gradP0.x) - u_gradAngle;\n t = fract(a / (2.0 * PI));\n }\n t = clamp(t, 0.0, 1.0);\n vec4 rampColor = texture(u_ramp, vec2(t, u_rampV));\n // Fill opacity into the alpha channel before the matrix, which is where the\n // batch program's vertex alpha sits. The two have to agree, since a linear\n // gradient goes through that one and a radial through this.\n vec4 src = vec4(rampColor.rgb, rampColor.a * u_opacity);\n vec4 mapped = clamp(u_colorMatrix * src + u_colorBias, 0.0, 1.0);\n float a = mapped.a * u_alpha;\n return vec4(mapped.rgb * a, a);\n}\n", n = `#version 300 es
|
|
3
|
-
precision highp float;
|
|
4
|
-
in vec2 v_world;
|
|
5
|
-
${t}
|
|
6
|
-
out vec4 outColor;
|
|
7
|
-
void main() {
|
|
8
|
-
outColor = shadePaint(v_world);
|
|
9
|
-
}
|
|
10
|
-
`, r = [
|
|
11
|
-
"u_proj",
|
|
12
|
-
"u_model",
|
|
13
|
-
"u_origin",
|
|
14
|
-
"u_worldInv",
|
|
15
|
-
"u_ramp",
|
|
16
|
-
"u_rampV",
|
|
17
|
-
"u_alpha",
|
|
18
|
-
"u_opacity",
|
|
19
|
-
"u_colorMatrix",
|
|
20
|
-
"u_colorBias",
|
|
21
|
-
"u_gradKind",
|
|
22
|
-
"u_gradP0",
|
|
23
|
-
"u_gradDir",
|
|
24
|
-
"u_gradLen",
|
|
25
|
-
"u_gradRadius",
|
|
26
|
-
"u_gradAngle"
|
|
27
|
-
], i = ["a_position"];
|
|
28
|
-
//#endregion
|
|
29
|
-
export { i as GRAD_FILL_ATTRIBUTES, r as GRAD_FILL_UNIFORMS, n as GRAD_FRAG_SRC, t as GRAD_PAINT_GLSL, e as GRAD_VERT_SRC };
|
|
30
|
-
|
|
31
|
-
//# sourceMappingURL=gradFill.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gradFill.js","names":["GRAD_VERT_SRC","GRAD_PAINT_GLSL","GRAD_FRAG_SRC","GRAD_FILL_UNIFORMS","GRAD_FILL_ATTRIBUTES"],"sources":["../../../src/renderer/shaders/gradFill.ts"],"sourcesContent":["/**\n * GLSL ES 3.0 sources for gradient-fill paths (linear, radial, conic).\n *\n * Three gradient kinds via u_gradKind (0=linear, 1=radial, 2=conic).\n * The branch value is uniform across all fragments in one draw call — GPU\n * branch predictor handles uniform-value branches without warp divergence.\n *\n * Output convention §2: PREMULTIPLIED alpha.\n *\n * `u_ramp` is `GradientRampAtlas`'s texture, which holds every baked ramp in\n * the frame, one per row; `u_rampV` picks this fill's row.\n */\n\nexport const GRAD_VERT_SRC = /* glsl */ `#version 300 es\nin vec2 a_position;\nuniform mat3 u_proj;\nuniform mat3 u_model;\nuniform vec2 u_origin;\nuniform mat3 u_worldInv;\nout vec2 v_world;\nvoid main() {\n vec3 screen = u_model * vec3(a_position - u_origin, 1.0);\n vec3 clip = u_proj * vec3(screen.xy, 1.0);\n gl_Position = vec4(clip.xy, 0.0, 1.0);\n vec3 world = u_worldInv * vec3(screen.xy, 1.0);\n v_world = world.xy;\n}\n`;\n\n/**\n * The gradient's color at a gradient-space point, premultiplied — the whole\n * of the fragment stage but the point it is asked about, so the glyph program\n * can mask the same paint the path program draws.\n */\nexport const GRAD_PAINT_GLSL = /* glsl */ `\nuniform sampler2D u_ramp;\nuniform float u_rampV;\nuniform float u_alpha;\nuniform mat4 u_colorMatrix;\nuniform vec4 u_colorBias;\nuniform float u_opacity;\nuniform int u_gradKind;\nuniform vec2 u_gradP0;\nuniform vec2 u_gradDir;\nuniform float u_gradLen;\nuniform float u_gradRadius;\nuniform float u_gradAngle;\n\nconst float PI = 3.14159265358979323846;\n\nvec4 shadePaint(vec2 world) {\n float t;\n if (u_gradKind == 0) {\n vec2 d = world - u_gradP0;\n t = dot(d, u_gradDir) / max(u_gradLen, 0.0001);\n } else if (u_gradKind == 1) {\n t = length(world - u_gradP0) / max(u_gradRadius, 0.0001);\n } else {\n float a = atan(world.y - u_gradP0.y, world.x - u_gradP0.x) - u_gradAngle;\n t = fract(a / (2.0 * PI));\n }\n t = clamp(t, 0.0, 1.0);\n vec4 rampColor = texture(u_ramp, vec2(t, u_rampV));\n // Fill opacity into the alpha channel before the matrix, which is where the\n // batch program's vertex alpha sits. The two have to agree, since a linear\n // gradient goes through that one and a radial through this.\n vec4 src = vec4(rampColor.rgb, rampColor.a * u_opacity);\n vec4 mapped = clamp(u_colorMatrix * src + u_colorBias, 0.0, 1.0);\n float a = mapped.a * u_alpha;\n return vec4(mapped.rgb * a, a);\n}\n`;\n\nexport const GRAD_FRAG_SRC = /* glsl */ `#version 300 es\nprecision highp float;\nin vec2 v_world;\n${GRAD_PAINT_GLSL}\nout vec4 outColor;\nvoid main() {\n outColor = shadePaint(v_world);\n}\n`;\n\nexport const GRAD_FILL_UNIFORMS = [\n 'u_proj', 'u_model', 'u_origin', 'u_worldInv', 'u_ramp', 'u_rampV',\n 'u_alpha', 'u_opacity', 'u_colorMatrix', 'u_colorBias',\n 'u_gradKind', 'u_gradP0', 'u_gradDir', 'u_gradLen', 'u_gradRadius', 'u_gradAngle',\n] as const;\n\nexport const GRAD_FILL_ATTRIBUTES = ['a_position'] as const;\n"],"mappings":";AAaA,IAAaA,IAA2B,gZAqB3BC,IAA6B,uuCAuC7BC,IAA2B;;;EAGtCD,EAAgB;;;;;GAOLE,IAAqB;CAChC;CAAU;CAAW;CAAY;CAAc;CAAU;CACzD;CAAW;CAAa;CAAiB;CACzC;CAAc;CAAY;CAAa;CAAa;CAAgB;AACtE,GAEaC,IAAuB,CAAC,YAAY"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
//#region src/renderer/shaders/pathFill.ts
|
|
2
|
-
var e = "#version 300 es\nin vec2 a_position;\nuniform mat3 u_proj;\nuniform mat3 u_model;\nuniform vec2 u_origin;\nvoid main() {\n vec3 screen = u_model * vec3(a_position - u_origin, 1.0);\n vec3 clip = u_proj * vec3(screen.xy, 1.0);\n gl_Position = vec4(clip.xy, 0.0, 1.0);\n}\n", t = "#version 300 es\nprecision highp float;\nuniform vec4 u_color;\nuniform float u_alpha;\nuniform mat4 u_colorMatrix;\nuniform vec4 u_colorBias;\nout vec4 outColor;\nvoid main() {\n vec4 mapped = clamp(u_colorMatrix * u_color + u_colorBias, 0.0, 1.0);\n float a = mapped.a * u_alpha;\n outColor = vec4(mapped.rgb * a, a);\n}\n", n = "#version 300 es\nin vec2 a_position;\nin vec4 a_vertexColor;\nuniform mat3 u_proj;\nuniform mat3 u_model;\nuniform vec2 u_origin;\nout vec4 v_vertexColor;\nvoid main() {\n vec3 screen = u_model * vec3(a_position - u_origin, 1.0);\n vec3 clip = u_proj * vec3(screen.xy, 1.0);\n gl_Position = vec4(clip.xy, 0.0, 1.0);\n v_vertexColor = a_vertexColor;\n}\n", r = "#version 300 es\nprecision highp float;\nin vec4 v_vertexColor;\nuniform vec4 u_color;\nuniform float u_alpha;\nuniform mat4 u_colorMatrix;\nuniform vec4 u_colorBias;\nout vec4 outColor;\nvoid main() {\n vec4 src = u_color * v_vertexColor;\n vec4 mapped = clamp(u_colorMatrix * src + u_colorBias, 0.0, 1.0);\n float a = mapped.a * u_alpha;\n outColor = vec4(mapped.rgb * a, a);\n}\n", i = [
|
|
3
|
-
"u_proj",
|
|
4
|
-
"u_model",
|
|
5
|
-
"u_origin",
|
|
6
|
-
"u_color",
|
|
7
|
-
"u_alpha",
|
|
8
|
-
"u_colorMatrix",
|
|
9
|
-
"u_colorBias"
|
|
10
|
-
], a = ["a_position"], o = ["a_position", "a_vertexColor"];
|
|
11
|
-
//#endregion
|
|
12
|
-
export { t as FRAG_SRC, a as PATH_FILL_ATTRIBUTES, i as PATH_FILL_UNIFORMS, o as PATH_FILL_VCOLOR_ATTRIBUTES, r as VCOLOR_FRAG_SRC, n as VCOLOR_VERT_SRC, e as VERT_SRC };
|
|
13
|
-
|
|
14
|
-
//# sourceMappingURL=pathFill.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pathFill.js","names":["VERT_SRC","FRAG_SRC","VCOLOR_VERT_SRC","VCOLOR_FRAG_SRC","PATH_FILL_UNIFORMS","PATH_FILL_ATTRIBUTES","PATH_FILL_VCOLOR_ATTRIBUTES"],"sources":["../../../src/renderer/shaders/pathFill.ts"],"sourcesContent":["/**\n * GLSL ES 3.0 sources for the built-in solid-fill path shader.\n *\n * Two variants:\n * - Flat: VERT_SRC + FRAG_SRC, uses uniform color only.\n * - VColor: VCOLOR_VERT_SRC + VCOLOR_FRAG_SRC, multiplies a per-vertex\n * `a_vertexColor` attribute with `u_color`.\n *\n * Both variants take `u_colorMatrix` (mat4) + `u_colorBias` (vec4); the\n * color transform is applied to the straight-alpha SRC color BEFORE\n * premultiplication. Identity matrix + zero bias = pass-through.\n *\n * Output (both variants): PREMULTIPLIED alpha.\n * Blend: caller sets `gl.blendFunc(ONE, ONE_MINUS_SRC_ALPHA)`.\n */\n\nexport const VERT_SRC = /* glsl */ `#version 300 es\nin vec2 a_position;\nuniform mat3 u_proj;\nuniform mat3 u_model;\nuniform vec2 u_origin;\nvoid main() {\n vec3 screen = u_model * vec3(a_position - u_origin, 1.0);\n vec3 clip = u_proj * vec3(screen.xy, 1.0);\n gl_Position = vec4(clip.xy, 0.0, 1.0);\n}\n`;\n\nexport const FRAG_SRC = /* glsl */ `#version 300 es\nprecision highp float;\nuniform vec4 u_color;\nuniform float u_alpha;\nuniform mat4 u_colorMatrix;\nuniform vec4 u_colorBias;\nout vec4 outColor;\nvoid main() {\n vec4 mapped = clamp(u_colorMatrix * u_color + u_colorBias, 0.0, 1.0);\n float a = mapped.a * u_alpha;\n outColor = vec4(mapped.rgb * a, a);\n}\n`;\n\nexport const VCOLOR_VERT_SRC = /* glsl */ `#version 300 es\nin vec2 a_position;\nin vec4 a_vertexColor;\nuniform mat3 u_proj;\nuniform mat3 u_model;\nuniform vec2 u_origin;\nout vec4 v_vertexColor;\nvoid main() {\n vec3 screen = u_model * vec3(a_position - u_origin, 1.0);\n vec3 clip = u_proj * vec3(screen.xy, 1.0);\n gl_Position = vec4(clip.xy, 0.0, 1.0);\n v_vertexColor = a_vertexColor;\n}\n`;\n\nexport const VCOLOR_FRAG_SRC = /* glsl */ `#version 300 es\nprecision highp float;\nin vec4 v_vertexColor;\nuniform vec4 u_color;\nuniform float u_alpha;\nuniform mat4 u_colorMatrix;\nuniform vec4 u_colorBias;\nout vec4 outColor;\nvoid main() {\n vec4 src = u_color * v_vertexColor;\n vec4 mapped = clamp(u_colorMatrix * src + u_colorBias, 0.0, 1.0);\n float a = mapped.a * u_alpha;\n outColor = vec4(mapped.rgb * a, a);\n}\n`;\n\n/** Uniforms shared between flat and vertex-color variants. */\nexport const PATH_FILL_UNIFORMS = [\n 'u_proj', 'u_model', 'u_origin', 'u_color', 'u_alpha',\n 'u_colorMatrix', 'u_colorBias',\n] as const;\n\n/** Attributes for the flat variant. */\nexport const PATH_FILL_ATTRIBUTES = ['a_position'] as const;\n\n/** Attributes for the vertex-color variant. */\nexport const PATH_FILL_VCOLOR_ATTRIBUTES = ['a_position', 'a_vertexColor'] as const;\n"],"mappings":";AAgBA,IAAaA,IAAsB,sRAYtBC,IAAsB,2UActBC,IAA6B,yWAe7BC,IAA6B,sYAiB7BC,IAAqB;CAChC;CAAU;CAAW;CAAY;CAAW;CAC5C;CAAiB;AACnB,GAGaC,IAAuB,CAAC,YAAY,GAGpCC,IAA8B,CAAC,cAAc,eAAe"}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
//#region src/renderer/shaders/patternFill.ts
|
|
2
|
-
var e = "#version 300 es\nin vec2 a_position;\nuniform mat3 u_proj;\nuniform mat3 u_model;\nuniform vec2 u_origin;\nuniform mat3 u_worldInv;\nout vec2 v_world;\nvoid main() {\n vec3 screen = u_model * vec3(a_position - u_origin, 1.0);\n vec3 clip = u_proj * vec3(screen.xy, 1.0);\n gl_Position = vec4(clip.xy, 0.0, 1.0);\n vec3 world = u_worldInv * vec3(screen.xy, 1.0);\n v_world = world.xy;\n}\n", t = "\nuniform sampler2D u_sampler;\nuniform vec2 u_tileSize;\nuniform float u_opacity;\nuniform float u_alpha;\nuniform mat4 u_colorMatrix;\nuniform vec4 u_colorBias;\nvec4 shadePaint(vec2 world) {\n vec2 uv = world / max(u_tileSize, vec2(0.0001));\n vec4 texel = texture(u_sampler, uv);\n vec4 mapped = clamp(u_colorMatrix * texel + u_colorBias, 0.0, 1.0);\n float a = mapped.a * u_opacity * u_alpha;\n return vec4(mapped.rgb * a, a);\n}\n", n = `#version 300 es
|
|
3
|
-
precision highp float;
|
|
4
|
-
in vec2 v_world;
|
|
5
|
-
${t}
|
|
6
|
-
out vec4 outColor;
|
|
7
|
-
void main() {
|
|
8
|
-
outColor = shadePaint(v_world);
|
|
9
|
-
}
|
|
10
|
-
`, r = [
|
|
11
|
-
"u_proj",
|
|
12
|
-
"u_model",
|
|
13
|
-
"u_origin",
|
|
14
|
-
"u_worldInv",
|
|
15
|
-
"u_sampler",
|
|
16
|
-
"u_tileSize",
|
|
17
|
-
"u_opacity",
|
|
18
|
-
"u_alpha",
|
|
19
|
-
"u_colorMatrix",
|
|
20
|
-
"u_colorBias"
|
|
21
|
-
], i = ["a_position"];
|
|
22
|
-
//#endregion
|
|
23
|
-
export { i as PATTERN_FILL_ATTRIBUTES, r as PATTERN_FILL_UNIFORMS, n as PATTERN_FRAG_SRC, t as PATTERN_PAINT_GLSL, e as PATTERN_VERT_SRC };
|
|
24
|
-
|
|
25
|
-
//# sourceMappingURL=patternFill.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"patternFill.js","names":["PATTERN_VERT_SRC","PATTERN_PAINT_GLSL","PATTERN_FRAG_SRC","PATTERN_FILL_UNIFORMS","PATTERN_FILL_ATTRIBUTES"],"sources":["../../../src/renderer/shaders/patternFill.ts"],"sourcesContent":["/**\n * GLSL ES 3.0 sources for pattern-fill paths.\n *\n * The vertex stage is `gradFill`'s: a path fill mesh carries `a_position`\n * only, so tile-space coordinates are recovered per fragment from the\n * screen position via `u_worldInv` rather than read from a UV attribute.\n * That matrix also carries the tile's origin and transform\n * (`patternTileSpace`). `u_tileSize` then converts to texture space, and\n * `REPEAT` wrapping (set at upload) tiles the result.\n *\n * Output convention §2: PREMULTIPLIED alpha.\n */\n\nexport const PATTERN_VERT_SRC = /* glsl */ `#version 300 es\nin vec2 a_position;\nuniform mat3 u_proj;\nuniform mat3 u_model;\nuniform vec2 u_origin;\nuniform mat3 u_worldInv;\nout vec2 v_world;\nvoid main() {\n vec3 screen = u_model * vec3(a_position - u_origin, 1.0);\n vec3 clip = u_proj * vec3(screen.xy, 1.0);\n gl_Position = vec4(clip.xy, 0.0, 1.0);\n vec3 world = u_worldInv * vec3(screen.xy, 1.0);\n v_world = world.xy;\n}\n`;\n\n/**\n * The pattern's color at a paint-space point, premultiplied — the whole of the\n * fragment stage but the point it is asked about, so the glyph program can\n * mask the same paint the path program draws.\n */\nexport const PATTERN_PAINT_GLSL = /* glsl */ `\nuniform sampler2D u_sampler;\nuniform vec2 u_tileSize;\nuniform float u_opacity;\nuniform float u_alpha;\nuniform mat4 u_colorMatrix;\nuniform vec4 u_colorBias;\nvec4 shadePaint(vec2 world) {\n vec2 uv = world / max(u_tileSize, vec2(0.0001));\n vec4 texel = texture(u_sampler, uv);\n vec4 mapped = clamp(u_colorMatrix * texel + u_colorBias, 0.0, 1.0);\n float a = mapped.a * u_opacity * u_alpha;\n return vec4(mapped.rgb * a, a);\n}\n`;\n\nexport const PATTERN_FRAG_SRC = /* glsl */ `#version 300 es\nprecision highp float;\nin vec2 v_world;\n${PATTERN_PAINT_GLSL}\nout vec4 outColor;\nvoid main() {\n outColor = shadePaint(v_world);\n}\n`;\n\nexport const PATTERN_FILL_UNIFORMS = [\n 'u_proj', 'u_model', 'u_origin', 'u_worldInv', 'u_sampler',\n 'u_tileSize', 'u_opacity', 'u_alpha',\n 'u_colorMatrix', 'u_colorBias',\n] as const;\n\nexport const PATTERN_FILL_ATTRIBUTES = ['a_position'] as const;\n"],"mappings":";AAaA,IAAaA,IAA8B,gZAqB9BC,IAAgC,gcAgBhCC,IAA8B;;;EAGzCD,EAAmB;;;;;GAORE,IAAwB;CACnC;CAAU;CAAW;CAAY;CAAc;CAC/C;CAAc;CAAa;CAC3B;CAAiB;AACnB,GAEaC,IAA0B,CAAC,YAAY"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { createReflectable as e } from "@weasel-js/registry";
|
|
2
|
-
//#region src/renderer/shaders/registerProgram.ts
|
|
3
|
-
var t = e(), n = t.reflection;
|
|
4
|
-
function r(e) {
|
|
5
|
-
return t.get(e) ?? null;
|
|
6
|
-
}
|
|
7
|
-
var i = () => typeof process < "u" ? process.env.NODE_ENV !== "production" : !0;
|
|
8
|
-
function a(e, n, r) {
|
|
9
|
-
if (t.has(e) && !i()) throw Error(`weasel registerProgram: duplicate program id "${e}". In production, re-registration is not allowed. Pass a unique id or call in dev mode.`);
|
|
10
|
-
return t.set(e, {
|
|
11
|
-
vert: n,
|
|
12
|
-
frag: r
|
|
13
|
-
}), { id: e };
|
|
14
|
-
}
|
|
15
|
-
//#endregion
|
|
16
|
-
export { r as getProgramSource, n as programSourceRegistry, a as registerProgram };
|
|
17
|
-
|
|
18
|
-
//# sourceMappingURL=registerProgram.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"registerProgram.js","names":["registry","createReflectable","programSourceRegistry","getProgramSource","id","isDev","registerProgram"],"sources":["../../../src/renderer/shaders/registerProgram.ts"],"sourcesContent":["/**\n * registerProgram — public API for registering custom shader programs.\n *\n * Stores raw GLSL source strings in a module-level registry. GL compilation\n * happens on each WeaselRenderer via WeaselRenderer.registerProgram(), which\n * calls getProgramSource() and compiles the result. This keeps registerProgram\n * GL-context-agnostic — identical pattern to registerFont storing ImageBitmap.\n *\n * Module-level state = source strings only; compiled GL\n * programs live on each renderer's programRegistry (Map<id, ShaderProgram>).\n *\n * Lifecycle: program sources live for the module lifetime. No unregister in v1.\n */\n\nimport { createReflectable, type Reflection } from '@weasel-js/registry';\nimport { type TextureHandle } from '../textures/registerTexture';\n\nexport type { TextureHandle };\n\n/** Opaque handle to a compiled custom shader program. */\nexport interface ShaderProgramHandle {\n readonly id: string;\n}\n\n/**\n * A value for one uniform in `ShaderDrawCommand.uniforms`.\n *\n * | TS type | GL call |\n * |-------------------------|--------------------------------------|\n * | number | uniform1f |\n * | [n, n] | uniform2fv |\n * | [n, n, n] | uniform3fv |\n * | [n, n, n, n] | uniform4fv |\n * | Float32Array length 9 | uniformMatrix3fv (column-major) |\n * | Float64Array | as the Float32Array of its values |\n * | Float32Array length 16 | uniformMatrix4fv (column-major) |\n * | TextureHandle | bind to next tex unit + uniform1i |\n *\n * **Array uniforms.** Keyed by an array's bare name (`u_ripples` for\n * `uniform vec3 u_ripples[8]`), a flat `number[]`, `Float32Array`,\n * `Int32Array` or `Uint32Array` fills the array from slot 0 in one\n * `uniform*v` call chosen by the declared element type (`vec3` →\n * `uniform3fv`, `ivec2` → `uniform2iv`, `mat4` → `uniformMatrix4fv`, …).\n * Its length must be a whole number of elements and at most the declared\n * size; a shorter value leaves the remaining slots as they were. Per-slot\n * keys (`u_ripples[2]`) keep working and take the table above.\n */\nexport type ShaderUniform =\n | number\n | [number, number]\n | [number, number, number]\n | [number, number, number, number]\n | readonly number[]\n | Float32Array\n | Float64Array\n | Int32Array\n | Uint32Array\n | TextureHandle;\n\n/** A registered program's GLSL source. An empty `vert` means the kit's default vertex shader. */\nexport interface ProgramSource {\n vert: string;\n frag: string;\n}\n\nconst registry = createReflectable<ProgramSource>();\n\n/** Every registered program's GLSL source, keyed by program id. */\nexport const programSourceRegistry: Reflection<ProgramSource> = registry.reflection;\n\n/** @internal Test helper — do not call from product code. */\nexport function _resetProgramRegistryForTests(): void {\n registry.clear();\n}\n\nexport function getProgramSource(id: string): ProgramSource | null {\n return registry.get(id) ?? null;\n}\n\nconst isDev = (): boolean =>\n typeof process !== 'undefined' ? process.env.NODE_ENV !== 'production' : true;\n\n/**\n * Register a custom shader program by id.\n *\n * Pass an empty string for `vert` to use the kit's default vertex shader\n * (recommended). The kit's vertex shader exposes `v_uv`, `v_screen`, and\n * `v_world` varyings plus `u_bounds` and `u_view` uniforms.\n *\n * **IMPORTANT — Premultiplied alpha:**\n * Your fragment shader MUST output premultiplied alpha:\n * `outColor = vec4(rgb * a, a);` ← correct\n * `outColor = vec4(rgb, a);` ← WRONG — over-brightens translucent regions\n *\n * The renderer uses `gl.blendFunc(ONE, ONE_MINUS_SRC_ALPHA)` to match.\n * Opaque fragments (a=1) are unaffected; only fragments with a < 1 differ.\n *\n * **Re-registration behavior:**\n * - Dev mode (`NODE_ENV !== 'production'`): calling with an existing id and new\n * source replaces it (hot reload). Every renderer that compiled the old source\n * recompiles on its next frame and deletes the program it replaces; a\n * `<Canvas shaders>` naming the id repaints to show it. If the new source fails\n * to compile, the renderer logs the error once and keeps drawing the old one.\n * - Prod mode: calling with an existing id throws.\n *\n * Actual GL compilation and `ShaderCompileError` throwing happen in\n * `WeaselRenderer.registerProgram()`, not here.\n *\n * @experimental API may break before v2.\n */\nexport function registerProgram(\n id: string,\n vert: string,\n frag: string,\n): ShaderProgramHandle {\n if (registry.has(id) && !isDev()) {\n throw new Error(`weasel registerProgram: duplicate program id \"${id}\". ` +\n `In production, re-registration is not allowed. Pass a unique id or call in dev mode.`);\n }\n registry.set(id, { vert, frag });\n return { id };\n}\n"],"mappings":";;AAiEA,IAAMA,IAAWC,EAAiC,GAGrCC,IAAmDF,EAAS;AAOzE,SAAgBG,EAAiB,GAAkC;CACjE,OAAOH,EAAS,IAAII,CAAE,KAAK;AAC7B;AAEA,IAAMC,UACJ,OAAO,UAAY,MAAA,QAAA,IAAA,aAAuC,eAAe;AA8B3E,SAAgBC,EACd,GACA,GACA,GACqB;CACrB,IAAIN,EAAS,IAAII,CAAE,KAAK,CAACC,EAAM,GAC7B,MAAU,MAAM,iDAAiDD,EAAG,wFACoB;CAG1F,OADAJ,EAAS,IAAII,GAAI;EAAE;EAAM;CAAK,CAAC,GACxB,EAAE,MAAG;AACd"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
//#region src/renderer/spriteSheet.ts
|
|
2
|
-
function e(e, t) {
|
|
3
|
-
let { frameWidth: n, frameHeight: r, columns: i } = e, a = e.margin ?? 0, o = e.spacing ?? 0, s = t % i, c = Math.floor(t / i);
|
|
4
|
-
return {
|
|
5
|
-
x: a + s * (n + o),
|
|
6
|
-
y: a + c * (r + o),
|
|
7
|
-
w: n,
|
|
8
|
-
h: r
|
|
9
|
-
};
|
|
10
|
-
}
|
|
11
|
-
//#endregion
|
|
12
|
-
export { e as frameRect };
|
|
13
|
-
|
|
14
|
-
//# sourceMappingURL=spriteSheet.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"spriteSheet.js","names":["frameRect","sheet","margin","spacing","col","index","columns","row","frameWidth","frameHeight"],"sources":["../../src/renderer/spriteSheet.ts"],"sourcesContent":["/**\n * Uniform-grid sprite sheet layout — frame index to the source rect an\n * `ImageDrawCommand` samples. Pure arithmetic over the grid description; it\n * never touches the bitmap.\n */\n\n/** A sprite sheet's grid. `margin` and `spacing` follow the Tiled / Aseprite\n * tileset convention, so a sheet exported from either describes itself here. */\nexport interface SpriteSheet {\n frameWidth: number;\n frameHeight: number;\n columns: number;\n /** Empty pixels around the whole grid. Default 0. */\n margin?: number;\n /** Empty pixels between adjacent cells — the gutter that keeps linear\n * sampling off the neighboring frame. Default 0. */\n spacing?: number;\n}\n\n/**\n * Row-major source rect for frame `index`, counting from 0 at the top-left.\n *\n * `index` is not range-checked and does not wrap: past the last cell this\n * returns a rect below the sheet, which draws as an edge smear. Wrapping is\n * the animation's business (`frameRect(sheet, tick % count)`) — a sheet does\n * not know how many of its cells are filled.\n */\nexport function frameRect(\n sheet: SpriteSheet,\n index: number,\n): { x: number; y: number; w: number; h: number } {\n const { frameWidth, frameHeight, columns } = sheet;\n const margin = sheet.margin ?? 0;\n const spacing = sheet.spacing ?? 0;\n const col = index % columns;\n const row = Math.floor(index / columns);\n return {\n x: margin + col * (frameWidth + spacing),\n y: margin + row * (frameHeight + spacing),\n w: frameWidth,\n h: frameHeight,\n };\n}\n"],"mappings":";AA2BA,SAAgBA,EACd,GACA,GACgD;CAChD,IAAM,EAAE,eAAY,gBAAa,eAAYC,GACvCC,IAASD,EAAM,UAAU,GACzBE,IAAUF,EAAM,WAAW,GAC3BG,IAAMC,IAAQC,GACdC,IAAM,KAAK,MAAMF,IAAQC,CAAO;CACtC,OAAO;EACL,GAAGJ,IAASE,KAAOI,IAAaL;EAChC,GAAGD,IAASK,KAAOE,IAAcN;EACjC,GAAGK;EACH,GAAGC;CACL;AACF"}
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
import { mat3 as e } from "../math/mat3.js";
|
|
2
|
-
//#region src/renderer/state/GroupState.ts
|
|
3
|
-
var t = new Float32Array([
|
|
4
|
-
1,
|
|
5
|
-
0,
|
|
6
|
-
0,
|
|
7
|
-
0,
|
|
8
|
-
0,
|
|
9
|
-
0,
|
|
10
|
-
1,
|
|
11
|
-
0,
|
|
12
|
-
0,
|
|
13
|
-
0,
|
|
14
|
-
0,
|
|
15
|
-
0,
|
|
16
|
-
1,
|
|
17
|
-
0,
|
|
18
|
-
0,
|
|
19
|
-
0,
|
|
20
|
-
0,
|
|
21
|
-
0,
|
|
22
|
-
1,
|
|
23
|
-
0
|
|
24
|
-
]);
|
|
25
|
-
function n(e, t) {
|
|
26
|
-
let n = /* @__PURE__ */ new Float32Array(20);
|
|
27
|
-
for (let r = 0; r < 4; r++) {
|
|
28
|
-
for (let i = 0; i < 4; i++) {
|
|
29
|
-
let a = 0;
|
|
30
|
-
for (let n = 0; n < 4; n++) a += e[r * 5 + n] * t[n * 5 + i];
|
|
31
|
-
n[r * 5 + i] = a;
|
|
32
|
-
}
|
|
33
|
-
let i = e[r * 5 + 4];
|
|
34
|
-
for (let n = 0; n < 4; n++) i += e[r * 5 + n] * t[n * 5 + 4];
|
|
35
|
-
n[r * 5 + 4] = i;
|
|
36
|
-
}
|
|
37
|
-
return n;
|
|
38
|
-
}
|
|
39
|
-
var r = class {
|
|
40
|
-
transformStack = [e.identity()];
|
|
41
|
-
alphaStack = [1];
|
|
42
|
-
colorMatrixStack = [t];
|
|
43
|
-
get transform() {
|
|
44
|
-
return this.transformStack[this.transformStack.length - 1];
|
|
45
|
-
}
|
|
46
|
-
get alpha() {
|
|
47
|
-
return this.alphaStack[this.alphaStack.length - 1];
|
|
48
|
-
}
|
|
49
|
-
get colorMatrix() {
|
|
50
|
-
return this.colorMatrixStack[this.colorMatrixStack.length - 1];
|
|
51
|
-
}
|
|
52
|
-
push(t) {
|
|
53
|
-
let r = this.transform, i = t.transform ? e.multiply(r, t.transform) : r, a = t.alpha === void 0 ? this.alpha : this.alpha * t.alpha, o = t.colorMatrix ? n(this.colorMatrix, t.colorMatrix instanceof Float32Array ? t.colorMatrix : new Float32Array(t.colorMatrix)) : this.colorMatrix;
|
|
54
|
-
this.transformStack.push(i), this.alphaStack.push(a), this.colorMatrixStack.push(o);
|
|
55
|
-
}
|
|
56
|
-
pushIsolated(n) {
|
|
57
|
-
this.push(n);
|
|
58
|
-
let r = {
|
|
59
|
-
alpha: this.alpha,
|
|
60
|
-
colorMatrix: this.colorMatrix
|
|
61
|
-
};
|
|
62
|
-
this.pop();
|
|
63
|
-
let i = this.transform;
|
|
64
|
-
return this.transformStack.push(n.transform ? e.multiply(i, n.transform) : i), this.alphaStack.push(1), this.colorMatrixStack.push(t), r;
|
|
65
|
-
}
|
|
66
|
-
reset() {
|
|
67
|
-
this.transformStack.length = 1, this.alphaStack.length = 1, this.colorMatrixStack.length = 1;
|
|
68
|
-
}
|
|
69
|
-
pop() {
|
|
70
|
-
if (this.transformStack.length <= 1) throw Error("GroupState.pop: cannot pop root frame");
|
|
71
|
-
this.transformStack.pop(), this.alphaStack.pop(), this.colorMatrixStack.pop();
|
|
72
|
-
}
|
|
73
|
-
};
|
|
74
|
-
//#endregion
|
|
75
|
-
export { r as GroupState, t as IDENTITY_COLOR_MATRIX };
|
|
76
|
-
|
|
77
|
-
//# sourceMappingURL=GroupState.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"GroupState.js","names":["IDENTITY_COLOR_MATRIX","compose4x5","result","row","col","sum","k","outer","inner","biasSum","GroupState","mat3","current","nextTransform","frame","nextAlpha","nextCM","composited"],"sources":["../../../src/renderer/state/GroupState.ts"],"sourcesContent":["import { mat3, type GlMat3 } from '../math/mat3';\n\n/** Row-major 4×5 color matrix identity. */\nexport const IDENTITY_COLOR_MATRIX = new Float32Array([\n 1, 0, 0, 0, 0,\n 0, 1, 0, 0, 0,\n 0, 0, 1, 0, 0,\n 0, 0, 0, 1, 0,\n]);\n\nexport interface GroupFrame {\n transform?: GlMat3;\n alpha?: number;\n /** Row-major 4×5 color matrix (20 floats). Absent leaves the stack unchanged. */\n colorMatrix?: Float32Array | number[];\n}\n\n/**\n * Compose two 4×5 color matrices: out = outer ∘ inner (inner applied first).\n *\n * composed(x) = M_outer * (M_inner * x + b_inner) + b_outer\n * = (M_outer * M_inner) * x + (M_outer * b_inner + b_outer)\n *\n * Each matrix is row-major. The 4×4 portion occupies indices\n * [0..3, 5..8, 10..13, 15..18]; bias column at [4, 9, 14, 19].\n */\nfunction compose4x5(outer: Float32Array, inner: Float32Array): Float32Array {\n const result = new Float32Array(20);\n for (let row = 0; row < 4; row++) {\n for (let col = 0; col < 4; col++) {\n let sum = 0;\n for (let k = 0; k < 4; k++) {\n sum += outer[row * 5 + k] * inner[k * 5 + col];\n }\n result[row * 5 + col] = sum;\n }\n let biasSum = outer[row * 5 + 4];\n for (let k = 0; k < 4; k++) {\n biasSum += outer[row * 5 + k] * inner[k * 5 + 4];\n }\n result[row * 5 + 4] = biasSum;\n }\n return result;\n}\n\nexport class GroupState {\n private transformStack: GlMat3[] = [mat3.identity()];\n private alphaStack: number[] = [1];\n private colorMatrixStack: Float32Array[] = [IDENTITY_COLOR_MATRIX];\n\n get transform(): GlMat3 {\n return this.transformStack[this.transformStack.length - 1];\n }\n\n get alpha(): number {\n return this.alphaStack[this.alphaStack.length - 1];\n }\n\n get colorMatrix(): Float32Array {\n return this.colorMatrixStack[this.colorMatrixStack.length - 1];\n }\n\n push(frame: GroupFrame): void {\n const current = this.transform;\n const nextTransform = frame.transform ? mat3.multiply(current, frame.transform) : current;\n const nextAlpha = frame.alpha !== undefined ? this.alpha * frame.alpha : this.alpha;\n const nextCM = frame.colorMatrix\n ? compose4x5(\n this.colorMatrix,\n frame.colorMatrix instanceof Float32Array\n ? frame.colorMatrix\n : new Float32Array(frame.colorMatrix),\n )\n : this.colorMatrix;\n this.transformStack.push(nextTransform);\n this.alphaStack.push(nextAlpha);\n this.colorMatrixStack.push(nextCM);\n }\n\n /**\n * Push a frame whose children paint into a surface of their own.\n *\n * The transform still accumulates — the children draw where they would have\n * drawn. Alpha and colour do not: they describe how the finished surface\n * joins the frame, and applying them on the way in as well would fade the\n * pixels an effect is about to read, then fade them again on the way out.\n *\n * Returns the pair the caller must apply at composite time — what `push`\n * would have left on the stack — so the composition rules live here and not\n * in the dispatcher.\n */\n pushIsolated(frame: GroupFrame): { alpha: number; colorMatrix: Float32Array } {\n this.push(frame);\n const composited = { alpha: this.alpha, colorMatrix: this.colorMatrix };\n this.pop();\n const current = this.transform;\n this.transformStack.push(frame.transform ? mat3.multiply(current, frame.transform) : current);\n this.alphaStack.push(1);\n this.colorMatrixStack.push(IDENTITY_COLOR_MATRIX);\n return composited;\n }\n\n /** Drop every pushed frame, leaving the root. A frame that throws part-way\n * down the tree never pops, and the next frame would draw under leftovers. */\n reset(): void {\n this.transformStack.length = 1;\n this.alphaStack.length = 1;\n this.colorMatrixStack.length = 1;\n }\n\n pop(): void {\n if (this.transformStack.length <= 1) {\n throw new Error('GroupState.pop: cannot pop root frame');\n }\n this.transformStack.pop();\n this.alphaStack.pop();\n this.colorMatrixStack.pop();\n }\n}\n"],"mappings":";;AAGA,IAAaA,IAAwB,IAAI,aAAa;CACpD;CAAG;CAAG;CAAG;CAAG;CACZ;CAAG;CAAG;CAAG;CAAG;CACZ;CAAG;CAAG;CAAG;CAAG;CACZ;CAAG;CAAG;CAAG;CAAG;AACd,CAAC;AAkBD,SAASC,EAAW,GAAqB,GAAmC;CAC1E,IAAMC,oBAAS,IAAI,aAAa,EAAE;CAClC,KAAK,IAAIC,IAAM,GAAGA,IAAM,GAAG,KAAO;EAChC,KAAK,IAAIC,IAAM,GAAGA,IAAM,GAAG,KAAO;GAChC,IAAIC,IAAM;GACV,KAAK,IAAIC,IAAI,GAAGA,IAAI,GAAG,KACrB,KAAOC,EAAMJ,IAAM,IAAIG,KAAKE,EAAMF,IAAI,IAAIF;GAE5C,EAAOD,IAAM,IAAIC,KAAOC;EAC1B;EACA,IAAII,IAAUF,EAAMJ,IAAM,IAAI;EAC9B,KAAK,IAAIG,IAAI,GAAGA,IAAI,GAAG,KACrB,KAAWC,EAAMJ,IAAM,IAAIG,KAAKE,EAAMF,IAAI,IAAI;EAEhD,EAAOH,IAAM,IAAI,KAAKM;CACxB;CACA,OAAOP;AACT;AAEA,IAAaQ,IAAb,MAAwB;CACtB,iBAAmC,CAACC,EAAK,SAAS,CAAC;CACnD,aAA+B,CAAC,CAAC;CACjC,mBAA2C,CAACX,CAAqB;CAEjE,IAAI,YAAoB;EACtB,OAAO,KAAK,eAAe,KAAK,eAAe,SAAS;CAC1D;CAEA,IAAI,QAAgB;EAClB,OAAO,KAAK,WAAW,KAAK,WAAW,SAAS;CAClD;CAEA,IAAI,cAA4B;EAC9B,OAAO,KAAK,iBAAiB,KAAK,iBAAiB,SAAS;CAC9D;CAEA,KAAK,GAAyB;EAC5B,IAAMY,IAAU,KAAK,WACfC,IAAgBC,EAAM,YAAYH,EAAK,SAASC,GAASE,EAAM,SAAS,IAAIF,GAC5EG,IAAYD,EAAM,UAAU,KAAA,IAAuC,KAAK,QAAhC,KAAK,QAAQA,EAAM,OAC3DE,IAASF,EAAM,cACjBb,EACE,KAAK,aACLa,EAAM,uBAAuB,eACzBA,EAAM,cACN,IAAI,aAAaA,EAAM,WAAW,CACxC,IACA,KAAK;EAGT,AAFA,KAAK,eAAe,KAAKD,CAAa,GACtC,KAAK,WAAW,KAAKE,CAAS,GAC9B,KAAK,iBAAiB,KAAKC,CAAM;CACnC;CAcA,aAAa,GAAiE;EAC5E,KAAK,KAAKF,CAAK;EACf,IAAMG,IAAa;GAAE,OAAO,KAAK;GAAO,aAAa,KAAK;EAAY;EACtE,KAAK,IAAI;EACT,IAAML,IAAU,KAAK;EAIrB,OAHA,KAAK,eAAe,KAAKE,EAAM,YAAYH,EAAK,SAASC,GAASE,EAAM,SAAS,IAAIF,CAAO,GAC5F,KAAK,WAAW,KAAK,CAAC,GACtB,KAAK,iBAAiB,KAAKZ,CAAqB,GACzCiB;CACT;CAIA,QAAc;EAGZ,AAFA,KAAK,eAAe,SAAS,GAC7B,KAAK,WAAW,SAAS,GACzB,KAAK,iBAAiB,SAAS;CACjC;CAEA,MAAY;EACV,IAAI,KAAK,eAAe,UAAU,GAChC,MAAU,MAAM,uCAAuC;EAIzD,AAFA,KAAK,eAAe,IAAI,GACxB,KAAK,WAAW,IAAI,GACpB,KAAK,iBAAiB,IAAI;CAC5B;AACF"}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import { strokeSpaceOf as e } from "../features/paths/tessellate/metric.js";
|
|
2
|
-
import { resolveStrokeWidth as t } from "../features/paths/tessellate/stroke.js";
|
|
3
|
-
import { resolveMarkerSize as n } from "../core/markerInset.js";
|
|
4
|
-
import { quantizeStrokeScale as r } from "./cache/strokeMeshCache.js";
|
|
5
|
-
//#region src/renderer/strokeLengths.ts
|
|
6
|
-
var i = {};
|
|
7
|
-
function a(n, a) {
|
|
8
|
-
let c = a.stroke, { markerStart: l, markerMid: u, markerEnd: d } = c;
|
|
9
|
-
if (typeof c.width != "object" && !o(l) && !o(u) && !o(d)) return {
|
|
10
|
-
cmd: a,
|
|
11
|
-
spaces: i
|
|
12
|
-
};
|
|
13
|
-
let f = { ...c }, { scale: p, metric: m } = e(n[0], n[1], n[3], n[4]), h = (e) => m === null ? void 0 : {
|
|
14
|
-
metric: m,
|
|
15
|
-
pxPerUnit: e
|
|
16
|
-
}, g;
|
|
17
|
-
if (typeof c.width == "object") {
|
|
18
|
-
let e = r(c.width.px, p);
|
|
19
|
-
f.width = t(c.width, e), c.dash && e > 0 && (f.dash = c.dash.map((t) => t / e)), g = h(e);
|
|
20
|
-
}
|
|
21
|
-
let _ = (e) => {
|
|
22
|
-
if (e === void 0 || typeof e == "string" || e.size === void 0) return g;
|
|
23
|
-
if (typeof e.size != "number") return h(r(e.size.px, p));
|
|
24
|
-
}, v = {
|
|
25
|
-
ribbon: g,
|
|
26
|
-
start: _(l),
|
|
27
|
-
mid: _(u),
|
|
28
|
-
end: _(d)
|
|
29
|
-
};
|
|
30
|
-
return o(l) && (f.markerStart = s(l, p)), o(u) && (f.markerMid = s(u, p)), o(d) && (f.markerEnd = s(d, p)), {
|
|
31
|
-
cmd: {
|
|
32
|
-
...a,
|
|
33
|
-
stroke: f
|
|
34
|
-
},
|
|
35
|
-
spaces: v
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
function o(e) {
|
|
39
|
-
return typeof e == "object" && typeof e.size == "object";
|
|
40
|
-
}
|
|
41
|
-
function s(e, t) {
|
|
42
|
-
return {
|
|
43
|
-
...e,
|
|
44
|
-
size: n(e, 0, r(e.size.px, t))
|
|
45
|
-
};
|
|
46
|
-
}
|
|
47
|
-
//#endregion
|
|
48
|
-
export { a as resolveStrokeLengths };
|
|
49
|
-
|
|
50
|
-
//# sourceMappingURL=strokeLengths.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"strokeLengths.js","names":["WORLD","resolveStrokeLengths","stroke","cmd","isPxMarker","markerStart","markerMid","markerEnd","resolved","strokeSpaceOf","transform","screen","metric","ribbon","pxPerUnit","quantizeStrokeScale","scale","resolveStrokeWidth","d","head","ref","spaces","resolvedMarker","resolveMarkerSize"],"sources":["../../src/renderer/strokeLengths.ts"],"sourcesContent":["import type { CommandFill, MarkerRef, CommandStroke } from '@weasel-js/paint';\nimport type { PathDrawCommand } from './DrawCommand';\nimport type { GlMat3 } from './math/mat3';\nimport { resolveStrokeWidth } from 'features/paths/tessellate/stroke';\nimport {\n strokeSpaceOf, type ScreenSpace, type StrokeSpaces,\n} from 'features/paths/tessellate/metric';\nimport { quantizeStrokeScale } from './cache/strokeMeshCache';\nimport { resolveMarkerSize } from '../core/markerInset';\n\n/** A path command whose stroke paints. */\nexport type StrokedPathCommand = PathDrawCommand & { stroke: CommandStroke & { paint: CommandFill } };\n\n/** A stroke command ready to tessellate, and the spaces to tessellate it in. */\nexport interface ResolvedStrokeCommand {\n cmd: StrokedPathCommand;\n /** Where the ribbon and each head are built; every length in `cmd` is\n * measured in the space of the part it belongs to. */\n spaces: StrokeSpaces;\n}\n\nconst WORLD: StrokeSpaces = {};\n\n/**\n * `cmd` with its `{ px }` lengths — the stroke width, any marker size, and on a\n * `{ px }` stroke its dashes — resolved against the accumulated transform's\n * quantized scale, so everything downstream (the ribbon cache key, the insets,\n * the heads) sees plain numbers.\n *\n * Under a transform that stretches one direction more than another, each\n * screen-sized part is also built in the transform's stretch, where lengths\n * measure as they do on screen, so it is exact across, down and on every\n * diagonal rather than right only on average. World-sized parts stay in world.\n */\nexport function resolveStrokeLengths(transform: GlMat3, cmd: StrokedPathCommand): ResolvedStrokeCommand {\n const stroke = cmd.stroke;\n const { markerStart, markerMid, markerEnd } = stroke;\n if (typeof stroke.width !== 'object' && !isPxMarker(markerStart)\n && !isPxMarker(markerMid) && !isPxMarker(markerEnd)) {\n return { cmd, spaces: WORLD };\n }\n const resolved: CommandStroke & { paint: CommandFill } = { ...stroke };\n const { scale, metric } = strokeSpaceOf(transform[0], transform[1], transform[3], transform[4]);\n const screen = (pxPerUnit: number): ScreenSpace | undefined =>\n metric === null ? undefined : { metric, pxPerUnit };\n let ribbon: ScreenSpace | undefined;\n if (typeof stroke.width === 'object') {\n const pxPerUnit = quantizeStrokeScale(stroke.width.px, scale);\n resolved.width = resolveStrokeWidth(stroke.width, pxPerUnit);\n if (stroke.dash && pxPerUnit > 0) resolved.dash = stroke.dash.map((d) => d / pxPerUnit);\n ribbon = screen(pxPerUnit);\n }\n const head = (ref: MarkerRef | undefined): ScreenSpace | undefined => {\n if (ref === undefined || typeof ref === 'string' || ref.size === undefined) return ribbon;\n if (typeof ref.size === 'number') return undefined;\n return screen(quantizeStrokeScale(ref.size.px, scale));\n };\n const spaces = { ribbon, start: head(markerStart), mid: head(markerMid), end: head(markerEnd) };\n if (isPxMarker(markerStart)) resolved.markerStart = resolvedMarker(markerStart, scale);\n if (isPxMarker(markerMid)) resolved.markerMid = resolvedMarker(markerMid, scale);\n if (isPxMarker(markerEnd)) resolved.markerEnd = resolvedMarker(markerEnd, scale);\n return { cmd: { ...cmd, stroke: resolved }, spaces };\n}\n\ntype PxMarker = Exclude<MarkerRef, string> & { size: { px: number } };\n\nfunction isPxMarker(ref: MarkerRef | undefined): ref is PxMarker {\n return typeof ref === 'object' && typeof ref.size === 'object';\n}\n\nfunction resolvedMarker(ref: PxMarker, scale: number): MarkerRef {\n return { ...ref, size: resolveMarkerSize(ref, 0, quantizeStrokeScale(ref.size.px, scale)) };\n}\n"],"mappings":";;;;;AAqBA,IAAMA,IAAsB,CAAC;AAa7B,SAAgBC,EAAqB,GAAmB,GAAgD;CACtG,IAAMC,IAASC,EAAI,QACb,EAAE,gBAAa,cAAW,iBAAcD;CAC9C,IAAI,OAAOA,EAAO,SAAU,YAAY,CAACE,EAAWC,CAAW,KAC1D,CAACD,EAAWE,CAAS,KAAK,CAACF,EAAWG,CAAS,GAClD,OAAO;EAAE;EAAK,QAAQP;CAAM;CAE9B,IAAMQ,IAAmD,EAAE,GAAGN,EAAO,GAC/D,EAAE,UAAO,cAAWO,EAAcC,EAAU,IAAIA,EAAU,IAAIA,EAAU,IAAIA,EAAU,EAAE,GACxFC,KAAU,MACdC,MAAW,OAAO,KAAA,IAAY;EAAE;EAAQ;CAAU,GAChDC;CACJ,IAAI,OAAOX,EAAO,SAAU,UAAU;EACpC,IAAMY,IAAYC,EAAoBb,EAAO,MAAM,IAAIc,CAAK;EAG5D,AAFA,EAAS,QAAQC,EAAmBf,EAAO,OAAOY,CAAS,GACvDZ,EAAO,QAAQY,IAAY,MAAG,EAAS,OAAOZ,EAAO,KAAK,KAAK,MAAMgB,IAAIJ,CAAS,IACtF,IAASH,EAAOG,CAAS;CAC3B;CACA,IAAMK,KAAQ,MAAwD;EACpE,IAAIC,MAAQ,KAAA,KAAa,OAAOA,KAAQ,YAAYA,EAAI,SAAS,KAAA,GAAW,OAAOP;EACnF,IAAI,OAAOO,EAAI,QAAS,UACxB,OAAOT,EAAOI,EAAoBK,EAAI,KAAK,IAAIJ,CAAK,CAAC;CACvD,GACMK,IAAS;EAAE;EAAQ,OAAOF,EAAKd,CAAW;EAAG,KAAKc,EAAKb,CAAS;EAAG,KAAKa,EAAKZ,CAAS;CAAE;CAI9F,OAHIH,EAAWC,CAAW,MAAG,EAAS,cAAciB,EAAejB,GAAaW,CAAK,IACjFZ,EAAWE,CAAS,MAAG,EAAS,YAAYgB,EAAehB,GAAWU,CAAK,IAC3EZ,EAAWG,CAAS,MAAG,EAAS,YAAYe,EAAef,GAAWS,CAAK,IACxE;EAAE,KAAK;GAAE,GAAGb;GAAK,QAAQK;EAAS;EAAG;CAAO;AACrD;AAIA,SAASJ,EAAW,GAA6C;CAC/D,OAAO,OAAOgB,KAAQ,YAAY,OAAOA,EAAI,QAAS;AACxD;AAEA,SAASE,EAAe,GAAe,GAA0B;CAC/D,OAAO;EAAE,GAAGF;EAAK,MAAMG,EAAkBH,GAAK,GAAGL,EAAoBK,EAAI,KAAK,IAAIJ,CAAK,CAAC;CAAE;AAC5F"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"syntheticItalic.js","names":["SYNTHETIC_ITALIC_RADIANS"],"sources":["../../src/renderer/syntheticItalic.ts"],"sourcesContent":["/**\n * Synthetic-oblique angle, in radians — 12°, the conventional CSS\n * `font-style: oblique`. Shared by everything that fakes an italic: the SDF\n * tier skews quads by it, the outline tier shears glyph geometry by it, and\n * `textToPath` bakes the same shear into extracted outlines. One constant so a\n * face that falls back to the upright atlas leans the same amount however it\n * ends up being drawn.\n */\nexport const SYNTHETIC_ITALIC_RADIANS = 0.2094;\n"],"mappings":";AAQA,IAAaA,IAA2B"}
|