@revideo/2d 0.1.0 → 0.1.4-alpha.878

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