plotboilerplate 1.12.10 → 1.16.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 (213) hide show
  1. package/README.md +5 -1
  2. package/changelog.md +50 -0
  3. package/dist/index.esm.js +999 -510
  4. package/dist/index.esm.js.map +1 -1
  5. package/dist/index.esm.min.js +1 -1
  6. package/dist/index.esm.min.js.map +1 -1
  7. package/dist/plotboilerplate.browser.min.js +1 -1
  8. package/dist/plotboilerplate.browser.min.js.map +1 -1
  9. package/dist/plotboilerplate.js +1013 -509
  10. package/dist/plotboilerplate.min.js +1 -1
  11. package/package.json +1 -1
  12. package/src/cjs/BezierPath.d.ts +45 -2
  13. package/src/cjs/BezierPath.js +114 -18
  14. package/src/cjs/BezierPath.js.map +1 -1
  15. package/src/cjs/Circle.d.ts +25 -10
  16. package/src/cjs/Circle.js +38 -33
  17. package/src/cjs/Circle.js.map +1 -1
  18. package/src/cjs/CircleSector.d.ts +27 -13
  19. package/src/cjs/CircleSector.js +38 -23
  20. package/src/cjs/CircleSector.js.map +1 -1
  21. package/src/cjs/CubicBezierCurve.d.ts +17 -1
  22. package/src/cjs/CubicBezierCurve.js +78 -79
  23. package/src/cjs/CubicBezierCurve.js.map +1 -1
  24. package/src/cjs/KeyHandler.d.ts +10 -3
  25. package/src/cjs/KeyHandler.js +28 -23
  26. package/src/cjs/KeyHandler.js.map +1 -1
  27. package/src/cjs/Line.d.ts +2 -1
  28. package/src/cjs/Line.js +19 -18
  29. package/src/cjs/Line.js.map +1 -1
  30. package/src/cjs/MouseHandler.js +43 -53
  31. package/src/cjs/MouseHandler.js.map +1 -1
  32. package/src/cjs/PBImage.d.ts +16 -1
  33. package/src/cjs/PBImage.js +13 -3
  34. package/src/cjs/PBImage.js.map +1 -1
  35. package/src/cjs/PBText.d.ts +130 -0
  36. package/src/cjs/PBText.js +76 -0
  37. package/src/cjs/PBText.js.map +1 -0
  38. package/src/cjs/PlotBoilerplate.d.ts +2 -1
  39. package/src/cjs/PlotBoilerplate.js +44 -16
  40. package/src/cjs/PlotBoilerplate.js.map +1 -1
  41. package/src/cjs/Polygon.d.ts +37 -1
  42. package/src/cjs/Polygon.js +131 -54
  43. package/src/cjs/Polygon.js.map +1 -1
  44. package/src/cjs/Triangle.d.ts +16 -1
  45. package/src/cjs/Triangle.js +50 -54
  46. package/src/cjs/Triangle.js.map +1 -1
  47. package/src/cjs/VEllipse.d.ts +16 -1
  48. package/src/cjs/VEllipse.js +25 -12
  49. package/src/cjs/VEllipse.js.map +1 -1
  50. package/src/cjs/VEllipseSector.d.ts +15 -1
  51. package/src/cjs/VEllipseSector.js +11 -1
  52. package/src/cjs/VEllipseSector.js.map +1 -1
  53. package/src/cjs/Vector.d.ts +3 -1
  54. package/src/cjs/Vector.js +32 -36
  55. package/src/cjs/Vector.js.map +1 -1
  56. package/src/cjs/VertTuple.d.ts +15 -1
  57. package/src/cjs/VertTuple.js +14 -19
  58. package/src/cjs/VertTuple.js.map +1 -1
  59. package/src/cjs/Vertex.d.ts +66 -4
  60. package/src/cjs/Vertex.js +99 -17
  61. package/src/cjs/Vertex.js.map +1 -1
  62. package/src/cjs/VertexListeners.d.ts +12 -8
  63. package/src/cjs/VertexListeners.js +18 -25
  64. package/src/cjs/VertexListeners.js.map +1 -1
  65. package/src/cjs/draw.d.ts +30 -2
  66. package/src/cjs/draw.js +51 -6
  67. package/src/cjs/draw.js.map +1 -1
  68. package/src/cjs/drawgl.d.ts +29 -2
  69. package/src/cjs/drawgl.js +21 -4
  70. package/src/cjs/drawgl.js.map +1 -1
  71. package/src/cjs/drawutilssvg.d.ts +25 -7
  72. package/src/cjs/drawutilssvg.js +62 -14
  73. package/src/cjs/drawutilssvg.js.map +1 -1
  74. package/src/cjs/entry.js +1 -0
  75. package/src/cjs/index.d.ts +1 -0
  76. package/src/cjs/index.js +1 -0
  77. package/src/cjs/index.js.map +1 -1
  78. package/src/cjs/interfaces/DrawLib.d.ts +27 -6
  79. package/src/cjs/interfaces/DrawLib.js +3 -0
  80. package/src/cjs/interfaces/DrawLib.js.map +1 -1
  81. package/src/cjs/interfaces/core.d.ts +9 -1
  82. package/src/cjs/interfaces/core.js +1 -0
  83. package/src/cjs/interfaces/core.js.map +1 -1
  84. package/src/cjs/utils/creategui.js +1 -1
  85. package/src/cjs/utils/findInVertexArray.d.ts +19 -0
  86. package/src/cjs/utils/findInVertexArray.js +29 -0
  87. package/src/cjs/utils/findInVertexArray.js.map +1 -0
  88. package/src/cjs/utils/helpers/BezierPathInteractionHelper.d.ts +15 -0
  89. package/src/cjs/utils/helpers/BezierPathInteractionHelper.js +55 -28
  90. package/src/cjs/utils/helpers/BezierPathInteractionHelper.js.map +1 -1
  91. package/src/cjs/utils/io/DndFileHandler.d.ts +63 -0
  92. package/src/cjs/utils/io/DndFileHandler.js +112 -0
  93. package/src/cjs/utils/io/DndFileHandler.js.map +1 -0
  94. package/src/cjs/utils/io/FileDrop.d.ts +98 -0
  95. package/src/cjs/utils/io/FileDrop.js +142 -0
  96. package/src/cjs/utils/io/FileDrop.js.map +1 -0
  97. package/src/esm/BezierPath.d.ts +45 -2
  98. package/src/esm/BezierPath.js +114 -18
  99. package/src/esm/BezierPath.js.map +1 -1
  100. package/src/esm/Circle.d.ts +25 -10
  101. package/src/esm/Circle.js +38 -33
  102. package/src/esm/Circle.js.map +1 -1
  103. package/src/esm/CircleSector.d.ts +27 -13
  104. package/src/esm/CircleSector.js +38 -23
  105. package/src/esm/CircleSector.js.map +1 -1
  106. package/src/esm/CubicBezierCurve.d.ts +17 -1
  107. package/src/esm/CubicBezierCurve.js +78 -79
  108. package/src/esm/CubicBezierCurve.js.map +1 -1
  109. package/src/esm/KeyHandler.d.ts +10 -3
  110. package/src/esm/KeyHandler.js +28 -23
  111. package/src/esm/KeyHandler.js.map +1 -1
  112. package/src/esm/Line.d.ts +2 -1
  113. package/src/esm/Line.js +19 -18
  114. package/src/esm/Line.js.map +1 -1
  115. package/src/esm/MouseHandler.js +43 -53
  116. package/src/esm/MouseHandler.js.map +1 -1
  117. package/src/esm/PBImage.d.ts +16 -1
  118. package/src/esm/PBImage.js +13 -3
  119. package/src/esm/PBImage.js.map +1 -1
  120. package/src/esm/PBText.d.ts +130 -0
  121. package/src/esm/PBText.js +71 -0
  122. package/src/esm/PBText.js.map +1 -0
  123. package/src/esm/PlotBoilerplate.d.ts +2 -1
  124. package/src/esm/PlotBoilerplate.js +44 -16
  125. package/src/esm/PlotBoilerplate.js.map +1 -1
  126. package/src/esm/Polygon.d.ts +37 -1
  127. package/src/esm/Polygon.js +131 -54
  128. package/src/esm/Polygon.js.map +1 -1
  129. package/src/esm/Triangle.d.ts +16 -1
  130. package/src/esm/Triangle.js +50 -54
  131. package/src/esm/Triangle.js.map +1 -1
  132. package/src/esm/VEllipse.d.ts +16 -1
  133. package/src/esm/VEllipse.js +25 -12
  134. package/src/esm/VEllipse.js.map +1 -1
  135. package/src/esm/VEllipseSector.d.ts +15 -1
  136. package/src/esm/VEllipseSector.js +11 -1
  137. package/src/esm/VEllipseSector.js.map +1 -1
  138. package/src/esm/Vector.d.ts +3 -1
  139. package/src/esm/Vector.js +32 -36
  140. package/src/esm/Vector.js.map +1 -1
  141. package/src/esm/VertTuple.d.ts +15 -1
  142. package/src/esm/VertTuple.js +14 -19
  143. package/src/esm/VertTuple.js.map +1 -1
  144. package/src/esm/Vertex.d.ts +66 -4
  145. package/src/esm/Vertex.js +99 -17
  146. package/src/esm/Vertex.js.map +1 -1
  147. package/src/esm/VertexListeners.d.ts +12 -8
  148. package/src/esm/VertexListeners.js +18 -25
  149. package/src/esm/VertexListeners.js.map +1 -1
  150. package/src/esm/draw.d.ts +30 -2
  151. package/src/esm/draw.js +51 -6
  152. package/src/esm/draw.js.map +1 -1
  153. package/src/esm/drawgl.d.ts +29 -2
  154. package/src/esm/drawgl.js +21 -4
  155. package/src/esm/drawgl.js.map +1 -1
  156. package/src/esm/drawutilssvg.d.ts +25 -7
  157. package/src/esm/drawutilssvg.js +62 -14
  158. package/src/esm/drawutilssvg.js.map +1 -1
  159. package/src/esm/entry.js +1 -0
  160. package/src/esm/index.d.ts +1 -0
  161. package/src/esm/index.js +1 -0
  162. package/src/esm/index.js.map +1 -1
  163. package/src/esm/interfaces/DrawLib.d.ts +27 -6
  164. package/src/esm/interfaces/DrawLib.js +3 -0
  165. package/src/esm/interfaces/DrawLib.js.map +1 -1
  166. package/src/esm/interfaces/core.d.ts +9 -1
  167. package/src/esm/interfaces/core.js +1 -0
  168. package/src/esm/interfaces/core.js.map +1 -1
  169. package/src/esm/utils/findInVertexArray.d.ts +19 -0
  170. package/src/esm/utils/findInVertexArray.js +25 -0
  171. package/src/esm/utils/findInVertexArray.js.map +1 -0
  172. package/src/esm/utils/helpers/BezierPathInteractionHelper.d.ts +15 -0
  173. package/src/esm/utils/helpers/BezierPathInteractionHelper.js +54 -28
  174. package/src/esm/utils/helpers/BezierPathInteractionHelper.js.map +1 -1
  175. package/src/esm/utils/io/DndFileHandler.d.ts +63 -0
  176. package/src/esm/utils/io/DndFileHandler.js +106 -0
  177. package/src/esm/utils/io/DndFileHandler.js.map +1 -0
  178. package/src/esm/utils/io/FileDrop.d.ts +98 -0
  179. package/src/esm/utils/io/FileDrop.js +136 -0
  180. package/src/esm/utils/io/FileDrop.js.map +1 -0
  181. package/src/ts/BezierPath.ts +133 -16
  182. package/src/ts/Circle.ts +213 -200
  183. package/src/ts/CircleSector.ts +171 -141
  184. package/src/ts/CubicBezierCurve.ts +777 -810
  185. package/src/ts/KeyHandler.ts +221 -212
  186. package/src/ts/Line.ts +77 -80
  187. package/src/ts/MouseHandler.ts +356 -368
  188. package/src/ts/PBImage.ts +81 -68
  189. package/src/ts/PBText.ts +166 -0
  190. package/src/ts/PlotBoilerplate.ts +48 -20
  191. package/src/ts/Polygon.ts +519 -451
  192. package/src/ts/Triangle.ts +484 -489
  193. package/src/ts/VEllipse.ts +36 -11
  194. package/src/ts/VEllipseSector.ts +20 -1
  195. package/src/ts/Vector.ts +164 -160
  196. package/src/ts/VertTuple.ts +333 -338
  197. package/src/ts/Vertex.ts +117 -16
  198. package/src/ts/VertexListeners.ts +248 -266
  199. package/src/ts/draw.ts +71 -8
  200. package/src/ts/drawgl.ts +48 -8
  201. package/src/ts/drawutilssvg.ts +94 -17
  202. package/src/ts/index.ts +1 -0
  203. package/src/ts/interfaces/DrawLib.ts +30 -4
  204. package/src/ts/interfaces/core.ts +9 -0
  205. package/src/ts/utils/findInVertexArray.ts +28 -0
  206. package/src/ts/utils/helpers/BezierPathInteractionHelper.ts +61 -30
  207. package/src/ts/utils/io/FileDrop.ts +178 -0
  208. package/dist/plotboilerplate.browser.min.js.LICENSE.txt +0 -8
  209. package/src/ts/utils/algorithms/clearPolygonDuplicateVertices.ts~ +0 -5
  210. package/src/ts/utils/algorithms/findPolygonSelfIntersections.ts~ +0 -45
  211. package/src/ts/utils/algorithms/sh-tmp.ts~ +0 -59
  212. package/src/ts/utils/algorithms/splitPolygonToNonIntersecting.ts~ +0 -113
  213. package/src/ts/utils/algorithms/sutherlandHodgman.ts~ +0 -88
