pts 0.10.12 → 0.11.0

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 (50) hide show
  1. package/dist/{pts.d.ts → index.d.ts} +1245 -1207
  2. package/dist/index.js +6825 -6660
  3. package/dist/index.mjs +6785 -0
  4. package/package.json +12 -33
  5. package/tsup.browser.js +21 -0
  6. package/tsup.min.js +23 -0
  7. package/tsup.module.js +15 -0
  8. package/dist/es2015/Canvas.js +0 -684
  9. package/dist/es2015/Canvas.js.map +0 -1
  10. package/dist/es2015/Color.js +0 -337
  11. package/dist/es2015/Color.js.map +0 -1
  12. package/dist/es2015/Create.js +0 -275
  13. package/dist/es2015/Create.js.map +0 -1
  14. package/dist/es2015/Dom.js +0 -448
  15. package/dist/es2015/Dom.js.map +0 -1
  16. package/dist/es2015/Form.js +0 -80
  17. package/dist/es2015/Form.js.map +0 -1
  18. package/dist/es2015/Image.js +0 -220
  19. package/dist/es2015/Image.js.map +0 -1
  20. package/dist/es2015/LinearAlgebra.js +0 -286
  21. package/dist/es2015/LinearAlgebra.js.map +0 -1
  22. package/dist/es2015/Num.js +0 -477
  23. package/dist/es2015/Num.js.map +0 -1
  24. package/dist/es2015/Op.js +0 -978
  25. package/dist/es2015/Op.js.map +0 -1
  26. package/dist/es2015/Physics.js +0 -383
  27. package/dist/es2015/Physics.js.map +0 -1
  28. package/dist/es2015/Play.js +0 -339
  29. package/dist/es2015/Play.js.map +0 -1
  30. package/dist/es2015/Pt.js +0 -463
  31. package/dist/es2015/Pt.js.map +0 -1
  32. package/dist/es2015/Space.js +0 -331
  33. package/dist/es2015/Space.js.map +0 -1
  34. package/dist/es2015/Svg.js +0 -367
  35. package/dist/es2015/Svg.js.map +0 -1
  36. package/dist/es2015/Types.js +0 -3
  37. package/dist/es2015/Types.js.map +0 -1
  38. package/dist/es2015/Typography.js +0 -40
  39. package/dist/es2015/Typography.js.map +0 -1
  40. package/dist/es2015/UI.js +0 -273
  41. package/dist/es2015/UI.js.map +0 -1
  42. package/dist/es2015/Util.js +0 -200
  43. package/dist/es2015/Util.js.map +0 -1
  44. package/dist/es2015/_lib.js +0 -45
  45. package/dist/es2015/_lib.js.map +0 -1
  46. package/dist/es2015/_module.js +0 -18
  47. package/dist/es2015/_module.js.map +0 -1
  48. package/dist/es2015/uheprng.js +0 -69
  49. package/dist/es2015/uheprng.js.map +0 -1
  50. package/dist/index.js.map +0 -1
