@efxlab/motion-canvas-2d 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/editor/index.css +40 -0
- package/editor/index.js +525 -0
- package/editor/index.js.map +1 -0
- package/lib/code/CodeCursor.d.ts +84 -0
- package/lib/code/CodeCursor.d.ts.map +1 -0
- package/lib/code/CodeCursor.js +315 -0
- package/lib/code/CodeDiffer.d.ts +28 -0
- package/lib/code/CodeDiffer.d.ts.map +1 -0
- package/lib/code/CodeDiffer.js +51 -0
- package/lib/code/CodeFragment.d.ts +42 -0
- package/lib/code/CodeFragment.d.ts.map +1 -0
- package/lib/code/CodeFragment.js +72 -0
- package/lib/code/CodeHighlighter.d.ts +69 -0
- package/lib/code/CodeHighlighter.d.ts.map +1 -0
- package/lib/code/CodeHighlighter.js +2 -0
- package/lib/code/CodeMetrics.d.ts +11 -0
- package/lib/code/CodeMetrics.d.ts.map +1 -0
- package/lib/code/CodeMetrics.js +29 -0
- package/lib/code/CodeRange.d.ts +43 -0
- package/lib/code/CodeRange.d.ts.map +1 -0
- package/lib/code/CodeRange.js +185 -0
- package/lib/code/CodeScope.d.ts +16 -0
- package/lib/code/CodeScope.d.ts.map +1 -0
- package/lib/code/CodeScope.js +72 -0
- package/lib/code/CodeSelection.d.ts +6 -0
- package/lib/code/CodeSelection.d.ts.map +1 -0
- package/lib/code/CodeSelection.js +13 -0
- package/lib/code/CodeSignal.d.ts +63 -0
- package/lib/code/CodeSignal.d.ts.map +1 -0
- package/lib/code/CodeSignal.js +206 -0
- package/lib/code/CodeTokenizer.d.ts +8 -0
- package/lib/code/CodeTokenizer.d.ts.map +1 -0
- package/lib/code/CodeTokenizer.js +50 -0
- package/lib/code/DefaultHighlightStyle.d.ts +3 -0
- package/lib/code/DefaultHighlightStyle.d.ts.map +1 -0
- package/lib/code/DefaultHighlightStyle.js +98 -0
- package/lib/code/LezerHighlighter.d.ts +22 -0
- package/lib/code/LezerHighlighter.d.ts.map +1 -0
- package/lib/code/LezerHighlighter.js +91 -0
- package/lib/code/diff.d.ts +31 -0
- package/lib/code/diff.d.ts.map +1 -0
- package/lib/code/diff.js +236 -0
- package/lib/code/extractRange.d.ts +17 -0
- package/lib/code/extractRange.d.ts.map +1 -0
- package/lib/code/extractRange.js +102 -0
- package/lib/code/index.d.ts +14 -0
- package/lib/code/index.d.ts.map +1 -0
- package/lib/code/index.js +14 -0
- package/lib/components/Bezier.d.ts +22 -0
- package/lib/components/Bezier.d.ts.map +1 -0
- package/lib/components/Bezier.js +80 -0
- package/lib/components/Camera.d.ts +172 -0
- package/lib/components/Camera.d.ts.map +1 -0
- package/lib/components/Camera.js +239 -0
- package/lib/components/Circle.d.ts +191 -0
- package/lib/components/Circle.d.ts.map +1 -0
- package/lib/components/Circle.js +178 -0
- package/lib/components/Code.d.ts +238 -0
- package/lib/components/Code.d.ts.map +1 -0
- package/lib/components/Code.js +331 -0
- package/lib/components/CodeBlock.d.ts +131 -0
- package/lib/components/CodeBlock.d.ts.map +1 -0
- package/lib/components/CodeBlock.js +462 -0
- package/lib/components/CubicBezier.d.ts +69 -0
- package/lib/components/CubicBezier.d.ts.map +1 -0
- package/lib/components/CubicBezier.js +81 -0
- package/lib/components/Curve.d.ts +202 -0
- package/lib/components/Curve.d.ts.map +1 -0
- package/lib/components/Curve.js +284 -0
- package/lib/components/Grid.d.ts +75 -0
- package/lib/components/Grid.d.ts.map +1 -0
- package/lib/components/Grid.js +91 -0
- package/lib/components/Icon.d.ts +58 -0
- package/lib/components/Icon.d.ts.map +1 -0
- package/lib/components/Icon.js +58 -0
- package/lib/components/Img.d.ts +116 -0
- package/lib/components/Img.d.ts.map +1 -0
- package/lib/components/Img.js +233 -0
- package/lib/components/Knot.d.ts +89 -0
- package/lib/components/Knot.d.ts.map +1 -0
- package/lib/components/Knot.js +68 -0
- package/lib/components/Latex.d.ts +49 -0
- package/lib/components/Latex.d.ts.map +1 -0
- package/lib/components/Latex.js +206 -0
- package/lib/components/Layout.d.ts +423 -0
- package/lib/components/Layout.d.ts.map +1 -0
- package/lib/components/Layout.js +699 -0
- package/lib/components/Line.d.ts +158 -0
- package/lib/components/Line.d.ts.map +1 -0
- package/lib/components/Line.js +315 -0
- package/lib/components/Node.d.ts +843 -0
- package/lib/components/Node.d.ts.map +1 -0
- package/lib/components/Node.js +1335 -0
- package/lib/components/Path.d.ts +18 -0
- package/lib/components/Path.d.ts.map +1 -0
- package/lib/components/Path.js +96 -0
- package/lib/components/Polygon.d.ts +157 -0
- package/lib/components/Polygon.d.ts.map +1 -0
- package/lib/components/Polygon.js +183 -0
- package/lib/components/QuadBezier.d.ts +61 -0
- package/lib/components/QuadBezier.d.ts.map +1 -0
- package/lib/components/QuadBezier.js +76 -0
- package/lib/components/Ray.d.ts +60 -0
- package/lib/components/Ray.d.ts.map +1 -0
- package/lib/components/Ray.js +95 -0
- package/lib/components/Rect.d.ts +112 -0
- package/lib/components/Rect.d.ts.map +1 -0
- package/lib/components/Rect.js +76 -0
- package/lib/components/SVG.d.ts +175 -0
- package/lib/components/SVG.d.ts.map +1 -0
- package/lib/components/SVG.js +582 -0
- package/lib/components/Shape.d.ts +39 -0
- package/lib/components/Shape.d.ts.map +1 -0
- package/lib/components/Shape.js +134 -0
- package/lib/components/Spline.d.ts +87 -0
- package/lib/components/Spline.d.ts.map +1 -0
- package/lib/components/Spline.js +230 -0
- package/lib/components/Txt.d.ts +51 -0
- package/lib/components/Txt.d.ts.map +1 -0
- package/lib/components/Txt.js +172 -0
- package/lib/components/TxtLeaf.d.ts +20 -0
- package/lib/components/TxtLeaf.d.ts.map +1 -0
- package/lib/components/TxtLeaf.js +185 -0
- package/lib/components/Video.d.ts +110 -0
- package/lib/components/Video.d.ts.map +1 -0
- package/lib/components/Video.js +267 -0
- package/lib/components/View2D.d.ts +25 -0
- package/lib/components/View2D.d.ts.map +1 -0
- package/lib/components/View2D.js +85 -0
- package/lib/components/index.d.ts +27 -0
- package/lib/components/index.d.ts.map +1 -0
- package/lib/components/index.js +27 -0
- package/lib/components/types.d.ts +17 -0
- package/lib/components/types.d.ts.map +1 -0
- package/lib/components/types.js +2 -0
- package/lib/curves/ArcSegment.d.ts +26 -0
- package/lib/curves/ArcSegment.d.ts.map +1 -0
- package/lib/curves/ArcSegment.js +116 -0
- package/lib/curves/CircleSegment.d.ts +18 -0
- package/lib/curves/CircleSegment.d.ts.map +1 -0
- package/lib/curves/CircleSegment.js +60 -0
- package/lib/curves/CubicBezierSegment.d.ts +18 -0
- package/lib/curves/CubicBezierSegment.d.ts.map +1 -0
- package/lib/curves/CubicBezierSegment.js +60 -0
- package/lib/curves/CurveDrawingInfo.d.ts +11 -0
- package/lib/curves/CurveDrawingInfo.d.ts.map +1 -0
- package/lib/curves/CurveDrawingInfo.js +2 -0
- package/lib/curves/CurvePoint.d.ts +15 -0
- package/lib/curves/CurvePoint.d.ts.map +1 -0
- package/lib/curves/CurvePoint.js +2 -0
- package/lib/curves/CurveProfile.d.ts +7 -0
- package/lib/curves/CurveProfile.d.ts.map +1 -0
- package/lib/curves/CurveProfile.js +2 -0
- package/lib/curves/KnotInfo.d.ts +12 -0
- package/lib/curves/KnotInfo.d.ts.map +1 -0
- package/lib/curves/KnotInfo.js +2 -0
- package/lib/curves/LineSegment.d.ts +16 -0
- package/lib/curves/LineSegment.d.ts.map +1 -0
- package/lib/curves/LineSegment.js +51 -0
- package/lib/curves/Polynomial.d.ts +118 -0
- package/lib/curves/Polynomial.d.ts.map +1 -0
- package/lib/curves/Polynomial.js +263 -0
- package/lib/curves/Polynomial2D.d.ts +22 -0
- package/lib/curves/Polynomial2D.d.ts.map +1 -0
- package/lib/curves/Polynomial2D.js +51 -0
- package/lib/curves/PolynomialSegment.d.ts +39 -0
- package/lib/curves/PolynomialSegment.d.ts.map +1 -0
- package/lib/curves/PolynomialSegment.js +88 -0
- package/lib/curves/QuadBezierSegment.d.ts +17 -0
- package/lib/curves/QuadBezierSegment.d.ts.map +1 -0
- package/lib/curves/QuadBezierSegment.js +53 -0
- package/lib/curves/Segment.d.ts +9 -0
- package/lib/curves/Segment.d.ts.map +1 -0
- package/lib/curves/Segment.js +3 -0
- package/lib/curves/UniformPolynomialCurveSampler.d.ts +43 -0
- package/lib/curves/UniformPolynomialCurveSampler.d.ts.map +1 -0
- package/lib/curves/UniformPolynomialCurveSampler.js +74 -0
- package/lib/curves/createCurveProfileLerp.d.ts +32 -0
- package/lib/curves/createCurveProfileLerp.d.ts.map +1 -0
- package/lib/curves/createCurveProfileLerp.js +351 -0
- package/lib/curves/getBezierSplineProfile.d.ts +12 -0
- package/lib/curves/getBezierSplineProfile.d.ts.map +1 -0
- package/lib/curves/getBezierSplineProfile.js +140 -0
- package/lib/curves/getCircleProfile.d.ts +4 -0
- package/lib/curves/getCircleProfile.d.ts.map +1 -0
- package/lib/curves/getCircleProfile.js +44 -0
- package/lib/curves/getPathProfile.d.ts +3 -0
- package/lib/curves/getPathProfile.d.ts.map +1 -0
- package/lib/curves/getPathProfile.js +128 -0
- package/lib/curves/getPointAtDistance.d.ts +4 -0
- package/lib/curves/getPointAtDistance.d.ts.map +1 -0
- package/lib/curves/getPointAtDistance.js +15 -0
- package/lib/curves/getPolylineProfile.d.ts +4 -0
- package/lib/curves/getPolylineProfile.d.ts.map +1 -0
- package/lib/curves/getPolylineProfile.js +58 -0
- package/lib/curves/getRectProfile.d.ts +4 -0
- package/lib/curves/getRectProfile.d.ts.map +1 -0
- package/lib/curves/getRectProfile.js +57 -0
- package/lib/curves/index.d.ts +17 -0
- package/lib/curves/index.d.ts.map +1 -0
- package/lib/curves/index.js +17 -0
- package/lib/decorators/canvasStyleSignal.d.ts +5 -0
- package/lib/decorators/canvasStyleSignal.d.ts.map +1 -0
- package/lib/decorators/canvasStyleSignal.js +12 -0
- package/lib/decorators/colorSignal.d.ts +2 -0
- package/lib/decorators/colorSignal.d.ts.map +1 -0
- package/lib/decorators/colorSignal.js +9 -0
- package/lib/decorators/compound.d.ts +27 -0
- package/lib/decorators/compound.d.ts.map +1 -0
- package/lib/decorators/compound.js +49 -0
- package/lib/decorators/computed.d.ts +9 -0
- package/lib/decorators/computed.d.ts.map +1 -0
- package/lib/decorators/computed.js +18 -0
- package/lib/decorators/defaultStyle.d.ts +2 -0
- package/lib/decorators/defaultStyle.d.ts.map +1 -0
- package/lib/decorators/defaultStyle.js +13 -0
- package/lib/decorators/filtersSignal.d.ts +11 -0
- package/lib/decorators/filtersSignal.d.ts.map +1 -0
- package/lib/decorators/filtersSignal.js +73 -0
- package/lib/decorators/index.d.ts +11 -0
- package/lib/decorators/index.d.ts.map +1 -0
- package/lib/decorators/index.js +11 -0
- package/lib/decorators/initializers.d.ts +4 -0
- package/lib/decorators/initializers.d.ts.map +1 -0
- package/lib/decorators/initializers.js +27 -0
- package/lib/decorators/nodeName.d.ts +9 -0
- package/lib/decorators/nodeName.d.ts.map +1 -0
- package/lib/decorators/nodeName.js +13 -0
- package/lib/decorators/signal.d.ts +183 -0
- package/lib/decorators/signal.d.ts.map +1 -0
- package/lib/decorators/signal.js +285 -0
- package/lib/decorators/spacingSignal.d.ts +2 -0
- package/lib/decorators/spacingSignal.d.ts.map +1 -0
- package/lib/decorators/spacingSignal.js +15 -0
- package/lib/decorators/vector2Signal.d.ts +8 -0
- package/lib/decorators/vector2Signal.d.ts.map +1 -0
- package/lib/decorators/vector2Signal.js +15 -0
- package/lib/index.d.ts +9 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +9 -0
- package/lib/jsx-dev-runtime.d.ts +3 -0
- package/lib/jsx-dev-runtime.d.ts.map +1 -0
- package/lib/jsx-dev-runtime.js +3 -0
- package/lib/jsx-runtime.d.ts +12 -0
- package/lib/jsx-runtime.d.ts.map +1 -0
- package/lib/jsx-runtime.js +23 -0
- package/lib/partials/Filter.d.ts +82 -0
- package/lib/partials/Filter.d.ts.map +1 -0
- package/lib/partials/Filter.js +137 -0
- package/lib/partials/Gradient.d.ts +31 -0
- package/lib/partials/Gradient.d.ts.map +1 -0
- package/lib/partials/Gradient.js +63 -0
- package/lib/partials/Pattern.d.ts +13 -0
- package/lib/partials/Pattern.d.ts.map +1 -0
- package/lib/partials/Pattern.js +27 -0
- package/lib/partials/ShaderConfig.d.ts +81 -0
- package/lib/partials/ShaderConfig.d.ts.map +1 -0
- package/lib/partials/ShaderConfig.js +25 -0
- package/lib/partials/index.d.ts +5 -0
- package/lib/partials/index.d.ts.map +1 -0
- package/lib/partials/index.js +5 -0
- package/lib/partials/types.d.ts +35 -0
- package/lib/partials/types.d.ts.map +1 -0
- package/lib/partials/types.js +2 -0
- package/lib/scenes/Scene2D.d.ts +23 -0
- package/lib/scenes/Scene2D.d.ts.map +1 -0
- package/lib/scenes/Scene2D.js +152 -0
- package/lib/scenes/index.d.ts +4 -0
- package/lib/scenes/index.d.ts.map +1 -0
- package/lib/scenes/index.js +4 -0
- package/lib/scenes/makeScene2D.d.ts +5 -0
- package/lib/scenes/makeScene2D.d.ts.map +1 -0
- package/lib/scenes/makeScene2D.js +12 -0
- package/lib/scenes/useScene2D.d.ts +3 -0
- package/lib/scenes/useScene2D.d.ts.map +1 -0
- package/lib/scenes/useScene2D.js +5 -0
- package/lib/tsconfig.build.tsbuildinfo +1 -0
- package/lib/tsconfig.tsbuildinfo +1 -0
- package/lib/utils/CanvasUtils.d.ts +21 -0
- package/lib/utils/CanvasUtils.d.ts.map +1 -0
- package/lib/utils/CanvasUtils.js +138 -0
- package/lib/utils/diff.d.ts +31 -0
- package/lib/utils/diff.d.ts.map +1 -0
- package/lib/utils/diff.js +97 -0
- package/lib/utils/index.d.ts +4 -0
- package/lib/utils/index.d.ts.map +1 -0
- package/lib/utils/index.js +4 -0
- package/lib/utils/is.d.ts +8 -0
- package/lib/utils/is.d.ts.map +1 -0
- package/lib/utils/is.js +10 -0
- package/lib/utils/makeSignalExtensions.d.ts +4 -0
- package/lib/utils/makeSignalExtensions.d.ts.map +1 -0
- package/lib/utils/makeSignalExtensions.js +20 -0
- package/lib/utils/withDefaults.d.ts +20 -0
- package/lib/utils/withDefaults.d.ts.map +1 -0
- package/lib/utils/withDefaults.js +23 -0
- package/package.json +54 -0
- package/src/editor/NodeInspectorConfig.tsx +76 -0
- package/src/editor/PreviewOverlayConfig.tsx +65 -0
- package/src/editor/Provider.tsx +109 -0
- package/src/editor/SceneGraphTabConfig.tsx +87 -0
- package/src/editor/icons/CircleIcon.tsx +7 -0
- package/src/editor/icons/CodeBlockIcon.tsx +8 -0
- package/src/editor/icons/CurveIcon.tsx +7 -0
- package/src/editor/icons/GridIcon.tsx +7 -0
- package/src/editor/icons/IconMap.ts +35 -0
- package/src/editor/icons/ImgIcon.tsx +8 -0
- package/src/editor/icons/LayoutIcon.tsx +9 -0
- package/src/editor/icons/LineIcon.tsx +7 -0
- package/src/editor/icons/NodeIcon.tsx +7 -0
- package/src/editor/icons/RayIcon.tsx +7 -0
- package/src/editor/icons/RectIcon.tsx +7 -0
- package/src/editor/icons/ShapeIcon.tsx +7 -0
- package/src/editor/icons/TxtIcon.tsx +8 -0
- package/src/editor/icons/VideoIcon.tsx +7 -0
- package/src/editor/icons/View2DIcon.tsx +10 -0
- package/src/editor/index.css +0 -0
- package/src/editor/index.ts +19 -0
- package/src/editor/shortcuts.ts +27 -0
- package/src/editor/tree/DetachedRoot.tsx +27 -0
- package/src/editor/tree/NodeElement.tsx +72 -0
- package/src/editor/tree/TreeElement.tsx +70 -0
- package/src/editor/tree/TreeRoot.tsx +10 -0
- package/src/editor/tree/ViewRoot.tsx +20 -0
- package/src/editor/tree/index.module.scss +45 -0
- package/src/editor/tree/index.ts +4 -0
- package/src/editor/tree/navigation.ts +145 -0
- package/src/editor/tsconfig.build.json +5 -0
- package/src/editor/tsconfig.json +12 -0
- package/src/editor/tsdoc.json +4 -0
- package/src/editor/utils/SignalSet.ts +37 -0
- package/src/editor/utils/index.ts +1 -0
- package/src/editor/vite-env.d.ts +1 -0
- package/src/lib/code/CodeCursor.ts +468 -0
- package/src/lib/code/CodeDiffer.ts +77 -0
- package/src/lib/code/CodeFragment.ts +96 -0
- package/src/lib/code/CodeHighlighter.ts +73 -0
- package/src/lib/code/CodeMetrics.ts +47 -0
- package/src/lib/code/CodeRange.test.ts +113 -0
- package/src/lib/code/CodeRange.ts +222 -0
- package/src/lib/code/CodeScope.ts +100 -0
- package/src/lib/code/CodeSelection.ts +28 -0
- package/src/lib/code/CodeSignal.ts +348 -0
- package/src/lib/code/CodeTokenizer.ts +54 -0
- package/src/lib/code/DefaultHighlightStyle.ts +98 -0
- package/src/lib/code/LezerHighlighter.ts +113 -0
- package/src/lib/code/diff.test.ts +311 -0
- package/src/lib/code/diff.ts +319 -0
- package/src/lib/code/extractRange.ts +125 -0
- package/src/lib/code/index.ts +13 -0
- package/src/lib/components/Bezier.ts +103 -0
- package/src/lib/components/Camera.ts +359 -0
- package/src/lib/components/Circle.ts +269 -0
- package/src/lib/components/Code.ts +532 -0
- package/src/lib/components/CodeBlock.ts +581 -0
- package/src/lib/components/CubicBezier.ts +115 -0
- package/src/lib/components/Curve.ts +455 -0
- package/src/lib/components/Grid.ts +134 -0
- package/src/lib/components/Icon.ts +95 -0
- package/src/lib/components/Img.ts +305 -0
- package/src/lib/components/Knot.ts +156 -0
- package/src/lib/components/Latex.ts +249 -0
- package/src/lib/components/Layout.ts +1071 -0
- package/src/lib/components/Line.ts +394 -0
- package/src/lib/components/Node.ts +1949 -0
- package/src/lib/components/Path.ts +132 -0
- package/src/lib/components/Polygon.ts +238 -0
- package/src/lib/components/QuadBezier.ts +103 -0
- package/src/lib/components/Ray.ts +126 -0
- package/src/lib/components/Rect.ts +186 -0
- package/src/lib/components/SVG.ts +788 -0
- package/src/lib/components/Shape.ts +146 -0
- package/src/lib/components/Spline.ts +318 -0
- package/src/lib/components/Txt.test.tsx +81 -0
- package/src/lib/components/Txt.ts +204 -0
- package/src/lib/components/TxtLeaf.ts +210 -0
- package/src/lib/components/Video.ts +368 -0
- package/src/lib/components/View2D.ts +85 -0
- package/src/lib/components/__logs__/image-without-source.md +17 -0
- package/src/lib/components/__logs__/line-without-points.md +30 -0
- package/src/lib/components/__logs__/reactive-playback-rate.md +21 -0
- package/src/lib/components/__logs__/spline-with-insufficient-knots.md +24 -0
- package/src/lib/components/__tests__/children.test.tsx +142 -0
- package/src/lib/components/__tests__/clone.test.tsx +126 -0
- package/src/lib/components/__tests__/generatorTest.ts +27 -0
- package/src/lib/components/__tests__/mockScene2D.ts +50 -0
- package/src/lib/components/__tests__/query.test.tsx +122 -0
- package/src/lib/components/__tests__/state.test.tsx +60 -0
- package/src/lib/components/index.ts +26 -0
- package/src/lib/components/types.ts +35 -0
- package/src/lib/curves/ArcSegment.ts +155 -0
- package/src/lib/curves/CircleSegment.ts +77 -0
- package/src/lib/curves/CubicBezierSegment.ts +78 -0
- package/src/lib/curves/CurveDrawingInfo.ts +11 -0
- package/src/lib/curves/CurvePoint.ts +15 -0
- package/src/lib/curves/CurveProfile.ts +7 -0
- package/src/lib/curves/KnotInfo.ts +10 -0
- package/src/lib/curves/LineSegment.ts +62 -0
- package/src/lib/curves/Polynomial.ts +355 -0
- package/src/lib/curves/Polynomial2D.ts +62 -0
- package/src/lib/curves/PolynomialSegment.ts +124 -0
- package/src/lib/curves/QuadBezierSegment.ts +64 -0
- package/src/lib/curves/Segment.ts +17 -0
- package/src/lib/curves/UniformPolynomialCurveSampler.ts +93 -0
- package/src/lib/curves/createCurveProfileLerp.ts +471 -0
- package/src/lib/curves/getBezierSplineProfile.ts +227 -0
- package/src/lib/curves/getCircleProfile.ts +86 -0
- package/src/lib/curves/getPathProfile.ts +177 -0
- package/src/lib/curves/getPointAtDistance.ts +21 -0
- package/src/lib/curves/getPolylineProfile.test.ts +21 -0
- package/src/lib/curves/getPolylineProfile.ts +88 -0
- package/src/lib/curves/getRectProfile.ts +138 -0
- package/src/lib/curves/index.ts +16 -0
- package/src/lib/decorators/canvasStyleSignal.ts +15 -0
- package/src/lib/decorators/colorSignal.ts +9 -0
- package/src/lib/decorators/compound.ts +85 -0
- package/src/lib/decorators/computed.ts +18 -0
- package/src/lib/decorators/defaultStyle.ts +15 -0
- package/src/lib/decorators/filtersSignal.ts +133 -0
- package/src/lib/decorators/index.ts +10 -0
- package/src/lib/decorators/initializers.ts +34 -0
- package/src/lib/decorators/nodeName.ts +13 -0
- package/src/lib/decorators/signal.test.ts +89 -0
- package/src/lib/decorators/signal.ts +348 -0
- package/src/lib/decorators/spacingSignal.ts +15 -0
- package/src/lib/decorators/vector2Signal.ts +35 -0
- package/src/lib/globals.d.ts +3 -0
- package/src/lib/index.ts +8 -0
- package/src/lib/jsx-dev-runtime.ts +2 -0
- package/src/lib/jsx-runtime.ts +45 -0
- package/src/lib/parse-svg-path.d.ts +14 -0
- package/src/lib/partials/Filter.ts +185 -0
- package/src/lib/partials/Gradient.ts +103 -0
- package/src/lib/partials/Pattern.ts +35 -0
- package/src/lib/partials/ShaderConfig.ts +122 -0
- package/src/lib/partials/index.ts +4 -0
- package/src/lib/partials/types.ts +58 -0
- package/src/lib/scenes/Scene2D.ts +195 -0
- package/src/lib/scenes/index.ts +3 -0
- package/src/lib/scenes/makeScene2D.ts +19 -0
- package/src/lib/scenes/useScene2D.ts +6 -0
- package/src/lib/tsconfig.build.json +12 -0
- package/src/lib/tsconfig.json +14 -0
- package/src/lib/tsdoc.json +4 -0
- package/src/lib/utils/CanvasUtils.ts +306 -0
- package/src/lib/utils/diff.test.ts +453 -0
- package/src/lib/utils/diff.ts +148 -0
- package/src/lib/utils/index.ts +3 -0
- package/src/lib/utils/is.ts +11 -0
- package/src/lib/utils/makeSignalExtensions.ts +29 -0
- package/src/lib/utils/withDefaults.tsx +26 -0
- package/src/tsconfig.base.json +18 -0
- package/src/tsconfig.build.json +8 -0
- package/src/tsconfig.json +5 -0
- package/tsconfig.project.json +7 -0
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import { InterpolationFunction, PossibleVector2, Reference, SignalValue, SimpleSignal, ThreadGenerator, TimingFunction, Vector2 } from '@efxlab/motion-canvas-core';
|
|
2
|
+
import { Curve } from './Curve';
|
|
3
|
+
import { Node, NodeProps } from './Node';
|
|
4
|
+
import { Rect, RectProps } from './Rect';
|
|
5
|
+
export interface CameraProps extends NodeProps {
|
|
6
|
+
/**
|
|
7
|
+
* {@inheritDoc Camera.scene}
|
|
8
|
+
*/
|
|
9
|
+
scene?: Node;
|
|
10
|
+
/**
|
|
11
|
+
* {@inheritDoc Camera.zoom}
|
|
12
|
+
*/
|
|
13
|
+
zoom?: SignalValue<number>;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* A node representing an orthographic camera.
|
|
17
|
+
*
|
|
18
|
+
* @preview
|
|
19
|
+
* ```tsx editor
|
|
20
|
+
* import {Camera, Circle, makeScene2D, Rect} from '@efxlab/motion-canvas-2d';
|
|
21
|
+
* import {all, createRef} from '@efxlab/motion-canvas-core';
|
|
22
|
+
*
|
|
23
|
+
* export default makeScene2D(function* (view) {
|
|
24
|
+
* const camera = createRef<Camera>();
|
|
25
|
+
* const rect = createRef<Rect>();
|
|
26
|
+
* const circle = createRef<Circle>();
|
|
27
|
+
*
|
|
28
|
+
* view.add(
|
|
29
|
+
* <>
|
|
30
|
+
* <Camera ref={camera}>
|
|
31
|
+
* <Rect
|
|
32
|
+
* ref={rect}
|
|
33
|
+
* fill={'lightseagreen'}
|
|
34
|
+
* size={100}
|
|
35
|
+
* position={[100, -50]}
|
|
36
|
+
* />
|
|
37
|
+
* <Circle
|
|
38
|
+
* ref={circle}
|
|
39
|
+
* fill={'hotpink'}
|
|
40
|
+
* size={120}
|
|
41
|
+
* position={[-100, 50]}
|
|
42
|
+
* />
|
|
43
|
+
* </Camera>
|
|
44
|
+
* </>,
|
|
45
|
+
* );
|
|
46
|
+
*
|
|
47
|
+
* yield* all(
|
|
48
|
+
* camera().centerOn(rect(), 3),
|
|
49
|
+
* camera().rotation(180, 3),
|
|
50
|
+
* camera().zoom(1.8, 3),
|
|
51
|
+
* );
|
|
52
|
+
* yield* camera().centerOn(circle(), 2);
|
|
53
|
+
* yield* camera().reset(1);
|
|
54
|
+
* });
|
|
55
|
+
* ```
|
|
56
|
+
*/
|
|
57
|
+
export declare class Camera extends Node {
|
|
58
|
+
/**
|
|
59
|
+
* The scene node that the camera is rendering.
|
|
60
|
+
*/
|
|
61
|
+
readonly scene: SimpleSignal<Node, this>;
|
|
62
|
+
constructor({ children, ...props }: CameraProps);
|
|
63
|
+
/**
|
|
64
|
+
* The zoom level of the camera.
|
|
65
|
+
*
|
|
66
|
+
* @defaultValue 1
|
|
67
|
+
*/
|
|
68
|
+
readonly zoom: SimpleSignal<number, this>;
|
|
69
|
+
protected getZoom(): number;
|
|
70
|
+
protected setZoom(value: SignalValue<number>): void;
|
|
71
|
+
protected getDefaultZoom(): SignalValue<number> | undefined;
|
|
72
|
+
protected tweenZoom(value: SignalValue<number>, duration: number, timingFunction: TimingFunction, interpolationFunction: InterpolationFunction<number>): ThreadGenerator;
|
|
73
|
+
/**
|
|
74
|
+
* Resets the camera's position, rotation and zoom level to their original
|
|
75
|
+
* values.
|
|
76
|
+
*
|
|
77
|
+
* @param duration - The duration of the tween.
|
|
78
|
+
* @param timingFunction - The timing function to use for the tween.
|
|
79
|
+
*/
|
|
80
|
+
reset(duration: number, timingFunction?: TimingFunction): ThreadGenerator;
|
|
81
|
+
/**
|
|
82
|
+
* Centers the camera on the specified position without changing the zoom
|
|
83
|
+
* level.
|
|
84
|
+
*
|
|
85
|
+
* @param position - The position to center the camera on.
|
|
86
|
+
* @param duration - The duration of the tween.
|
|
87
|
+
* @param timingFunction - The timing function to use for the tween.
|
|
88
|
+
* @param interpolationFunction - The interpolation function to use for the
|
|
89
|
+
* tween.
|
|
90
|
+
*/
|
|
91
|
+
centerOn(position: PossibleVector2, duration: number, timingFunction?: TimingFunction, interpolationFunction?: InterpolationFunction<Vector2>): ThreadGenerator;
|
|
92
|
+
/**
|
|
93
|
+
* Centers the camera on the specified node without changing the zoom level.
|
|
94
|
+
*
|
|
95
|
+
* @param node - The node to center the camera on.
|
|
96
|
+
* @param duration - The duration of the tween.
|
|
97
|
+
* @param timingFunction - The timing function to use for the tween.
|
|
98
|
+
* @param interpolationFunction - The interpolation function to use for the
|
|
99
|
+
* tween.
|
|
100
|
+
*/
|
|
101
|
+
centerOn(node: Node, duration: number, timingFunction?: TimingFunction, interpolationFunction?: InterpolationFunction<Vector2>): ThreadGenerator;
|
|
102
|
+
/**
|
|
103
|
+
* Makes the camera follow a path specified by the provided curve.
|
|
104
|
+
*
|
|
105
|
+
* @remarks
|
|
106
|
+
* This will not change the orientation of the camera. To make the camera
|
|
107
|
+
* orient itself along the curve, use {@link followCurveWithRotation} or
|
|
108
|
+
* {@link followCurveWithRotationReverse}.
|
|
109
|
+
*
|
|
110
|
+
* If you want to follow the curve in reverse, use {@link followCurveReverse}.
|
|
111
|
+
*
|
|
112
|
+
* @param curve - The curve to follow.
|
|
113
|
+
* @param duration - The duration of the tween.
|
|
114
|
+
* @param timing - The timing function to use for the tween.
|
|
115
|
+
*/
|
|
116
|
+
followCurve(curve: Curve, duration: number, timing?: TimingFunction): ThreadGenerator;
|
|
117
|
+
/**
|
|
118
|
+
* Makes the camera follow a path specified by the provided curve in reverse.
|
|
119
|
+
*
|
|
120
|
+
* @remarks
|
|
121
|
+
* This will not change the orientation of the camera. To make the camera
|
|
122
|
+
* orient itself along the curve, use {@link followCurveWithRotation} or
|
|
123
|
+
* {@link followCurveWithRotationReverse}.
|
|
124
|
+
*
|
|
125
|
+
* If you want to follow the curve forward, use {@link followCurve}.
|
|
126
|
+
*
|
|
127
|
+
* @param curve - The curve to follow.
|
|
128
|
+
* @param duration - The duration of the tween.
|
|
129
|
+
* @param timing - The timing function to use for the tween.
|
|
130
|
+
*/
|
|
131
|
+
followCurveReverse(curve: Curve, duration: number, timing?: TimingFunction): Generator<void | ThreadGenerator | Promise<any> | import("@efxlab/motion-canvas-core").Promisable<any>, void, any>;
|
|
132
|
+
/**
|
|
133
|
+
* Makes the camera follow a path specified by the provided curve while
|
|
134
|
+
* pointing the camera the direction of the tangent.
|
|
135
|
+
*
|
|
136
|
+
* @remarks
|
|
137
|
+
* To make the camera follow the curve without changing its orientation, use
|
|
138
|
+
* {@link followCurve} or {@link followCurveReverse}.
|
|
139
|
+
*
|
|
140
|
+
* If you want to follow the curve in reverse, use
|
|
141
|
+
* {@link followCurveWithRotationReverse}.
|
|
142
|
+
*
|
|
143
|
+
* @param curve - The curve to follow.
|
|
144
|
+
* @param duration - The duration of the tween.
|
|
145
|
+
* @param timing - The timing function to use for the tween.
|
|
146
|
+
*/
|
|
147
|
+
followCurveWithRotation(curve: Curve, duration: number, timing?: TimingFunction): Generator<void | ThreadGenerator | Promise<any> | import("@efxlab/motion-canvas-core").Promisable<any>, void, any>;
|
|
148
|
+
/**
|
|
149
|
+
* Makes the camera follow a path specified by the provided curve in reverse
|
|
150
|
+
* while pointing the camera the direction of the tangent.
|
|
151
|
+
*
|
|
152
|
+
* @remarks
|
|
153
|
+
* To make the camera follow the curve without changing its orientation, use
|
|
154
|
+
* {@link followCurve} or {@link followCurveReverse}.
|
|
155
|
+
*
|
|
156
|
+
* If you want to follow the curve forward, use
|
|
157
|
+
* {@link followCurveWithRotation}.
|
|
158
|
+
*
|
|
159
|
+
* @param curve - The curve to follow.
|
|
160
|
+
* @param duration - The duration of the tween.
|
|
161
|
+
* @param timing - The timing function to use for the tween.
|
|
162
|
+
*/
|
|
163
|
+
followCurveWithRotationReverse(curve: Curve, duration: number, timing?: TimingFunction): Generator<void | ThreadGenerator | Promise<any> | import("@efxlab/motion-canvas-core").Promisable<any>, void, any>;
|
|
164
|
+
protected transformContext(context: CanvasRenderingContext2D): void;
|
|
165
|
+
hit(position: Vector2): Node | null;
|
|
166
|
+
protected drawChildren(context: CanvasRenderingContext2D): void;
|
|
167
|
+
static Stage({ children, cameraRef, scene, ...props }: RectProps & {
|
|
168
|
+
cameraRef?: Reference<Camera>;
|
|
169
|
+
scene?: Node;
|
|
170
|
+
}): Rect;
|
|
171
|
+
}
|
|
172
|
+
//# sourceMappingURL=Camera.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Camera.d.ts","sourceRoot":"","sources":["../../src/lib/components/Camera.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,qBAAqB,EAErB,eAAe,EACf,SAAS,EACT,WAAW,EACX,YAAY,EAEZ,eAAe,EACf,cAAc,EAGd,OAAO,EACR,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAC,KAAK,EAAC,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAC,IAAI,EAAE,SAAS,EAAC,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAC,IAAI,EAAE,SAAS,EAAC,MAAM,QAAQ,CAAC;AAEvC,MAAM,WAAW,WAAY,SAAQ,SAAS;IAC5C;;OAEG;IACH,KAAK,CAAC,EAAE,IAAI,CAAC;IAEb;;OAEG;IACH,IAAI,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,qBAAa,MAAO,SAAQ,IAAI;IAC9B;;OAEG;IACH,SACwB,KAAK,EAAE,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBAErC,EAAC,QAAQ,EAAE,GAAG,KAAK,EAAC,EAAE,WAAW;IAYpD;;;;OAIG;IACH,SAEwB,IAAI,EAAE,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAEzD,SAAS,CAAC,OAAO,IAAI,MAAM;IAI3B,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC;IAI5C,SAAS,CAAC,cAAc;IAIxB,SAAS,CAAE,SAAS,CAClB,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,EAC1B,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,cAAc,EAC9B,qBAAqB,EAAE,qBAAqB,CAAC,MAAM,CAAC,GACnD,eAAe;IASlB;;;;;;OAMG;IAEK,KAAK,CACX,QAAQ,EAAE,MAAM,EAChB,cAAc,GAAE,cAA+B,GAC9C,eAAe;IAQlB;;;;;;;;;OASG;IACI,QAAQ,CACb,QAAQ,EAAE,eAAe,EACzB,QAAQ,EAAE,MAAM,EAChB,cAAc,CAAC,EAAE,cAAc,EAC/B,qBAAqB,CAAC,EAAE,qBAAqB,CAAC,OAAO,CAAC,GACrD,eAAe;IAClB;;;;;;;;OAQG;IACI,QAAQ,CACb,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,MAAM,EAChB,cAAc,CAAC,EAAE,cAAc,EAC/B,qBAAqB,CAAC,EAAE,qBAAqB,CAAC,OAAO,CAAC,GACrD,eAAe;IAiBlB;;;;;;;;;;;;;OAaG;IAEK,WAAW,CACjB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,MAAM,EAChB,MAAM,GAAE,cAA+B,GACtC,eAAe;IAWlB;;;;;;;;;;;;;OAaG;IAEK,kBAAkB,CACxB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,MAAM,EAChB,MAAM,GAAE,cAA+B;IAYzC;;;;;;;;;;;;;;OAcG;IAEK,uBAAuB,CAC7B,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,MAAM,EAChB,MAAM,GAAE,cAA+B;IAazC;;;;;;;;;;;;;;OAcG;IAEK,8BAA8B,CACpC,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,MAAM,EAChB,MAAM,GAAE,cAA+B;cAatB,gBAAgB,CAAC,OAAO,EAAE,wBAAwB;IAYrD,GAAG,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,GAAG,IAAI;cAKhC,YAAY,CAAC,OAAO,EAAE,wBAAwB;WAKnD,KAAK,CAAC,EAClB,QAAQ,EACR,SAAS,EACT,KAAK,EACL,GAAG,KAAK,EACT,EAAE,SAAS,GAAG;QAAC,SAAS,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;QAAC,KAAK,CAAC,EAAE,IAAI,CAAA;KAAC;CAW7D"}
|
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { all, DEFAULT, easeInOutCubic, modify, threadable, tween, unwrap, Vector2, } from '@efxlab/motion-canvas-core';
|
|
8
|
+
import { cloneable, signal } from '../decorators';
|
|
9
|
+
import { Node } from './Node';
|
|
10
|
+
import { Rect } from './Rect';
|
|
11
|
+
/**
|
|
12
|
+
* A node representing an orthographic camera.
|
|
13
|
+
*
|
|
14
|
+
* @preview
|
|
15
|
+
* ```tsx editor
|
|
16
|
+
* import {Camera, Circle, makeScene2D, Rect} from '@efxlab/motion-canvas-2d';
|
|
17
|
+
* import {all, createRef} from '@efxlab/motion-canvas-core';
|
|
18
|
+
*
|
|
19
|
+
* export default makeScene2D(function* (view) {
|
|
20
|
+
* const camera = createRef<Camera>();
|
|
21
|
+
* const rect = createRef<Rect>();
|
|
22
|
+
* const circle = createRef<Circle>();
|
|
23
|
+
*
|
|
24
|
+
* view.add(
|
|
25
|
+
* <>
|
|
26
|
+
* <Camera ref={camera}>
|
|
27
|
+
* <Rect
|
|
28
|
+
* ref={rect}
|
|
29
|
+
* fill={'lightseagreen'}
|
|
30
|
+
* size={100}
|
|
31
|
+
* position={[100, -50]}
|
|
32
|
+
* />
|
|
33
|
+
* <Circle
|
|
34
|
+
* ref={circle}
|
|
35
|
+
* fill={'hotpink'}
|
|
36
|
+
* size={120}
|
|
37
|
+
* position={[-100, 50]}
|
|
38
|
+
* />
|
|
39
|
+
* </Camera>
|
|
40
|
+
* </>,
|
|
41
|
+
* );
|
|
42
|
+
*
|
|
43
|
+
* yield* all(
|
|
44
|
+
* camera().centerOn(rect(), 3),
|
|
45
|
+
* camera().rotation(180, 3),
|
|
46
|
+
* camera().zoom(1.8, 3),
|
|
47
|
+
* );
|
|
48
|
+
* yield* camera().centerOn(circle(), 2);
|
|
49
|
+
* yield* camera().reset(1);
|
|
50
|
+
* });
|
|
51
|
+
* ```
|
|
52
|
+
*/
|
|
53
|
+
export class Camera extends Node {
|
|
54
|
+
constructor({ children, ...props }) {
|
|
55
|
+
super(props);
|
|
56
|
+
if (!this.scene()) {
|
|
57
|
+
this.scene(new Node({}));
|
|
58
|
+
}
|
|
59
|
+
if (children) {
|
|
60
|
+
this.scene().add(children);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
getZoom() {
|
|
64
|
+
return 1 / this.scale.x();
|
|
65
|
+
}
|
|
66
|
+
setZoom(value) {
|
|
67
|
+
this.scale(modify(value, unwrapped => 1 / unwrapped));
|
|
68
|
+
}
|
|
69
|
+
getDefaultZoom() {
|
|
70
|
+
return this.scale.x.context.getInitial();
|
|
71
|
+
}
|
|
72
|
+
*tweenZoom(value, duration, timingFunction, interpolationFunction) {
|
|
73
|
+
const from = this.scale.x();
|
|
74
|
+
yield* tween(duration, v => {
|
|
75
|
+
this.zoom(1 / interpolationFunction(from, 1 / unwrap(value), timingFunction(v)));
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Resets the camera's position, rotation and zoom level to their original
|
|
80
|
+
* values.
|
|
81
|
+
*
|
|
82
|
+
* @param duration - The duration of the tween.
|
|
83
|
+
* @param timingFunction - The timing function to use for the tween.
|
|
84
|
+
*/
|
|
85
|
+
*reset(duration, timingFunction = easeInOutCubic) {
|
|
86
|
+
yield* all(this.position(DEFAULT, duration, timingFunction), this.zoom(DEFAULT, duration, timingFunction), this.rotation(DEFAULT, duration, timingFunction));
|
|
87
|
+
}
|
|
88
|
+
*centerOn(positionOrNode, duration, timing = easeInOutCubic, interpolationFunction = Vector2.lerp) {
|
|
89
|
+
const position = positionOrNode instanceof Node
|
|
90
|
+
? positionOrNode
|
|
91
|
+
.absolutePosition()
|
|
92
|
+
.transformAsPoint(this.scene().worldToLocal())
|
|
93
|
+
: positionOrNode;
|
|
94
|
+
yield* this.position(position, duration, timing, interpolationFunction);
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Makes the camera follow a path specified by the provided curve.
|
|
98
|
+
*
|
|
99
|
+
* @remarks
|
|
100
|
+
* This will not change the orientation of the camera. To make the camera
|
|
101
|
+
* orient itself along the curve, use {@link followCurveWithRotation} or
|
|
102
|
+
* {@link followCurveWithRotationReverse}.
|
|
103
|
+
*
|
|
104
|
+
* If you want to follow the curve in reverse, use {@link followCurveReverse}.
|
|
105
|
+
*
|
|
106
|
+
* @param curve - The curve to follow.
|
|
107
|
+
* @param duration - The duration of the tween.
|
|
108
|
+
* @param timing - The timing function to use for the tween.
|
|
109
|
+
*/
|
|
110
|
+
*followCurve(curve, duration, timing = easeInOutCubic) {
|
|
111
|
+
yield* tween(duration, value => {
|
|
112
|
+
const t = timing(value);
|
|
113
|
+
const point = curve
|
|
114
|
+
.getPointAtPercentage(t)
|
|
115
|
+
.position.transformAsPoint(curve.localToWorld());
|
|
116
|
+
this.position(point);
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Makes the camera follow a path specified by the provided curve in reverse.
|
|
121
|
+
*
|
|
122
|
+
* @remarks
|
|
123
|
+
* This will not change the orientation of the camera. To make the camera
|
|
124
|
+
* orient itself along the curve, use {@link followCurveWithRotation} or
|
|
125
|
+
* {@link followCurveWithRotationReverse}.
|
|
126
|
+
*
|
|
127
|
+
* If you want to follow the curve forward, use {@link followCurve}.
|
|
128
|
+
*
|
|
129
|
+
* @param curve - The curve to follow.
|
|
130
|
+
* @param duration - The duration of the tween.
|
|
131
|
+
* @param timing - The timing function to use for the tween.
|
|
132
|
+
*/
|
|
133
|
+
*followCurveReverse(curve, duration, timing = easeInOutCubic) {
|
|
134
|
+
yield* tween(duration, value => {
|
|
135
|
+
const t = 1 - timing(value);
|
|
136
|
+
const point = curve
|
|
137
|
+
.getPointAtPercentage(t)
|
|
138
|
+
.position.transformAsPoint(curve.localToWorld());
|
|
139
|
+
this.position(point);
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Makes the camera follow a path specified by the provided curve while
|
|
144
|
+
* pointing the camera the direction of the tangent.
|
|
145
|
+
*
|
|
146
|
+
* @remarks
|
|
147
|
+
* To make the camera follow the curve without changing its orientation, use
|
|
148
|
+
* {@link followCurve} or {@link followCurveReverse}.
|
|
149
|
+
*
|
|
150
|
+
* If you want to follow the curve in reverse, use
|
|
151
|
+
* {@link followCurveWithRotationReverse}.
|
|
152
|
+
*
|
|
153
|
+
* @param curve - The curve to follow.
|
|
154
|
+
* @param duration - The duration of the tween.
|
|
155
|
+
* @param timing - The timing function to use for the tween.
|
|
156
|
+
*/
|
|
157
|
+
*followCurveWithRotation(curve, duration, timing = easeInOutCubic) {
|
|
158
|
+
yield* tween(duration, value => {
|
|
159
|
+
const t = timing(value);
|
|
160
|
+
const { position, normal } = curve.getPointAtPercentage(t);
|
|
161
|
+
const point = position.transformAsPoint(curve.localToWorld());
|
|
162
|
+
const angle = normal.flipped.perpendicular.degrees;
|
|
163
|
+
this.position(point);
|
|
164
|
+
this.rotation(angle);
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Makes the camera follow a path specified by the provided curve in reverse
|
|
169
|
+
* while pointing the camera the direction of the tangent.
|
|
170
|
+
*
|
|
171
|
+
* @remarks
|
|
172
|
+
* To make the camera follow the curve without changing its orientation, use
|
|
173
|
+
* {@link followCurve} or {@link followCurveReverse}.
|
|
174
|
+
*
|
|
175
|
+
* If you want to follow the curve forward, use
|
|
176
|
+
* {@link followCurveWithRotation}.
|
|
177
|
+
*
|
|
178
|
+
* @param curve - The curve to follow.
|
|
179
|
+
* @param duration - The duration of the tween.
|
|
180
|
+
* @param timing - The timing function to use for the tween.
|
|
181
|
+
*/
|
|
182
|
+
*followCurveWithRotationReverse(curve, duration, timing = easeInOutCubic) {
|
|
183
|
+
yield* tween(duration, value => {
|
|
184
|
+
const t = 1 - timing(value);
|
|
185
|
+
const { position, normal } = curve.getPointAtPercentage(t);
|
|
186
|
+
const point = position.transformAsPoint(curve.localToWorld());
|
|
187
|
+
const angle = normal.flipped.perpendicular.degrees;
|
|
188
|
+
this.position(point);
|
|
189
|
+
this.rotation(angle);
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
transformContext(context) {
|
|
193
|
+
const matrix = this.localToParent().inverse();
|
|
194
|
+
context.transform(matrix.a, matrix.b, matrix.c, matrix.d, matrix.e, matrix.f);
|
|
195
|
+
}
|
|
196
|
+
hit(position) {
|
|
197
|
+
const local = position.transformAsPoint(this.localToParent());
|
|
198
|
+
return this.scene().hit(local);
|
|
199
|
+
}
|
|
200
|
+
drawChildren(context) {
|
|
201
|
+
this.scene().drawChildren(context);
|
|
202
|
+
}
|
|
203
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
204
|
+
static Stage({ children, cameraRef, scene, ...props }) {
|
|
205
|
+
const camera = new Camera({ scene: scene, children });
|
|
206
|
+
cameraRef?.(camera);
|
|
207
|
+
return new Rect({
|
|
208
|
+
clip: true,
|
|
209
|
+
...props,
|
|
210
|
+
children: [camera],
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
__decorate([
|
|
215
|
+
signal()
|
|
216
|
+
], Camera.prototype, "scene", void 0);
|
|
217
|
+
__decorate([
|
|
218
|
+
cloneable(false),
|
|
219
|
+
signal()
|
|
220
|
+
], Camera.prototype, "zoom", void 0);
|
|
221
|
+
__decorate([
|
|
222
|
+
threadable()
|
|
223
|
+
], Camera.prototype, "reset", null);
|
|
224
|
+
__decorate([
|
|
225
|
+
threadable()
|
|
226
|
+
], Camera.prototype, "centerOn", null);
|
|
227
|
+
__decorate([
|
|
228
|
+
threadable()
|
|
229
|
+
], Camera.prototype, "followCurve", null);
|
|
230
|
+
__decorate([
|
|
231
|
+
threadable()
|
|
232
|
+
], Camera.prototype, "followCurveReverse", null);
|
|
233
|
+
__decorate([
|
|
234
|
+
threadable()
|
|
235
|
+
], Camera.prototype, "followCurveWithRotation", null);
|
|
236
|
+
__decorate([
|
|
237
|
+
threadable()
|
|
238
|
+
], Camera.prototype, "followCurveWithRotationReverse", null);
|
|
239
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FtZXJhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL0NhbWVyYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQ0wsR0FBRyxFQUNILE9BQU8sRUFDUCxjQUFjLEVBRWQsTUFBTSxFQUtOLFVBQVUsRUFHVixLQUFLLEVBQ0wsTUFBTSxFQUNOLE9BQU8sR0FDUixNQUFNLDRCQUE0QixDQUFDO0FBQ3BDLE9BQU8sRUFBQyxTQUFTLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRWhELE9BQU8sRUFBQyxJQUFJLEVBQVksTUFBTSxRQUFRLENBQUM7QUFDdkMsT0FBTyxFQUFDLElBQUksRUFBWSxNQUFNLFFBQVEsQ0FBQztBQWN2Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F5Q0c7QUFDSCxNQUFNLE9BQU8sTUFBTyxTQUFRLElBQUk7SUFPOUIsWUFBbUIsRUFBQyxRQUFRLEVBQUUsR0FBRyxLQUFLLEVBQWM7UUFDbEQsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWIsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMzQixDQUFDO1FBRUQsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDN0IsQ0FBQztJQUNILENBQUM7SUFXUyxPQUFPO1FBQ2YsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRVMsT0FBTyxDQUFDLEtBQTBCO1FBQzFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsRUFB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
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
import { BBox, SerializedVector2, SignalValue, SimpleSignal } from '@efxlab/motion-canvas-core';
|
|
2
|
+
import { CurveProfile } from '../curves';
|
|
3
|
+
import { DesiredLength } from '../partials';
|
|
4
|
+
import { Curve, CurveProps } from './Curve';
|
|
5
|
+
export interface CircleProps extends CurveProps {
|
|
6
|
+
/**
|
|
7
|
+
* {@inheritDoc Circle.startAngle}
|
|
8
|
+
*/
|
|
9
|
+
startAngle?: SignalValue<number>;
|
|
10
|
+
/**
|
|
11
|
+
* {@inheritDoc Circle.endAngle}
|
|
12
|
+
*/
|
|
13
|
+
endAngle?: SignalValue<number>;
|
|
14
|
+
/**
|
|
15
|
+
* {@inheritDoc Circle.counterclockwise}
|
|
16
|
+
*/
|
|
17
|
+
counterclockwise?: SignalValue<boolean>;
|
|
18
|
+
/**
|
|
19
|
+
* {@inheritDoc Circle.closed}
|
|
20
|
+
*/
|
|
21
|
+
closed?: SignalValue<boolean>;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* A node for drawing circular shapes.
|
|
25
|
+
*
|
|
26
|
+
* @remarks
|
|
27
|
+
* This node can be used to render shapes such as: circle, ellipse, arc, and
|
|
28
|
+
* sector (pie chart).
|
|
29
|
+
*
|
|
30
|
+
* @preview
|
|
31
|
+
* ```tsx editor
|
|
32
|
+
* // snippet Simple circle
|
|
33
|
+
* import {makeScene2D, Circle} from '@efxlab/motion-canvas-2d';
|
|
34
|
+
*
|
|
35
|
+
* export default makeScene2D(function* (view) {
|
|
36
|
+
* view.add(
|
|
37
|
+
* <Circle
|
|
38
|
+
* size={160}
|
|
39
|
+
* fill={'lightseagreen'}
|
|
40
|
+
* />
|
|
41
|
+
* );
|
|
42
|
+
* });
|
|
43
|
+
*
|
|
44
|
+
* // snippet Ellipse
|
|
45
|
+
* import {makeScene2D, Circle} from '@efxlab/motion-canvas-2d';
|
|
46
|
+
*
|
|
47
|
+
* export default makeScene2D(function* (view) {
|
|
48
|
+
* view.add(
|
|
49
|
+
* <Circle
|
|
50
|
+
* width={160}
|
|
51
|
+
* height={80}
|
|
52
|
+
* fill={'lightseagreen'}
|
|
53
|
+
* />
|
|
54
|
+
* );
|
|
55
|
+
* });
|
|
56
|
+
*
|
|
57
|
+
* // snippet Sector (pie chart):
|
|
58
|
+
* import {makeScene2D, Circle} from '@efxlab/motion-canvas-2d';
|
|
59
|
+
* import {createRef} from '@efxlab/motion-canvas-core';
|
|
60
|
+
*
|
|
61
|
+
* export default makeScene2D(function* (view) {
|
|
62
|
+
* const ref = createRef<Circle>();
|
|
63
|
+
* view.add(
|
|
64
|
+
* <Circle
|
|
65
|
+
* ref={ref}
|
|
66
|
+
* size={160}
|
|
67
|
+
* fill={'lightseagreen'}
|
|
68
|
+
* startAngle={30}
|
|
69
|
+
* endAngle={270}
|
|
70
|
+
* closed={true}
|
|
71
|
+
* />
|
|
72
|
+
* );
|
|
73
|
+
*
|
|
74
|
+
* yield* ref().startAngle(270, 2).to(30, 2);
|
|
75
|
+
* });
|
|
76
|
+
*
|
|
77
|
+
* // snippet Arc:
|
|
78
|
+
* import {makeScene2D, Circle} from '@efxlab/motion-canvas-2d';
|
|
79
|
+
* import {createRef} from '@efxlab/motion-canvas-core';
|
|
80
|
+
*
|
|
81
|
+
* export default makeScene2D(function* (view) {
|
|
82
|
+
* const ref = createRef<Circle>();
|
|
83
|
+
* view.add(
|
|
84
|
+
* <Circle
|
|
85
|
+
* ref={ref}
|
|
86
|
+
* size={160}
|
|
87
|
+
* stroke={'lightseagreen'}
|
|
88
|
+
* lineWidth={8}
|
|
89
|
+
* startAngle={-90}
|
|
90
|
+
* endAngle={90}
|
|
91
|
+
* />
|
|
92
|
+
* );
|
|
93
|
+
*
|
|
94
|
+
* yield* ref().startAngle(-270, 2).to(-90, 2);
|
|
95
|
+
* });
|
|
96
|
+
*
|
|
97
|
+
* // snippet Curve properties:
|
|
98
|
+
* import {makeScene2D, Circle} from '@efxlab/motion-canvas-2d';
|
|
99
|
+
* import {all, createRef, easeInCubic, easeOutCubic} from '@efxlab/motion-canvas-core';
|
|
100
|
+
*
|
|
101
|
+
* export default makeScene2D(function* (view) {
|
|
102
|
+
* const ref = createRef<Circle>();
|
|
103
|
+
* view.add(
|
|
104
|
+
* <Circle
|
|
105
|
+
* ref={ref}
|
|
106
|
+
* size={160}
|
|
107
|
+
* stroke={'lightseagreen'}
|
|
108
|
+
* lineWidth={8}
|
|
109
|
+
* endAngle={270}
|
|
110
|
+
* endArrow
|
|
111
|
+
* />,
|
|
112
|
+
* );
|
|
113
|
+
*
|
|
114
|
+
* yield* all(ref().start(1, 1), ref().rotation(180, 1, easeInCubic));
|
|
115
|
+
* ref().start(0).end(0);
|
|
116
|
+
* yield* all(ref().end(1, 1), ref().rotation(360, 1, easeOutCubic));
|
|
117
|
+
* });
|
|
118
|
+
* ```
|
|
119
|
+
*/
|
|
120
|
+
export declare class Circle extends Curve {
|
|
121
|
+
/**
|
|
122
|
+
* The starting angle in degrees for the circle sector.
|
|
123
|
+
*
|
|
124
|
+
* @remarks
|
|
125
|
+
* This property can be used together with {@link startAngle} to turn this
|
|
126
|
+
* circle into a sector (when using fill) or an arc (when using stroke).
|
|
127
|
+
*
|
|
128
|
+
* @defaultValue 0
|
|
129
|
+
*/
|
|
130
|
+
readonly startAngle: SimpleSignal<number, this>;
|
|
131
|
+
/**
|
|
132
|
+
* The ending angle in degrees for the circle sector.
|
|
133
|
+
*
|
|
134
|
+
* @remarks
|
|
135
|
+
* This property can be used together with {@link endAngle} to turn this
|
|
136
|
+
* circle into a sector (when using fill) or an arc (when using stroke).
|
|
137
|
+
*
|
|
138
|
+
* @defaultValue 360
|
|
139
|
+
*/
|
|
140
|
+
readonly endAngle: SimpleSignal<number, this>;
|
|
141
|
+
/**
|
|
142
|
+
* Whether the circle sector should be drawn counterclockwise.
|
|
143
|
+
*
|
|
144
|
+
* @remarks
|
|
145
|
+
* By default, the circle begins at {@link startAngle} and is drawn clockwise
|
|
146
|
+
* until reaching {@link endAngle}. Setting this property to true will reverse
|
|
147
|
+
* this direction.
|
|
148
|
+
*/
|
|
149
|
+
readonly counterclockwise: SimpleSignal<boolean, this>;
|
|
150
|
+
/**
|
|
151
|
+
* Whether the path of this circle should be closed.
|
|
152
|
+
*
|
|
153
|
+
* @remarks
|
|
154
|
+
* When set to true, the path of this circle will start and end at the center.
|
|
155
|
+
* This can be used to fine-tune how sectors are rendered.
|
|
156
|
+
*
|
|
157
|
+
* @example
|
|
158
|
+
* A closed circle will look like a pie chart:
|
|
159
|
+
* ```tsx
|
|
160
|
+
* <Circle
|
|
161
|
+
* size={300}
|
|
162
|
+
* fill={'lightseagreen'}
|
|
163
|
+
* endAngle={230}
|
|
164
|
+
* closed={true}
|
|
165
|
+
* />
|
|
166
|
+
* ```
|
|
167
|
+
* An open one will look like an arc:
|
|
168
|
+
* ```tsx
|
|
169
|
+
* <Circle
|
|
170
|
+
* size={300}
|
|
171
|
+
* stroke={'lightseagreen'}
|
|
172
|
+
* lineWidth={8}
|
|
173
|
+
* endAngle={230}
|
|
174
|
+
* closed={false}
|
|
175
|
+
* />
|
|
176
|
+
* ```
|
|
177
|
+
*
|
|
178
|
+
* @defaultValue false
|
|
179
|
+
*/
|
|
180
|
+
readonly closed: SimpleSignal<boolean, this>;
|
|
181
|
+
constructor(props: CircleProps);
|
|
182
|
+
profile(): CurveProfile;
|
|
183
|
+
protected desiredSize(): SerializedVector2<DesiredLength>;
|
|
184
|
+
protected offsetComputedLayout(box: BBox): BBox;
|
|
185
|
+
protected childrenBBox(): BBox;
|
|
186
|
+
protected getPath(): Path2D;
|
|
187
|
+
protected getRipplePath(): Path2D;
|
|
188
|
+
protected getCacheBBox(): BBox;
|
|
189
|
+
protected createPath(expand?: number): Path2D;
|
|
190
|
+
}
|
|
191
|
+
//# sourceMappingURL=Circle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Circle.d.ts","sourceRoot":"","sources":["../../src/lib/components/Circle.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EAEJ,iBAAiB,EACjB,WAAW,EACX,YAAY,EACb,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAC,YAAY,EAAmB,MAAM,WAAW,CAAC;AAEzD,OAAO,EAAC,aAAa,EAAC,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAC,KAAK,EAAE,UAAU,EAAC,MAAM,SAAS,CAAC;AAE1C,MAAM,WAAW,WAAY,SAAQ,UAAU;IAC7C;;OAEG;IACH,UAAU,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACjC;;OAEG;IACH,QAAQ,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC/B;;OAEG;IACH,gBAAgB,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IACxC;;OAEG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;CAC/B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgGG;AACH,qBACa,MAAO,SAAQ,KAAK;IAC/B;;;;;;;;OAQG;IACH,SAEwB,UAAU,EAAE,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAE/D;;;;;;;;OAQG;IACH,SAEwB,QAAQ,EAAE,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAE7D;;;;;;;OAOG;IACH,SAEwB,gBAAgB,EAAE,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAEtE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,SAAwB,MAAM,EAAE,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBAEzC,KAAK,EAAE,WAAW;IAK9B,OAAO,IAAI,YAAY;cAUX,WAAW,IAAI,iBAAiB,CAAC,aAAa,CAAC;cAO/C,oBAAoB,CAAC,GAAG,EAAE,IAAI,GAAG,IAAI;cAIrC,YAAY,IAAI,IAAI;cAIpB,OAAO,IAAI,MAAM;cAQjB,aAAa,IAAI,MAAM;cAIvB,YAAY,IAAI,IAAI;IAIvC,SAAS,CAAC,UAAU,CAAC,MAAM,SAAI;CAsBhC"}
|