package/src/ts/Vertex.ts CHANGED
@@ -22,7 +22,13 @@
22
22
  * @modified 2020-05-26 Added functions addX(number) and addY(number).
23
23
  * @modified 2020-10-30 Changed the warnings in `sub(...)` and `add(...)` into real errors.
24
24
  * @modified 2021-03-01 Changed the second param `center` in the `rotate` function from Vertex to XYCoords.
25
- * @version 2.4.2
25
+ * @modified 2021-12-01 Changed the type of param of `scale` to XYCoords.
26
+ * @modified 2021-12-01 Added function `scaleXY` for non uniform scaling.
27
+ * @modified 2021-12-17 Added the functions `lerp` and `lerpAbs` for linear interpolations.
28
+ * @modified 2022-01-31 Added `Vertex.utils.arrayToJSON`.
29
+ * @modified 2022-02-02 Added the `destroy` method.
30
+ * @modified 2022-02-02 Cleared the `Vertex.toSVGString` function (deprecated). Use `drawutilssvg` instead.
31
+ * @version 2.7.0
26
32
  *
27
33
  * @file Vertex
28
34
  * @public
@@ -101,6 +107,14 @@ export class Vertex implements XYCoords, SVGSerializable {
101
107
  **/
102
108
  listeners: VertexListeners;
103
109
 
110
+ /**
111
+ * @member isDestroyed
112
+ * @memberof Vertex
113
+ * @type {boolean}
114
+ * @instance
115
+ */
116
+ isDestroyed: boolean;
117
+
104
118
  /**
105
119
  * The constructor for the vertex class.
106
120
  *
@@ -406,19 +420,75 @@ export class Vertex implements XYCoords, SVGSerializable {
406
420
 
407
421
  /**
408
422
  * This is a vector-like behavior and 'scales' this vertex
409
- * towards/from a given center.
423
+ * towards/from a given center by one uniform scale factor.
410
424
  *
411
425
  * @method scale
412
426
  * @param {number} factor - The factor to 'scale' this vertex; 1.0 means no change.
413
- * @param {Vertex=} center - The origin of scaling; default is (0,0).
427
+ * @param {XYCoords=} center - The origin of scaling; default is (0,0).
414
428
  * @return {Vertex} this
415
429
  * @instance
416
430
  * @memberof Vertex
417
431
  **/
418
- scale(factor: number, center?: Vertex): Vertex {
419
- if (!center || typeof center === "undefined") center = new Vertex(0, 0);
420
- this.x = center.x + (this.x - center.x) * factor;
421
- this.y = center.y + (this.y - center.y) * factor;
432
+ scale(factor: number, center?: XYCoords): Vertex {
433
+ return this.scaleXY({ x: factor, y: factor }, center);
434
+ }
435
+
436
+ /**
437
+ * Perform a linear interpolation towards the given target vertex.
438
+ * The amount value `t` is relative, `t=0.0` means no change, `t=1.0`
439
+ * means this point will be moved to the exact target position.
440
+ *
441
+ * `t=0.5` will move this point to the middle of the connecting
442
+ * linear segment.
443
+ *
444
+ * @param {XYCoords} target - The target position to lerp this vertex to.
445
+ * @param {number} t - The relative amount, usually in [0..1], but other values will work, too.
446
+ * @returns
447
+ */
448
+ lerp(target: XYCoords, t: number): Vertex {
449
+ var diff = this.difference(target);
450
+ // return new Vertex(this.x + diff.x * t, this.y + diff.y * t);
451
+ this.x += diff.x * t;
452
+ this.y += diff.y * t;
453
+ return this;
454
+ }
455
+
456
+ /**
457
+ * Perform a linear interpolation towards the given target vertex (absolute variant).
458
+ * The amount value `t` is absolute, which means the lerp amount is a direct distance
459
+ * value. This point will have move the amount of the passed distance `u`.
460
+ *
461
+ * @param {XYCoords} target - The target position to lerp this vertex to.
462
+ * @param {number} t - The absolute move amount to use to lerping.
463
+ * @returns
464
+ */
465
+ lerpAbs(target: XYCoords, u: number): Vertex {
466
+ var dist = this.distance(target);
467
+ var diff = this.difference(target);
468
+ var step = { x: diff.x / dist, y: diff.y / dist };
469
+ // return new Vertex(this.x + step.x * u, this.y + step.y * u);
470
+ this.x += step.x * u;
471
+ this.y += step.y * u;
472
+ return this;
473
+ }
474
+
475
+ /**
476
+ * This is a vector-like behavior and 'scales' this vertex
477
+ * towards/from a given center by two independent x- and y- scale factors.
478
+ *
479
+ * @method scale
480
+ * @param {number} factor - The factor to 'scale' this vertex; 1.0 means no change.
481
+ * @param {XYCoords=} center - The origin of scaling; default is (0,0).
482
+ * @return {Vertex} this
483
+ * @instance
484
+ * @memberof Vertex
485
+ **/
486
+ scaleXY(factors: XYCoords, center?: XYCoords): Vertex {
487
+ if (!center || typeof center === "undefined") {
488
+ center = { x: 0, y: 0 };
489
+ }
490
+ this.x = center.x + (this.x - center.x) * factors.x;
491
+ this.y = center.y + (this.y - center.y) * factors.y;
422
492
  return this;
423
493
  }
424
494
 
@@ -513,20 +583,35 @@ export class Vertex implements XYCoords, SVGSerializable {
513
583
  * @return {string} A string representing the SVG code for this vertex.
514
584
  * @instance
515
585
  * @memberof Vertex
586
+ * @deprecated
516
587
  **/
517
588
  toSVGString(options: { className?: string }): string {
518
- options = options || {};
519
- var buffer = [];
520
- buffer.push("<circle");
521
- if (options.className) buffer.push(' class="' + options.className + '"');
522
- buffer.push(' cx="' + this.x + '"');
523
- buffer.push(' cy="' + this.y + '"');
524
- buffer.push(' r="2"');
525
- buffer.push(" />");
526
- return buffer.join("");
589
+ // options = options || {};
590
+ // var buffer = [];
591
+ // buffer.push("<circle");
592
+ // if (options.className) buffer.push(' class="' + options.className + '"');
593
+ // buffer.push(' cx="' + this.x + '"');
594
+ // buffer.push(' cy="' + this.y + '"');
595
+ // buffer.push(' r="2"');
596
+ // buffer.push(" />");
597
+ // return buffer.join("");
598
+ console.warn(
599
+ "[Deprecation] Warning: the Vertex.toSVGString method is deprecated and does not return and valid SVG data any more. Please use `drawutilssvg` instead."
600
+ );
601
+ return "";
527
602
  }
528
603
  // END Vertex
529
604
 
605
+ /**
606
+ * This function should invalidate any installed listeners and invalidate this object.
607
+ * After calling this function the object might not hold valid data any more and
608
+ * should not be used.
609
+ */
610
+ destroy() {
611
+ this.listeners.removeAllListeners();
612
+ this.isDestroyed = true;
613
+ }
614
+
530
615
  /**
531
616
  * Create a new random vertex inside the given viewport.
532
617
  *
@@ -588,6 +673,22 @@ export class Vertex implements XYCoords, SVGSerializable {
588
673
  );
589
674
 
590
675
  return vertices;
676
+ },
677
+
678
+ /**
679
+ * Convert the given vertices (array) to a JSON string.
680
+ *
681
+ * @param {number?} precision - (optional) The numeric precision to be used (number of precision digits).
682
+ * @returns {string}
683
+ */
684
+ arrayToJSON(vertices: Array<XYCoords>, precision?: number) {
685
+ return JSON.stringify(
686
+ vertices.map(function (vert) {
687
+ return typeof precision === undefined
688
+ ? { x: vert.x, y: vert.y }
689
+ : { x: Number(vert.x.toFixed(precision)), y: Number(vert.y.toFixed(precision)) };
690
+ })
691
+ );
591
692
  }
592
693
  };
593
694
  }