@revideo/2d 0.2.5 → 0.2.6-alpha.904

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 (69) hide show
  1. package/lib/components/Audio.d.ts +11 -11
  2. package/lib/components/Audio.d.ts.map +1 -1
  3. package/lib/components/Audio.js +109 -115
  4. package/lib/components/Code.d.ts +211 -244
  5. package/lib/components/Code.d.ts.map +1 -1
  6. package/lib/components/Code.js +269 -317
  7. package/lib/components/CodeBlock.d.ts +67 -109
  8. package/lib/components/CodeBlock.d.ts.map +1 -1
  9. package/lib/components/CodeBlock.js +373 -414
  10. package/lib/components/Curve.js +269 -270
  11. package/lib/components/Grid.js +56 -63
  12. package/lib/components/Icon.js +50 -58
  13. package/lib/components/Img.d.ts +79 -86
  14. package/lib/components/Img.d.ts.map +1 -1
  15. package/lib/components/Img.js +181 -193
  16. package/lib/components/Knot.js +60 -81
  17. package/lib/components/Latex.js +65 -77
  18. package/lib/components/Layout.d.ts +413 -455
  19. package/lib/components/Layout.d.ts.map +1 -1
  20. package/lib/components/Layout.js +681 -666
  21. package/lib/components/Line.js +193 -216
  22. package/lib/components/Media.d.ts +35 -35
  23. package/lib/components/Media.d.ts.map +1 -1
  24. package/lib/components/Media.js +134 -135
  25. package/lib/components/Node.d.ts +830 -875
  26. package/lib/components/Node.d.ts.map +1 -1
  27. package/lib/components/Node.js +1314 -1383
  28. package/lib/components/SVG.js +541 -609
  29. package/lib/components/Shape.d.ts +35 -44
  30. package/lib/components/Shape.d.ts.map +1 -1
  31. package/lib/components/Shape.js +127 -112
  32. package/lib/components/Spline.js +175 -190
  33. package/lib/components/Txt.d.ts +44 -55
  34. package/lib/components/Txt.d.ts.map +1 -1
  35. package/lib/components/Txt.js +155 -156
  36. package/lib/components/TxtLeaf.d.ts +16 -20
  37. package/lib/components/TxtLeaf.d.ts.map +1 -1
  38. package/lib/components/TxtLeaf.js +2 -2
  39. package/lib/components/Video.d.ts +45 -41
  40. package/lib/components/Video.d.ts.map +1 -1
  41. package/lib/components/Video.js +202 -138
  42. package/lib/components/View2D.d.ts +22 -21
  43. package/lib/components/View2D.d.ts.map +1 -1
  44. package/lib/components/View2D.js +89 -98
  45. package/lib/components/index.js +1 -1
  46. package/lib/components/types.js +1 -1
  47. package/lib/curves/ArcSegment.js +94 -145
  48. package/lib/scenes/Scene2D.d.ts +23 -42
  49. package/lib/scenes/Scene2D.d.ts.map +1 -1
  50. package/lib/scenes/Scene2D.js +152 -161
  51. package/lib/scenes/index.js +1 -1
  52. package/lib/scenes/makeScene2D.js +10 -10
  53. package/lib/scenes/useScene2D.js +3 -3
  54. package/lib/tsconfig.build.tsbuildinfo +1 -1
  55. package/lib/utils/CanvasUtils.d.ts +21 -93
  56. package/package.json +5 -5
  57. package/src/lib/components/Audio.ts +2 -2
  58. package/src/lib/components/Code.ts +4 -2
  59. package/src/lib/components/CodeBlock.ts +1 -1
  60. package/src/lib/components/Img.ts +2 -2
  61. package/src/lib/components/Layout.ts +2 -2
  62. package/src/lib/components/Media.ts +3 -1
  63. package/src/lib/components/Node.ts +9 -9
  64. package/src/lib/components/Shape.ts +2 -2
  65. package/src/lib/components/Txt.ts +2 -2
  66. package/src/lib/components/TxtLeaf.ts +1 -1
  67. package/src/lib/components/Video.ts +114 -8
  68. package/src/lib/components/View2D.ts +6 -2
  69. package/src/lib/scenes/Scene2D.ts +4 -3