package/dist/es2015/Pt.js DELETED
@@ -1,463 +0,0 @@
1
- /*! Pts.js is licensed under Apache License 2.0. Copyright © 2017-current William Ngan and contributors. (https://github.com/williamngan/pts) */
2
- import { Util, Const } from "./Util";
3
- import { Geom, Num } from "./Num";
4
- import { Vec, Mat } from "./LinearAlgebra";
5
- export class Pt extends Float32Array {
6
- constructor(...args) {
7
- if (args.length === 1 && typeof args[0] == "number") {
8
- super(args[0]);
9
- }
10
- else {
11
- super((args.length > 0) ? Util.getArgs(args) : [0, 0]);
12
- }
13
- }
14
- static make(dimensions, defaultValue = 0, randomize = false) {
15
- let p = new Float32Array(dimensions);
16
- if (defaultValue)
17
- p.fill(defaultValue);
18
- if (randomize) {
19
- for (let i = 0, len = p.length; i < len; i++) {
20
- p[i] = p[i] * Num.random();
21
- }
22
- }
23
- return new Pt(p);
24
- }
25
- get id() { return this._id; }
26
- set id(s) { this._id = s; }
27
- get x() { return this[0]; }
28
- set x(n) { this[0] = n; }
29
- get y() { return this[1]; }
30
- set y(n) { this[1] = n; }
31
- get z() { return this[2]; }
32
- set z(n) { this[2] = n; }
33
- get w() { return this[3]; }
34
- set w(n) { this[3] = n; }
35
- clone() {
36
- return new Pt(this);
37
- }
38
- equals(p, threshold = 0.000001) {
39
- for (let i = 0, len = this.length; i < len; i++) {
40
- if (Math.abs(this[i] - p[i]) > threshold)
41
- return false;
42
- }
43
- return true;
44
- }
45
- to(...args) {
46
- let p = Util.getArgs(args);
47
- for (let i = 0, len = Math.min(this.length, p.length); i < len; i++) {
48
- this[i] = p[i];
49
- }
50
- return this;
51
- }
52
- $to(...args) {
53
- return this.clone().to(...args);
54
- }
55
- toAngle(radian, magnitude, anchorFromPt = false) {
56
- let m = (magnitude != undefined) ? magnitude : this.magnitude();
57
- let change = [Math.cos(radian) * m, Math.sin(radian) * m];
58
- return (anchorFromPt) ? this.add(change) : this.to(change);
59
- }
60
- op(fn) {
61
- let self = this;
62
- return (...params) => {
63
- return fn(self, ...params);
64
- };
65
- }
66
- ops(fns) {
67
- let _ops = [];
68
- for (let i = 0, len = fns.length; i < len; i++) {
69
- _ops.push(this.op(fns[i]));
70
- }
71
- return _ops;
72
- }
73
- $take(axis) {
74
- let p = [];
75
- for (let i = 0, len = axis.length; i < len; i++) {
76
- p.push(this[axis[i]] || 0);
77
- }
78
- return new Pt(p);
79
- }
80
- $concat(...args) {
81
- return new Pt(this.toArray().concat(Util.getArgs(args)));
82
- }
83
- add(...args) {
84
- (args.length === 1 && typeof args[0] == "number") ? Vec.add(this, args[0]) : Vec.add(this, Util.getArgs(args));
85
- return this;
86
- }
87
- $add(...args) { return this.clone().add(...args); }
88
- subtract(...args) {
89
- (args.length === 1 && typeof args[0] == "number") ? Vec.subtract(this, args[0]) : Vec.subtract(this, Util.getArgs(args));
90
- return this;
91
- }
92
- $subtract(...args) { return this.clone().subtract(...args); }
93
- multiply(...args) {
94
- (args.length === 1 && typeof args[0] == "number") ? Vec.multiply(this, args[0]) : Vec.multiply(this, Util.getArgs(args));
95
- return this;
96
- }
97
- $multiply(...args) { return this.clone().multiply(...args); }
98
- divide(...args) {
99
- (args.length === 1 && typeof args[0] == "number") ? Vec.divide(this, args[0]) : Vec.divide(this, Util.getArgs(args));
100
- return this;
101
- }
102
- $divide(...args) { return this.clone().divide(...args); }
103
- magnitudeSq() { return Vec.dot(this, this); }
104
- magnitude() { return Vec.magnitude(this); }
105
- unit(magnitude = undefined) {
106
- Vec.unit(this, magnitude);
107
- return this;
108
- }
109
- $unit(magnitude = undefined) { return this.clone().unit(magnitude); }
110
- dot(...args) { return Vec.dot(this, Util.getArgs(args)); }
111
- $cross2D(...args) { return Vec.cross2D(this, Util.getArgs(args)); }
112
- $cross(...args) { return Vec.cross(this, Util.getArgs(args)); }
113
- $project(...args) {
114
- return this.$multiply(this.dot(...args) / this.magnitudeSq());
115
- }
116
- projectScalar(...args) {
117
- return this.dot(...args) / this.magnitude();
118
- }
119
- abs() {
120
- Vec.abs(this);
121
- return this;
122
- }
123
- $abs() {
124
- return this.clone().abs();
125
- }
126
- floor() {
127
- Vec.floor(this);
128
- return this;
129
- }
130
- $floor() {
131
- return this.clone().floor();
132
- }
133
- ceil() {
134
- Vec.ceil(this);
135
- return this;
136
- }
137
- $ceil() {
138
- return this.clone().ceil();
139
- }
140
- round() {
141
- Vec.round(this);
142
- return this;
143
- }
144
- $round() {
145
- return this.clone().round();
146
- }
147
- minValue() {
148
- return Vec.min(this);
149
- }
150
- maxValue() {
151
- return Vec.max(this);
152
- }
153
- $min(...args) {
154
- let p = Util.getArgs(args);
155
- let m = this.clone();
156
- for (let i = 0, len = Math.min(this.length, p.length); i < len; i++) {
157
- m[i] = Math.min(this[i], p[i]);
158
- }
159
- return m;
160
- }
161
- $max(...args) {
162
- let p = Util.getArgs(args);
163
- let m = this.clone();
164
- for (let i = 0, len = Math.min(this.length, p.length); i < len; i++) {
165
- m[i] = Math.max(this[i], p[i]);
166
- }
167
- return m;
168
- }
169
- angle(axis = Const.xy) {
170
- return Math.atan2(this[axis[1]], this[axis[0]]);
171
- }
172
- angleBetween(p, axis = Const.xy) {
173
- return Geom.boundRadian(this.angle(axis)) - Geom.boundRadian(p.angle(axis));
174
- }
175
- scale(scale, anchor) {
176
- Geom.scale(this, scale, anchor || Pt.make(this.length, 0));
177
- return this;
178
- }
179
- rotate2D(angle, anchor, axis) {
180
- Geom.rotate2D(this, angle, anchor || Pt.make(this.length, 0), axis);
181
- return this;
182
- }
183
- shear2D(scale, anchor, axis) {
184
- Geom.shear2D(this, scale, anchor || Pt.make(this.length, 0), axis);
185
- return this;
186
- }
187
- reflect2D(line, axis) {
188
- Geom.reflect2D(this, line, axis);
189
- return this;
190
- }
191
- toString() {
192
- return `Pt(${this.join(", ")})`;
193
- }
194
- toArray() {
195
- return [].slice.call(this);
196
- }
197
- toGroup() {
198
- return new Group(Pt.make(this.length), this.clone());
199
- }
200
- toBound() {
201
- return new Bound(Pt.make(this.length), this.clone());
202
- }
203
- }
204
- export class Group extends Array {
205
- constructor(...args) {
206
- super(...args);
207
- }
208
- get id() { return this._id; }
209
- set id(s) { this._id = s; }
210
- get p1() { return this[0]; }
211
- get p2() { return this[1]; }
212
- get p3() { return this[2]; }
213
- get p4() { return this[3]; }
214
- get q1() { return this[this.length - 1]; }
215
- get q2() { return this[this.length - 2]; }
216
- get q3() { return this[this.length - 3]; }
217
- get q4() { return this[this.length - 4]; }
218
- clone() {
219
- let group = new Group();
220
- for (let i = 0, len = this.length; i < len; i++) {
221
- group.push(this[i].clone());
222
- }
223
- return group;
224
- }
225
- static fromArray(list) {
226
- let g = new Group();
227
- for (let li of list) {
228
- let p = (li instanceof Pt) ? li : new Pt(li);
229
- g.push(p);
230
- }
231
- return g;
232
- }
233
- static fromPtArray(list) {
234
- return Group.from(list);
235
- }
236
- split(chunkSize, stride, loopBack = false) {
237
- let sp = Util.split(this, chunkSize, stride, loopBack);
238
- return sp;
239
- }
240
- insert(pts, index = 0) {
241
- Group.prototype.splice.apply(this, [index, 0, ...pts]);
242
- return this;
243
- }
244
- remove(index = 0, count = 1) {
245
- let param = (index < 0) ? [index * -1 - 1, count] : [index, count];
246
- return Group.prototype.splice.apply(this, param);
247
- }
248
- segments(pts_per_segment = 2, stride = 1, loopBack = false) {
249
- return this.split(pts_per_segment, stride, loopBack);
250
- }
251
- lines() { return this.segments(2, 1); }
252
- centroid() {
253
- return Geom.centroid(this);
254
- }
255
- boundingBox() {
256
- return Geom.boundingBox(this);
257
- }
258
- anchorTo(ptOrIndex = 0) { Geom.anchor(this, ptOrIndex, "to"); }
259
- anchorFrom(ptOrIndex = 0) { Geom.anchor(this, ptOrIndex, "from"); }
260
- op(fn) {
261
- let self = this;
262
- return (...params) => {
263
- return fn(self, ...params);
264
- };
265
- }
266
- ops(fns) {
267
- let _ops = [];
268
- for (let i = 0, len = fns.length; i < len; i++) {
269
- _ops.push(this.op(fns[i]));
270
- }
271
- return _ops;
272
- }
273
- interpolate(t) {
274
- t = Num.clamp(t, 0, 1);
275
- let chunk = this.length - 1;
276
- let tc = 1 / (this.length - 1);
277
- let idx = Math.floor(t / tc);
278
- return Geom.interpolate(this[idx], this[Math.min(this.length - 1, idx + 1)], (t - idx * tc) * chunk);
279
- }
280
- moveBy(...args) {
281
- return this.add(...args);
282
- }
283
- moveTo(...args) {
284
- let d = new Pt(Util.getArgs(args)).subtract(this[0]);
285
- this.moveBy(d);
286
- return this;
287
- }
288
- scale(scale, anchor) {
289
- for (let i = 0, len = this.length; i < len; i++) {
290
- Geom.scale(this[i], scale, anchor || this[0]);
291
- }
292
- return this;
293
- }
294
- rotate2D(angle, anchor, axis) {
295
- for (let i = 0, len = this.length; i < len; i++) {
296
- Geom.rotate2D(this[i], angle, anchor || this[0], axis);
297
- }
298
- return this;
299
- }
300
- shear2D(scale, anchor, axis) {
301
- for (let i = 0, len = this.length; i < len; i++) {
302
- Geom.shear2D(this[i], scale, anchor || this[0], axis);
303
- }
304
- return this;
305
- }
306
- reflect2D(line, axis) {
307
- for (let i = 0, len = this.length; i < len; i++) {
308
- Geom.reflect2D(this[i], line, axis);
309
- }
310
- return this;
311
- }
312
- sortByDimension(dim, desc = false) {
313
- return this.sort((a, b) => (desc) ? b[dim] - a[dim] : a[dim] - b[dim]);
314
- }
315
- forEachPt(ptFn, ...args) {
316
- if (!this[0][ptFn]) {
317
- Util.warn(`${ptFn} is not a function of Pt`);
318
- return this;
319
- }
320
- for (let i = 0, len = this.length; i < len; i++) {
321
- this[i] = this[i][ptFn](...args);
322
- }
323
- return this;
324
- }
325
- add(...args) {
326
- return this.forEachPt("add", ...args);
327
- }
328
- subtract(...args) {
329
- return this.forEachPt("subtract", ...args);
330
- }
331
- multiply(...args) {
332
- return this.forEachPt("multiply", ...args);
333
- }
334
- divide(...args) {
335
- return this.forEachPt("divide", ...args);
336
- }
337
- $matrixAdd(g) {
338
- return Mat.add(this, g);
339
- }
340
- $matrixMultiply(g, transposed = false, elementwise = false) {
341
- return Mat.multiply(this, g, transposed, elementwise);
342
- }
343
- zipSlice(index, defaultValue = false) {
344
- return Mat.zipSlice(this, index, defaultValue);
345
- }
346
- $zip(defaultValue = undefined, useLongest = false) {
347
- return Mat.zip(this, defaultValue, useLongest);
348
- }
349
- toBound() {
350
- return Bound.fromGroup(this);
351
- }
352
- toString() {
353
- return "Group[ " + this.reduce((p, c) => p + c.toString() + " ", "") + " ]";
354
- }
355
- }
356
- export class Bound extends Group {
357
- constructor(...args) {
358
- super(...args);
359
- this._center = new Pt();
360
- this._size = new Pt();
361
- this._topLeft = new Pt();
362
- this._bottomRight = new Pt();
363
- this._inited = false;
364
- this.init();
365
- }
366
- static fromBoundingRect(rect) {
367
- let b = new Bound(new Pt(rect.left || 0, rect.top || 0), new Pt(rect.right || 0, rect.bottom || 0));
368
- if (rect.width && rect.height)
369
- b.size = new Pt(rect.width, rect.height);
370
- return b;
371
- }
372
- static fromGroup(g) {
373
- let _g = Util.iterToArray(g);
374
- if (_g.length < 2)
375
- throw new Error("Cannot create a Bound from a group that has less than 2 Pt");
376
- return new Bound(_g[0], _g[_g.length - 1]);
377
- }
378
- init() {
379
- if (this.p1) {
380
- this._size = this.p1.clone();
381
- this._inited = true;
382
- }
383
- if (this.p1 && this.p2) {
384
- let a = this.p1;
385
- let b = this.p2;
386
- this.topLeft = a.$min(b);
387
- this._bottomRight = a.$max(b);
388
- this._updateSize();
389
- this._inited = true;
390
- }
391
- }
392
- clone() {
393
- return new Bound(this._topLeft.clone(), this._bottomRight.clone());
394
- }
395
- _updateSize() {
396
- this._size = this._bottomRight.$subtract(this._topLeft).abs();
397
- this._updateCenter();
398
- }
399
- _updateCenter() {
400
- this._center = this._size.$multiply(0.5).add(this._topLeft);
401
- }
402
- _updatePosFromTop() {
403
- this._bottomRight = this._topLeft.$add(this._size);
404
- this._updateCenter();
405
- }
406
- _updatePosFromBottom() {
407
- this._topLeft = this._bottomRight.$subtract(this._size);
408
- this._updateCenter();
409
- }
410
- _updatePosFromCenter() {
411
- let half = this._size.$multiply(0.5);
412
- this._topLeft = this._center.$subtract(half);
413
- this._bottomRight = this._center.$add(half);
414
- }
415
- get size() { return new Pt(this._size); }
416
- set size(p) {
417
- this._size = new Pt(p);
418
- this._updatePosFromTop();
419
- }
420
- get center() { return new Pt(this._center); }
421
- set center(p) {
422
- this._center = new Pt(p);
423
- this._updatePosFromCenter();
424
- }
425
- get topLeft() { return new Pt(this._topLeft); }
426
- set topLeft(p) {
427
- this._topLeft = new Pt(p);
428
- this[0] = this._topLeft;
429
- this._updateSize();
430
- }
431
- get bottomRight() { return new Pt(this._bottomRight); }
432
- set bottomRight(p) {
433
- this._bottomRight = new Pt(p);
434
- this[1] = this._bottomRight;
435
- this._updateSize();
436
- }
437
- get width() { return (this._size.length > 0) ? this._size.x : 0; }
438
- set width(w) {
439
- this._size.x = w;
440
- this._updatePosFromTop();
441
- }
442
- get height() { return (this._size.length > 1) ? this._size.y : 0; }
443
- set height(h) {
444
- this._size.y = h;
445
- this._updatePosFromTop();
446
- }
447
- get depth() { return (this._size.length > 2) ? this._size.z : 0; }
448
- set depth(d) {
449
- this._size.z = d;
450
- this._updatePosFromTop();
451
- }
452
- get x() { return this.topLeft.x; }
453
- get y() { return this.topLeft.y; }
454
- get z() { return this.topLeft.z; }
455
- get inited() { return this._inited; }
456
- update() {
457
- this._topLeft = this[0];
458
- this._bottomRight = this[1];
459
- this._updateSize();
460
- return this;
461
- }
462
- }
463
- //# sourceMappingURL=Pt.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Pt.js","sourceRoot":"","sources":["../../src/Pt.ts"],"names":[],"mappings":"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"}