plotboilerplate 1.15.0 → 1.17.1

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 (237) hide show
  1. package/README.md +1 -0
  2. package/changelog.md +65 -0
  3. package/dist/index.esm.js +760 -667
  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 +765 -571
  10. package/dist/plotboilerplate.min.js +1 -1
  11. package/package.json +1 -1
  12. package/src/cjs/BezierPath.d.ts +32 -14
  13. package/src/cjs/BezierPath.js +65 -24
  14. package/src/cjs/BezierPath.js.map +1 -1
  15. package/src/cjs/Bounds.d.ts +33 -1
  16. package/src/cjs/Bounds.js +38 -1
  17. package/src/cjs/Bounds.js.map +1 -1
  18. package/src/cjs/Circle.d.ts +15 -13
  19. package/src/cjs/Circle.js +16 -34
  20. package/src/cjs/Circle.js.map +1 -1
  21. package/src/cjs/CircleSector.d.ts +17 -16
  22. package/src/cjs/CircleSector.js +12 -24
  23. package/src/cjs/CircleSector.js.map +1 -1
  24. package/src/cjs/CubicBezierCurve.d.ts +16 -15
  25. package/src/cjs/CubicBezierCurve.js +57 -94
  26. package/src/cjs/CubicBezierCurve.js.map +1 -1
  27. package/src/cjs/KeyHandler.d.ts +10 -3
  28. package/src/cjs/KeyHandler.js +28 -23
  29. package/src/cjs/KeyHandler.js.map +1 -1
  30. package/src/cjs/Line.d.ts +2 -15
  31. package/src/cjs/Line.js +6 -31
  32. package/src/cjs/Line.js.map +1 -1
  33. package/src/cjs/MouseHandler.js +43 -53
  34. package/src/cjs/MouseHandler.js.map +1 -1
  35. package/src/cjs/PBImage.d.ts +15 -13
  36. package/src/cjs/PBImage.js +11 -15
  37. package/src/cjs/PBImage.js.map +1 -1
  38. package/src/cjs/PBText.d.ts +13 -12
  39. package/src/cjs/PBText.js +8 -12
  40. package/src/cjs/PBText.js.map +1 -1
  41. package/src/cjs/PlotBoilerplate.d.ts +3 -1
  42. package/src/cjs/PlotBoilerplate.js +9 -2
  43. package/src/cjs/PlotBoilerplate.js.map +1 -1
  44. package/src/cjs/Polygon.d.ts +23 -14
  45. package/src/cjs/Polygon.js +22 -35
  46. package/src/cjs/Polygon.js.map +1 -1
  47. package/src/cjs/Triangle.d.ts +15 -13
  48. package/src/cjs/Triangle.js +23 -64
  49. package/src/cjs/Triangle.js.map +1 -1
  50. package/src/cjs/VEllipse.d.ts +14 -9
  51. package/src/cjs/VEllipse.js +10 -18
  52. package/src/cjs/VEllipse.js.map +1 -1
  53. package/src/cjs/VEllipseSector.d.ts +15 -1
  54. package/src/cjs/VEllipseSector.js +11 -1
  55. package/src/cjs/VEllipseSector.js.map +1 -1
  56. package/src/cjs/Vector.d.ts +3 -15
  57. package/src/cjs/Vector.js +9 -49
  58. package/src/cjs/Vector.js.map +1 -1
  59. package/src/cjs/VertTuple.d.ts +15 -1
  60. package/src/cjs/VertTuple.js +14 -19
  61. package/src/cjs/VertTuple.js.map +1 -1
  62. package/src/cjs/Vertex.d.ts +23 -13
  63. package/src/cjs/Vertex.js +24 -22
  64. package/src/cjs/Vertex.js.map +1 -1
  65. package/src/cjs/VertexListeners.d.ts +12 -8
  66. package/src/cjs/VertexListeners.js +18 -25
  67. package/src/cjs/VertexListeners.js.map +1 -1
  68. package/src/cjs/draw.d.ts +45 -3
  69. package/src/cjs/draw.js +149 -6
  70. package/src/cjs/draw.js.map +1 -1
  71. package/src/cjs/drawgl.d.ts +41 -3
  72. package/src/cjs/drawgl.js +45 -3
  73. package/src/cjs/drawgl.js.map +1 -1
  74. package/src/cjs/drawutilssvg.d.ts +69 -4
  75. package/src/cjs/drawutilssvg.js +147 -16
  76. package/src/cjs/drawutilssvg.js.map +1 -1
  77. package/src/cjs/index.d.ts +0 -1
  78. package/src/cjs/index.js +0 -1
  79. package/src/cjs/index.js.map +1 -1
  80. package/src/cjs/interfaces/DrawLib.d.ts +64 -27
  81. package/src/cjs/interfaces/DrawLib.js +3 -0
  82. package/src/cjs/interfaces/DrawLib.js.map +1 -1
  83. package/src/cjs/interfaces/core.d.ts +2 -12
  84. package/src/cjs/interfaces/core.js +1 -0
  85. package/src/cjs/interfaces/core.js.map +1 -1
  86. package/src/cjs/module.d.ts +1 -3
  87. package/src/cjs/module.js +2 -5
  88. package/src/cjs/module.js.map +1 -1
  89. package/src/cjs/utils/creategui.js +16 -2
  90. package/src/cjs/utils/datastructures/Color.d.ts +3 -1
  91. package/src/cjs/utils/datastructures/Color.js +17 -6
  92. package/src/cjs/utils/datastructures/Color.js.map +1 -1
  93. package/src/cjs/utils/datastructures/Girih.d.ts +5 -0
  94. package/src/cjs/utils/datastructures/Girih.js +18 -14
  95. package/src/cjs/utils/datastructures/Girih.js.map +1 -1
  96. package/src/cjs/utils/datastructures/GirihPenroseRhombus.js +42 -25
  97. package/src/cjs/utils/datastructures/GirihPenroseRhombus.js.map +1 -1
  98. package/src/cjs/utils/datastructures/GirihTile.js +2 -13
  99. package/src/cjs/utils/datastructures/GirihTile.js.map +1 -1
  100. package/src/cjs/utils/helpers/BezierPathInteractionHelper.d.ts +17 -1
  101. package/src/cjs/utils/helpers/BezierPathInteractionHelper.js +50 -32
  102. package/src/cjs/utils/helpers/BezierPathInteractionHelper.js.map +1 -1
  103. package/src/cjs/utils/io/DndFileHandler.d.ts +63 -0
  104. package/src/cjs/utils/io/DndFileHandler.js +112 -0
  105. package/src/cjs/utils/io/DndFileHandler.js.map +1 -0
  106. package/src/cjs/utils/io/FileDrop.d.ts +98 -0
  107. package/src/cjs/utils/io/FileDrop.js +142 -0
  108. package/src/cjs/utils/io/FileDrop.js.map +1 -0
  109. package/src/esm/BezierPath.d.ts +32 -14
  110. package/src/esm/BezierPath.js +65 -24
  111. package/src/esm/BezierPath.js.map +1 -1
  112. package/src/esm/Bounds.d.ts +33 -1
  113. package/src/esm/Bounds.js +38 -1
  114. package/src/esm/Bounds.js.map +1 -1
  115. package/src/esm/Circle.d.ts +15 -13
  116. package/src/esm/Circle.js +16 -34
  117. package/src/esm/Circle.js.map +1 -1
  118. package/src/esm/CircleSector.d.ts +17 -16
  119. package/src/esm/CircleSector.js +12 -24
  120. package/src/esm/CircleSector.js.map +1 -1
  121. package/src/esm/CubicBezierCurve.d.ts +16 -15
  122. package/src/esm/CubicBezierCurve.js +57 -94
  123. package/src/esm/CubicBezierCurve.js.map +1 -1
  124. package/src/esm/KeyHandler.d.ts +10 -3
  125. package/src/esm/KeyHandler.js +28 -23
  126. package/src/esm/KeyHandler.js.map +1 -1
  127. package/src/esm/Line.d.ts +2 -15
  128. package/src/esm/Line.js +6 -31
  129. package/src/esm/Line.js.map +1 -1
  130. package/src/esm/MouseHandler.js +43 -53
  131. package/src/esm/MouseHandler.js.map +1 -1
  132. package/src/esm/PBImage.d.ts +15 -13
  133. package/src/esm/PBImage.js +11 -15
  134. package/src/esm/PBImage.js.map +1 -1
  135. package/src/esm/PBText.d.ts +13 -12
  136. package/src/esm/PBText.js +8 -12
  137. package/src/esm/PBText.js.map +1 -1
  138. package/src/esm/PlotBoilerplate.d.ts +3 -1
  139. package/src/esm/PlotBoilerplate.js +9 -2
  140. package/src/esm/PlotBoilerplate.js.map +1 -1
  141. package/src/esm/Polygon.d.ts +23 -14
  142. package/src/esm/Polygon.js +22 -35
  143. package/src/esm/Polygon.js.map +1 -1
  144. package/src/esm/Triangle.d.ts +15 -13
  145. package/src/esm/Triangle.js +23 -64
  146. package/src/esm/Triangle.js.map +1 -1
  147. package/src/esm/VEllipse.d.ts +14 -9
  148. package/src/esm/VEllipse.js +10 -18
  149. package/src/esm/VEllipse.js.map +1 -1
  150. package/src/esm/VEllipseSector.d.ts +15 -1
  151. package/src/esm/VEllipseSector.js +11 -1
  152. package/src/esm/VEllipseSector.js.map +1 -1
  153. package/src/esm/Vector.d.ts +3 -15
  154. package/src/esm/Vector.js +9 -49
  155. package/src/esm/Vector.js.map +1 -1
  156. package/src/esm/VertTuple.d.ts +15 -1
  157. package/src/esm/VertTuple.js +14 -19
  158. package/src/esm/VertTuple.js.map +1 -1
  159. package/src/esm/Vertex.d.ts +23 -13
  160. package/src/esm/Vertex.js +24 -22
  161. package/src/esm/Vertex.js.map +1 -1
  162. package/src/esm/VertexListeners.d.ts +12 -8
  163. package/src/esm/VertexListeners.js +18 -25
  164. package/src/esm/VertexListeners.js.map +1 -1
  165. package/src/esm/draw.d.ts +45 -3
  166. package/src/esm/draw.js +147 -6
  167. package/src/esm/draw.js.map +1 -1
  168. package/src/esm/drawgl.d.ts +41 -3
  169. package/src/esm/drawgl.js +44 -3
  170. package/src/esm/drawgl.js.map +1 -1
  171. package/src/esm/drawutilssvg.d.ts +69 -4
  172. package/src/esm/drawutilssvg.js +146 -16
  173. package/src/esm/drawutilssvg.js.map +1 -1
  174. package/src/esm/index.d.ts +0 -1
  175. package/src/esm/index.js +0 -1
  176. package/src/esm/index.js.map +1 -1
  177. package/src/esm/interfaces/DrawLib.d.ts +64 -27
  178. package/src/esm/interfaces/DrawLib.js +3 -0
  179. package/src/esm/interfaces/DrawLib.js.map +1 -1
  180. package/src/esm/interfaces/core.d.ts +2 -12
  181. package/src/esm/interfaces/core.js +1 -0
  182. package/src/esm/interfaces/core.js.map +1 -1
  183. package/src/esm/module.d.ts +1 -3
  184. package/src/esm/module.js +5 -4
  185. package/src/esm/module.js.map +1 -1
  186. package/src/esm/utils/datastructures/Color.d.ts +3 -1
  187. package/src/esm/utils/datastructures/Color.js +17 -6
  188. package/src/esm/utils/datastructures/Color.js.map +1 -1
  189. package/src/esm/utils/datastructures/Girih.d.ts +5 -0
  190. package/src/esm/utils/datastructures/Girih.js +18 -14
  191. package/src/esm/utils/datastructures/Girih.js.map +1 -1
  192. package/src/esm/utils/datastructures/GirihPenroseRhombus.js +42 -25
  193. package/src/esm/utils/datastructures/GirihPenroseRhombus.js.map +1 -1
  194. package/src/esm/utils/datastructures/GirihTile.js +2 -13
  195. package/src/esm/utils/datastructures/GirihTile.js.map +1 -1
  196. package/src/esm/utils/helpers/BezierPathInteractionHelper.d.ts +17 -1
  197. package/src/esm/utils/helpers/BezierPathInteractionHelper.js +49 -32
  198. package/src/esm/utils/helpers/BezierPathInteractionHelper.js.map +1 -1
  199. package/src/esm/utils/io/DndFileHandler.d.ts +63 -0
  200. package/src/esm/utils/io/DndFileHandler.js +106 -0
  201. package/src/esm/utils/io/DndFileHandler.js.map +1 -0
  202. package/src/esm/utils/io/FileDrop.d.ts +98 -0
  203. package/src/esm/utils/io/FileDrop.js +136 -0
  204. package/src/esm/utils/io/FileDrop.js.map +1 -0
  205. package/src/ts/BezierPath.ts +78 -22
  206. package/src/ts/Bounds.ts +40 -1
  207. package/src/ts/Circle.ts +187 -200
  208. package/src/ts/CircleSector.ts +141 -141
  209. package/src/ts/CubicBezierCurve.ts +738 -810
  210. package/src/ts/KeyHandler.ts +221 -212
  211. package/src/ts/Line.ts +48 -80
  212. package/src/ts/MouseHandler.ts +356 -368
  213. package/src/ts/PBImage.ts +67 -69
  214. package/src/ts/PBText.ts +16 -14
  215. package/src/ts/PlotBoilerplate.ts +9 -2
  216. package/src/ts/Polygon.ts +34 -34
  217. package/src/ts/Triangle.ts +444 -489
  218. package/src/ts/VEllipse.ts +18 -17
  219. package/src/ts/VEllipseSector.ts +20 -1
  220. package/src/ts/Vector.ts +124 -160
  221. package/src/ts/VertTuple.ts +333 -338
  222. package/src/ts/Vertex.ts +35 -21
  223. package/src/ts/VertexListeners.ts +248 -266
  224. package/src/ts/draw.ts +201 -6
  225. package/src/ts/drawgl.ts +47 -3
  226. package/src/ts/drawutilssvg.ts +187 -16
  227. package/src/ts/index.ts +0 -1
  228. package/src/ts/interfaces/DrawLib.ts +72 -27
  229. package/src/ts/interfaces/core.ts +3 -13
  230. package/src/ts/module.ts +2 -4
  231. package/src/ts/utils/datastructures/Color.ts +17 -6
  232. package/src/ts/utils/datastructures/Girih.ts +204 -209
  233. package/src/ts/utils/datastructures/GirihPenroseRhombus.ts +170 -152
  234. package/src/ts/utils/datastructures/GirihTile.ts +394 -419
  235. package/src/ts/utils/helpers/BezierPathInteractionHelper.ts +56 -34
  236. package/src/ts/utils/io/FileDrop.ts +178 -0
  237. package/src/ts/SVGBuilder.ts +0 -109
