@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,35 +1,14 @@
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
- };
6
+ };
20
7
  var Img_1;
21
- import {
22
- BBox,
23
- Color,
24
- DependencyContext,
25
- DetailedError,
26
- Vector2,
27
- useLogger,
28
- viaProxy,
29
- } from '@revideo/core';
30
- import {computed, initial, nodeName, signal} from '../decorators';
31
- import {drawImage} from '../utils';
32
- import {Rect} from './Rect';
8
+ import { BBox, Color, DependencyContext, DetailedError, Vector2, useLogger, viaProxy, } from '@revideo/core';
9
+ import { computed, initial, nodeName, signal } from '../decorators';
10
+ import { drawImage } from '../utils';
11
+ import { Rect } from './Rect';
33
12
  /**
34
13
  * A node for displaying images.
35
14
  *
@@ -63,58 +42,54 @@ import {Rect} from './Rect';
63
42
  * });
64
43
  * ```
65
44
  */
66
- let Img = (Img_1 = class Img extends Rect {
67
- constructor(props) {
68
- super(props);
69
- if (!('src' in props)) {
70
- useLogger().warn({
71
- message: 'No source specified for the image',
72
- remarks:
73
- '<p>The image won&#39;t be visible unless you specify a source:</p>\n<pre class=""><code class="language-tsx"><span class="hljs-keyword">import</span> myImage <span class="hljs-keyword">from</span> <span class="hljs-string">&#x27;./example.png&#x27;</span>;\n<span class="hljs-comment">// ...</span>\n<span class="language-xml"><span class="hljs-tag">&lt;<span class="hljs-name">Img</span> <span class="hljs-attr">src</span>=<span class="hljs-string">{myImage}</span> /&gt;</span></span>;</code></pre><p>If you did this intentionally, and don&#39;t want to see this warning, set the <code>src</code>\nproperty to <code>null</code>:</p>\n<pre class=""><code class="language-tsx">&lt;<span class="hljs-title class_">Img</span> src={<span class="hljs-literal">null</span>} /&gt;</code></pre><p><a href=\'https://motioncanvas.io/docs/media#images\' target=\'_blank\'>Learn more</a> about working with\nimages.</p>\n',
74
- inspect: this.key,
75
- });
76
- }
77
- }
78
- desiredSize() {
79
- const custom = super.desiredSize();
80
- if (custom.x === null && custom.y === null) {
81
- const image = this.image();
82
- return {
83
- x: image.naturalWidth,
84
- y: image.naturalHeight,
85
- };
86
- }
87
- return custom;
88
- }
89
- image() {
90
- const rawSrc = this.src();
91
- let src = '';
92
- let key = '';
93
- if (rawSrc) {
94
- key = viaProxy(rawSrc);
95
- const url = new URL(key, window.location.origin);
96
- if (url.origin === window.location.origin) {
97
- const hash = this.view().assetHash();
98
- url.searchParams.set('asset-hash', hash);
99
- }
100
- src = url.toString();
45
+ let Img = Img_1 = class Img extends Rect {
46
+ constructor(props) {
47
+ super(props);
48
+ if (!('src' in props)) {
49
+ useLogger().warn({
50
+ message: 'No source specified for the image',
51
+ remarks: "<p>The image won&#39;t be visible unless you specify a source:</p>\n<pre class=\"\"><code class=\"language-tsx\"><span class=\"hljs-keyword\">import</span> myImage <span class=\"hljs-keyword\">from</span> <span class=\"hljs-string\">&#x27;./example.png&#x27;</span>;\n<span class=\"hljs-comment\">// ...</span>\n<span class=\"language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">Img</span> <span class=\"hljs-attr\">src</span>=<span class=\"hljs-string\">{myImage}</span> /&gt;</span></span>;</code></pre><p>If you did this intentionally, and don&#39;t want to see this warning, set the <code>src</code>\nproperty to <code>null</code>:</p>\n<pre class=\"\"><code class=\"language-tsx\">&lt;<span class=\"hljs-title class_\">Img</span> src={<span class=\"hljs-literal\">null</span>} /&gt;</code></pre><p><a href='https://motioncanvas.io/docs/media#images' target='_blank'>Learn more</a> about working with\nimages.</p>\n",
52
+ inspect: this.key,
53
+ });
54
+ }
101
55
  }
102
- let image = Img_1.pool[key];
103
- if (!image) {
104
- image = document.createElement('img');
105
- image.crossOrigin = 'anonymous';
106
- image.src = src;
107
- Img_1.pool[key] = image;
56
+ desiredSize() {
57
+ const custom = super.desiredSize();
58
+ if (custom.x === null && custom.y === null) {
59
+ const image = this.image();
60
+ return {
61
+ x: image.naturalWidth,
62
+ y: image.naturalHeight,
63
+ };
64
+ }
65
+ return custom;
108
66
  }
109
- if (!image.complete) {
110
- DependencyContext.collectPromise(
111
- new Promise((resolve, reject) => {
112
- image.addEventListener('load', resolve);
113
- image.addEventListener('error', () =>
114
- reject(
115
- new DetailedError({
116
- message: `Failed to load an image`,
117
- remarks: `\
67
+ image() {
68
+ const rawSrc = this.src();
69
+ let src = '';
70
+ let key = '';
71
+ if (rawSrc) {
72
+ key = viaProxy(rawSrc);
73
+ const url = new URL(key, window.location.origin);
74
+ if (url.origin === window.location.origin) {
75
+ const hash = this.view().assetHash();
76
+ url.searchParams.set('asset-hash', hash);
77
+ }
78
+ src = url.toString();
79
+ }
80
+ let image = Img_1.pool[key];
81
+ if (!image) {
82
+ image = document.createElement('img');
83
+ image.crossOrigin = 'anonymous';
84
+ image.src = src;
85
+ Img_1.pool[key] = image;
86
+ }
87
+ if (!image.complete) {
88
+ DependencyContext.collectPromise(new Promise((resolve, reject) => {
89
+ image.addEventListener('load', resolve);
90
+ image.addEventListener('error', () => reject(new DetailedError({
91
+ message: `Failed to load an image`,
92
+ remarks: `\
118
93
  The <code>src</code> property was set to:
119
94
  <pre><code>${rawSrc}</code></pre>
120
95
  ...which resolved to the following url:
@@ -122,123 +97,136 @@ The <code>src</code> property was set to:
122
97
  Make sure that source is correct and that the image exists.<br/>
123
98
  <a target='_blank' href='https://motioncanvas.io/docs/media#images'>Learn more</a>
124
99
  about working with images.`,
125
- inspect: this.key,
126
- }),
127
- ),
128
- );
129
- }),
130
- );
100
+ inspect: this.key,
101
+ })));
102
+ }));
103
+ }
104
+ return image;
131
105
  }
132
- return image;
133
- }
134
- imageCanvas() {
135
- const canvas = document
136
- .createElement('canvas')
137
- .getContext('2d', {willReadFrequently: true});
138
- if (!canvas) {
139
- throw new Error('Could not create an image canvas');
106
+ imageCanvas() {
107
+ const canvas = document
108
+ .createElement('canvas')
109
+ .getContext('2d', { willReadFrequently: true });
110
+ if (!canvas) {
111
+ throw new Error('Could not create an image canvas');
112
+ }
113
+ return canvas;
140
114
  }
141
- return canvas;
142
- }
143
- filledImageCanvas() {
144
- const context = this.imageCanvas();
145
- const image = this.image();
146
- context.canvas.width = image.naturalWidth;
147
- context.canvas.height = image.naturalHeight;
148
- context.imageSmoothingEnabled = this.smoothing();
149
- context.drawImage(image, 0, 0);
150
- return context;
151
- }
152
- draw(context) {
153
- this.drawShape(context);
154
- const alpha = this.alpha();
155
- if (alpha > 0) {
156
- const box = BBox.fromSizeCentered(this.computedSize());
157
- context.save();
158
- context.clip(this.getPath());
159
- if (alpha < 1) {
160
- context.globalAlpha *= alpha;
161
- }
162
- context.imageSmoothingEnabled = this.smoothing();
163
- drawImage(context, this.image(), box);
164
- context.restore();
115
+ filledImageCanvas() {
116
+ const context = this.imageCanvas();
117
+ const image = this.image();
118
+ context.canvas.width = image.naturalWidth;
119
+ context.canvas.height = image.naturalHeight;
120
+ context.imageSmoothingEnabled = this.smoothing();
121
+ context.drawImage(image, 0, 0);
122
+ return context;
165
123
  }
166
- if (this.clip()) {
167
- context.clip(this.getPath());
124
+ async draw(context) {
125
+ this.drawShape(context);
126
+ const alpha = this.alpha();
127
+ if (alpha > 0) {
128
+ const box = BBox.fromSizeCentered(this.computedSize());
129
+ context.save();
130
+ context.clip(this.getPath());
131
+ if (alpha < 1) {
132
+ context.globalAlpha *= alpha;
133
+ }
134
+ context.imageSmoothingEnabled = this.smoothing();
135
+ drawImage(context, this.image(), box);
136
+ context.restore();
137
+ }
138
+ if (this.clip()) {
139
+ context.clip(this.getPath());
140
+ }
141
+ await this.drawChildren(context);
142
+ }
143
+ applyFlex() {
144
+ super.applyFlex();
145
+ const image = this.image();
146
+ this.element.style.aspectRatio = (this.ratio() ?? image.naturalWidth / image.naturalHeight).toString();
147
+ }
148
+ /**
149
+ * Get color of the image at the given position.
150
+ *
151
+ * @param position - The position in local space at which to sample the color.
152
+ */
153
+ getColorAtPoint(position) {
154
+ const size = this.computedSize();
155
+ const naturalSize = this.naturalSize();
156
+ const pixelPosition = new Vector2(position)
157
+ .add(this.computedSize().scale(0.5))
158
+ .mul(naturalSize.div(size).safe);
159
+ return this.getPixelColor(pixelPosition);
160
+ }
161
+ /**
162
+ * The natural size of this image.
163
+ *
164
+ * @remarks
165
+ * The natural size is the size of the source image unaffected by the size
166
+ * and scale properties.
167
+ */
168
+ naturalSize() {
169
+ const image = this.image();
170
+ return new Vector2(image.naturalWidth, image.naturalHeight);
168
171
  }
169
- this.drawChildren(context);
170
- }
171
- applyFlex() {
172
- super.applyFlex();
173
- const image = this.image();
174
- this.element.style.aspectRatio = (
175
- this.ratio() ?? image.naturalWidth / image.naturalHeight
176
- ).toString();
177
- }
178
- /**
179
- * Get color of the image at the given position.
180
- *
181
- * @param position - The position in local space at which to sample the color.
182
- */
183
- getColorAtPoint(position) {
184
- const size = this.computedSize();
185
- const naturalSize = this.naturalSize();
186
- const pixelPosition = new Vector2(position)
187
- .add(this.computedSize().scale(0.5))
188
- .mul(naturalSize.div(size).safe);
189
- return this.getPixelColor(pixelPosition);
190
- }
191
- /**
192
- * The natural size of this image.
193
- *
194
- * @remarks
195
- * The natural size is the size of the source image unaffected by the size
196
- * and scale properties.
197
- */
198
- naturalSize() {
199
- const image = this.image();
200
- return new Vector2(image.naturalWidth, image.naturalHeight);
201
- }
202
- /**
203
- * Get color of the image at the given pixel.
204
- *
205
- * @param position - The pixel's position.
206
- */
207
- getPixelColor(position) {
208
- const context = this.filledImageCanvas();
209
- const vector = new Vector2(position);
210
- const data = context.getImageData(vector.x, vector.y, 1, 1).data;
211
- return new Color({
212
- r: data[0],
213
- g: data[1],
214
- b: data[2],
215
- a: data[3] / 255,
216
- });
217
- }
218
- collectAsyncResources() {
219
- super.collectAsyncResources();
220
- this.image();
221
- }
222
- });
172
+ /**
173
+ * Get color of the image at the given pixel.
174
+ *
175
+ * @param position - The pixel's position.
176
+ */
177
+ getPixelColor(position) {
178
+ const context = this.filledImageCanvas();
179
+ const vector = new Vector2(position);
180
+ const data = context.getImageData(vector.x, vector.y, 1, 1).data;
181
+ return new Color({
182
+ r: data[0],
183
+ g: data[1],
184
+ b: data[2],
185
+ a: data[3] / 255,
186
+ });
187
+ }
188
+ collectAsyncResources() {
189
+ super.collectAsyncResources();
190
+ this.image();
191
+ }
192
+ };
223
193
  Img.pool = {};
224
194
  (() => {
225
- if (import.meta.hot) {
226
- import.meta.hot.on('revideo:assets', ({urls}) => {
227
- for (const url of urls) {
228
- if (Img_1.pool[url]) {
229
- delete Img_1.pool[url];
230
- }
231
- }
232
- });
233
- }
195
+ if (import.meta.hot) {
196
+ import.meta.hot.on('revideo:assets', ({ urls }) => {
197
+ for (const url of urls) {
198
+ if (Img_1.pool[url]) {
199
+ delete Img_1.pool[url];
200
+ }
201
+ }
202
+ });
203
+ }
234
204
  })();
235
- __decorate([signal()], Img.prototype, 'src', void 0);
236
- __decorate([initial(1), signal()], Img.prototype, 'alpha', void 0);
237
- __decorate([initial(true), signal()], Img.prototype, 'smoothing', void 0);
238
- __decorate([computed()], Img.prototype, 'image', null);
239
- __decorate([computed()], Img.prototype, 'imageCanvas', null);
240
- __decorate([computed()], Img.prototype, 'filledImageCanvas', null);
241
- __decorate([computed()], Img.prototype, 'naturalSize', null);
242
- Img = Img_1 = __decorate([nodeName('Img')], Img);
243
- export {Img};
244
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW1nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL0ltZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsT0FBTyxFQUNMLElBQUksRUFDSixLQUFLLEVBQ0wsaUJBQWlCLEVBQ2pCLGFBQWEsRUFLYixPQUFPLEVBQ1AsU0FBUyxFQUNULFFBQVEsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRWxFLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDbkMsT0FBTyxFQUFDLElBQUksRUFBWSxNQUFNLFFBQVEsQ0FBQztBQWtCdkM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBZ0NHO0FBRUksSUFBTSxHQUFHLFdBQVQsTUFBTSxHQUFJLFNBQVEsSUFBSTtJQXlEM0IsWUFBbUIsS0FBZTtRQUNoQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDYixJQUFJLENBQUMsQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN0QixTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUM7Z0JBQ2YsT0FBTyxFQUFFLG1DQUFtQztnQkFDNUMsT0FBTyw0NkJBQW9CO2dCQUMzQixPQUFPLEVBQUUsSUFBSSxDQUFDLEdBQUc7YUFDbEIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7SUFFa0IsV0FBVztRQUM1QixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkMsSUFBSSxNQUFNLENBQUMsQ0FBQyxLQUFLLElBQUksSUFBSSxNQUFNLENBQUMsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1lBQzNDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUMzQixPQUFPO2dCQUNMLENB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
205
+ __decorate([
206
+ signal()
207
+ ], Img.prototype, "src", void 0);
208
+ __decorate([
209
+ initial(1),
210
+ signal()
211
+ ], Img.prototype, "alpha", void 0);
212
+ __decorate([
213
+ initial(true),
214
+ signal()
215
+ ], Img.prototype, "smoothing", void 0);
216
+ __decorate([
217
+ computed()
218
+ ], Img.prototype, "image", null);
219
+ __decorate([
220
+ computed()
221
+ ], Img.prototype, "imageCanvas", null);
222
+ __decorate([
223
+ computed()
224
+ ], Img.prototype, "filledImageCanvas", null);
225
+ __decorate([
226
+ computed()
227
+ ], Img.prototype, "naturalSize", null);
228
+ Img = Img_1 = __decorate([
229
+ nodeName('Img')
230
+ ], Img);
231
+ export { Img };
232
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW1nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL0ltZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsT0FBTyxFQUNMLElBQUksRUFDSixLQUFLLEVBQ0wsaUJBQWlCLEVBQ2pCLGFBQWEsRUFLYixPQUFPLEVBQ1AsU0FBUyxFQUNULFFBQVEsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRWxFLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDbkMsT0FBTyxFQUFDLElBQUksRUFBWSxNQUFNLFFBQVEsQ0FBQztBQWtCdkM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBZ0NHO0FBRUksSUFBTSxHQUFHLFdBQVQsTUFBTSxHQUFJLFNBQVEsSUFBSTtJQXlEM0IsWUFBbUIsS0FBZTtRQUNoQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDYixJQUFJLENBQUMsQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN0QixTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUM7Z0JBQ2YsT0FBTyxFQUFFLG1DQUFtQztnQkFDNUMsT0FBTyw0NkJBQW9CO2dCQUMzQixPQUFPLEVBQUUsSUFBSSxDQUFDLEdBQUc7YUFDbEIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7SUFFa0IsV0FBVztRQUM1QixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkMsSUFBSSxNQUFNLENBQUMsQ0FBQyxLQUFLLElBQUksSUFBSSxNQUFNLENBQUMsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1lBQzNDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUMzQixPQUFPO2dCQUNMLENB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
@@ -1,89 +1,68 @@
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} from '@revideo/core';
21
- import {
22
- cloneable,
23
- compound,
24
- computed,
25
- initial,
26
- parser,
27
- signal,
28
- wrapper,
29
- } from '../decorators';
30
- import {Node} from './Node';
6
+ };
7
+ import { Vector2, } from '@revideo/core';
8
+ import { cloneable, compound, computed, initial, parser, signal, wrapper, } from '../decorators';
9
+ import { Node } from './Node';
31
10
  /**
32
11
  * A node representing a knot of a {@link Spline}.
33
12
  */
34
13
  export class Knot extends Node {
35
- get startHandleAuto() {
36
- return this.auto.startHandle;
37
- }
38
- get endHandleAuto() {
39
- return this.auto.endHandle;
40
- }
41
- constructor(props) {
42
- super(
43
- props.startHandle === undefined && props.endHandle === undefined
44
- ? {auto: 1, ...props}
45
- : props,
46
- );
47
- }
48
- points() {
49
- const hasExplicitHandles =
50
- !this.startHandle.isInitial() || !this.endHandle.isInitial();
51
- const startHandle = hasExplicitHandles ? this.startHandle() : Vector2.zero;
52
- const endHandle = hasExplicitHandles ? this.endHandle() : Vector2.zero;
53
- return {
54
- position: this.position(),
55
- startHandle: startHandle.transformAsPoint(this.localToParent()),
56
- endHandle: endHandle.transformAsPoint(this.localToParent()),
57
- auto: {start: this.startHandleAuto(), end: this.endHandleAuto()},
58
- };
59
- }
60
- getDefaultEndHandle() {
61
- return this.startHandle().flipped;
62
- }
63
- getDefaultStartHandle() {
64
- return this.endHandle().flipped;
65
- }
14
+ get startHandleAuto() {
15
+ return this.auto.startHandle;
16
+ }
17
+ get endHandleAuto() {
18
+ return this.auto.endHandle;
19
+ }
20
+ constructor(props) {
21
+ super(props.startHandle === undefined && props.endHandle === undefined
22
+ ? { auto: 1, ...props }
23
+ : props);
24
+ }
25
+ points() {
26
+ const hasExplicitHandles = !this.startHandle.isInitial() || !this.endHandle.isInitial();
27
+ const startHandle = hasExplicitHandles ? this.startHandle() : Vector2.zero;
28
+ const endHandle = hasExplicitHandles ? this.endHandle() : Vector2.zero;
29
+ return {
30
+ position: this.position(),
31
+ startHandle: startHandle.transformAsPoint(this.localToParent()),
32
+ endHandle: endHandle.transformAsPoint(this.localToParent()),
33
+ auto: { start: this.startHandleAuto(), end: this.endHandleAuto() },
34
+ };
35
+ }
36
+ getDefaultEndHandle() {
37
+ return this.startHandle().flipped;
38
+ }
39
+ getDefaultStartHandle() {
40
+ return this.endHandle().flipped;
41
+ }
66
42
  }
67
- __decorate([wrapper(Vector2), signal()], Knot.prototype, 'startHandle', void 0);
68
- __decorate([wrapper(Vector2), signal()], Knot.prototype, 'endHandle', void 0);
69
- __decorate(
70
- [
43
+ __decorate([
44
+ wrapper(Vector2),
45
+ signal()
46
+ ], Knot.prototype, "startHandle", void 0);
47
+ __decorate([
48
+ wrapper(Vector2),
49
+ signal()
50
+ ], Knot.prototype, "endHandle", void 0);
51
+ __decorate([
71
52
  cloneable(false),
72
- initial(() => ({startHandle: 0, endHandle: 0})),
73
- parser(value => {
74
- if (typeof value === 'object' && !Array.isArray(value)) {
75
- return value;
76
- }
77
- if (typeof value === 'number') {
78
- value = [value, value];
79
- }
80
- return {startHandle: value[0], endHandle: value[1]};
53
+ initial(() => ({ startHandle: 0, endHandle: 0 })),
54
+ parser((value) => {
55
+ if (typeof value === 'object' && !Array.isArray(value)) {
56
+ return value;
57
+ }
58
+ if (typeof value === 'number') {
59
+ value = [value, value];
60
+ }
61
+ return { startHandle: value[0], endHandle: value[1] };
81
62
  }),
82
- compound({startHandle: 'startHandleAuto', endHandle: 'endHandleAuto'}),
83
- ],
84
- Knot.prototype,
85
- 'auto',
86
- void 0,
87
- );
88
- __decorate([computed()], Knot.prototype, 'points', null);
89
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiS25vdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9Lbm90LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLE9BQU8sRUFJTCxPQUFPLEdBRVIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUNMLFNBQVMsRUFDVCxRQUFRLEVBQ1IsUUFBUSxFQUNSLE9BQU8sRUFDUCxNQUFNLEVBQ04sTUFBTSxFQUNOLE9BQU8sR0FDUixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsSUFBSSxFQUFZLE1BQU0sUUFBUSxDQUFDO0FBOEJ2Qzs7R0FFRztBQUNILE1BQU0sT0FBTyxJQUFLLFNBQVEsSUFBSTtJQW9FNUIsSUFBVyxlQUFlO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDL0IsQ0FBQztJQUNELElBQVcsYUFBYTtRQUN0QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzdCLENBQUM7SUFFRCxZQUFtQixLQUFnQjtRQUNqQyxLQUFLLENBQ0gsS0FBSyxDQUFDLFdBQVcsS0FBSyxTQUFTLElBQUksS0FBSyxDQUFDLFNBQVMsS0FBSyxTQUFTO1lBQzlELENBQUMsQ0FBQyxFQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsR0FBRyxLQUFLLEVBQUM7WUFDckIsQ0FBQyxDQUFDLEtBQUssQ0FDVixDQUFDO0lBQ0osQ0FBQztJQUdNLE1BQU07UUFDWCxNQUFNLGtCQUFrQixHQUN0QixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQy9ELE1BQU0sV0FBVyxHQUFHLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7UUFDM0UsTUFBTSxTQUFTLEdBQUcsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztRQUV2RSxPQUFPO1lBQ0wsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDekIsV0FBVyxFQUFFLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDL0QsU0FBUyxFQUFFLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDM0QsSUFBSSxFQUFFLEVBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFDO1NBQ2pFLENBQUM7SUFDSixDQUFDO0lBRU8sbUJBQW1CO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLE9BQU8sQ0FBQztJQUNwQyxDQUFDO0lBRU8scUJBQXFCO1FBQzNCLE9BQU8sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLE9BQU8sQ0FBQztJQUNsQyxDQUFDO0NBQ0Y7QUFwRnlCO0lBRnZCLE9BQU8sQ0FBQyxPQUFPLENBQUM7SUFDaEIsTUFBTSxFQUFFO3lDQUNnRDtBQXNCakM7SUFGdkIsT0FBTyxDQUFDLE9BQU8sQ0FBQztJQUNoQixNQUFNLEVBQUU7dUNBQzhDO0FBd0IvQjtJQVp2QixTQUFTLENBQUMsS0FBSyxDQUFDO0lBQ2hCLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUMsV0FBVyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFDLENBQUMsQ0FBQztJQUMvQyxNQUFNLENBQUMsQ0FBQyxLQUF1QixFQUFFLEVBQUU7UUFDbEMsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdkQsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBQ0QsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM5QixLQUFLLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDekIsQ0FBQztRQUNELE9BQU8sRUFBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQztJQUN0RCxDQUFDLENBQUM7SUFDRCxRQUFRLENBQUMsRUFBQyxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBQyxDQUFDO2tDQUNwQjtBQWlCNUM7SUFETixRQUFRLEVBQUU7a0NBYVYifQ==
63
+ compound({ startHandle: 'startHandleAuto', endHandle: 'endHandleAuto' })
64
+ ], Knot.prototype, "auto", void 0);
65
+ __decorate([
66
+ computed()
67
+ ], Knot.prototype, "points", null);
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiS25vdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9Lbm90LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLE9BQU8sRUFJTCxPQUFPLEdBRVIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUNMLFNBQVMsRUFDVCxRQUFRLEVBQ1IsUUFBUSxFQUNSLE9BQU8sRUFDUCxNQUFNLEVBQ04sTUFBTSxFQUNOLE9BQU8sR0FDUixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsSUFBSSxFQUFZLE1BQU0sUUFBUSxDQUFDO0FBOEJ2Qzs7R0FFRztBQUNILE1BQU0sT0FBTyxJQUFLLFNBQVEsSUFBSTtJQW9FNUIsSUFBVyxlQUFlO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDL0IsQ0FBQztJQUNELElBQVcsYUFBYTtRQUN0QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzdCLENBQUM7SUFFRCxZQUFtQixLQUFnQjtRQUNqQyxLQUFLLENBQ0gsS0FBSyxDQUFDLFdBQVcsS0FBSyxTQUFTLElBQUksS0FBSyxDQUFDLFNBQVMsS0FBSyxTQUFTO1lBQzlELENBQUMsQ0FBQyxFQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsR0FBRyxLQUFLLEVBQUM7WUFDckIsQ0FBQyxDQUFDLEtBQUssQ0FDVixDQUFDO0lBQ0osQ0FBQztJQUdNLE1BQU07UUFDWCxNQUFNLGtCQUFrQixHQUN0QixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQy9ELE1BQU0sV0FBVyxHQUFHLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7UUFDM0UsTUFBTSxTQUFTLEdBQUcsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztRQUV2RSxPQUFPO1lBQ0wsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDekIsV0FBVyxFQUFFLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDL0QsU0FBUyxFQUFFLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDM0QsSUFBSSxFQUFFLEVBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFDO1NBQ2pFLENBQUM7SUFDSixDQUFDO0lBRU8sbUJBQW1CO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLE9BQU8sQ0FBQztJQUNwQyxDQUFDO0lBRU8scUJBQXFCO1FBQzNCLE9BQU8sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLE9BQU8sQ0FBQztJQUNsQyxDQUFDO0NBQ0Y7QUFwRnlCO0lBRnZCLE9BQU8sQ0FBQyxPQUFPLENBQUM7SUFDaEIsTUFBTSxFQUFFO3lDQUNnRDtBQXNCakM7SUFGdkIsT0FBTyxDQUFDLE9BQU8sQ0FBQztJQUNoQixNQUFNLEVBQUU7dUNBQzhDO0FBd0IvQjtJQVp2QixTQUFTLENBQUMsS0FBSyxDQUFDO0lBQ2hCLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUMsV0FBVyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFDLENBQUMsQ0FBQztJQUMvQyxNQUFNLENBQUMsQ0FBQyxLQUF1QixFQUFFLEVBQUU7UUFDbEMsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdkQsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBQ0QsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM5QixLQUFLLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDekIsQ0FBQztRQUNELE9BQU8sRUFBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQztJQUN0RCxDQUFDLENBQUM7SUFDRCxRQUFRLENBQUMsRUFBQyxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBQyxDQUFDO2tDQUNwQjtBQWlCNUM7SUFETixRQUFRLEVBQUU7a0NBYVYifQ==