@twick/2d 0.14.0 → 1.14.3
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 -21
- package/editor/editor/tsconfig.build.tsbuildinfo +1 -1
- package/lib/components/Audio.d.ts.map +1 -1
- package/lib/components/Audio.js +33 -3
- package/lib/components/CodeBlock.d.ts +1 -1
- package/lib/components/Img.js +23 -23
- package/lib/components/Line.js +31 -31
- package/lib/components/Media.d.ts +6 -0
- package/lib/components/Media.d.ts.map +1 -1
- package/lib/components/Media.js +277 -61
- package/lib/components/Node.d.ts +1 -1
- package/lib/components/Path.d.ts +1 -1
- package/lib/components/SVG.d.ts +1 -1
- package/lib/components/Shape.d.ts +1 -1
- package/lib/components/Spline.js +25 -25
- package/lib/components/Video.d.ts +0 -1
- package/lib/components/Video.d.ts.map +1 -1
- package/lib/components/Video.js +70 -65
- package/lib/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +4 -5
- 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 -131
- 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 -346
- 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 -462
- 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
- package/lib/components/utils/waitUntil.d.ts +0 -7
- package/lib/components/utils/waitUntil.d.ts.map +0 -1
- package/lib/components/utils/waitUntil.js +0 -15
- package/lib/utils/waitUntil.d.ts +0 -7
- package/lib/utils/waitUntil.d.ts.map +0 -1
- package/lib/utils/waitUntil.js +0 -15
- package/src/lib/utils/waitUntil.ts +0 -18
|
@@ -1,94 +1,94 @@
|
|
|
1
|
-
import type {Vector2} from '@twick/core';
|
|
2
|
-
import {clamp, remap} from '@twick/core';
|
|
3
|
-
import type {CurvePoint} from './CurvePoint';
|
|
4
|
-
import type {PolynomialSegment} from './PolynomialSegment';
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Class to uniformly sample points on a given polynomial curve.
|
|
8
|
-
*
|
|
9
|
-
* @remarks
|
|
10
|
-
* In order to uniformly sample points from non-linear curves, this sampler
|
|
11
|
-
* re-parameterizes the curve by arclength.
|
|
12
|
-
*/
|
|
13
|
-
export class UniformPolynomialCurveSampler {
|
|
14
|
-
private sampledDistances: number[] = [];
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* @param curve - The curve to sample
|
|
18
|
-
* @param samples - How many points to sample from the provided curve. The
|
|
19
|
-
* more points get sampled, the higher the resolution–and
|
|
20
|
-
* therefore precision–of the sampler.
|
|
21
|
-
*/
|
|
22
|
-
public constructor(
|
|
23
|
-
private readonly curve: PolynomialSegment,
|
|
24
|
-
samples = 20,
|
|
25
|
-
) {
|
|
26
|
-
this.resample(samples);
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* Discard all previously sampled points and resample the provided number of
|
|
31
|
-
* points from the curve.
|
|
32
|
-
*
|
|
33
|
-
* @param samples - The number of points to sample.
|
|
34
|
-
*/
|
|
35
|
-
public resample(samples: number): void {
|
|
36
|
-
this.sampledDistances = [0];
|
|
37
|
-
|
|
38
|
-
let length = 0;
|
|
39
|
-
let previous: Vector2 = this.curve.eval(0).position;
|
|
40
|
-
for (let i = 1; i < samples; i++) {
|
|
41
|
-
const t = i / (samples - 1);
|
|
42
|
-
const curvePoint = this.curve.eval(t);
|
|
43
|
-
const segmentLength = previous.sub(curvePoint.position).magnitude;
|
|
44
|
-
|
|
45
|
-
length += segmentLength;
|
|
46
|
-
|
|
47
|
-
this.sampledDistances.push(length);
|
|
48
|
-
previous = curvePoint.position;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
// Account for any accumulated floating point errors and explicitly set the
|
|
52
|
-
// distance of the last point to the arclength of the curve.
|
|
53
|
-
this.sampledDistances[this.sampledDistances.length - 1] =
|
|
54
|
-
this.curve.arcLength;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* Return the point at the provided distance along the sampled curve's
|
|
59
|
-
* arclength.
|
|
60
|
-
*
|
|
61
|
-
* @param distance - The distance along the curve's arclength for which to
|
|
62
|
-
* retrieve the point.
|
|
63
|
-
*/
|
|
64
|
-
public pointAtDistance(distance: number): CurvePoint {
|
|
65
|
-
return this.curve.eval(this.distanceToT(distance));
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
/**
|
|
69
|
-
* Return the t value for the point at the provided distance along the sampled
|
|
70
|
-
* curve's arc length.
|
|
71
|
-
*
|
|
72
|
-
* @param distance - The distance along the arclength
|
|
73
|
-
*/
|
|
74
|
-
public distanceToT(distance: number): number {
|
|
75
|
-
const samples = this.sampledDistances.length;
|
|
76
|
-
distance = clamp(0, this.curve.arcLength, distance);
|
|
77
|
-
|
|
78
|
-
for (let i = 0; i < samples; i++) {
|
|
79
|
-
const lower = this.sampledDistances[i];
|
|
80
|
-
const upper = this.sampledDistances[i + 1];
|
|
81
|
-
if (distance >= lower && distance <= upper) {
|
|
82
|
-
return remap(
|
|
83
|
-
lower,
|
|
84
|
-
upper,
|
|
85
|
-
i / (samples - 1),
|
|
86
|
-
(i + 1) / (samples - 1),
|
|
87
|
-
distance,
|
|
88
|
-
);
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
return 1;
|
|
93
|
-
}
|
|
94
|
-
}
|
|
1
|
+
import type {Vector2} from '@twick/core';
|
|
2
|
+
import {clamp, remap} from '@twick/core';
|
|
3
|
+
import type {CurvePoint} from './CurvePoint';
|
|
4
|
+
import type {PolynomialSegment} from './PolynomialSegment';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Class to uniformly sample points on a given polynomial curve.
|
|
8
|
+
*
|
|
9
|
+
* @remarks
|
|
10
|
+
* In order to uniformly sample points from non-linear curves, this sampler
|
|
11
|
+
* re-parameterizes the curve by arclength.
|
|
12
|
+
*/
|
|
13
|
+
export class UniformPolynomialCurveSampler {
|
|
14
|
+
private sampledDistances: number[] = [];
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* @param curve - The curve to sample
|
|
18
|
+
* @param samples - How many points to sample from the provided curve. The
|
|
19
|
+
* more points get sampled, the higher the resolution–and
|
|
20
|
+
* therefore precision–of the sampler.
|
|
21
|
+
*/
|
|
22
|
+
public constructor(
|
|
23
|
+
private readonly curve: PolynomialSegment,
|
|
24
|
+
samples = 20,
|
|
25
|
+
) {
|
|
26
|
+
this.resample(samples);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Discard all previously sampled points and resample the provided number of
|
|
31
|
+
* points from the curve.
|
|
32
|
+
*
|
|
33
|
+
* @param samples - The number of points to sample.
|
|
34
|
+
*/
|
|
35
|
+
public resample(samples: number): void {
|
|
36
|
+
this.sampledDistances = [0];
|
|
37
|
+
|
|
38
|
+
let length = 0;
|
|
39
|
+
let previous: Vector2 = this.curve.eval(0).position;
|
|
40
|
+
for (let i = 1; i < samples; i++) {
|
|
41
|
+
const t = i / (samples - 1);
|
|
42
|
+
const curvePoint = this.curve.eval(t);
|
|
43
|
+
const segmentLength = previous.sub(curvePoint.position).magnitude;
|
|
44
|
+
|
|
45
|
+
length += segmentLength;
|
|
46
|
+
|
|
47
|
+
this.sampledDistances.push(length);
|
|
48
|
+
previous = curvePoint.position;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// Account for any accumulated floating point errors and explicitly set the
|
|
52
|
+
// distance of the last point to the arclength of the curve.
|
|
53
|
+
this.sampledDistances[this.sampledDistances.length - 1] =
|
|
54
|
+
this.curve.arcLength;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Return the point at the provided distance along the sampled curve's
|
|
59
|
+
* arclength.
|
|
60
|
+
*
|
|
61
|
+
* @param distance - The distance along the curve's arclength for which to
|
|
62
|
+
* retrieve the point.
|
|
63
|
+
*/
|
|
64
|
+
public pointAtDistance(distance: number): CurvePoint {
|
|
65
|
+
return this.curve.eval(this.distanceToT(distance));
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Return the t value for the point at the provided distance along the sampled
|
|
70
|
+
* curve's arc length.
|
|
71
|
+
*
|
|
72
|
+
* @param distance - The distance along the arclength
|
|
73
|
+
*/
|
|
74
|
+
public distanceToT(distance: number): number {
|
|
75
|
+
const samples = this.sampledDistances.length;
|
|
76
|
+
distance = clamp(0, this.curve.arcLength, distance);
|
|
77
|
+
|
|
78
|
+
for (let i = 0; i < samples; i++) {
|
|
79
|
+
const lower = this.sampledDistances[i];
|
|
80
|
+
const upper = this.sampledDistances[i + 1];
|
|
81
|
+
if (distance >= lower && distance <= upper) {
|
|
82
|
+
return remap(
|
|
83
|
+
lower,
|
|
84
|
+
upper,
|
|
85
|
+
i / (samples - 1),
|
|
86
|
+
(i + 1) / (samples - 1),
|
|
87
|
+
distance,
|
|
88
|
+
);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
return 1;
|
|
93
|
+
}
|
|
94
|
+
}
|