package/src/ts/Vertex.ts CHANGED
@@ -25,7 +25,10 @@
25
25
  * @modified 2021-12-01 Changed the type of param of `scale` to XYCoords.
26
26
  * @modified 2021-12-01 Added function `scaleXY` for non uniform scaling.
27
27
  * @modified 2021-12-17 Added the functions `lerp` and `lerpAbs` for linear interpolations.
28
- * @version 2.6.0
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
29
32
  *
30
33
  * @file Vertex
31
34
  * @public
@@ -104,6 +107,14 @@ export class Vertex implements XYCoords, SVGSerializable {
104
107
  **/
105
108
  listeners: VertexListeners;
106
109
 
110
+ /**
111
+ * @member isDestroyed
112
+ * @memberof Vertex
113
+ * @type {boolean}
114
+ * @instance
115
+ */
116
+ isDestroyed: boolean;
117
+
107
118
  /**
108
119
  * The constructor for the vertex class.
109
120
  *
@@ -564,27 +575,14 @@ export class Vertex implements XYCoords, SVGSerializable {
564
575
  }
565
576
 
566
577
  /**
567
- * Convert this vertex to SVG code.
568
- *
569
- * @deprecated DEPRECATION Please use the drawutilssvg library and an XMLSerializer instead.
570
- * @method toSVGString
571
- * @param {object=} options - An optional set of options, like 'className'.
572
- * @return {string} A string representing the SVG code for this vertex.
573
- * @instance
574
- * @memberof Vertex
575
- **/
576
- toSVGString(options: { className?: string }): string {
577
- options = options || {};
578
- var buffer = [];
579
- buffer.push("<circle");
580
- if (options.className) buffer.push(' class="' + options.className + '"');
581
- buffer.push(' cx="' + this.x + '"');
582
- buffer.push(' cy="' + this.y + '"');
583
- buffer.push(' r="2"');
584
- buffer.push(" />");
585
- return buffer.join("");
578
+ * This function should invalidate any installed listeners and invalidate this object.
579
+ * After calling this function the object might not hold valid data any more and
580
+ * should not be used.
581
+ */
582
+ destroy() {
583
+ this.listeners.removeAllListeners();
584
+ this.isDestroyed = true;
586
585
  }
587
- // END Vertex
588
586
 
589
587
  /**
590
588
  * Create a new random vertex inside the given viewport.
@@ -647,6 +645,22 @@ export class Vertex implements XYCoords, SVGSerializable {
647
645
  );
648
646
 
649
647
  return vertices;
648
+ },
649
+
650
+ /**
651
+ * Convert the given vertices (array) to a JSON string.
652
+ *
653
+ * @param {number?} precision - (optional) The numeric precision to be used (number of precision digits).
654
+ * @returns {string}
655
+ */
656
+ arrayToJSON(vertices: Array<XYCoords>, precision?: number) {
657
+ return JSON.stringify(
658
+ vertices.map(function (vert) {
659
+ return typeof precision === undefined
660
+ ? { x: vert.x, y: vert.y }
661
+ : { x: Number(vert.x.toFixed(precision)), y: Number(vert.y.toFixed(precision)) };
662
+ })
663
+ );
650
664
  }
651
665
  };
652
666
  }