@@ -1,285 +1,284 @@
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;
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
- };
20
- import {Vector2, clamp} from '@revideo/core';
21
- import {getPointAtDistance} from '../curves/getPointAtDistance';
22
- import {computed, initial, nodeName, signal} from '../decorators';
23
- import {lineTo, moveTo, resolveCanvasStyle} from '../utils';
24
- import {Shape} from './Shape';
6
+ };
7
+ import { Vector2, clamp, } from '@revideo/core';
8
+ import { getPointAtDistance } from '../curves/getPointAtDistance';
9
+ import { computed, initial, nodeName, signal } from '../decorators';
10
+ import { lineTo, moveTo, resolveCanvasStyle } from '../utils';
11
+ import { Shape } from './Shape';
25
12
  let Curve = class Curve extends Shape {
26
- desiredSize() {
27
- return this.childrenBBox().size;
28
- }
29
- constructor(props) {
30
- super(props);
31
- this.canHaveSubpath = false;
32
- }
33
- /**
34
- * Convert a percentage along the curve to a distance.
35
- *
36
- * @remarks
37
- * The returned distance is given in relation to the full curve, not
38
- * accounting for {@link startOffset} and {@link endOffset}.
39
- *
40
- * @param value - The percentage along the curve.
41
- */
42
- percentageToDistance(value) {
43
- return clamp(
44
- 0,
45
- this.baseArcLength(),
46
- this.startOffset() + this.offsetArcLength() * value,
47
- );
48
- }
49
- /**
50
- * Convert a distance along the curve to a percentage.
51
- *
52
- * @remarks
53
- * The distance should be given in relation to the full curve, not
54
- * accounting for {@link startOffset} and {@link endOffset}.
55
- *
56
- * @param value - The distance along the curve.
57
- */
58
- distanceToPercentage(value) {
59
- return (value - this.startOffset()) / this.offsetArcLength();
60
- }
61
- /**
62
- * The base arc length of this curve.
63
- *
64
- * @remarks
65
- * This is the entire length of this curve, not accounting for
66
- * {@link startOffset | the offsets}.
67
- */
68
- baseArcLength() {
69
- return this.profile().arcLength;
70
- }
71
- /**
72
- * The offset arc length of this curve.
73
- *
74
- * @remarks
75
- * This is the length of the curve that accounts for
76
- * {@link startOffset | the offsets}.
77
- */
78
- offsetArcLength() {
79
- const startOffset = this.startOffset();
80
- const endOffset = this.endOffset();
81
- const baseLength = this.baseArcLength();
82
- return clamp(0, baseLength, baseLength - startOffset - endOffset);
83
- }
84
- /**
85
- * The visible arc length of this curve.
86
- *
87
- * @remarks
88
- * This arc length accounts for both the offset and the {@link start} and
89
- * {@link end} properties.
90
- */
91
- arcLength() {
92
- return this.offsetArcLength() * Math.abs(this.start() - this.end());
93
- }
94
- /**
95
- * The percentage of the curve that's currently visible.
96
- *
97
- * @remarks
98
- * The returned value is the ratio between the visible length (as defined by
99
- * {@link start} and {@link end}) and the offset length of the curve.
100
- */
101
- completion() {
102
- return Math.abs(this.start() - this.end());
103
- }
104
- processSubpath(
13
+ desiredSize() {
14
+ return this.childrenBBox().size;
15
+ }
16
+ constructor(props) {
17
+ super(props);
18
+ this.canHaveSubpath = false;
19
+ }
20
+ /**
21
+ * Convert a percentage along the curve to a distance.
22
+ *
23
+ * @remarks
24
+ * The returned distance is given in relation to the full curve, not
25
+ * accounting for {@link startOffset} and {@link endOffset}.
26
+ *
27
+ * @param value - The percentage along the curve.
28
+ */
29
+ percentageToDistance(value) {
30
+ return clamp(0, this.baseArcLength(), this.startOffset() + this.offsetArcLength() * value);
31
+ }
32
+ /**
33
+ * Convert a distance along the curve to a percentage.
34
+ *
35
+ * @remarks
36
+ * The distance should be given in relation to the full curve, not
37
+ * accounting for {@link startOffset} and {@link endOffset}.
38
+ *
39
+ * @param value - The distance along the curve.
40
+ */
41
+ distanceToPercentage(value) {
42
+ return (value - this.startOffset()) / this.offsetArcLength();
43
+ }
44
+ /**
45
+ * The base arc length of this curve.
46
+ *
47
+ * @remarks
48
+ * This is the entire length of this curve, not accounting for
49
+ * {@link startOffset | the offsets}.
50
+ */
51
+ baseArcLength() {
52
+ return this.profile().arcLength;
53
+ }
54
+ /**
55
+ * The offset arc length of this curve.
56
+ *
57
+ * @remarks
58
+ * This is the length of the curve that accounts for
59
+ * {@link startOffset | the offsets}.
60
+ */
61
+ offsetArcLength() {
62
+ const startOffset = this.startOffset();
63
+ const endOffset = this.endOffset();
64
+ const baseLength = this.baseArcLength();
65
+ return clamp(0, baseLength, baseLength - startOffset - endOffset);
66
+ }
67
+ /**
68
+ * The visible arc length of this curve.
69
+ *
70
+ * @remarks
71
+ * This arc length accounts for both the offset and the {@link start} and
72
+ * {@link end} properties.
73
+ */
74
+ arcLength() {
75
+ return this.offsetArcLength() * Math.abs(this.start() - this.end());
76
+ }
77
+ /**
78
+ * The percentage of the curve that's currently visible.
79
+ *
80
+ * @remarks
81
+ * The returned value is the ratio between the visible length (as defined by
82
+ * {@link start} and {@link end}) and the offset length of the curve.
83
+ */
84
+ completion() {
85
+ return Math.abs(this.start() - this.end());
86
+ }
87
+ processSubpath(
105
88
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
106
- _path,
89
+ _path,
107
90
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
108
- _startPoint,
91
+ _startPoint,
109
92
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
110
- _endPoint,
111
- ) {
112
- // do nothing
113
- }
114
- curveDrawingInfo() {
115
- const path = new Path2D();
116
- let subpath = new Path2D();
117
- const profile = this.profile();
118
- let start = this.percentageToDistance(this.start());
119
- let end = this.percentageToDistance(this.end());
120
- if (start > end) {
121
- [start, end] = [end, start];
93
+ _endPoint) {
94
+ // do nothing
122
95
  }
123
- const distance = end - start;
124
- const arrowSize = Math.min(distance / 2, this.arrowSize());
125
- if (this.startArrow()) {
126
- start += arrowSize / 2;
96
+ curveDrawingInfo() {
97
+ const path = new Path2D();
98
+ let subpath = new Path2D();
99
+ const profile = this.profile();
100
+ let start = this.percentageToDistance(this.start());
101
+ let end = this.percentageToDistance(this.end());
102
+ if (start > end) {
103
+ [start, end] = [end, start];
104
+ }
105
+ const distance = end - start;
106
+ const arrowSize = Math.min(distance / 2, this.arrowSize());
107
+ if (this.startArrow()) {
108
+ start += arrowSize / 2;
109
+ }
110
+ if (this.endArrow()) {
111
+ end -= arrowSize / 2;
112
+ }
113
+ let length = 0;
114
+ let startPoint = null;
115
+ let startTangent = null;
116
+ let endPoint = null;
117
+ let endTangent = null;
118
+ for (const segment of profile.segments) {
119
+ const previousLength = length;
120
+ length += segment.arcLength;
121
+ if (length < start) {
122
+ continue;
123
+ }
124
+ const relativeStart = (start - previousLength) / segment.arcLength;
125
+ const relativeEnd = (end - previousLength) / segment.arcLength;
126
+ const clampedStart = clamp(0, 1, relativeStart);
127
+ const clampedEnd = clamp(0, 1, relativeEnd);
128
+ if (this.canHaveSubpath &&
129
+ endPoint &&
130
+ !segment.getPoint(0).position.equals(endPoint)) {
131
+ path.addPath(subpath);
132
+ this.processSubpath(subpath, startPoint, endPoint);
133
+ subpath = new Path2D();
134
+ startPoint = null;
135
+ }
136
+ const [startCurvePoint, endCurvePoint] = segment.draw(subpath, clampedStart, clampedEnd, startPoint === null);
137
+ if (startPoint === null) {
138
+ startPoint = startCurvePoint.position;
139
+ startTangent = startCurvePoint.normal.flipped.perpendicular;
140
+ }
141
+ endPoint = endCurvePoint.position;
142
+ endTangent = endCurvePoint.normal.flipped.perpendicular;
143
+ if (length > end) {
144
+ break;
145
+ }
146
+ }
147
+ if (this.closed() &&
148
+ this.start.isInitial() &&
149
+ this.end.isInitial() &&
150
+ this.startOffset.isInitial() &&
151
+ this.endOffset.isInitial()) {
152
+ subpath.closePath();
153
+ }
154
+ this.processSubpath(subpath, startPoint, endPoint);
155
+ path.addPath(subpath);
156
+ return {
157
+ startPoint: startPoint ?? Vector2.zero,
158
+ startTangent: startTangent ?? Vector2.right,
159
+ endPoint: endPoint ?? Vector2.zero,
160
+ endTangent: endTangent ?? Vector2.right,
161
+ arrowSize,
162
+ path,
163
+ startOffset: start,
164
+ };
127
165
  }
128
- if (this.endArrow()) {
129
- end -= arrowSize / 2;
166
+ getPointAtDistance(value) {
167
+ return getPointAtDistance(this.profile(), value + this.startOffset());
130
168
  }
131
- let length = 0;
132
- let startPoint = null;
133
- let startTangent = null;
134
- let endPoint = null;
135
- let endTangent = null;
136
- for (const segment of profile.segments) {
137
- const previousLength = length;
138
- length += segment.arcLength;
139
- if (length < start) {
140
- continue;
141
- }
142
- const relativeStart = (start - previousLength) / segment.arcLength;
143
- const relativeEnd = (end - previousLength) / segment.arcLength;
144
- const clampedStart = clamp(0, 1, relativeStart);
145
- const clampedEnd = clamp(0, 1, relativeEnd);
146
- if (
147
- this.canHaveSubpath &&
148
- endPoint &&
149
- !segment.getPoint(0).position.equals(endPoint)
150
- ) {
151
- path.addPath(subpath);
152
- this.processSubpath(subpath, startPoint, endPoint);
153
- subpath = new Path2D();
154
- startPoint = null;
155
- }
156
- const [startCurvePoint, endCurvePoint] = segment.draw(
157
- subpath,
158
- clampedStart,
159
- clampedEnd,
160
- startPoint === null,
161
- );
162
- if (startPoint === null) {
163
- startPoint = startCurvePoint.position;
164
- startTangent = startCurvePoint.normal.flipped.perpendicular;
165
- }
166
- endPoint = endCurvePoint.position;
167
- endTangent = endCurvePoint.normal.flipped.perpendicular;
168
- if (length > end) {
169
- break;
170
- }
169
+ getPointAtPercentage(value) {
170
+ return getPointAtDistance(this.profile(), this.percentageToDistance(value));
171
+ }
172
+ getComputedLayout() {
173
+ return this.offsetComputedLayout(super.getComputedLayout());
174
+ }
175
+ offsetComputedLayout(box) {
176
+ box.position = box.position.sub(this.childrenBBox().center);
177
+ return box;
178
+ }
179
+ getPath() {
180
+ return this.curveDrawingInfo().path;
181
+ }
182
+ getCacheBBox() {
183
+ const box = this.childrenBBox();
184
+ const arrowSize = this.startArrow() || this.endArrow() ? this.arrowSize() : 0;
185
+ const lineWidth = this.lineWidth();
186
+ const coefficient = this.lineWidthCoefficient();
187
+ return box.expand(Math.max(0, arrowSize, lineWidth * coefficient));
171
188
  }
172
- if (
173
- this.closed() &&
174
- this.start.isInitial() &&
175
- this.end.isInitial() &&
176
- this.startOffset.isInitial() &&
177
- this.endOffset.isInitial()
178
- ) {
179
- subpath.closePath();
189
+ lineWidthCoefficient() {
190
+ return this.lineCap() === 'square' ? 0.5 * 1.4143 : 0.5;
180
191
  }
181
- this.processSubpath(subpath, startPoint, endPoint);
182
- path.addPath(subpath);
183
- return {
184
- startPoint: startPoint ?? Vector2.zero,
185
- startTangent: startTangent ?? Vector2.right,
186
- endPoint: endPoint ?? Vector2.zero,
187
- endTangent: endTangent ?? Vector2.right,
188
- arrowSize,
189
- path,
190
- startOffset: start,
191
- };
192
- }
193
- getPointAtDistance(value) {
194
- return getPointAtDistance(this.profile(), value + this.startOffset());
195
- }
196
- getPointAtPercentage(value) {
197
- return getPointAtDistance(this.profile(), this.percentageToDistance(value));
198
- }
199
- getComputedLayout() {
200
- return this.offsetComputedLayout(super.getComputedLayout());
201
- }
202
- offsetComputedLayout(box) {
203
- box.position = box.position.sub(this.childrenBBox().center);
204
- return box;
205
- }
206
- getPath() {
207
- return this.curveDrawingInfo().path;
208
- }
209
- getCacheBBox() {
210
- const box = this.childrenBBox();
211
- const arrowSize =
212
- this.startArrow() || this.endArrow() ? this.arrowSize() : 0;
213
- const lineWidth = this.lineWidth();
214
- const coefficient = this.lineWidthCoefficient();
215
- return box.expand(Math.max(0, arrowSize, lineWidth * coefficient));
216
- }
217
- lineWidthCoefficient() {
218
- return this.lineCap() === 'square' ? 0.5 * 1.4143 : 0.5;
219
- }
220
- /**
221
- * Check if the path requires a profile.
222
- *
223
- * @remarks
224
- * The profile is only required if certain features are used. Otherwise, the
225
- * profile generation can be skipped, and the curve can be drawn directly
226
- * using the 2D context.
227
- */
228
- requiresProfile() {
229
- return (
230
- !this.start.isInitial() ||
231
- !this.startOffset.isInitial() ||
232
- !this.startArrow.isInitial() ||
233
- !this.end.isInitial() ||
234
- !this.endOffset.isInitial() ||
235
- !this.endArrow.isInitial()
236
- );
237
- }
238
- drawShape(context) {
239
- super.drawShape(context);
240
- if (this.startArrow() || this.endArrow()) {
241
- this.drawArrows(context);
192
+ /**
193
+ * Check if the path requires a profile.
194
+ *
195
+ * @remarks
196
+ * The profile is only required if certain features are used. Otherwise, the
197
+ * profile generation can be skipped, and the curve can be drawn directly
198
+ * using the 2D context.
199
+ */
200
+ requiresProfile() {
201
+ return (!this.start.isInitial() ||
202
+ !this.startOffset.isInitial() ||
203
+ !this.startArrow.isInitial() ||
204
+ !this.end.isInitial() ||
205
+ !this.endOffset.isInitial() ||
206
+ !this.endArrow.isInitial());
242
207
  }
243
- }
244
- drawArrows(context) {
245
- const {startPoint, startTangent, endPoint, endTangent, arrowSize} =
246
- this.curveDrawingInfo();
247
- if (arrowSize < 0.001) {
248
- return;
208
+ drawShape(context) {
209
+ super.drawShape(context);
210
+ if (this.startArrow() || this.endArrow()) {
211
+ this.drawArrows(context);
212
+ }
249
213
  }
250
- context.save();
251
- context.beginPath();
252
- if (this.endArrow()) {
253
- this.drawArrow(context, endPoint, endTangent.flipped, arrowSize);
214
+ drawArrows(context) {
215
+ const { startPoint, startTangent, endPoint, endTangent, arrowSize } = this.curveDrawingInfo();
216
+ if (arrowSize < 0.001) {
217
+ return;
218
+ }
219
+ context.save();
220
+ context.beginPath();
221
+ if (this.endArrow()) {
222
+ this.drawArrow(context, endPoint, endTangent.flipped, arrowSize);
223
+ }
224
+ if (this.startArrow()) {
225
+ this.drawArrow(context, startPoint, startTangent, arrowSize);
226
+ }
227
+ context.fillStyle = resolveCanvasStyle(this.stroke(), context);
228
+ context.closePath();
229
+ context.fill();
230
+ context.restore();
254
231
  }
255
- if (this.startArrow()) {
256
- this.drawArrow(context, startPoint, startTangent, arrowSize);
232
+ drawArrow(context, center, tangent, arrowSize) {
233
+ const normal = tangent.perpendicular;
234
+ const origin = center.add(tangent.scale(-arrowSize / 2));
235
+ moveTo(context, origin);
236
+ lineTo(context, origin.add(tangent.add(normal).scale(arrowSize)));
237
+ lineTo(context, origin.add(tangent.sub(normal).scale(arrowSize)));
238
+ lineTo(context, origin);
239
+ context.closePath();
257
240
  }
258
- context.fillStyle = resolveCanvasStyle(this.stroke(), context);
259
- context.closePath();
260
- context.fill();
261
- context.restore();
262
- }
263
- drawArrow(context, center, tangent, arrowSize) {
264
- const normal = tangent.perpendicular;
265
- const origin = center.add(tangent.scale(-arrowSize / 2));
266
- moveTo(context, origin);
267
- lineTo(context, origin.add(tangent.add(normal).scale(arrowSize)));
268
- lineTo(context, origin.add(tangent.sub(normal).scale(arrowSize)));
269
- lineTo(context, origin);
270
- context.closePath();
271
- }
272
241
  };
273
- __decorate([initial(false), signal()], Curve.prototype, 'closed', void 0);
274
- __decorate([initial(0), signal()], Curve.prototype, 'start', void 0);
275
- __decorate([initial(0), signal()], Curve.prototype, 'startOffset', void 0);
276
- __decorate([initial(false), signal()], Curve.prototype, 'startArrow', void 0);
277
- __decorate([initial(1), signal()], Curve.prototype, 'end', void 0);
278
- __decorate([initial(0), signal()], Curve.prototype, 'endOffset', void 0);
279
- __decorate([initial(false), signal()], Curve.prototype, 'endArrow', void 0);
280
- __decorate([initial(24), signal()], Curve.prototype, 'arrowSize', void 0);
281
- __decorate([computed()], Curve.prototype, 'arcLength', null);
282
- __decorate([computed()], Curve.prototype, 'curveDrawingInfo', null);
283
- Curve = __decorate([nodeName('Curve')], Curve);
284
- export {Curve};
285
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3VydmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvQ3VydmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsT0FBTyxFQUtMLE9BQU8sRUFDUCxLQUFLLEdBQ04sTUFBTSxlQUFlLENBQUM7QUFJdkIsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVsRSxPQUFPLEVBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxrQkFBa0IsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUM1RCxPQUFPLEVBQUMsS0FBSyxFQUFhLE1BQU0sU0FBUyxDQUFDO0FBc0NuQyxJQUFlLEtBQUssR0FBcEIsTUFBZSxLQUFNLFNBQVEsS0FBSztJQTRHcEIsV0FBVztRQUM1QixPQUFPLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUM7SUFDbEMsQ0FBQztJQUVELFlBQW1CLEtBQWlCO1FBQ2xDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQVBMLG1CQUFjLEdBQUcsS0FBSyxDQUFDO0lBUWpDLENBQUM7SUFNRDs7Ozs7Ozs7T0FRRztJQUNJLG9CQUFvQixDQUFDLEtBQWE7UUFDdkMsT0FBTyxLQUFLLENBQ1YsQ0FBQyxFQUNELElBQUksQ0FBQyxhQUFhLEVBQUUsRUFDcEIsSUFBSSxDQUFDLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsR0FBRyxLQUFLLENBQ3BELENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSSxvQkFBb0IsQ0FBQyxLQUFhO1FBQ3ZDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQy9ELENBQUM7SUFFRDs7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
242
+ __decorate([
243
+ initial(false),
244
+ signal()
245
+ ], Curve.prototype, "closed", void 0);
246
+ __decorate([
247
+ initial(0),
248
+ signal()
249
+ ], Curve.prototype, "start", void 0);
250
+ __decorate([
251
+ initial(0),
252
+ signal()
253
+ ], Curve.prototype, "startOffset", void 0);
254
+ __decorate([
255
+ initial(false),
256
+ signal()
257
+ ], Curve.prototype, "startArrow", void 0);
258
+ __decorate([
259
+ initial(1),
260
+ signal()
261
+ ], Curve.prototype, "end", void 0);
262
+ __decorate([
263
+ initial(0),
264
+ signal()
265
+ ], Curve.prototype, "endOffset", void 0);
266
+ __decorate([
267
+ initial(false),
268
+ signal()
269
+ ], Curve.prototype, "endArrow", void 0);
270
+ __decorate([
271
+ initial(24),
272
+ signal()
273
+ ], Curve.prototype, "arrowSize", void 0);
274
+ __decorate([
275
+ computed()
276
+ ], Curve.prototype, "arcLength", null);
277
+ __decorate([
278
+ computed()
279
+ ], Curve.prototype, "curveDrawingInfo", null);
280
+ Curve = __decorate([
281
+ nodeName('Curve')
282
+ ], Curve);
283
+ export { Curve };
284
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3VydmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvQ3VydmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsT0FBTyxFQUtMLE9BQU8sRUFDUCxLQUFLLEdBQ04sTUFBTSxlQUFlLENBQUM7QUFJdkIsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVsRSxPQUFPLEVBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxrQkFBa0IsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUM1RCxPQUFPLEVBQUMsS0FBSyxFQUFhLE1BQU0sU0FBUyxDQUFDO0FBc0NuQyxJQUFlLEtBQUssR0FBcEIsTUFBZSxLQUFNLFNBQVEsS0FBSztJQTRHcEIsV0FBVztRQUM1QixPQUFPLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUM7SUFDbEMsQ0FBQztJQUVELFlBQW1CLEtBQWlCO1FBQ2xDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQVBMLG1CQUFjLEdBQUcsS0FBSyxDQUFDO0lBUWpDLENBQUM7SUFNRDs7Ozs7Ozs7T0FRRztJQUNJLG9CQUFvQixDQUFDLEtBQWE7UUFDdkMsT0FBTyxLQUFLLENBQ1YsQ0FBQyxFQUNELElBQUksQ0FBQyxhQUFhLEVBQUUsRUFDcEIsSUFBSSxDQUFDLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsR0FBRyxLQUFLLENBQ3BELENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSSxvQkFBb0IsQ0FBQyxLQUFhO1FBQ3ZDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQy9ELENBQUM7SUFFRDs7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