@twick/2d 0.13.0 → 0.14.2
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/LICENSE +21 -0
- package/editor/editor/tsconfig.build.tsbuildinfo +1 -1
- package/lib/components/Audio.js +3 -3
- package/lib/components/Img.js +23 -23
- package/lib/components/Line.js +31 -31
- package/lib/components/Media.d.ts +1 -1
- package/lib/components/Media.d.ts.map +1 -1
- package/lib/components/Media.js +26 -26
- package/lib/components/Spline.js +25 -25
- package/lib/components/Video.js +3 -3
- package/lib/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +5 -4
- package/src/editor/NodeInspectorConfig.tsx +76 -76
- package/src/editor/PreviewOverlayConfig.tsx +67 -67
- package/src/editor/Provider.tsx +93 -93
- package/src/editor/SceneGraphTabConfig.tsx +81 -81
- package/src/editor/icons/CircleIcon.tsx +7 -7
- package/src/editor/icons/CodeBlockIcon.tsx +8 -8
- package/src/editor/icons/CurveIcon.tsx +7 -7
- package/src/editor/icons/GridIcon.tsx +7 -7
- package/src/editor/icons/IconMap.ts +35 -35
- package/src/editor/icons/ImgIcon.tsx +8 -8
- package/src/editor/icons/LayoutIcon.tsx +9 -9
- package/src/editor/icons/LineIcon.tsx +7 -7
- package/src/editor/icons/NodeIcon.tsx +7 -7
- package/src/editor/icons/RayIcon.tsx +7 -7
- package/src/editor/icons/RectIcon.tsx +7 -7
- package/src/editor/icons/ShapeIcon.tsx +7 -7
- package/src/editor/icons/TxtIcon.tsx +8 -8
- package/src/editor/icons/VideoIcon.tsx +7 -7
- package/src/editor/icons/View2DIcon.tsx +10 -10
- package/src/editor/index.ts +17 -17
- package/src/editor/tree/DetachedRoot.tsx +23 -23
- package/src/editor/tree/NodeElement.tsx +74 -74
- package/src/editor/tree/TreeElement.tsx +72 -72
- package/src/editor/tree/TreeRoot.tsx +10 -10
- package/src/editor/tree/ViewRoot.tsx +20 -20
- package/src/editor/tree/index.module.scss +38 -38
- package/src/editor/tree/index.ts +3 -3
- package/src/editor/tsconfig.build.json +5 -5
- package/src/editor/tsconfig.json +12 -12
- package/src/editor/tsdoc.json +4 -4
- package/src/editor/vite-env.d.ts +1 -1
- package/src/lib/code/CodeCursor.ts +445 -445
- package/src/lib/code/CodeDiffer.ts +78 -78
- package/src/lib/code/CodeFragment.ts +97 -97
- package/src/lib/code/CodeHighlighter.ts +75 -75
- package/src/lib/code/CodeMetrics.ts +47 -47
- package/src/lib/code/CodeRange.test.ts +74 -74
- package/src/lib/code/CodeRange.ts +216 -216
- package/src/lib/code/CodeScope.ts +101 -101
- package/src/lib/code/CodeSelection.ts +24 -24
- package/src/lib/code/CodeSignal.ts +327 -327
- package/src/lib/code/CodeTokenizer.ts +54 -54
- package/src/lib/code/DefaultHighlightStyle.ts +98 -98
- package/src/lib/code/LezerHighlighter.ts +113 -113
- package/src/lib/code/diff.test.ts +311 -311
- package/src/lib/code/diff.ts +319 -319
- package/src/lib/code/extractRange.ts +126 -126
- package/src/lib/code/index.ts +13 -13
- package/src/lib/components/Audio.ts +168 -168
- package/src/lib/components/Bezier.ts +105 -105
- package/src/lib/components/Circle.ts +266 -266
- package/src/lib/components/Code.ts +526 -526
- package/src/lib/components/CodeBlock.ts +576 -576
- package/src/lib/components/CubicBezier.ts +112 -112
- package/src/lib/components/Curve.ts +455 -455
- package/src/lib/components/Grid.ts +135 -135
- package/src/lib/components/Icon.ts +96 -96
- package/src/lib/components/Img.ts +319 -319
- package/src/lib/components/Knot.ts +157 -157
- package/src/lib/components/Latex.ts +122 -122
- package/src/lib/components/Layout.ts +1092 -1092
- package/src/lib/components/Line.ts +429 -429
- package/src/lib/components/Media.ts +576 -576
- package/src/lib/components/Node.ts +1940 -1940
- package/src/lib/components/Path.ts +137 -137
- package/src/lib/components/Polygon.ts +171 -171
- package/src/lib/components/QuadBezier.ts +100 -100
- package/src/lib/components/Ray.ts +125 -125
- package/src/lib/components/Rect.ts +187 -187
- package/src/lib/components/Rive.ts +156 -156
- package/src/lib/components/SVG.ts +797 -797
- package/src/lib/components/Shape.ts +143 -143
- package/src/lib/components/Spline.ts +344 -344
- package/src/lib/components/Txt.test.tsx +81 -81
- package/src/lib/components/Txt.ts +203 -203
- package/src/lib/components/TxtLeaf.ts +205 -205
- package/src/lib/components/Video.ts +461 -461
- package/src/lib/components/View2D.ts +98 -98
- package/src/lib/components/__tests__/children.test.tsx +142 -142
- package/src/lib/components/__tests__/clone.test.tsx +126 -126
- package/src/lib/components/__tests__/generatorTest.ts +28 -28
- package/src/lib/components/__tests__/mockScene2D.ts +45 -45
- package/src/lib/components/__tests__/query.test.tsx +122 -122
- package/src/lib/components/__tests__/state.test.tsx +60 -60
- package/src/lib/components/index.ts +28 -28
- package/src/lib/components/types.ts +35 -35
- package/src/lib/curves/ArcSegment.ts +159 -159
- package/src/lib/curves/CircleSegment.ts +77 -77
- package/src/lib/curves/CubicBezierSegment.ts +78 -78
- package/src/lib/curves/CurveDrawingInfo.ts +11 -11
- package/src/lib/curves/CurvePoint.ts +15 -15
- package/src/lib/curves/CurveProfile.ts +7 -7
- package/src/lib/curves/KnotInfo.ts +10 -10
- package/src/lib/curves/LineSegment.ts +62 -62
- package/src/lib/curves/Polynomial.ts +355 -355
- package/src/lib/curves/Polynomial2D.ts +62 -62
- package/src/lib/curves/PolynomialSegment.ts +124 -124
- package/src/lib/curves/QuadBezierSegment.ts +64 -64
- package/src/lib/curves/Segment.ts +17 -17
- package/src/lib/curves/UniformPolynomialCurveSampler.ts +94 -94
- package/src/lib/curves/createCurveProfileLerp.ts +471 -471
- package/src/lib/curves/getBezierSplineProfile.ts +223 -223
- package/src/lib/curves/getCircleProfile.ts +86 -86
- package/src/lib/curves/getPathProfile.ts +178 -178
- package/src/lib/curves/getPointAtDistance.ts +21 -21
- package/src/lib/curves/getPolylineProfile.test.ts +21 -21
- package/src/lib/curves/getPolylineProfile.ts +89 -89
- package/src/lib/curves/getRectProfile.ts +139 -139
- package/src/lib/curves/index.ts +16 -16
- package/src/lib/decorators/canvasStyleSignal.ts +16 -16
- package/src/lib/decorators/colorSignal.ts +9 -9
- package/src/lib/decorators/compound.ts +72 -72
- package/src/lib/decorators/computed.ts +18 -18
- package/src/lib/decorators/defaultStyle.ts +18 -18
- package/src/lib/decorators/filtersSignal.ts +136 -136
- package/src/lib/decorators/index.ts +10 -10
- package/src/lib/decorators/initializers.ts +32 -32
- package/src/lib/decorators/nodeName.ts +13 -13
- package/src/lib/decorators/signal.test.ts +90 -90
- package/src/lib/decorators/signal.ts +345 -345
- package/src/lib/decorators/spacingSignal.ts +15 -15
- package/src/lib/decorators/vector2Signal.ts +30 -30
- package/src/lib/globals.d.ts +2 -2
- package/src/lib/index.ts +8 -8
- package/src/lib/jsx-dev-runtime.ts +2 -2
- package/src/lib/jsx-runtime.ts +46 -46
- package/src/lib/parse-svg-path.d.ts +14 -14
- package/src/lib/partials/Filter.ts +180 -180
- package/src/lib/partials/Gradient.ts +102 -102
- package/src/lib/partials/Pattern.ts +34 -34
- package/src/lib/partials/ShaderConfig.ts +117 -117
- package/src/lib/partials/index.ts +4 -4
- package/src/lib/partials/types.ts +58 -58
- package/src/lib/scenes/Scene2D.ts +242 -242
- package/src/lib/scenes/index.ts +3 -3
- package/src/lib/scenes/makeScene2D.ts +16 -16
- package/src/lib/scenes/useScene2D.ts +6 -6
- package/src/lib/tsconfig.build.json +5 -5
- package/src/lib/tsconfig.json +10 -10
- package/src/lib/tsdoc.json +4 -4
- package/src/lib/utils/CanvasUtils.ts +306 -306
- package/src/lib/utils/diff.test.ts +453 -453
- package/src/lib/utils/diff.ts +148 -148
- package/src/lib/utils/index.ts +2 -2
- package/src/lib/utils/is.ts +11 -11
- package/src/lib/utils/makeSignalExtensions.ts +30 -30
- package/src/lib/utils/video/declarations.d.ts +1 -1
- package/src/lib/utils/video/ffmpeg-client.ts +50 -50
- package/src/lib/utils/video/mp4-parser-manager.ts +72 -72
- package/src/lib/utils/video/parser/index.ts +1 -1
- package/src/lib/utils/video/parser/parser.ts +257 -257
- package/src/lib/utils/video/parser/sampler.ts +72 -72
- package/src/lib/utils/video/parser/segment.ts +302 -302
- package/src/lib/utils/video/parser/sink.ts +29 -29
- package/src/lib/utils/video/parser/utils.ts +31 -31
- package/src/tsconfig.base.json +19 -19
- package/src/tsconfig.build.json +8 -8
- package/src/tsconfig.json +5 -5
- package/tsconfig.project.json +7 -7
|
@@ -1,105 +1,105 @@
|
|
|
1
|
-
import type {SerializedVector2, Vector2} from '@twick/core';
|
|
2
|
-
import {BBox, transformVectorAsPoint} from '@twick/core';
|
|
3
|
-
import type {CurveProfile} from '../curves';
|
|
4
|
-
import type {PolynomialSegment} from '../curves/PolynomialSegment';
|
|
5
|
-
import {computed} from '../decorators';
|
|
6
|
-
import type {DesiredLength} from '../partials';
|
|
7
|
-
import {arc, drawLine, drawPivot, moveTo} from '../utils';
|
|
8
|
-
import {Curve} from './Curve';
|
|
9
|
-
|
|
10
|
-
export interface BezierOverlayInfo {
|
|
11
|
-
curve: Path2D;
|
|
12
|
-
handleLines: Path2D;
|
|
13
|
-
controlPoints: Vector2[];
|
|
14
|
-
startPoint: Vector2;
|
|
15
|
-
endPoint: Vector2;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
export abstract class Bezier extends Curve {
|
|
19
|
-
public override profile(): CurveProfile {
|
|
20
|
-
const segment = this.segment();
|
|
21
|
-
return {
|
|
22
|
-
segments: [segment],
|
|
23
|
-
arcLength: segment.arcLength,
|
|
24
|
-
minSin: 0,
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
protected abstract segment(): PolynomialSegment;
|
|
29
|
-
|
|
30
|
-
protected abstract overlayInfo(matrix: DOMMatrix): BezierOverlayInfo;
|
|
31
|
-
|
|
32
|
-
@computed()
|
|
33
|
-
protected childrenBBox(): BBox {
|
|
34
|
-
return BBox.fromPoints(...this.segment().points);
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
protected override desiredSize(): SerializedVector2<DesiredLength> {
|
|
38
|
-
return this.segment().getBBox().size;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
protected override offsetComputedLayout(box: BBox): BBox {
|
|
42
|
-
box.position = box.position.sub(this.segment().getBBox().center);
|
|
43
|
-
return box;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
public override drawOverlay(
|
|
47
|
-
context: CanvasRenderingContext2D,
|
|
48
|
-
matrix: DOMMatrix,
|
|
49
|
-
) {
|
|
50
|
-
const size = this.computedSize();
|
|
51
|
-
const box = this.childrenBBox().transformCorners(matrix);
|
|
52
|
-
const offsetBeforeTransform = size.mul(this.offset()).scale(0.5);
|
|
53
|
-
const offset = transformVectorAsPoint(offsetBeforeTransform, matrix);
|
|
54
|
-
const overlayInfo = this.overlayInfo(matrix);
|
|
55
|
-
|
|
56
|
-
context.lineWidth = 1;
|
|
57
|
-
context.strokeStyle = 'white';
|
|
58
|
-
context.fillStyle = 'white';
|
|
59
|
-
|
|
60
|
-
// Draw the curve itself first so everything else gets drawn on top of it
|
|
61
|
-
context.stroke(overlayInfo.curve);
|
|
62
|
-
|
|
63
|
-
context.fillStyle = 'white';
|
|
64
|
-
context.globalAlpha = 0.5;
|
|
65
|
-
|
|
66
|
-
context.beginPath();
|
|
67
|
-
context.stroke(overlayInfo.handleLines);
|
|
68
|
-
|
|
69
|
-
context.globalAlpha = 1;
|
|
70
|
-
context.lineWidth = 2;
|
|
71
|
-
|
|
72
|
-
// Draw start and end points
|
|
73
|
-
for (const point of [overlayInfo.startPoint, overlayInfo.endPoint]) {
|
|
74
|
-
moveTo(context, point);
|
|
75
|
-
context.beginPath();
|
|
76
|
-
arc(context, point, 4);
|
|
77
|
-
context.closePath();
|
|
78
|
-
context.stroke();
|
|
79
|
-
context.fill();
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
// Draw the control points
|
|
83
|
-
context.fillStyle = 'black';
|
|
84
|
-
for (const point of overlayInfo.controlPoints) {
|
|
85
|
-
moveTo(context, point);
|
|
86
|
-
context.beginPath();
|
|
87
|
-
arc(context, point, 4);
|
|
88
|
-
context.closePath();
|
|
89
|
-
context.fill();
|
|
90
|
-
context.stroke();
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
// Draw the offset marker
|
|
94
|
-
context.lineWidth = 1;
|
|
95
|
-
context.beginPath();
|
|
96
|
-
drawPivot(context, offset);
|
|
97
|
-
context.stroke();
|
|
98
|
-
|
|
99
|
-
// Draw the bounding box
|
|
100
|
-
context.beginPath();
|
|
101
|
-
drawLine(context, box);
|
|
102
|
-
context.closePath();
|
|
103
|
-
context.stroke();
|
|
104
|
-
}
|
|
105
|
-
}
|
|
1
|
+
import type {SerializedVector2, Vector2} from '@twick/core';
|
|
2
|
+
import {BBox, transformVectorAsPoint} from '@twick/core';
|
|
3
|
+
import type {CurveProfile} from '../curves';
|
|
4
|
+
import type {PolynomialSegment} from '../curves/PolynomialSegment';
|
|
5
|
+
import {computed} from '../decorators';
|
|
6
|
+
import type {DesiredLength} from '../partials';
|
|
7
|
+
import {arc, drawLine, drawPivot, moveTo} from '../utils';
|
|
8
|
+
import {Curve} from './Curve';
|
|
9
|
+
|
|
10
|
+
export interface BezierOverlayInfo {
|
|
11
|
+
curve: Path2D;
|
|
12
|
+
handleLines: Path2D;
|
|
13
|
+
controlPoints: Vector2[];
|
|
14
|
+
startPoint: Vector2;
|
|
15
|
+
endPoint: Vector2;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export abstract class Bezier extends Curve {
|
|
19
|
+
public override profile(): CurveProfile {
|
|
20
|
+
const segment = this.segment();
|
|
21
|
+
return {
|
|
22
|
+
segments: [segment],
|
|
23
|
+
arcLength: segment.arcLength,
|
|
24
|
+
minSin: 0,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
protected abstract segment(): PolynomialSegment;
|
|
29
|
+
|
|
30
|
+
protected abstract overlayInfo(matrix: DOMMatrix): BezierOverlayInfo;
|
|
31
|
+
|
|
32
|
+
@computed()
|
|
33
|
+
protected childrenBBox(): BBox {
|
|
34
|
+
return BBox.fromPoints(...this.segment().points);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
protected override desiredSize(): SerializedVector2<DesiredLength> {
|
|
38
|
+
return this.segment().getBBox().size;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
protected override offsetComputedLayout(box: BBox): BBox {
|
|
42
|
+
box.position = box.position.sub(this.segment().getBBox().center);
|
|
43
|
+
return box;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
public override drawOverlay(
|
|
47
|
+
context: CanvasRenderingContext2D,
|
|
48
|
+
matrix: DOMMatrix,
|
|
49
|
+
) {
|
|
50
|
+
const size = this.computedSize();
|
|
51
|
+
const box = this.childrenBBox().transformCorners(matrix);
|
|
52
|
+
const offsetBeforeTransform = size.mul(this.offset()).scale(0.5);
|
|
53
|
+
const offset = transformVectorAsPoint(offsetBeforeTransform, matrix);
|
|
54
|
+
const overlayInfo = this.overlayInfo(matrix);
|
|
55
|
+
|
|
56
|
+
context.lineWidth = 1;
|
|
57
|
+
context.strokeStyle = 'white';
|
|
58
|
+
context.fillStyle = 'white';
|
|
59
|
+
|
|
60
|
+
// Draw the curve itself first so everything else gets drawn on top of it
|
|
61
|
+
context.stroke(overlayInfo.curve);
|
|
62
|
+
|
|
63
|
+
context.fillStyle = 'white';
|
|
64
|
+
context.globalAlpha = 0.5;
|
|
65
|
+
|
|
66
|
+
context.beginPath();
|
|
67
|
+
context.stroke(overlayInfo.handleLines);
|
|
68
|
+
|
|
69
|
+
context.globalAlpha = 1;
|
|
70
|
+
context.lineWidth = 2;
|
|
71
|
+
|
|
72
|
+
// Draw start and end points
|
|
73
|
+
for (const point of [overlayInfo.startPoint, overlayInfo.endPoint]) {
|
|
74
|
+
moveTo(context, point);
|
|
75
|
+
context.beginPath();
|
|
76
|
+
arc(context, point, 4);
|
|
77
|
+
context.closePath();
|
|
78
|
+
context.stroke();
|
|
79
|
+
context.fill();
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// Draw the control points
|
|
83
|
+
context.fillStyle = 'black';
|
|
84
|
+
for (const point of overlayInfo.controlPoints) {
|
|
85
|
+
moveTo(context, point);
|
|
86
|
+
context.beginPath();
|
|
87
|
+
arc(context, point, 4);
|
|
88
|
+
context.closePath();
|
|
89
|
+
context.fill();
|
|
90
|
+
context.stroke();
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
// Draw the offset marker
|
|
94
|
+
context.lineWidth = 1;
|
|
95
|
+
context.beginPath();
|
|
96
|
+
drawPivot(context, offset);
|
|
97
|
+
context.stroke();
|
|
98
|
+
|
|
99
|
+
// Draw the bounding box
|
|
100
|
+
context.beginPath();
|
|
101
|
+
drawLine(context, box);
|
|
102
|
+
context.closePath();
|
|
103
|
+
context.stroke();
|
|
104
|
+
}
|
|
105
|
+
}
|