plotboilerplate 1.14.0 → 1.17.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.
- package/README.md +2 -0
- package/changelog.md +57 -0
- package/dist/index.esm.js +856 -694
- package/dist/index.esm.js.map +1 -1
- package/dist/index.esm.min.js +1 -1
- package/dist/index.esm.min.js.map +1 -1
- package/dist/plotboilerplate.browser.min.js +1 -1
- package/dist/plotboilerplate.browser.min.js.map +1 -1
- package/dist/plotboilerplate.js +858 -598
- package/dist/plotboilerplate.min.js +1 -1
- package/package.json +1 -1
- package/src/cjs/BezierPath.d.ts +32 -14
- package/src/cjs/BezierPath.js +65 -24
- package/src/cjs/BezierPath.js.map +1 -1
- package/src/cjs/Bounds.d.ts +22 -1
- package/src/cjs/Bounds.js +24 -1
- package/src/cjs/Bounds.js.map +1 -1
- package/src/cjs/Circle.d.ts +15 -13
- package/src/cjs/Circle.js +16 -34
- package/src/cjs/Circle.js.map +1 -1
- package/src/cjs/CircleSector.d.ts +17 -16
- package/src/cjs/CircleSector.js +12 -24
- package/src/cjs/CircleSector.js.map +1 -1
- package/src/cjs/CubicBezierCurve.d.ts +16 -15
- package/src/cjs/CubicBezierCurve.js +57 -94
- package/src/cjs/CubicBezierCurve.js.map +1 -1
- package/src/cjs/KeyHandler.d.ts +10 -3
- package/src/cjs/KeyHandler.js +28 -23
- package/src/cjs/KeyHandler.js.map +1 -1
- package/src/cjs/Line.d.ts +2 -15
- package/src/cjs/Line.js +6 -31
- package/src/cjs/Line.js.map +1 -1
- package/src/cjs/MouseHandler.js +43 -53
- package/src/cjs/MouseHandler.js.map +1 -1
- package/src/cjs/PBImage.d.ts +15 -13
- package/src/cjs/PBImage.js +11 -15
- package/src/cjs/PBImage.js.map +1 -1
- package/src/cjs/PBText.d.ts +13 -12
- package/src/cjs/PBText.js +8 -12
- package/src/cjs/PBText.js.map +1 -1
- package/src/cjs/PlotBoilerplate.js +3 -2
- package/src/cjs/PlotBoilerplate.js.map +1 -1
- package/src/cjs/Polygon.d.ts +44 -14
- package/src/cjs/Polygon.js +116 -66
- package/src/cjs/Polygon.js.map +1 -1
- package/src/cjs/Triangle.d.ts +15 -13
- package/src/cjs/Triangle.js +23 -64
- package/src/cjs/Triangle.js.map +1 -1
- package/src/cjs/VEllipse.d.ts +14 -9
- package/src/cjs/VEllipse.js +10 -18
- package/src/cjs/VEllipse.js.map +1 -1
- package/src/cjs/VEllipseSector.d.ts +15 -1
- package/src/cjs/VEllipseSector.js +11 -1
- package/src/cjs/VEllipseSector.js.map +1 -1
- package/src/cjs/Vector.d.ts +3 -15
- package/src/cjs/Vector.js +9 -49
- package/src/cjs/Vector.js.map +1 -1
- package/src/cjs/VertTuple.d.ts +15 -1
- package/src/cjs/VertTuple.js +14 -19
- package/src/cjs/VertTuple.js.map +1 -1
- package/src/cjs/Vertex.d.ts +47 -13
- package/src/cjs/Vertex.js +62 -22
- package/src/cjs/Vertex.js.map +1 -1
- package/src/cjs/VertexListeners.d.ts +12 -8
- package/src/cjs/VertexListeners.js +18 -25
- package/src/cjs/VertexListeners.js.map +1 -1
- package/src/cjs/draw.d.ts +41 -2
- package/src/cjs/draw.js +140 -3
- package/src/cjs/draw.js.map +1 -1
- package/src/cjs/drawgl.d.ts +38 -2
- package/src/cjs/drawgl.js +41 -2
- package/src/cjs/drawgl.js.map +1 -1
- package/src/cjs/drawutilssvg.d.ts +66 -3
- package/src/cjs/drawutilssvg.js +140 -15
- package/src/cjs/drawutilssvg.js.map +1 -1
- package/src/cjs/index.d.ts +0 -1
- package/src/cjs/index.js +0 -1
- package/src/cjs/index.js.map +1 -1
- package/src/cjs/interfaces/DrawLib.d.ts +61 -26
- package/src/cjs/interfaces/DrawLib.js +2 -0
- package/src/cjs/interfaces/DrawLib.js.map +1 -1
- package/src/cjs/interfaces/core.d.ts +0 -12
- package/src/cjs/module.d.ts +1 -3
- package/src/cjs/module.js +2 -5
- package/src/cjs/module.js.map +1 -1
- package/src/cjs/utils/creategui.js +16 -2
- package/src/cjs/utils/datastructures/Girih.d.ts +5 -0
- package/src/cjs/utils/datastructures/Girih.js +18 -14
- package/src/cjs/utils/datastructures/Girih.js.map +1 -1
- package/src/cjs/utils/datastructures/GirihPenroseRhombus.js +42 -25
- package/src/cjs/utils/datastructures/GirihPenroseRhombus.js.map +1 -1
- package/src/cjs/utils/datastructures/GirihTile.js +2 -13
- package/src/cjs/utils/datastructures/GirihTile.js.map +1 -1
- package/src/cjs/utils/findInVertexArray.d.ts +19 -0
- package/src/cjs/utils/findInVertexArray.js +29 -0
- package/src/cjs/utils/findInVertexArray.js.map +1 -0
- package/src/cjs/utils/helpers/BezierPathInteractionHelper.d.ts +17 -1
- package/src/cjs/utils/helpers/BezierPathInteractionHelper.js +50 -32
- package/src/cjs/utils/helpers/BezierPathInteractionHelper.js.map +1 -1
- package/src/cjs/utils/io/DndFileHandler.d.ts +63 -0
- package/src/cjs/utils/io/DndFileHandler.js +112 -0
- package/src/cjs/utils/io/DndFileHandler.js.map +1 -0
- package/src/cjs/utils/io/FileDrop.d.ts +98 -0
- package/src/cjs/utils/io/FileDrop.js +142 -0
- package/src/cjs/utils/io/FileDrop.js.map +1 -0
- package/src/esm/BezierPath.d.ts +32 -14
- package/src/esm/BezierPath.js +65 -24
- package/src/esm/BezierPath.js.map +1 -1
- package/src/esm/Bounds.d.ts +22 -1
- package/src/esm/Bounds.js +24 -1
- package/src/esm/Bounds.js.map +1 -1
- package/src/esm/Circle.d.ts +15 -13
- package/src/esm/Circle.js +16 -34
- package/src/esm/Circle.js.map +1 -1
- package/src/esm/CircleSector.d.ts +17 -16
- package/src/esm/CircleSector.js +12 -24
- package/src/esm/CircleSector.js.map +1 -1
- package/src/esm/CubicBezierCurve.d.ts +16 -15
- package/src/esm/CubicBezierCurve.js +57 -94
- package/src/esm/CubicBezierCurve.js.map +1 -1
- package/src/esm/KeyHandler.d.ts +10 -3
- package/src/esm/KeyHandler.js +28 -23
- package/src/esm/KeyHandler.js.map +1 -1
- package/src/esm/Line.d.ts +2 -15
- package/src/esm/Line.js +6 -31
- package/src/esm/Line.js.map +1 -1
- package/src/esm/MouseHandler.js +43 -53
- package/src/esm/MouseHandler.js.map +1 -1
- package/src/esm/PBImage.d.ts +15 -13
- package/src/esm/PBImage.js +11 -15
- package/src/esm/PBImage.js.map +1 -1
- package/src/esm/PBText.d.ts +13 -12
- package/src/esm/PBText.js +8 -12
- package/src/esm/PBText.js.map +1 -1
- package/src/esm/PlotBoilerplate.js +3 -2
- package/src/esm/PlotBoilerplate.js.map +1 -1
- package/src/esm/Polygon.d.ts +44 -14
- package/src/esm/Polygon.js +116 -66
- package/src/esm/Polygon.js.map +1 -1
- package/src/esm/Triangle.d.ts +15 -13
- package/src/esm/Triangle.js +23 -64
- package/src/esm/Triangle.js.map +1 -1
- package/src/esm/VEllipse.d.ts +14 -9
- package/src/esm/VEllipse.js +10 -18
- package/src/esm/VEllipse.js.map +1 -1
- package/src/esm/VEllipseSector.d.ts +15 -1
- package/src/esm/VEllipseSector.js +11 -1
- package/src/esm/VEllipseSector.js.map +1 -1
- package/src/esm/Vector.d.ts +3 -15
- package/src/esm/Vector.js +9 -49
- package/src/esm/Vector.js.map +1 -1
- package/src/esm/VertTuple.d.ts +15 -1
- package/src/esm/VertTuple.js +14 -19
- package/src/esm/VertTuple.js.map +1 -1
- package/src/esm/Vertex.d.ts +47 -13
- package/src/esm/Vertex.js +62 -22
- package/src/esm/Vertex.js.map +1 -1
- package/src/esm/VertexListeners.d.ts +12 -8
- package/src/esm/VertexListeners.js +18 -25
- package/src/esm/VertexListeners.js.map +1 -1
- package/src/esm/draw.d.ts +41 -2
- package/src/esm/draw.js +139 -3
- package/src/esm/draw.js.map +1 -1
- package/src/esm/drawgl.d.ts +38 -2
- package/src/esm/drawgl.js +41 -2
- package/src/esm/drawgl.js.map +1 -1
- package/src/esm/drawutilssvg.d.ts +66 -3
- package/src/esm/drawutilssvg.js +140 -15
- package/src/esm/drawutilssvg.js.map +1 -1
- package/src/esm/index.d.ts +0 -1
- package/src/esm/index.js +0 -1
- package/src/esm/index.js.map +1 -1
- package/src/esm/interfaces/DrawLib.d.ts +61 -26
- package/src/esm/interfaces/DrawLib.js +2 -0
- package/src/esm/interfaces/DrawLib.js.map +1 -1
- package/src/esm/interfaces/core.d.ts +0 -12
- package/src/esm/module.d.ts +1 -3
- package/src/esm/module.js +5 -4
- package/src/esm/module.js.map +1 -1
- package/src/esm/utils/datastructures/Girih.d.ts +5 -0
- package/src/esm/utils/datastructures/Girih.js +18 -14
- package/src/esm/utils/datastructures/Girih.js.map +1 -1
- package/src/esm/utils/datastructures/GirihPenroseRhombus.js +42 -25
- package/src/esm/utils/datastructures/GirihPenroseRhombus.js.map +1 -1
- package/src/esm/utils/datastructures/GirihTile.js +2 -13
- package/src/esm/utils/datastructures/GirihTile.js.map +1 -1
- package/src/esm/utils/findInVertexArray.d.ts +19 -0
- package/src/esm/utils/findInVertexArray.js +25 -0
- package/src/esm/utils/findInVertexArray.js.map +1 -0
- package/src/esm/utils/helpers/BezierPathInteractionHelper.d.ts +17 -1
- package/src/esm/utils/helpers/BezierPathInteractionHelper.js +49 -32
- package/src/esm/utils/helpers/BezierPathInteractionHelper.js.map +1 -1
- package/src/esm/utils/io/DndFileHandler.d.ts +63 -0
- package/src/esm/utils/io/DndFileHandler.js +106 -0
- package/src/esm/utils/io/DndFileHandler.js.map +1 -0
- package/src/esm/utils/io/FileDrop.d.ts +98 -0
- package/src/esm/utils/io/FileDrop.js +136 -0
- package/src/esm/utils/io/FileDrop.js.map +1 -0
- package/src/ts/BezierPath.ts +78 -22
- package/src/ts/Bounds.ts +25 -1
- package/src/ts/Circle.ts +187 -200
- package/src/ts/CircleSector.ts +141 -141
- package/src/ts/CubicBezierCurve.ts +738 -810
- package/src/ts/KeyHandler.ts +221 -212
- package/src/ts/Line.ts +48 -80
- package/src/ts/MouseHandler.ts +356 -368
- package/src/ts/PBImage.ts +67 -69
- package/src/ts/PBText.ts +16 -14
- package/src/ts/PlotBoilerplate.ts +4 -2
- package/src/ts/Polygon.ts +493 -451
- package/src/ts/Triangle.ts +444 -489
- package/src/ts/VEllipse.ts +18 -17
- package/src/ts/VEllipseSector.ts +20 -1
- package/src/ts/Vector.ts +124 -160
- package/src/ts/VertTuple.ts +333 -338
- package/src/ts/Vertex.ts +75 -21
- package/src/ts/VertexListeners.ts +248 -266
- package/src/ts/draw.ts +192 -3
- package/src/ts/drawgl.ts +44 -2
- package/src/ts/drawutilssvg.ts +181 -15
- package/src/ts/index.ts +0 -1
- package/src/ts/interfaces/DrawLib.ts +69 -26
- package/src/ts/interfaces/core.ts +0 -11
- package/src/ts/module.ts +2 -4
- package/src/ts/utils/datastructures/Girih.ts +204 -209
- package/src/ts/utils/datastructures/GirihPenroseRhombus.ts +170 -152
- package/src/ts/utils/datastructures/GirihTile.ts +394 -419
- package/src/ts/utils/findInVertexArray.ts +28 -0
- package/src/ts/utils/helpers/BezierPathInteractionHelper.ts +56 -34
- package/src/ts/utils/io/FileDrop.ts +178 -0
- package/src/ts/SVGBuilder.ts +0 -109
- package/src/ts/utils/algorithms/sh-tmp.ts~ +0 -59
package/src/ts/Vertex.ts
CHANGED
|
@@ -24,7 +24,11 @@
|
|
|
24
24
|
* @modified 2021-03-01 Changed the second param `center` in the `rotate` function from Vertex to XYCoords.
|
|
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
|
+
* @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
|
|
28
32
|
*
|
|
29
33
|
* @file Vertex
|
|
30
34
|
* @public
|
|
@@ -103,6 +107,14 @@ export class Vertex implements XYCoords, SVGSerializable {
|
|
|
103
107
|
**/
|
|
104
108
|
listeners: VertexListeners;
|
|
105
109
|
|
|
110
|
+
/**
|
|
111
|
+
* @member isDestroyed
|
|
112
|
+
* @memberof Vertex
|
|
113
|
+
* @type {boolean}
|
|
114
|
+
* @instance
|
|
115
|
+
*/
|
|
116
|
+
isDestroyed: boolean;
|
|
117
|
+
|
|
106
118
|
/**
|
|
107
119
|
* The constructor for the vertex class.
|
|
108
120
|
*
|
|
@@ -421,6 +433,45 @@ export class Vertex implements XYCoords, SVGSerializable {
|
|
|
421
433
|
return this.scaleXY({ x: factor, y: factor }, center);
|
|
422
434
|
}
|
|
423
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
|
+
|
|
424
475
|
/**
|
|
425
476
|
* This is a vector-like behavior and 'scales' this vertex
|
|
426
477
|
* towards/from a given center by two independent x- and y- scale factors.
|
|
@@ -524,27 +575,14 @@ export class Vertex implements XYCoords, SVGSerializable {
|
|
|
524
575
|
}
|
|
525
576
|
|
|
526
577
|
/**
|
|
527
|
-
*
|
|
528
|
-
*
|
|
529
|
-
*
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
* @memberof Vertex
|
|
535
|
-
**/
|
|
536
|
-
toSVGString(options: { className?: string }): string {
|
|
537
|
-
options = options || {};
|
|
538
|
-
var buffer = [];
|
|
539
|
-
buffer.push("<circle");
|
|
540
|
-
if (options.className) buffer.push(' class="' + options.className + '"');
|
|
541
|
-
buffer.push(' cx="' + this.x + '"');
|
|
542
|
-
buffer.push(' cy="' + this.y + '"');
|
|
543
|
-
buffer.push(' r="2"');
|
|
544
|
-
buffer.push(" />");
|
|
545
|
-
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;
|
|
546
585
|
}
|
|
547
|
-
// END Vertex
|
|
548
586
|
|
|
549
587
|
/**
|
|
550
588
|
* Create a new random vertex inside the given viewport.
|
|
@@ -607,6 +645,22 @@ export class Vertex implements XYCoords, SVGSerializable {
|
|
|
607
645
|
);
|
|
608
646
|
|
|
609
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
|
+
);
|
|
610
664
|
}
|
|
611
665
|
};
|
|
612
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
|
-
|
|
19
|
+
vertex: Vertex;
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
export interface VertEvent {
|
|
23
|
-
|
|
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
|
-
|
|
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
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
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
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
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
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
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
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
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
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
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
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
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
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
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
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
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
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
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
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
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
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
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
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
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
|
}
|