@revideo/2d 0.2.1 → 0.2.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/lib/code/CodeCursor.d.ts +74 -74
- package/lib/code/CodeCursor.js +286 -352
- package/lib/code/CodeDiffer.d.ts +16 -21
- package/lib/code/CodeDiffer.js +41 -39
- package/lib/code/CodeFragment.d.ts +8 -16
- package/lib/code/CodeFragment.js +36 -36
- package/lib/code/CodeHighlighter.d.ts +59 -59
- package/lib/code/CodeHighlighter.js +1 -1
- package/lib/code/CodeMetrics.d.ts +8 -12
- package/lib/code/CodeMetrics.js +24 -26
- package/lib/code/CodeRange.d.ts +5 -21
- package/lib/code/CodeRange.js +124 -131
- package/lib/code/CodeScope.d.ts +8 -18
- package/lib/code/CodeScope.js +61 -59
- package/lib/code/CodeSelection.d.ts +4 -9
- package/lib/code/CodeSelection.js +8 -8
- package/lib/code/CodeSignal.d.ts +47 -74
- package/lib/code/CodeSignal.js +189 -206
- package/lib/code/CodeTokenizer.d.ts +1 -1
- package/lib/code/CodeTokenizer.js +41 -41
- package/lib/code/DefaultHighlightStyle.d.ts +2 -2
- package/lib/code/DefaultHighlightStyle.js +96 -96
- package/lib/code/LezerHighlighter.d.ts +19 -21
- package/lib/code/LezerHighlighter.js +101 -101
- package/lib/code/diff.d.ts +9 -12
- package/lib/code/diff.js +205 -218
- package/lib/code/extractRange.d.ts +4 -7
- package/lib/code/extractRange.js +71 -79
- package/lib/code/index.d.ts +1 -1
- package/lib/code/index.js +1 -1
- package/lib/components/Audio.d.ts +11 -11
- package/lib/components/Audio.js +109 -115
- package/lib/components/Bezier.d.ts +18 -18
- package/lib/components/Bezier.js +75 -86
- package/lib/components/Circle.d.ts +90 -95
- package/lib/components/Circle.js +74 -85
- package/lib/components/Code.d.ts +211 -244
- package/lib/components/Code.js +269 -317
- package/lib/components/CodeBlock.d.ts +67 -109
- package/lib/components/CodeBlock.js +373 -414
- package/lib/components/CubicBezier.d.ts +36 -36
- package/lib/components/CubicBezier.js +49 -52
- package/lib/components/Curve.d.ts +198 -208
- package/lib/components/Curve.js +269 -270
- package/lib/components/Grid.d.ts +42 -47
- package/lib/components/Grid.js +56 -63
- package/lib/components/Icon.d.ts +50 -55
- package/lib/components/Icon.js +50 -58
- package/lib/components/Img.d.ts +79 -86
- package/lib/components/Img.js +181 -193
- package/lib/components/Knot.d.ts +78 -97
- package/lib/components/Knot.js +60 -81
- package/lib/components/Latex.d.ts +12 -12
- package/lib/components/Latex.js +65 -77
- package/lib/components/Layout.d.ts +413 -455
- package/lib/components/Layout.js +681 -666
- package/lib/components/Line.d.ts +49 -61
- package/lib/components/Line.js +193 -216
- package/lib/components/Media.d.ts +35 -35
- package/lib/components/Media.js +134 -135
- package/lib/components/Node.d.ts +830 -875
- package/lib/components/Node.js +1314 -1383
- package/lib/components/Path.d.ts +14 -35
- package/lib/components/Path.js +89 -100
- package/lib/components/Polygon.d.ts +55 -60
- package/lib/components/Polygon.js +66 -71
- package/lib/components/QuadBezier.d.ts +29 -29
- package/lib/components/QuadBezier.js +45 -50
- package/lib/components/Ray.d.ts +28 -28
- package/lib/components/Ray.js +64 -71
- package/lib/components/Rect.d.ts +108 -115
- package/lib/components/Rect.js +72 -78
- package/lib/components/SVG.d.ts +139 -165
- package/lib/components/SVG.js +541 -609
- package/lib/components/Shape.d.ts +35 -44
- package/lib/components/Shape.js +127 -112
- package/lib/components/Spline.d.ts +40 -46
- package/lib/components/Spline.js +175 -190
- package/lib/components/Txt.d.ts +44 -55
- package/lib/components/Txt.js +155 -156
- package/lib/components/TxtLeaf.d.ts +16 -20
- package/lib/components/TxtLeaf.js +158 -177
- package/lib/components/Video.d.ts +41 -41
- package/lib/components/Video.js +135 -138
- package/lib/components/View2D.d.ts +21 -21
- package/lib/components/View2D.js +85 -98
- package/lib/components/index.d.ts +1 -1
- package/lib/components/index.js +1 -1
- package/lib/components/types.d.ts +9 -22
- package/lib/components/types.js +1 -1
- package/lib/curves/ArcSegment.d.ts +24 -36
- package/lib/curves/ArcSegment.js +94 -145
- package/lib/curves/CircleSegment.d.ts +16 -26
- package/lib/curves/CircleSegment.js +49 -56
- package/lib/curves/CubicBezierSegment.d.ts +13 -18
- package/lib/curves/CubicBezierSegment.js +46 -79
- package/lib/curves/CurveDrawingInfo.d.ts +9 -9
- package/lib/curves/CurveDrawingInfo.js +1 -1
- package/lib/curves/CurvePoint.d.ts +13 -13
- package/lib/curves/CurvePoint.js +1 -1
- package/lib/curves/CurveProfile.d.ts +5 -5
- package/lib/curves/CurveProfile.js +1 -1
- package/lib/curves/KnotInfo.d.ts +8 -8
- package/lib/curves/KnotInfo.js +1 -1
- package/lib/curves/LineSegment.d.ts +14 -19
- package/lib/curves/LineSegment.js +42 -42
- package/lib/curves/Polynomial.d.ts +110 -110
- package/lib/curves/Polynomial.js +239 -249
- package/lib/curves/Polynomial2D.d.ts +20 -20
- package/lib/curves/Polynomial2D.js +42 -46
- package/lib/curves/PolynomialSegment.d.ts +37 -42
- package/lib/curves/PolynomialSegment.js +81 -83
- package/lib/curves/QuadBezierSegment.d.ts +12 -12
- package/lib/curves/QuadBezierSegment.js +41 -71
- package/lib/curves/Segment.d.ts +7 -12
- package/lib/curves/Segment.js +3 -2
- package/lib/curves/UniformPolynomialCurveSampler.d.ts +34 -34
- package/lib/curves/UniformPolynomialCurveSampler.js +62 -68
- package/lib/curves/createCurveProfileLerp.d.ts +6 -17
- package/lib/curves/createCurveProfileLerp.js +208 -211
- package/lib/curves/getBezierSplineProfile.d.ts +4 -8
- package/lib/curves/getBezierSplineProfile.js +101 -145
- package/lib/curves/getCircleProfile.d.ts +4 -10
- package/lib/curves/getCircleProfile.js +40 -72
- package/lib/curves/getPathProfile.d.ts +2 -2
- package/lib/curves/getPathProfile.js +112 -135
- package/lib/curves/getPointAtDistance.d.ts +4 -7
- package/lib/curves/getPointAtDistance.js +12 -12
- package/lib/curves/getPolylineProfile.d.ts +4 -8
- package/lib/curves/getPolylineProfile.js +54 -67
- package/lib/curves/getRectProfile.d.ts +4 -9
- package/lib/curves/getRectProfile.js +52 -117
- package/lib/curves/index.d.ts +1 -1
- package/lib/curves/index.js +1 -1
- package/lib/decorators/canvasStyleSignal.d.ts +3 -3
- package/lib/decorators/canvasStyleSignal.js +10 -10
- package/lib/decorators/colorSignal.d.ts +1 -1
- package/lib/decorators/colorSignal.js +7 -7
- package/lib/decorators/compound.d.ts +2 -4
- package/lib/decorators/compound.js +23 -43
- package/lib/decorators/computed.d.ts +1 -1
- package/lib/decorators/computed.js +9 -9
- package/lib/decorators/defaultStyle.d.ts +2 -5
- package/lib/decorators/defaultStyle.js +11 -11
- package/lib/decorators/filtersSignal.d.ts +8 -28
- package/lib/decorators/filtersSignal.js +64 -87
- package/lib/decorators/index.d.ts +1 -1
- package/lib/decorators/index.js +1 -1
- package/lib/decorators/initializers.d.ts +2 -5
- package/lib/decorators/initializers.js +19 -18
- package/lib/decorators/nodeName.d.ts +1 -1
- package/lib/decorators/nodeName.js +4 -4
- package/lib/decorators/signal.d.ts +20 -40
- package/lib/decorators/signal.js +104 -113
- package/lib/decorators/spacingSignal.d.ts +1 -1
- package/lib/decorators/spacingSignal.js +13 -13
- package/lib/decorators/vector2Signal.d.ts +7 -13
- package/lib/decorators/vector2Signal.js +13 -15
- package/lib/index.d.ts +1 -1
- package/lib/index.js +1 -1
- package/lib/jsx-dev-runtime.d.ts +3 -3
- package/lib/jsx-dev-runtime.js +3 -3
- package/lib/jsx-runtime.d.ts +9 -19
- package/lib/jsx-runtime.js +18 -18
- package/lib/partials/Filter.d.ts +16 -24
- package/lib/partials/Filter.js +69 -69
- package/lib/partials/Gradient.d.ts +24 -30
- package/lib/partials/Gradient.js +58 -69
- package/lib/partials/Pattern.d.ts +9 -14
- package/lib/partials/Pattern.js +24 -30
- package/lib/partials/ShaderConfig.d.ts +74 -81
- package/lib/partials/ShaderConfig.js +23 -22
- package/lib/partials/index.d.ts +1 -1
- package/lib/partials/index.js +1 -1
- package/lib/partials/types.d.ts +6 -19
- package/lib/partials/types.js +1 -1
- package/lib/scenes/Scene2D.d.ts +23 -42
- package/lib/scenes/Scene2D.js +151 -161
- package/lib/scenes/index.d.ts +1 -1
- package/lib/scenes/index.js +1 -1
- package/lib/scenes/makeScene2D.d.ts +5 -7
- package/lib/scenes/makeScene2D.js +10 -10
- package/lib/scenes/useScene2D.d.ts +2 -2
- package/lib/scenes/useScene2D.js +3 -3
- package/lib/utils/CanvasUtils.d.ts +21 -93
- package/lib/utils/CanvasUtils.js +105 -186
- package/lib/utils/diff.d.ts +18 -25
- package/lib/utils/diff.js +87 -84
- package/lib/utils/index.d.ts +1 -1
- package/lib/utils/index.js +1 -1
- package/lib/utils/is.d.ts +2 -4
- package/lib/utils/is.js +2 -2
- package/lib/utils/makeSignalExtensions.d.ts +4 -11
- package/lib/utils/makeSignalExtensions.js +17 -17
- package/package.json +4 -4
- package/lib/components/AudioTest.d.ts +0 -99
- package/lib/components/AudioTest.d.ts.map +0 -1
- package/lib/components/AudioTest.js +0 -281
package/lib/components/Line.d.ts
CHANGED
|
@@ -1,23 +1,15 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
SignalValue,
|
|
5
|
-
SimpleSignal,
|
|
6
|
-
ThreadGenerator,
|
|
7
|
-
TimingFunction,
|
|
8
|
-
Vector2,
|
|
9
|
-
} from '@revideo/core';
|
|
10
|
-
import {CurveProfile} from '../curves';
|
|
11
|
-
import {Curve, CurveProps} from './Curve';
|
|
1
|
+
import { BBox, PossibleVector2, SignalValue, SimpleSignal, ThreadGenerator, TimingFunction, Vector2 } from '@revideo/core';
|
|
2
|
+
import { CurveProfile } from '../curves';
|
|
3
|
+
import { Curve, CurveProps } from './Curve';
|
|
12
4
|
export interface LineProps extends CurveProps {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
5
|
+
/**
|
|
6
|
+
* {@inheritDoc Line.radius}
|
|
7
|
+
*/
|
|
8
|
+
radius?: SignalValue<number>;
|
|
9
|
+
/**
|
|
10
|
+
* {@inheritDoc Line.points}
|
|
11
|
+
*/
|
|
12
|
+
points?: SignalValue<SignalValue<PossibleVector2>[]>;
|
|
21
13
|
}
|
|
22
14
|
/**
|
|
23
15
|
* A node for drawing lines and polygons.
|
|
@@ -125,46 +117,42 @@ export interface LineProps extends CurveProps {
|
|
|
125
117
|
* ```
|
|
126
118
|
*/
|
|
127
119
|
export declare class Line extends Curve {
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
profile(): CurveProfile;
|
|
166
|
-
protected lineWidthCoefficient(): number;
|
|
167
|
-
drawOverlay(context: CanvasRenderingContext2D, matrix: DOMMatrix): void;
|
|
168
|
-
private parsePoints;
|
|
120
|
+
/**
|
|
121
|
+
* Rotate the points to minimize the overall distance traveled when tweening.
|
|
122
|
+
*
|
|
123
|
+
* @param points - The points to rotate.
|
|
124
|
+
* @param reference - The reference points to which the distance is measured.
|
|
125
|
+
* @param closed - Whether the points form a closed polygon.
|
|
126
|
+
*/
|
|
127
|
+
private static rotatePoints;
|
|
128
|
+
/**
|
|
129
|
+
* Distribute additional points along the polyline.
|
|
130
|
+
*
|
|
131
|
+
* @param points - The points of a polyline along which new points should be
|
|
132
|
+
* distributed.
|
|
133
|
+
* @param count - The number of points to add.
|
|
134
|
+
*/
|
|
135
|
+
private static distributePoints;
|
|
136
|
+
/**
|
|
137
|
+
* The radius of the line's corners.
|
|
138
|
+
*/
|
|
139
|
+
readonly radius: SimpleSignal<number, this>;
|
|
140
|
+
/**
|
|
141
|
+
* The points of the line.
|
|
142
|
+
*
|
|
143
|
+
* @remarks
|
|
144
|
+
* When set to `null`, the Line will use the positions of its children as
|
|
145
|
+
* points.
|
|
146
|
+
*/
|
|
147
|
+
readonly points: SimpleSignal<SignalValue<PossibleVector2>[] | null, this>;
|
|
148
|
+
protected tweenPoints(value: SignalValue<SignalValue<PossibleVector2>[] | null>, time: number, timingFunction: TimingFunction): ThreadGenerator;
|
|
149
|
+
private tweenedPoints;
|
|
150
|
+
constructor(props: LineProps);
|
|
151
|
+
protected childrenBBox(): BBox;
|
|
152
|
+
parsedPoints(): Vector2[];
|
|
153
|
+
profile(): CurveProfile;
|
|
154
|
+
protected lineWidthCoefficient(): number;
|
|
155
|
+
drawOverlay(context: CanvasRenderingContext2D, matrix: DOMMatrix): void;
|
|
156
|
+
private parsePoints;
|
|
169
157
|
}
|
|
170
|
-
//# sourceMappingURL=Line.d.ts.map
|
|
158
|
+
//# sourceMappingURL=Line.d.ts.map
|
package/lib/components/Line.js
CHANGED
|
@@ -1,42 +1,17 @@
|
|
|
1
|
-
var __decorate =
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
var
|
|
5
|
-
r =
|
|
6
|
-
c < 3
|
|
7
|
-
? target
|
|
8
|
-
: desc === null
|
|
9
|
-
? (desc = Object.getOwnPropertyDescriptor(target, key))
|
|
10
|
-
: desc,
|
|
11
|
-
d;
|
|
12
|
-
if (typeof Reflect === 'object' && typeof Reflect.decorate === 'function')
|
|
13
|
-
r = Reflect.decorate(decorators, target, key, desc);
|
|
14
|
-
else
|
|
15
|
-
for (var i = decorators.length - 1; i >= 0; i--)
|
|
16
|
-
if ((d = decorators[i]))
|
|
17
|
-
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
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;
|
|
18
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
19
|
-
|
|
6
|
+
};
|
|
20
7
|
var Line_1;
|
|
21
|
-
import {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
Vector2,
|
|
29
|
-
} from '@revideo/core';
|
|
30
|
-
import {getPolylineProfile} from '../curves';
|
|
31
|
-
import {
|
|
32
|
-
calculateLerpDistance,
|
|
33
|
-
polygonLength,
|
|
34
|
-
polygonPointsLerp,
|
|
35
|
-
} from '../curves/createCurveProfileLerp';
|
|
36
|
-
import {computed, initial, nodeName, signal} from '../decorators';
|
|
37
|
-
import {arc, drawLine, drawPivot, lineTo, moveTo} from '../utils';
|
|
38
|
-
import {Curve} from './Curve';
|
|
39
|
-
import {Layout} from './Layout';
|
|
8
|
+
import { BBox, createSignal, threadable, tween, unwrap, useLogger, Vector2, } from '@revideo/core';
|
|
9
|
+
import { getPolylineProfile } from '../curves';
|
|
10
|
+
import { calculateLerpDistance, polygonLength, polygonPointsLerp, } from '../curves/createCurveProfileLerp';
|
|
11
|
+
import { computed, initial, nodeName, signal } from '../decorators';
|
|
12
|
+
import { arc, drawLine, drawPivot, lineTo, moveTo } from '../utils';
|
|
13
|
+
import { Curve } from './Curve';
|
|
14
|
+
import { Layout } from './Layout';
|
|
40
15
|
/**
|
|
41
16
|
* A node for drawing lines and polygons.
|
|
42
17
|
*
|
|
@@ -142,194 +117,196 @@ import {Layout} from './Layout';
|
|
|
142
117
|
* });
|
|
143
118
|
* ```
|
|
144
119
|
*/
|
|
145
|
-
let Line =
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
120
|
+
let Line = Line_1 = class Line extends Curve {
|
|
121
|
+
/**
|
|
122
|
+
* Rotate the points to minimize the overall distance traveled when tweening.
|
|
123
|
+
*
|
|
124
|
+
* @param points - The points to rotate.
|
|
125
|
+
* @param reference - The reference points to which the distance is measured.
|
|
126
|
+
* @param closed - Whether the points form a closed polygon.
|
|
127
|
+
*/
|
|
128
|
+
static rotatePoints(points, reference, closed) {
|
|
129
|
+
if (closed) {
|
|
130
|
+
let minDistance = Infinity;
|
|
131
|
+
let bestOffset = 0;
|
|
132
|
+
for (let offset = 0; offset < points.length; offset += 1) {
|
|
133
|
+
const distance = calculateLerpDistance(points, reference, offset);
|
|
134
|
+
if (distance < minDistance) {
|
|
135
|
+
minDistance = distance;
|
|
136
|
+
bestOffset = offset;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
if (bestOffset) {
|
|
140
|
+
const spliced = points.splice(0, bestOffset);
|
|
141
|
+
points.splice(points.length, 0, ...spliced);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
const originalDistance = calculateLerpDistance(points, reference, 0);
|
|
146
|
+
const reversedPoints = [...points].reverse();
|
|
147
|
+
const reversedDistance = calculateLerpDistance(reversedPoints, reference, 0);
|
|
148
|
+
if (reversedDistance < originalDistance) {
|
|
149
|
+
points.reverse();
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Distribute additional points along the polyline.
|
|
155
|
+
*
|
|
156
|
+
* @param points - The points of a polyline along which new points should be
|
|
157
|
+
* distributed.
|
|
158
|
+
* @param count - The number of points to add.
|
|
159
|
+
*/
|
|
160
|
+
static distributePoints(points, count) {
|
|
161
|
+
if (points.length === 0) {
|
|
162
|
+
for (let j = 0; j < count; j++) {
|
|
163
|
+
points.push(Vector2.zero);
|
|
164
|
+
}
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
167
|
+
if (points.length === 1) {
|
|
168
|
+
const point = points[0];
|
|
169
|
+
for (let j = 0; j < count; j++) {
|
|
170
|
+
points.push(point);
|
|
171
|
+
}
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
const desiredLength = points.length + count;
|
|
175
|
+
const arcLength = polygonLength(points);
|
|
176
|
+
let density = count / arcLength;
|
|
177
|
+
let i = 0;
|
|
178
|
+
while (points.length < desiredLength) {
|
|
179
|
+
const pointsLeft = desiredLength - points.length;
|
|
180
|
+
if (i + 1 >= points.length) {
|
|
181
|
+
density = pointsLeft / arcLength;
|
|
182
|
+
i = 0;
|
|
183
|
+
continue;
|
|
184
|
+
}
|
|
185
|
+
const a = points[i];
|
|
186
|
+
const b = points[i + 1];
|
|
187
|
+
const length = a.sub(b).magnitude;
|
|
188
|
+
const pointCount = Math.min(Math.round(length * density), pointsLeft) + 1;
|
|
189
|
+
for (let j = 1; j < pointCount; j++) {
|
|
190
|
+
points.splice(++i, 0, Vector2.lerp(a, b, j / pointCount));
|
|
191
|
+
}
|
|
192
|
+
i++;
|
|
162
193
|
}
|
|
163
|
-
}
|
|
164
|
-
if (bestOffset) {
|
|
165
|
-
const spliced = points.splice(0, bestOffset);
|
|
166
|
-
points.splice(points.length, 0, ...spliced);
|
|
167
|
-
}
|
|
168
|
-
} else {
|
|
169
|
-
const originalDistance = calculateLerpDistance(points, reference, 0);
|
|
170
|
-
const reversedPoints = [...points].reverse();
|
|
171
|
-
const reversedDistance = calculateLerpDistance(
|
|
172
|
-
reversedPoints,
|
|
173
|
-
reference,
|
|
174
|
-
0,
|
|
175
|
-
);
|
|
176
|
-
if (reversedDistance < originalDistance) {
|
|
177
|
-
points.reverse();
|
|
178
|
-
}
|
|
179
194
|
}
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
195
|
+
*tweenPoints(value, time, timingFunction) {
|
|
196
|
+
const fromPoints = [...this.parsedPoints()];
|
|
197
|
+
const toPoints = this.parsePoints(unwrap(value));
|
|
198
|
+
const closed = this.closed();
|
|
199
|
+
const diff = fromPoints.length - toPoints.length;
|
|
200
|
+
Line_1.distributePoints(diff < 0 ? fromPoints : toPoints, Math.abs(diff));
|
|
201
|
+
Line_1.rotatePoints(toPoints, fromPoints, closed);
|
|
202
|
+
this.tweenedPoints(fromPoints);
|
|
203
|
+
yield* tween(time, value => {
|
|
204
|
+
const progress = timingFunction(value);
|
|
205
|
+
this.tweenedPoints(polygonPointsLerp(fromPoints, toPoints, progress));
|
|
206
|
+
}, () => {
|
|
207
|
+
this.tweenedPoints(null);
|
|
208
|
+
this.points(value);
|
|
209
|
+
});
|
|
194
210
|
}
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
points
|
|
199
|
-
|
|
200
|
-
|
|
211
|
+
constructor(props) {
|
|
212
|
+
super(props);
|
|
213
|
+
this.tweenedPoints = createSignal(null);
|
|
214
|
+
if (props.children === undefined && props.points === undefined) {
|
|
215
|
+
useLogger().warn({
|
|
216
|
+
message: 'No points specified for the line',
|
|
217
|
+
remarks: "<p>The line won't be visible unless you specify at least two points:</p>\n<pre class=\"\"><code class=\"language-tsx\"><<span class=\"hljs-title class_\">Line</span>\n stroke=<span class=\"hljs-string\">"#fff"</span>\n lineWidth={<span class=\"hljs-number\">8</span>}\n points={[\n [<span class=\"hljs-number\">100</span>, <span class=\"hljs-number\">0</span>],\n [<span class=\"hljs-number\">0</span>, <span class=\"hljs-number\">0</span>],\n [<span class=\"hljs-number\">0</span>, <span class=\"hljs-number\">100</span>],\n ]}\n/></code></pre><p>Alternatively, you can define the points using the children:</p>\n<pre class=\"\"><code class=\"language-tsx\"><<span class=\"hljs-title class_\">Line</span> stroke=<span class=\"hljs-string\">"#fff"</span> lineWidth={<span class=\"hljs-number\">8</span>}>\n <span class=\"language-xml\"><span class=\"hljs-tag\"><<span class=\"hljs-name\">Node</span> <span class=\"hljs-attr\">x</span>=<span class=\"hljs-string\">{100}</span> /></span></span>\n <span class=\"language-xml\"><span class=\"hljs-tag\"><<span class=\"hljs-name\">Node</span> /></span></span>\n <span class=\"language-xml\"><span class=\"hljs-tag\"><<span class=\"hljs-name\">Node</span> <span class=\"hljs-attr\">y</span>=<span class=\"hljs-string\">{100}</span> /></span></span>\n</<span class=\"hljs-title class_\">Line</span>></code></pre><p>If you did this intentionally, and want to disable this message, set the\n<code>points</code> property to <code>null</code>:</p>\n<pre class=\"\"><code class=\"language-tsx\"><<span class=\"hljs-title class_\">Line</span> stroke=<span class=\"hljs-string\">"#fff"</span> lineWidth={<span class=\"hljs-number\">8</span>} points={<span class=\"hljs-literal\">null</span>} /></code></pre>",
|
|
218
|
+
inspect: this.key,
|
|
219
|
+
});
|
|
220
|
+
}
|
|
201
221
|
}
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
const a = points[i];
|
|
214
|
-
const b = points[i + 1];
|
|
215
|
-
const length = a.sub(b).magnitude;
|
|
216
|
-
const pointCount = Math.min(Math.round(length * density), pointsLeft) + 1;
|
|
217
|
-
for (let j = 1; j < pointCount; j++) {
|
|
218
|
-
points.splice(++i, 0, Vector2.lerp(a, b, j / pointCount));
|
|
219
|
-
}
|
|
220
|
-
i++;
|
|
222
|
+
childrenBBox() {
|
|
223
|
+
let points = this.tweenedPoints();
|
|
224
|
+
if (!points) {
|
|
225
|
+
const custom = this.points();
|
|
226
|
+
points = custom
|
|
227
|
+
? custom.map(signal => new Vector2(unwrap(signal)))
|
|
228
|
+
: this.children()
|
|
229
|
+
.filter(child => !(child instanceof Layout) || child.isLayoutRoot())
|
|
230
|
+
.map(child => child.position());
|
|
231
|
+
}
|
|
232
|
+
return BBox.fromPoints(...points);
|
|
221
233
|
}
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
const fromPoints = [...this.parsedPoints()];
|
|
225
|
-
const toPoints = this.parsePoints(unwrap(value));
|
|
226
|
-
const closed = this.closed();
|
|
227
|
-
const diff = fromPoints.length - toPoints.length;
|
|
228
|
-
Line_1.distributePoints(diff < 0 ? fromPoints : toPoints, Math.abs(diff));
|
|
229
|
-
Line_1.rotatePoints(toPoints, fromPoints, closed);
|
|
230
|
-
this.tweenedPoints(fromPoints);
|
|
231
|
-
yield* tween(
|
|
232
|
-
time,
|
|
233
|
-
value => {
|
|
234
|
-
const progress = timingFunction(value);
|
|
235
|
-
this.tweenedPoints(polygonPointsLerp(fromPoints, toPoints, progress));
|
|
236
|
-
},
|
|
237
|
-
() => {
|
|
238
|
-
this.tweenedPoints(null);
|
|
239
|
-
this.points(value);
|
|
240
|
-
},
|
|
241
|
-
);
|
|
242
|
-
}
|
|
243
|
-
constructor(props) {
|
|
244
|
-
super(props);
|
|
245
|
-
this.tweenedPoints = createSignal(null);
|
|
246
|
-
if (props.children === undefined && props.points === undefined) {
|
|
247
|
-
useLogger().warn({
|
|
248
|
-
message: 'No points specified for the line',
|
|
249
|
-
remarks:
|
|
250
|
-
'<p>The line won't be visible unless you specify at least two points:</p>\n<pre class=""><code class="language-tsx"><<span class="hljs-title class_">Line</span>\n stroke=<span class="hljs-string">"#fff"</span>\n lineWidth={<span class="hljs-number">8</span>}\n points={[\n [<span class="hljs-number">100</span>, <span class="hljs-number">0</span>],\n [<span class="hljs-number">0</span>, <span class="hljs-number">0</span>],\n [<span class="hljs-number">0</span>, <span class="hljs-number">100</span>],\n ]}\n/></code></pre><p>Alternatively, you can define the points using the children:</p>\n<pre class=""><code class="language-tsx"><<span class="hljs-title class_">Line</span> stroke=<span class="hljs-string">"#fff"</span> lineWidth={<span class="hljs-number">8</span>}>\n <span class="language-xml"><span class="hljs-tag"><<span class="hljs-name">Node</span> <span class="hljs-attr">x</span>=<span class="hljs-string">{100}</span> /></span></span>\n <span class="language-xml"><span class="hljs-tag"><<span class="hljs-name">Node</span> /></span></span>\n <span class="language-xml"><span class="hljs-tag"><<span class="hljs-name">Node</span> <span class="hljs-attr">y</span>=<span class="hljs-string">{100}</span> /></span></span>\n</<span class="hljs-title class_">Line</span>></code></pre><p>If you did this intentionally, and want to disable this message, set the\n<code>points</code> property to <code>null</code>:</p>\n<pre class=""><code class="language-tsx"><<span class="hljs-title class_">Line</span> stroke=<span class="hljs-string">"#fff"</span> lineWidth={<span class="hljs-number">8</span>} points={<span class="hljs-literal">null</span>} /></code></pre>',
|
|
251
|
-
inspect: this.key,
|
|
252
|
-
});
|
|
234
|
+
parsedPoints() {
|
|
235
|
+
return this.parsePoints(this.points());
|
|
253
236
|
}
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
let points = this.tweenedPoints();
|
|
257
|
-
if (!points) {
|
|
258
|
-
const custom = this.points();
|
|
259
|
-
points = custom
|
|
260
|
-
? custom.map(signal => new Vector2(unwrap(signal)))
|
|
261
|
-
: this.children()
|
|
262
|
-
.filter(child => !(child instanceof Layout) || child.isLayoutRoot())
|
|
263
|
-
.map(child => child.position());
|
|
237
|
+
profile() {
|
|
238
|
+
return getPolylineProfile(this.tweenedPoints() ?? this.parsedPoints(), this.radius(), this.closed());
|
|
264
239
|
}
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
}
|
|
277
|
-
lineWidthCoefficient() {
|
|
278
|
-
const radius = this.radius();
|
|
279
|
-
const join = this.lineJoin();
|
|
280
|
-
let coefficient = super.lineWidthCoefficient();
|
|
281
|
-
if (radius === 0 && join === 'miter') {
|
|
282
|
-
const {minSin} = this.profile();
|
|
283
|
-
if (minSin > 0) {
|
|
284
|
-
coefficient = Math.max(coefficient, 0.5 / minSin);
|
|
285
|
-
}
|
|
240
|
+
lineWidthCoefficient() {
|
|
241
|
+
const radius = this.radius();
|
|
242
|
+
const join = this.lineJoin();
|
|
243
|
+
let coefficient = super.lineWidthCoefficient();
|
|
244
|
+
if (radius === 0 && join === 'miter') {
|
|
245
|
+
const { minSin } = this.profile();
|
|
246
|
+
if (minSin > 0) {
|
|
247
|
+
coefficient = Math.max(coefficient, 0.5 / minSin);
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
return coefficient;
|
|
286
251
|
}
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
252
|
+
drawOverlay(context, matrix) {
|
|
253
|
+
const box = this.childrenBBox().transformCorners(matrix);
|
|
254
|
+
const size = this.computedSize();
|
|
255
|
+
const offset = size.mul(this.offset()).scale(0.5).transformAsPoint(matrix);
|
|
256
|
+
context.fillStyle = 'white';
|
|
257
|
+
context.strokeStyle = 'black';
|
|
258
|
+
context.lineWidth = 1;
|
|
259
|
+
const path = new Path2D();
|
|
260
|
+
const points = (this.tweenedPoints() ?? this.parsedPoints()).map(point => point.transformAsPoint(matrix));
|
|
261
|
+
if (points.length > 0) {
|
|
262
|
+
moveTo(path, points[0]);
|
|
263
|
+
for (const point of points) {
|
|
264
|
+
lineTo(path, point);
|
|
265
|
+
context.beginPath();
|
|
266
|
+
arc(context, point, 4);
|
|
267
|
+
context.closePath();
|
|
268
|
+
context.fill();
|
|
269
|
+
context.stroke();
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
context.strokeStyle = 'white';
|
|
273
|
+
context.stroke(path);
|
|
304
274
|
context.beginPath();
|
|
305
|
-
|
|
275
|
+
drawPivot(context, offset);
|
|
276
|
+
context.stroke();
|
|
277
|
+
context.beginPath();
|
|
278
|
+
drawLine(context, box);
|
|
306
279
|
context.closePath();
|
|
307
|
-
context.fill();
|
|
308
280
|
context.stroke();
|
|
309
|
-
}
|
|
310
281
|
}
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
__decorate([
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
__decorate([
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
282
|
+
parsePoints(points) {
|
|
283
|
+
return points
|
|
284
|
+
? points.map(signal => new Vector2(unwrap(signal)))
|
|
285
|
+
: this.children().map(child => child.position());
|
|
286
|
+
}
|
|
287
|
+
};
|
|
288
|
+
__decorate([
|
|
289
|
+
initial(0),
|
|
290
|
+
signal()
|
|
291
|
+
], Line.prototype, "radius", void 0);
|
|
292
|
+
__decorate([
|
|
293
|
+
initial(null),
|
|
294
|
+
signal()
|
|
295
|
+
], Line.prototype, "points", void 0);
|
|
296
|
+
__decorate([
|
|
297
|
+
threadable()
|
|
298
|
+
], Line.prototype, "tweenPoints", null);
|
|
299
|
+
__decorate([
|
|
300
|
+
computed()
|
|
301
|
+
], Line.prototype, "childrenBBox", null);
|
|
302
|
+
__decorate([
|
|
303
|
+
computed()
|
|
304
|
+
], Line.prototype, "parsedPoints", null);
|
|
305
|
+
__decorate([
|
|
306
|
+
computed()
|
|
307
|
+
], Line.prototype, "profile", null);
|
|
308
|
+
Line = Line_1 = __decorate([
|
|
309
|
+
nodeName('Line')
|
|
310
|
+
], Line);
|
|
311
|
+
export { Line };
|
|
312
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGluZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9MaW5lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxPQUFPLEVBQ0wsSUFBSSxFQUNKLFlBQVksRUFJWixVQUFVLEVBR1YsS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEVBQ1QsT0FBTyxHQUNSLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBZSxrQkFBa0IsRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUMzRCxPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLGFBQWEsRUFDYixpQkFBaUIsR0FDbEIsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxQyxPQUFPLEVBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2xFLE9BQU8sRUFBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBRWxFLE9BQU8sRUFBQyxLQUFLLEVBQWEsTUFBTSxTQUFTLENBQUM7QUFDMUMsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLFVBQVUsQ0FBQztBQWFoQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F3R0c7QUFFSSxJQUFNLElBQUksWUFBVixNQUFNLElBQUssU0FBUSxLQUFLO0lBQzdCOzs7Ozs7T0FNRztJQUNLLE1BQU0sQ0FBQyxZQUFZLENBQ3pCLE1BQWlCLEVBQ2pCLFNBQW9CLEVBQ3BCLE1BQWU7UUFFZixJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsSUFBSSxXQUFXLEdBQUcsUUFBUSxDQUFDO1lBQzNCLElBQUksVUFBVSxHQUFHLENBQUMsQ0FBQztZQUNuQixLQUFLLElBQUksTUFB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
|