@@ -16,300 +16,282 @@ import { Vertex } from "./Vertex";
16
16
  import { XMouseParams, XMouseEvent } from "./MouseHandler";
17
17
 
18
18
  export interface VertEventParams extends XMouseParams {
19
- vertex : Vertex;
19
+ vertex: Vertex;
20
20
  }
21
21
 
22
22
  export interface VertEvent {
23
- params : VertEventParams;
23
+ params: VertEventParams;
24
24
  }
25
25
 
26
- export type VertListener = (e:VertEvent) => void;
27
-
26
+ export type VertListener = (e: VertEvent) => void;
28
27
 
29
28
  /**
30
- * @classdesc An event listeners wrapper. This is just a set of three listener
29
+ * @classdesc An event listeners wrapper. This is just a set of three listener
31
30
  * queues (drag, dragStart, dragEnd) and their respective firing
32
31
  * functions.
33
32
  *
34
33
  */
35
34
  export class VertexListeners {
35
+ private click: Array<VertListener>;
36
+ private drag: Array<VertListener>;
37
+ private dragStart: Array<VertListener>;
38
+ private dragEnd: Array<VertListener>;
36
39
 
37
- private click:Array<VertListener>;
38
- private drag:Array<VertListener>;
39
- private dragStart:Array<VertListener>;
40
- private dragEnd:Array<VertListener>;
41
-
42
- private vertex:Vertex;
43
-
44
-
45
- /**
46
- * The constructor.
47
- *
48
- * @constructor
49
- * @name VertexListeners
50
- * @param {Vertex} vertex - The vertex to use these listeners on (just a backward reference).
51
- **/
52
- constructor( vertex:Vertex ) {
53
- this.click = [];
54
- this.drag = [];
55
- this.dragStart = [];
56
- this.dragEnd = [];
57
- this.vertex = vertex;
58
- };
59
-
60
-
61
- /**
62
- * Add a click listener.
63
- *
64
- * @method addClickListener
65
- * @param {VertexListeners~dragListener} listener - The click listener to add (a callback).
66
- * @return {VertexListeners} this (for chaining)
67
- * @instance
68
- * @memberof VertexListeners
69
- **/
70
- addClickListener( listener:VertListener ) : VertexListeners {
71
- VertexListeners._addListener( this.click, listener );
72
- return this;
73
- };
74
- /**
75
- * The click listener is a function with a single drag event param.
76
- * @callback VertexListeners~clickListener
77
- * @param {Event} e - The (extended) click event.
78
- */
79
-
40
+ private vertex: Vertex;
80
41
 
81
- /**
82
- * Remove a drag listener.
83
- *
84
- * @method removeDragListener
85
- * @param {VertexListeners~dragListener} listener - The drag listener to remove (a callback).
86
- * @return {VertexListeners} this (for chaining)
87
- * @instance
88
- * @memberof VertexListeners
89
- **/
90
- removeClickListener( listener:VertListener ) : VertexListeners {
91
- this.click = VertexListeners._removeListener( this.click, listener );
92
- return this;
93
- };
94
- /**
95
- * The click listener is a function with a single drag event param.
96
- * @callback VertexListeners~clickListener
97
- * @param {Event} e - The (extended) click event.
98
- */
99
-
42
+ /**
43
+ * The constructor.
44
+ *
45
+ * @constructor
46
+ * @name VertexListeners
47
+ * @param {Vertex} vertex - The vertex to use these listeners on (just a backward reference).
48
+ **/
49
+ constructor(vertex: Vertex) {
50
+ this.click = [];
51
+ this.drag = [];
52
+ this.dragStart = [];
53
+ this.dragEnd = [];
54
+ this.vertex = vertex;
55
+ }
100
56
 
101
- /**
102
- * Add a drag listener.
103
- *
104
- * @method addDragListener
105
- * @param {VertexListeners~dragListener} listener - The drag listener to add (a callback).
106
- * @return {VertexListeners} this (for chaining)
107
- * @instance
108
- * @memberof VertexListeners
109
- **/
110
- addDragListener( listener:VertListener ) : VertexListeners {
111
- VertexListeners._addListener( this.drag, listener );
112
- return this;
113
- };
114
- /**
115
- * The drag listener is a function with a single drag event param.
116
- * @callback VertexListeners~dragListener
117
- * @param {Event} e - The (extended) drag event.
118
- */
119
-
57
+ /**
58
+ * Add a click listener.
59
+ *
60
+ * @method addClickListener
61
+ * @param {VertexListeners~dragListener} listener - The click listener to add (a callback).
62
+ * @return {VertexListeners} this (for chaining)
63
+ * @instance
64
+ * @memberof VertexListeners
65
+ **/
66
+ addClickListener(listener: VertListener): VertexListeners {
67
+ VertexListeners._addListener(this.click, listener);
68
+ return this;
69
+ }
70
+ /**
71
+ * The click listener is a function with a single drag event param.
72
+ * @callback VertexListeners~clickListener
73
+ * @param {Event} e - The (extended) click event.
74
+ */
120
75
 
121
- /**
122
- * Remove a drag listener.
123
- *
124
- * @method removeDragListener
125
- * @param {VertexListeners~dragListener} listener - The drag listener to remove (a callback).
126
- * @return {VertexListeners} this (for chaining)
127
- * @instance
128
- * @memberof VertexListeners
129
- **/
130
- removeDragListener( listener:VertListener ) : VertexListeners {
131
- this.drag = VertexListeners._removeListener( this.drag, listener );
132
- return this;
133
- };
134
-
135
-
136
- /**
137
- * Add a dragStart listener.
138
- *
139
- * @method addDragListener
140
- * @param {VertexListeners~dragStartListener} listener - The drag-start listener to add (a callback).
141
- * @return {VertexListeners} this (for chaining)
142
- * @instance
143
- * @memberof VertexListeners
144
- **/
145
- addDragStartListener( listener:VertListener) : VertexListeners {
146
- VertexListeners._addListener( this.dragStart, listener );
147
- return this;
148
- };
149
- /**
150
- * The drag-start listener is a function with a single drag event param.
151
- * @callback VertexListeners~dragStartListener
152
- * @param {Event} e - The (extended) drag event.
153
- */
76
+ /**
77
+ * Remove a drag listener.
78
+ *
79
+ * @method removeDragListener
80
+ * @param {VertexListeners~dragListener} listener - The drag listener to remove (a callback).
81
+ * @return {VertexListeners} this (for chaining)
82
+ * @instance
83
+ * @memberof VertexListeners
84
+ **/
85
+ removeClickListener(listener: VertListener): VertexListeners {
86
+ this.click = VertexListeners._removeListener(this.click, listener);
87
+ return this;
88
+ }
89
+ /**
90
+ * The click listener is a function with a single drag event param.
91
+ * @callback VertexListeners~clickListener
92
+ * @param {Event} e - The (extended) click event.
93
+ */
154
94
 
95
+ /**
96
+ * Add a drag listener.
97
+ *
98
+ * @method addDragListener
99
+ * @param {VertexListeners~dragListener} listener - The drag listener to add (a callback).
100
+ * @return {VertexListeners} this (for chaining)
101
+ * @instance
102
+ * @memberof VertexListeners
103
+ **/
104
+ addDragListener(listener: VertListener): VertexListeners {
105
+ VertexListeners._addListener(this.drag, listener);
106
+ return this;
107
+ }
108
+ /**
109
+ * The drag listener is a function with a single drag event param.
110
+ * @callback VertexListeners~dragListener
111
+ * @param {Event} e - The (extended) drag event.
112
+ */
155
113
 
156
- /**
157
- * Remove a dragStart listener.
158
- *
159
- * @method addDragStartListener
160
- * @param {VertexListeners~dragListener} listener - The drag listener to remove (a callback).
161
- * @return {VertexListeners} this (for chaining)
162
- * @instance
163
- * @memberof VertexListeners
164
- **/
165
- removeDragStartListener( listener:VertListener ) : VertexListeners {
166
- this.dragStart= VertexListeners._removeListener( this.dragStart, listener );
167
- return this;
168
- };
169
-
170
-
171
- /**
172
- * Add a dragEnd listener.
173
- *
174
- * @method addDragListener
175
- * @param {VertexListeners~dragEndListener} listener - The drag-end listener to add (a callback).
176
- * @return {VertexListeners} this (for chaining)
177
- * @instance
178
- * @memberof VertexListeners
179
- **/
180
- addDragEndListener( listener:(e:VertEvent)=>void ) : VertexListeners {
181
- // this.dragEnd.push( listener );
182
- VertexListeners._addListener( this.dragEnd, listener );
183
- return this;
184
- };
185
- /**
186
- * The drag-end listener is a function with a single drag event param.
187
- * @callback VertexListeners~dragEndListener
188
- * @param {Event} e - The (extended) drag event.
189
- */
114
+ /**
115
+ * Remove a drag listener.
116
+ *
117
+ * @method removeDragListener
118
+ * @param {VertexListeners~dragListener} listener - The drag listener to remove (a callback).
119
+ * @return {VertexListeners} this (for chaining)
120
+ * @instance
121
+ * @memberof VertexListeners
122
+ **/
123
+ removeDragListener(listener: VertListener): VertexListeners {
124
+ this.drag = VertexListeners._removeListener(this.drag, listener);
125
+ return this;
126
+ }
190
127
 
128
+ /**
129
+ * Add a dragStart listener.
130
+ *
131
+ * @method addDragListener
132
+ * @param {VertexListeners~dragStartListener} listener - The drag-start listener to add (a callback).
133
+ * @return {VertexListeners} this (for chaining)
134
+ * @instance
135
+ * @memberof VertexListeners
136
+ **/
137
+ addDragStartListener(listener: VertListener): VertexListeners {
138
+ VertexListeners._addListener(this.dragStart, listener);
139
+ return this;
140
+ }
141
+ /**
142
+ * The drag-start listener is a function with a single drag event param.
143
+ * @callback VertexListeners~dragStartListener
144
+ * @param {Event} e - The (extended) drag event.
145
+ */
191
146
 
192
- /**
193
- * Remove a drag listener.
194
- *
195
- * @method removeDragEndListener
196
- * @param {VertexListeners~clickListener} listener - The drag listener to remove (a callback).
197
- * @return {VertexListeners} this (for chaining)
198
- * @instance
199
- * @memberof VertexListeners
200
- **/
201
- removeDragEndListener( listener:(e:VertEvent)=>void ) : VertexListeners {
202
- // this.drag.push( listener );
203
- this.dragEnd = VertexListeners._removeListener( this.dragEnd, listener );
204
- return this;
205
- };
147
+ /**
148
+ * Remove a dragStart listener.
149
+ *
150
+ * @method addDragStartListener
151
+ * @param {VertexListeners~dragListener} listener - The drag listener to remove (a callback).
152
+ * @return {VertexListeners} this (for chaining)
153
+ * @instance
154
+ * @memberof VertexListeners
155
+ **/
156
+ removeDragStartListener(listener: VertListener): VertexListeners {
157
+ this.dragStart = VertexListeners._removeListener(this.dragStart, listener);
158
+ return this;
159
+ }
206
160
 
207
-
208
-
209
- /**
210
- * Fire a click event with the given event instance to all
211
- * installed click listeners.
212
- *
213
- * @method fireClickEvent
214
- * @param {VertEvent|XMouseEvent} e - The click event itself to be fired to all installed drag listeners.
215
- * @return {void}
216
- * @instance
217
- * @memberof VertexListeners
218
- **/
219
- fireClickEvent( e:VertEvent|XMouseEvent ) {
220
- VertexListeners._fireEvent(this,this.click,e);
221
- };
161
+ /**
162
+ * Add a dragEnd listener.
163
+ *
164
+ * @method addDragListener
165
+ * @param {VertexListeners~dragEndListener} listener - The drag-end listener to add (a callback).
166
+ * @return {VertexListeners} this (for chaining)
167
+ * @instance
168
+ * @memberof VertexListeners
169
+ **/
170
+ addDragEndListener(listener: (e: VertEvent) => void): VertexListeners {
171
+ // this.dragEnd.push( listener );
172
+ VertexListeners._addListener(this.dragEnd, listener);
173
+ return this;
174
+ }
175
+ /**
176
+ * The drag-end listener is a function with a single drag event param.
177
+ * @callback VertexListeners~dragEndListener
178
+ * @param {Event} e - The (extended) drag event.
179
+ */
222
180
 
223
-
224
- /**
225
- * Fire a drag event with the given event instance to all
226
- * installed drag listeners.
227
- *
228
- * @method fireDragEvent
229
- * @param {VertEvent|XMouseEvent} e - The drag event itself to be fired to all installed drag listeners.
230
- * @return {void}
231
- * @instance
232
- * @memberof VertexListeners
233
- **/
234
- fireDragEvent( e:VertEvent|XMouseEvent ) {
235
- VertexListeners._fireEvent(this,this.drag,e);
236
- };
181
+ /**
182
+ * Remove a drag listener.
183
+ *
184
+ * @method removeDragEndListener
185
+ * @param {VertexListeners~clickListener} listener - The drag listener to remove (a callback).
186
+ * @return {VertexListeners} this (for chaining)
187
+ * @instance
188
+ * @memberof VertexListeners
189
+ **/
190
+ removeDragEndListener(listener: (e: VertEvent) => void): VertexListeners {
191
+ // this.drag.push( listener );
192
+ this.dragEnd = VertexListeners._removeListener(this.dragEnd, listener);
193
+ return this;
194
+ }
237
195
 
196
+ /**
197
+ * Fire a click event with the given event instance to all
198
+ * installed click listeners.
199
+ *
200
+ * @method fireClickEvent
201
+ * @param {VertEvent|XMouseEvent} e - The click event itself to be fired to all installed drag listeners.
202
+ * @return {void}
203
+ * @instance
204
+ * @memberof VertexListeners
205
+ **/
206
+ fireClickEvent(e: VertEvent | XMouseEvent) {
207
+ VertexListeners._fireEvent(this, this.click, e);
208
+ }
238
209
 
239
-
240
- /**
241
- * Fire a dragStart event with the given event instance to all
242
- * installed drag-start listeners.
243
- *
244
- * @method fireDragStartEvent
245
- * @param {VertEvent|XMouseEvent} e - The drag-start event itself to be fired to all installed dragStart listeners.
246
- * @return {void}
247
- * @instance
248
- * @memberof VertexListeners
249
- **/
250
- fireDragStartEvent( e:VertEvent|XMouseEvent ) {
251
- VertexListeners._fireEvent(this,this.dragStart,e);
252
- };
210
+ /**
211
+ * Fire a drag event with the given event instance to all
212
+ * installed drag listeners.
213
+ *
214
+ * @method fireDragEvent
215
+ * @param {VertEvent|XMouseEvent} e - The drag event itself to be fired to all installed drag listeners.
216
+ * @return {void}
217
+ * @instance
218
+ * @memberof VertexListeners
219
+ **/
220
+ fireDragEvent(e: VertEvent | XMouseEvent) {
221
+ VertexListeners._fireEvent(this, this.drag, e);
222
+ }
253
223
 
224
+ /**
225
+ * Fire a dragStart event with the given event instance to all
226
+ * installed drag-start listeners.
227
+ *
228
+ * @method fireDragStartEvent
229
+ * @param {VertEvent|XMouseEvent} e - The drag-start event itself to be fired to all installed dragStart listeners.
230
+ * @return {void}
231
+ * @instance
232
+ * @memberof VertexListeners
233
+ **/
234
+ fireDragStartEvent(e: VertEvent | XMouseEvent) {
235
+ VertexListeners._fireEvent(this, this.dragStart, e);
236
+ }
254
237
 
255
-
256
- /**
257
- * Fire a dragEnd event with the given event instance to all
258
- * installed drag-end listeners.
259
- *
260
- * @method fireDragEndEvent
261
- * @param {VertEvent|XMouseEvent} e - The drag-end event itself to be fired to all installed dragEnd listeners.
262
- * @return {void}
263
- * @instance
264
- * @memberof VertexListeners
265
- **/
266
- fireDragEndEvent( e:VertEvent|XMouseEvent ) {
267
- VertexListeners._fireEvent(this,this.dragEnd,e);
268
- };
238
+ /**
239
+ * Fire a dragEnd event with the given event instance to all
240
+ * installed drag-end listeners.
241
+ *
242
+ * @method fireDragEndEvent
243
+ * @param {VertEvent|XMouseEvent} e - The drag-end event itself to be fired to all installed dragEnd listeners.
244
+ * @return {void}
245
+ * @instance
246
+ * @memberof VertexListeners
247
+ **/
248
+ fireDragEndEvent(e: VertEvent | XMouseEvent) {
249
+ VertexListeners._fireEvent(this, this.dragEnd, e);
250
+ }
269
251
 
252
+ /**
253
+ * Removes all listeners from this listeners object.
254
+ */
255
+ removeAllListeners() {
256
+ this.click = [];
257
+ this.drag = [];
258
+ this.dragStart = [];
259
+ this.dragEnd = [];
260
+ }
270
261
 
271
-
272
- /**
273
- * @private
274
- **/
275
- private static _fireEvent( _self:VertexListeners,
276
- listeners:Array<(e:VertEvent)=>void>,
277
- e:VertEvent|XMouseEvent
278
- ) : void {
279
- const ve : VertEvent = (e as unknown) as VertEvent;
280
- if( typeof ve.params == 'undefined' )
281
- ve.params = ({ vertex : _self.vertex } as unknown) as VertEventParams;
282
- else
283
- ve.params.vertex = _self.vertex;
284
- for( var i in listeners ) {
285
- listeners[i]( ve );
286
- }
287
- };
262
+ /**
263
+ * @private
264
+ **/
265
+ private static _fireEvent(_self: VertexListeners, listeners: Array<(e: VertEvent) => void>, e: VertEvent | XMouseEvent): void {
266
+ const ve: VertEvent = e as unknown as VertEvent;
267
+ if (typeof ve.params == "undefined") ve.params = { vertex: _self.vertex } as unknown as VertEventParams;
268
+ else ve.params.vertex = _self.vertex;
269
+ for (var i in listeners) {
270
+ listeners[i](ve);
271
+ }
272
+ }
288
273
 
289
- /**
290
- * @private
291
- */
292
- private static _addListener( listeners:Array<(e:VertEvent)=>void>,
293
- newListener:(e:VertEvent)=>void
294
- ) : boolean {
295
- for( var i in listeners ) {
296
- if( listeners[i] == newListener )
297
- return false;
298
- }
299
- listeners.push( newListener );
300
- return true;
301
- };
274
+ /**
275
+ * @private
276
+ */
277
+ private static _addListener(listeners: Array<(e: VertEvent) => void>, newListener: (e: VertEvent) => void): boolean {
278
+ for (var i in listeners) {
279
+ if (listeners[i] == newListener) return false;
280
+ }
281
+ listeners.push(newListener);
282
+ return true;
283
+ }
302
284
 
303
- /**
304
- * @private
305
- */
306
- private static _removeListener( listeners:Array<(e:VertEvent)=>void>,
307
- oldListener:(e:VertEvent)=>void
308
- ) : Array<(e:VertEvent)=>void> {
309
- for( var i = 0; i < listeners.length; i++ ) {
310
- if( listeners[i] == oldListener )
311
- return listeners.splice( i, 1 );
312
- }
313
- return listeners;
314
- };
285
+ /**
286
+ * @private
287
+ */
288
+ private static _removeListener(
289
+ listeners: Array<(e: VertEvent) => void>,
290
+ oldListener: (e: VertEvent) => void
291
+ ): Array<(e: VertEvent) => void> {
292
+ for (var i = 0; i < listeners.length; i++) {
293
+ if (listeners[i] == oldListener) return listeners.splice(i, 1);
294
+ }
295
+ return listeners;
296
+ }
315
297
  }