@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.
- package/lib/components/Audio.d.ts +11 -11
- package/lib/components/Audio.d.ts.map +1 -1
- package/lib/components/Audio.js +109 -115
- package/lib/components/Code.d.ts +211 -244
- package/lib/components/Code.d.ts.map +1 -1
- package/lib/components/Code.js +269 -317
- package/lib/components/CodeBlock.d.ts +67 -109
- package/lib/components/CodeBlock.d.ts.map +1 -1
- package/lib/components/CodeBlock.js +373 -414
- package/lib/components/Curve.js +269 -270
- package/lib/components/Grid.js +56 -63
- package/lib/components/Icon.js +50 -58
- package/lib/components/Img.d.ts +79 -86
- package/lib/components/Img.d.ts.map +1 -1
- package/lib/components/Img.js +181 -193
- package/lib/components/Knot.js +60 -81
- package/lib/components/Latex.js +65 -77
- package/lib/components/Layout.d.ts +413 -455
- package/lib/components/Layout.d.ts.map +1 -1
- package/lib/components/Layout.js +681 -666
- package/lib/components/Line.js +193 -216
- package/lib/components/Media.d.ts +35 -35
- package/lib/components/Media.d.ts.map +1 -1
- package/lib/components/Media.js +134 -135
- package/lib/components/Node.d.ts +830 -875
- package/lib/components/Node.d.ts.map +1 -1
- package/lib/components/Node.js +1314 -1383
- package/lib/components/SVG.js +541 -609
- package/lib/components/Shape.d.ts +35 -44
- package/lib/components/Shape.d.ts.map +1 -1
- package/lib/components/Shape.js +127 -112
- package/lib/components/Spline.js +175 -190
- package/lib/components/Txt.d.ts +44 -55
- package/lib/components/Txt.d.ts.map +1 -1
- package/lib/components/Txt.js +155 -156
- package/lib/components/TxtLeaf.d.ts +16 -20
- package/lib/components/TxtLeaf.d.ts.map +1 -1
- package/lib/components/TxtLeaf.js +2 -2
- package/lib/components/Video.d.ts +45 -41
- package/lib/components/Video.d.ts.map +1 -1
- package/lib/components/Video.js +202 -138
- package/lib/components/View2D.d.ts +22 -21
- package/lib/components/View2D.d.ts.map +1 -1
- package/lib/components/View2D.js +89 -98
- package/lib/components/index.js +1 -1
- package/lib/components/types.js +1 -1
- package/lib/curves/ArcSegment.js +94 -145
- package/lib/scenes/Scene2D.d.ts +23 -42
- package/lib/scenes/Scene2D.d.ts.map +1 -1
- package/lib/scenes/Scene2D.js +152 -161
- package/lib/scenes/index.js +1 -1
- package/lib/scenes/makeScene2D.js +10 -10
- package/lib/scenes/useScene2D.js +3 -3
- package/lib/tsconfig.build.tsbuildinfo +1 -1
- package/lib/utils/CanvasUtils.d.ts +21 -93
- package/package.json +5 -5
- package/src/lib/components/Audio.ts +2 -2
- package/src/lib/components/Code.ts +4 -2
- package/src/lib/components/CodeBlock.ts +1 -1
- package/src/lib/components/Img.ts +2 -2
- package/src/lib/components/Layout.ts +2 -2
- package/src/lib/components/Media.ts +3 -1
- package/src/lib/components/Node.ts +9 -9
- package/src/lib/components/Shape.ts +2 -2
- package/src/lib/components/Txt.ts +2 -2
- package/src/lib/components/TxtLeaf.ts +1 -1
- package/src/lib/components/Video.ts +114 -8
- package/src/lib/components/View2D.ts +6 -2
- package/src/lib/scenes/Scene2D.ts +4 -3
package/lib/components/Img.js
CHANGED
|
@@ -1,35 +1,14 @@
|
|
|
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 Img_1;
|
|
21
|
-
import {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
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 =
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
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'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\">'./example.png'</span>;\n<span class=\"hljs-comment\">// ...</span>\n<span class=\"language-xml\"><span class=\"hljs-tag\"><<span class=\"hljs-name\">Img</span> <span class=\"hljs-attr\">src</span>=<span class=\"hljs-string\">{myImage}</span> /></span></span>;</code></pre><p>If you did this intentionally, and don't want to see this warning, set the <code>src</code>\nproperty to <code>null</code>:</p>\n<pre class=\"\"><code class=\"language-tsx\"><<span class=\"hljs-title class_\">Img</span> src={<span class=\"hljs-literal\">null</span>} /></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
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
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
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
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
|
-
|
|
126
|
-
|
|
127
|
-
)
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
);
|
|
100
|
+
inspect: this.key,
|
|
101
|
+
})));
|
|
102
|
+
}));
|
|
103
|
+
}
|
|
104
|
+
return image;
|
|
131
105
|
}
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
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
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
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
|
-
|
|
167
|
-
|
|
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
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
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
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
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([
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
__decorate([
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW1nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL0ltZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsT0FBTyxFQUNMLElBQUksRUFDSixLQUFLLEVBQ0wsaUJBQWlCLEVBQ2pCLGFBQWEsRUFLYixPQUFPLEVBQ1AsU0FBUyxFQUNULFFBQVEsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRWxFLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDbkMsT0FBTyxFQUFDLElBQUksRUFBWSxNQUFNLFFBQVEsQ0FBQztBQWtCdkM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBZ0NHO0FBRUksSUFBTSxHQUFHLFdBQVQsTUFBTSxHQUFJLFNBQVEsSUFBSTtJQXlEM0IsWUFBbUIsS0FBZTtRQUNoQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDYixJQUFJLENBQUMsQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN0QixTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUM7Z0JBQ2YsT0FBTyxFQUFFLG1DQUFtQztnQkFDNUMsT0FBTyw0NkJBQW9CO2dCQUMzQixPQUFPLEVBQUUsSUFBSSxDQUFDLEdBQUc7YUFDbEIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7SUFFa0IsV0FBVztRQUM1QixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkMsSUFBSSxNQUFNLENBQUMsQ0FBQyxLQUFLLElBQUksSUFBSSxNQUFNLENBQUMsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1lBQzNDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUMzQixPQUFPO2dCQUNMLENBQUMsRUFBRSxLQUFLLENBQUMsWUFBWTtnQkFDckIsQ0FBQyxFQUFFLEtBQUssQ0FBQyxhQUFhO2FBQ3ZCLENBQUM7UUFDSixDQUFDO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUdTLEtBQUs7UUFDYixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDMUIsSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBQ2IsSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBQ2IsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLEdBQUcsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDdkIsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDakQsSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQzFDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDckMsR0FBRyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQzNDLENBQUM7WUFDRCxHQUFHLEdBQUcsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3ZCLENBQUM7UUFFRCxJQUFJLEtBQUssR0FBRyxLQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNYLEtBQUssR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3RDLEtBQUssQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1lBQ2hDLEtBQUssQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1lBQ2hCLEtBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLENBQUM7UUFFRCxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3BCLGlCQUFpQixDQUFDLGNBQWMsQ0FDOUIsSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7Z0JBQzlCLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBQ3hDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQ25DLE1BQU0sQ0FDSixJQUFJLGFBQWEsQ0FBQztvQkFDaEIsT0FBTyxFQUFFLHlCQUF5QjtvQkFDbEMsT0FBTyxFQUFFOzthQUVaLE1BQU07O2FBRU4sR0FBRzs7OzJCQUdXO29CQUNYLE9BQU8sRUFBRSxJQUFJLENBQUMsR0FBRztpQkFDbEIsQ0FBQyxDQUNILENBQ0YsQ0FBQztZQUNKLENBQUMsQ0FBQyxDQUNILENBQUM7UUFDSixDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBR1MsV0FBVztRQUNuQixNQUFNLE1BQU0sR0FBRyxRQUFRO2FBQ3BCLGFBQWEsQ0FBQyxRQUFRLENBQUM7YUFDdkIsVUFBVSxDQUFDLElBQUksRUFBRSxFQUFDLGtCQUFrQixFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ1osTUFBTSxJQUFJLEtBQUssQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO1FBQ3RELENBQUM7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBR1MsaUJBQWlCO1FBQ3pCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNuQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDM0IsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQztRQUMxQyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDO1FBQzVDLE9BQU8sQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDakQsT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRS9CLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFa0IsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFpQztRQUM3RCxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3hCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMzQixJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNkLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztZQUN2RCxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDZixPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1lBQzdCLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNkLE9BQU8sQ0FBQyxXQUFXLElBQUksS0FBSyxDQUFDO1lBQy9CLENBQUM7WUFDRCxPQUFPLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2pELFNBQVMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3RDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNwQixDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUNoQixPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQy9CLENBQUM7UUFFRCxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVrQixTQUFTO1FBQzFCLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNsQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsV0FBVyxHQUFHLENBQy9CLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxLQUFLLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQ3pELENBQUMsUUFBUSxFQUFFLENBQUM7SUFDZixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLGVBQWUsQ0FBQyxRQUF5QjtRQUM5QyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDakMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRXZDLE1BQU0sYUFBYSxHQUFHLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQzthQUN4QyxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUNuQyxHQUFHLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVuQyxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUVJLFdBQVc7UUFDaEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzNCLE9BQU8sSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxhQUFhLENBQUMsUUFBeUI7UUFDNUMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDekMsTUFBTSxNQUFNLEdBQUcsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDckMsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUVqRSxPQUFPLElBQUksS0FBSyxDQUFDO1lBQ2YsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDVixDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUNWLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ1YsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHO1NBQ2pCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFa0IscUJBQXFCO1FBQ3RDLEtBQUssQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQzlCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNmLENBQUM7O0FBMU9jLFFBQUksR0FBcUMsRUFBRSxBQUF2QyxDQUF3QztBQUUzRDtJQUNFLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNwQixNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxFQUFDLElBQUksRUFBQyxFQUFFLEVBQUU7WUFDOUMsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDdkIsSUFBSSxLQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQ2xCLE9BQU8sS0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDdkIsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7QUFDSCxDQUFDLEdBQUEsQ0FBQTtBQWtCdUI7SUFEdkIsTUFBTSxFQUFFO2dDQUMrQztBQVdoQztJQUZ2QixPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ1YsTUFBTSxFQUFFO2tDQUNpRDtBQWFsQztJQUZ2QixPQUFPLENBQUMsSUFBSSxDQUFDO0lBQ2IsTUFBTSxFQUFFO3NDQUNzRDtBQTJCckQ7SUFEVCxRQUFRLEVBQUU7Z0NBZ0RWO0FBR1M7SUFEVCxRQUFRLEVBQUU7c0NBVVY7QUFHUztJQURULFFBQVEsRUFBRTs0Q0FVVjtBQXdETTtJQUROLFFBQVEsRUFBRTtzQ0FJVjtBQXBOVSxHQUFHO0lBRGYsUUFBUSxDQUFDLEtBQUssQ0FBQztHQUNILEdBQUcsQ0E0T2YifQ==
|
package/lib/components/Knot.js
CHANGED
|
@@ -1,89 +1,68 @@
|
|
|
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
|
-
|
|
20
|
-
import {Vector2} from '@revideo/core';
|
|
21
|
-
import {
|
|
22
|
-
|
|
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
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
)
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
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([
|
|
68
|
-
|
|
69
|
-
|
|
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
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
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
|
-
|
|
85
|
-
|
|
86
|
-
|
|
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==
|