plotboilerplate 1.24.0 → 1.25.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 +13 -1
- package/dist/index.esm.js +294 -129
- 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 +12084 -11919
- package/dist/plotboilerplate.min.js +1 -1
- package/package.json +9 -5
- package/src/cjs/PlotBoilerplate.d.ts +37 -6
- package/src/cjs/PlotBoilerplate.js +222 -116
- package/src/cjs/PlotBoilerplate.js.map +1 -1
- package/src/cjs/Polygon.d.ts +26 -7
- package/src/cjs/Polygon.js +56 -10
- package/src/cjs/Polygon.js.map +1 -1
- package/src/cjs/Triangle.js +2 -2
- package/src/cjs/Triangle.js.map +1 -1
- package/src/cjs/Vertex.d.ts +15 -3
- package/src/cjs/Vertex.js +18 -1
- package/src/cjs/Vertex.js.map +1 -1
- package/src/cjs/interfaces/core.d.ts +28 -0
- package/src/cjs/interfaces/core.js +2 -0
- package/src/cjs/interfaces/core.js.map +1 -1
- package/src/cjs/utils/datastructures/Color.d.ts +147 -1
- package/src/cjs/utils/datastructures/Color.js +385 -41
- package/src/cjs/utils/datastructures/Color.js.map +1 -1
- package/src/cjs/utils/datastructures/ColorGradient.d.ts +79 -0
- package/src/cjs/utils/datastructures/ColorGradient.js +171 -0
- package/src/cjs/utils/datastructures/ColorGradient.js.map +1 -0
- package/src/cjs/utils/dom/components/ColorGradientPicker.d.ts +245 -0
- package/src/cjs/utils/dom/components/ColorGradientPicker.js +667 -0
- package/src/cjs/utils/dom/components/ColorGradientPicker.js.map +1 -0
- package/src/cjs/utils/dom/components/ColorGradientPickerJSX.d.ts +129 -0
- package/src/cjs/utils/dom/components/ColorGradientPickerJSX.js +520 -0
- package/src/cjs/utils/dom/components/ColorGradientPickerJSX.js.map +1 -0
- package/src/cjs/utils/dom/components/ColorGradientSelector.d.ts +117 -0
- package/src/cjs/utils/dom/components/ColorGradientSelector.js +325 -0
- package/src/cjs/utils/dom/components/ColorGradientSelector.js.map +1 -0
- package/src/cjs/utils/dom/components/Test.d.ts +7 -0
- package/src/cjs/utils/dom/components/Test.js +30 -0
- package/src/cjs/utils/dom/components/Test.js.map +1 -0
- package/src/cjs/utils/dom/guiSizeToggler.js +1 -1
- package/src/cjs/utils/dom/guiSizeToggler.js.map +1 -1
- package/src/cjs/utils/helpers/BezierPathInteractionHelper.d.ts +9 -3
- package/src/cjs/utils/helpers/BezierPathInteractionHelper.js +20 -13
- package/src/cjs/utils/helpers/BezierPathInteractionHelper.js.map +1 -1
- package/src/cjs/utils/helpers/CircleHelper.d.ts +10 -1
- package/src/cjs/utils/helpers/CircleHelper.js +13 -2
- package/src/cjs/utils/helpers/CircleHelper.js.map +1 -1
- package/src/cjs/utils/helpers/CircleSectorHelper.d.ts +2 -2
- package/src/cjs/utils/helpers/CircleSectorHelper.js +1 -0
- package/src/cjs/utils/helpers/CircleSectorHelper.js.map +1 -1
- package/src/cjs/utils/helpers/TriangleHelper.d.ts +57 -0
- package/src/cjs/utils/helpers/TriangleHelper.js +83 -0
- package/src/cjs/utils/helpers/TriangleHelper.js.map +1 -0
- package/src/cjs/utils/helpers/VEllipseHelper.d.ts +6 -4
- package/src/cjs/utils/helpers/VEllipseHelper.js +4 -2
- package/src/cjs/utils/helpers/VEllipseHelper.js.map +1 -1
- package/src/cjs/utils/helpers/VEllipseSectorHelper.d.ts +3 -2
- package/src/cjs/utils/helpers/VEllipseSectorHelper.js +1 -0
- package/src/cjs/utils/helpers/VEllipseSectorHelper.js.map +1 -1
- package/src/cjs/utils/parsers/LinearColorGradientParser.d.ts +78 -0
- package/src/cjs/utils/parsers/LinearColorGradientParser.js +224 -0
- package/src/cjs/utils/parsers/LinearColorGradientParser.js.map +1 -0
- package/src/createDemoDrawables.js +1 -0
- package/src/esm/PlotBoilerplate.d.ts +37 -6
- package/src/esm/PlotBoilerplate.js +222 -116
- package/src/esm/PlotBoilerplate.js.map +1 -1
- package/src/esm/Polygon.d.ts +26 -7
- package/src/esm/Polygon.js +53 -10
- package/src/esm/Polygon.js.map +1 -1
- package/src/esm/Triangle.js +2 -2
- package/src/esm/Triangle.js.map +1 -1
- package/src/esm/Vertex.d.ts +15 -3
- package/src/esm/Vertex.js +18 -1
- package/src/esm/Vertex.js.map +1 -1
- package/src/esm/interfaces/core.d.ts +28 -0
- package/src/esm/interfaces/core.js +2 -0
- package/src/esm/interfaces/core.js.map +1 -1
- package/src/esm/utils/datastructures/Color.d.ts +147 -1
- package/src/esm/utils/datastructures/Color.js +386 -42
- package/src/esm/utils/datastructures/Color.js.map +1 -1
- package/src/esm/utils/datastructures/ColorGradient.d.ts +79 -0
- package/src/esm/utils/datastructures/ColorGradient.js +166 -0
- package/src/esm/utils/datastructures/ColorGradient.js.map +1 -0
- package/src/esm/utils/dom/components/ColorGradientPicker.d.ts +245 -0
- package/src/esm/utils/dom/components/ColorGradientPicker.js +732 -0
- package/src/esm/utils/dom/components/ColorGradientPicker.js.map +1 -0
- package/src/esm/utils/dom/components/ColorGradientPickerJSX.d.ts +129 -0
- package/src/esm/utils/dom/components/ColorGradientPickerJSX.js +582 -0
- package/src/esm/utils/dom/components/ColorGradientPickerJSX.js.map +1 -0
- package/src/esm/utils/dom/components/ColorGradientSelector.d.ts +117 -0
- package/src/esm/utils/dom/components/ColorGradientSelector.js +332 -0
- package/src/esm/utils/dom/components/ColorGradientSelector.js.map +1 -0
- package/src/esm/utils/dom/components/Test.d.ts +7 -0
- package/src/esm/utils/dom/components/Test.js +26 -0
- package/src/esm/utils/dom/components/Test.js.map +1 -0
- package/src/esm/utils/dom/guiSizeToggler.js +1 -1
- package/src/esm/utils/dom/guiSizeToggler.js.map +1 -1
- package/src/esm/utils/helpers/BezierPathInteractionHelper.d.ts +9 -3
- package/src/esm/utils/helpers/BezierPathInteractionHelper.js +20 -13
- package/src/esm/utils/helpers/BezierPathInteractionHelper.js.map +1 -1
- package/src/esm/utils/helpers/CircleHelper.d.ts +10 -1
- package/src/esm/utils/helpers/CircleHelper.js +13 -2
- package/src/esm/utils/helpers/CircleHelper.js.map +1 -1
- package/src/esm/utils/helpers/CircleSectorHelper.d.ts +2 -2
- package/src/esm/utils/helpers/CircleSectorHelper.js +1 -0
- package/src/esm/utils/helpers/CircleSectorHelper.js.map +1 -1
- package/src/esm/utils/helpers/TriangleHelper.d.ts +57 -0
- package/src/esm/utils/helpers/TriangleHelper.js +78 -0
- package/src/esm/utils/helpers/TriangleHelper.js.map +1 -0
- package/src/esm/utils/helpers/VEllipseHelper.d.ts +6 -4
- package/src/esm/utils/helpers/VEllipseHelper.js +4 -2
- package/src/esm/utils/helpers/VEllipseHelper.js.map +1 -1
- package/src/esm/utils/helpers/VEllipseSectorHelper.d.ts +3 -2
- package/src/esm/utils/helpers/VEllipseSectorHelper.js +1 -0
- package/src/esm/utils/helpers/VEllipseSectorHelper.js.map +1 -1
- package/src/esm/utils/parsers/LinearColorGradientParser.d.ts +78 -0
- package/src/esm/utils/parsers/LinearColorGradientParser.js +217 -0
- package/src/esm/utils/parsers/LinearColorGradientParser.js.map +1 -0
- package/src/external.d.ts +9 -0
- package/src/ts/PlotBoilerplate.ts +233 -105
- package/src/ts/Polygon.ts +68 -14
- package/src/ts/Triangle.ts +2 -2
- package/src/ts/Vertex.ts +21 -3
- package/src/ts/interfaces/core.ts +31 -0
- package/src/ts/utils/datastructures/Color.ts +423 -44
- package/src/ts/utils/datastructures/ColorGradient.ts +196 -0
- package/src/ts/utils/dom/components/ColorGradientPicker.tsx +877 -0
- package/src/ts/utils/dom/components/ColorGradientSelector.tsx +445 -0
- package/src/ts/utils/dom/components/Test.tsx +44 -0
- package/src/ts/utils/dom/components/_ColorGradientPicker_raw.ts_ +392 -0
- package/src/ts/utils/dom/guiSizeToggler.ts +1 -1
- package/src/ts/utils/helpers/BezierPathInteractionHelper.ts +25 -15
- package/src/ts/utils/helpers/CircleHelper.ts +17 -3
- package/src/ts/utils/helpers/CircleSectorHelper.ts +4 -2
- package/src/ts/utils/helpers/TriangleHelper.ts +102 -0
- package/src/ts/utils/helpers/VEllipseHelper.ts +6 -4
- package/src/ts/utils/helpers/VEllipseSectorHelper.ts +3 -2
- package/src/ts/utils/parsers/LinearColorGradientParser.ts +297 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "plotboilerplate",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.25.0",
|
|
4
4
|
"description": "A simple javascript plotting boilerplate for 2d stuff.",
|
|
5
5
|
"private": false,
|
|
6
6
|
"main": "src/cjs/index.js",
|
|
@@ -11,12 +11,13 @@
|
|
|
11
11
|
"src"
|
|
12
12
|
],
|
|
13
13
|
"scripts": {
|
|
14
|
-
"build": "npm run build-module && npm run build-browser",
|
|
14
|
+
"build": "npm run build-module && npm run build-browser && npm run post-build-cleanup",
|
|
15
15
|
"build-browser": "npm run compile-typescript-browser && npm run webpack-browser && cp dist/plotboilerplate.browser.min.js dist/plotboilerplate.min.js",
|
|
16
16
|
"build-module": "npm run compile-typescript-module && npm run rollup-module",
|
|
17
|
-
"compile-typescript-browser": "tsc
|
|
18
|
-
"compile-typescript-module": "tsc
|
|
17
|
+
"compile-typescript-browser": "tsc --p tsconfig.browser.json",
|
|
18
|
+
"compile-typescript-module": "tsc --p tsconfig.json",
|
|
19
19
|
"compile-typescript-demo": "cd bin && ./run-compile-demo-ts.sh",
|
|
20
|
+
"post-build-cleanup": "rm ./dist/*.d.ts && rm -rf ./dist/interfaces && rm -rf ./dist/utils",
|
|
20
21
|
"mkdocs": "cd bin && ./run-mk-typedocs.sh",
|
|
21
22
|
"mk-release": "cd bin && ./run-mk-zippackage.sh",
|
|
22
23
|
"server": "npx http-server",
|
|
@@ -26,7 +27,8 @@
|
|
|
26
27
|
"rollup-module": "npx rollup -c",
|
|
27
28
|
"tslint": "npx eslint ./src/ts/",
|
|
28
29
|
"start-python-server": "python3 -m http.server 8000",
|
|
29
|
-
"serve": "npm run start-python-server"
|
|
30
|
+
"serve": "npm run start-python-server",
|
|
31
|
+
"reinstall": "npm install-clean"
|
|
30
32
|
},
|
|
31
33
|
"repository": {
|
|
32
34
|
"type": "git",
|
|
@@ -67,6 +69,7 @@
|
|
|
67
69
|
"homepage": "https://plotboilerplate.io",
|
|
68
70
|
"devDependencies": {
|
|
69
71
|
"@babel/core": "^7.9.0",
|
|
72
|
+
"@rollup/plugin-json": "^6.1.0",
|
|
70
73
|
"@types/dat.gui": "^0.7.7",
|
|
71
74
|
"@typescript-eslint/eslint-plugin": "^4.7.0",
|
|
72
75
|
"@typescript-eslint/parser": "^4.7.0",
|
|
@@ -96,6 +99,7 @@
|
|
|
96
99
|
"alloyfinger-typescript": "^0.1.19",
|
|
97
100
|
"greiner-hormann-typescript": "^1.4.1",
|
|
98
101
|
"lil-gui": "^0.19.2",
|
|
102
|
+
"noreact": "github:IkarosKappler/noreact",
|
|
99
103
|
"path2d-polyfill": "^1.1.0"
|
|
100
104
|
}
|
|
101
105
|
}
|
|
@@ -86,8 +86,13 @@
|
|
|
86
86
|
* @modified 2024-07-08 Adding `PlotBoilerplate.getGUI()` to retrieve the GUI instance.
|
|
87
87
|
* @modified 2024-08-25 Extending main class `PlotBoilerplate` optional param `isBackdropFiltersEnabled`.
|
|
88
88
|
* @modified 2024-12-02 Adding the `triggerRedraw` to the `removeAll` method.
|
|
89
|
+
* @modified 2025-05-07 Changing the return type of `removeVertex` from `void` to `boolean`.
|
|
90
|
+
* @modified 2025-05-07 Handling content changes now with `contentChangeListeners`.
|
|
91
|
+
* @modified 2025-05-07 Added `PlogBoilerplate.addContentChangeListener` and `.removeContentChangeListener`.
|
|
92
|
+
* @modified 2025-05-07 Moving full vectors now by default when vector point a is moved.
|
|
93
|
+
* @modified 2025-05-20 Applying `lineWith` parameter in the draw routine for vectors (had been missing).
|
|
89
94
|
*
|
|
90
|
-
* @version 1.
|
|
95
|
+
* @version 1.21.1
|
|
91
96
|
*
|
|
92
97
|
* @file PlotBoilerplate
|
|
93
98
|
* @fileoverview The main class.
|
|
@@ -100,7 +105,7 @@ import { Grid } from "./Grid";
|
|
|
100
105
|
import { Polygon } from "./Polygon";
|
|
101
106
|
import { Vertex } from "./Vertex";
|
|
102
107
|
import { IDraggable, Config, DrawLib, Drawable, DrawConfig, IHooks, PBParams, XYCoords, XYDimension, DatGuiProps, // DEPRECATED. Please do not use any more.
|
|
103
|
-
LilGuiProps } from "./interfaces";
|
|
108
|
+
LilGuiProps, PBContentChangeListener } from "./interfaces";
|
|
104
109
|
/**
|
|
105
110
|
* @classdesc The main class of the PlotBoilerplate.
|
|
106
111
|
*
|
|
@@ -252,6 +257,10 @@ export declare class PlotBoilerplate {
|
|
|
252
257
|
* @instance
|
|
253
258
|
*/
|
|
254
259
|
hooks: IHooks;
|
|
260
|
+
/**
|
|
261
|
+
* A list of content change listeners.
|
|
262
|
+
*/
|
|
263
|
+
contentChangeListeners: Array<PBContentChangeListener>;
|
|
255
264
|
/**
|
|
256
265
|
* @member {KeyHandler|undefined}
|
|
257
266
|
* @memberof PlotBoilerplate
|
|
@@ -389,6 +398,27 @@ export declare class PlotBoilerplate {
|
|
|
389
398
|
* @private
|
|
390
399
|
**/
|
|
391
400
|
private updateCSSscale;
|
|
401
|
+
/**
|
|
402
|
+
* Adds a new content change listener to this instance. Adding duplicates is not possible.
|
|
403
|
+
*
|
|
404
|
+
* @param {PBContentChangeListener} listener - The listenre to add.
|
|
405
|
+
* @method addContentChangeListener
|
|
406
|
+
* @instance
|
|
407
|
+
* @memberof PlotBoilerplate
|
|
408
|
+
* @returns {void}
|
|
409
|
+
*/
|
|
410
|
+
addContentChangeListener(listener: PBContentChangeListener): void;
|
|
411
|
+
/**
|
|
412
|
+
* Removes an existing content change listener from this instance.
|
|
413
|
+
*
|
|
414
|
+
* @param {PBContentChangeListener} listener - The listenre to add.
|
|
415
|
+
* @method removeContentChangeListener
|
|
416
|
+
* @instance
|
|
417
|
+
* @memberof PlotBoilerplate
|
|
418
|
+
* @returns {void}
|
|
419
|
+
*/
|
|
420
|
+
removeContentChangeListener(listener: PBContentChangeListener): void;
|
|
421
|
+
private _fireContentChanged;
|
|
392
422
|
/**
|
|
393
423
|
* Add a drawable object.<br>
|
|
394
424
|
* <br>
|
|
@@ -413,7 +443,7 @@ export declare class PlotBoilerplate {
|
|
|
413
443
|
* @memberof PlotBoilerplate
|
|
414
444
|
* @return {void}
|
|
415
445
|
**/
|
|
416
|
-
add(drawable: Drawable | Array<Drawable>, redraw?: boolean): void;
|
|
446
|
+
add(drawable: Drawable | Array<Drawable>, redraw?: boolean, doNotFireEvent?: boolean): void;
|
|
417
447
|
/**
|
|
418
448
|
* Remove a drawable object.<br>
|
|
419
449
|
* <br>
|
|
@@ -432,12 +462,13 @@ export declare class PlotBoilerplate {
|
|
|
432
462
|
*
|
|
433
463
|
* @param {Drawable|Array<Drawable>} drawable - The drawable (of one of the allowed class instance) to remove.
|
|
434
464
|
* @param {boolean} [redraw=false]
|
|
465
|
+
* @param {removeWidth}
|
|
435
466
|
* @method remove
|
|
436
467
|
* @instance
|
|
437
468
|
* @memberof PlotBoilerplate
|
|
438
469
|
* @return {void}
|
|
439
470
|
**/
|
|
440
|
-
remove(drawable: Drawable | Array<Drawable>, redraw?: boolean, removeWithVertices?: boolean):
|
|
471
|
+
remove(drawable: Drawable | Array<Drawable>, redraw?: boolean, removeWithVertices?: boolean, doNotFireEvent?: boolean): boolean;
|
|
441
472
|
/**
|
|
442
473
|
* Remove a vertex from the vertex list.<br>
|
|
443
474
|
*
|
|
@@ -446,9 +477,9 @@ export declare class PlotBoilerplate {
|
|
|
446
477
|
* @method removeVertex
|
|
447
478
|
* @instance
|
|
448
479
|
* @memberof PlotBoilerplate
|
|
449
|
-
* @return {
|
|
480
|
+
* @return {boolean}
|
|
450
481
|
**/
|
|
451
|
-
removeVertex(vert: Vertex, redraw?: boolean):
|
|
482
|
+
removeVertex(vert: Vertex, redraw?: boolean, doNotFireEvent?: boolean): boolean;
|
|
452
483
|
/**
|
|
453
484
|
* Remove all elements.
|
|
454
485
|
*
|
|
@@ -87,8 +87,13 @@
|
|
|
87
87
|
* @modified 2024-07-08 Adding `PlotBoilerplate.getGUI()` to retrieve the GUI instance.
|
|
88
88
|
* @modified 2024-08-25 Extending main class `PlotBoilerplate` optional param `isBackdropFiltersEnabled`.
|
|
89
89
|
* @modified 2024-12-02 Adding the `triggerRedraw` to the `removeAll` method.
|
|
90
|
+
* @modified 2025-05-07 Changing the return type of `removeVertex` from `void` to `boolean`.
|
|
91
|
+
* @modified 2025-05-07 Handling content changes now with `contentChangeListeners`.
|
|
92
|
+
* @modified 2025-05-07 Added `PlogBoilerplate.addContentChangeListener` and `.removeContentChangeListener`.
|
|
93
|
+
* @modified 2025-05-07 Moving full vectors now by default when vector point a is moved.
|
|
94
|
+
* @modified 2025-05-20 Applying `lineWith` parameter in the draw routine for vectors (had been missing).
|
|
90
95
|
*
|
|
91
|
-
* @version 1.
|
|
96
|
+
* @version 1.21.1
|
|
92
97
|
*
|
|
93
98
|
* @file PlotBoilerplate
|
|
94
99
|
* @fileoverview The main class.
|
|
@@ -213,6 +218,10 @@ var PlotBoilerplate = /** @class */ (function () {
|
|
|
213
218
|
*/
|
|
214
219
|
function PlotBoilerplate(config, drawConfig) {
|
|
215
220
|
var _b, _c;
|
|
221
|
+
/**
|
|
222
|
+
* A list of content change listeners.
|
|
223
|
+
*/
|
|
224
|
+
this.contentChangeListeners = [];
|
|
216
225
|
/**
|
|
217
226
|
* A discrete timestamp to identify single render cycles.
|
|
218
227
|
* Note that using system time milliseconds is not a safe way to identify render frames, as on modern powerful machines
|
|
@@ -600,6 +609,52 @@ var PlotBoilerplate = /** @class */ (function () {
|
|
|
600
609
|
PlotBoilerplate.utils.setCSSscale(this.canvas, (_d = this.config.cssScaleX) !== null && _d !== void 0 ? _d : 1.0, (_e = this.config.cssScaleY) !== null && _e !== void 0 ? _e : 1.0);
|
|
601
610
|
}
|
|
602
611
|
};
|
|
612
|
+
/**
|
|
613
|
+
* Adds a new content change listener to this instance. Adding duplicates is not possible.
|
|
614
|
+
*
|
|
615
|
+
* @param {PBContentChangeListener} listener - The listenre to add.
|
|
616
|
+
* @method addContentChangeListener
|
|
617
|
+
* @instance
|
|
618
|
+
* @memberof PlotBoilerplate
|
|
619
|
+
* @returns {void}
|
|
620
|
+
*/
|
|
621
|
+
PlotBoilerplate.prototype.addContentChangeListener = function (listener) {
|
|
622
|
+
for (var i in this.contentChangeListeners) {
|
|
623
|
+
if (this.contentChangeListeners[i] === listener) {
|
|
624
|
+
return;
|
|
625
|
+
}
|
|
626
|
+
}
|
|
627
|
+
this.contentChangeListeners.push(listener);
|
|
628
|
+
};
|
|
629
|
+
/**
|
|
630
|
+
* Removes an existing content change listener from this instance.
|
|
631
|
+
*
|
|
632
|
+
* @param {PBContentChangeListener} listener - The listenre to add.
|
|
633
|
+
* @method removeContentChangeListener
|
|
634
|
+
* @instance
|
|
635
|
+
* @memberof PlotBoilerplate
|
|
636
|
+
* @returns {void}
|
|
637
|
+
*/
|
|
638
|
+
PlotBoilerplate.prototype.removeContentChangeListener = function (listener) {
|
|
639
|
+
for (var i = 0; i < this.contentChangeListeners.length; i++) {
|
|
640
|
+
if (this.contentChangeListeners[i] === listener) {
|
|
641
|
+
this.contentChangeListeners.splice(i, 1);
|
|
642
|
+
return;
|
|
643
|
+
}
|
|
644
|
+
}
|
|
645
|
+
};
|
|
646
|
+
PlotBoilerplate.prototype._fireContentChanged = function (addedDrawables, removedDrawables) {
|
|
647
|
+
for (var i in this.contentChangeListeners) {
|
|
648
|
+
var listener = this.contentChangeListeners[i];
|
|
649
|
+
if (listener && typeof listener === "function") {
|
|
650
|
+
listener({
|
|
651
|
+
type: addedDrawables.length > 0 ? "DRAWABLES_ADDED" : "DRAWABLES_REMOVED",
|
|
652
|
+
addedDrawables: addedDrawables,
|
|
653
|
+
removedDrawables: removedDrawables
|
|
654
|
+
});
|
|
655
|
+
}
|
|
656
|
+
}
|
|
657
|
+
};
|
|
603
658
|
/**
|
|
604
659
|
* Add a drawable object.<br>
|
|
605
660
|
* <br>
|
|
@@ -624,100 +679,121 @@ var PlotBoilerplate = /** @class */ (function () {
|
|
|
624
679
|
* @memberof PlotBoilerplate
|
|
625
680
|
* @return {void}
|
|
626
681
|
**/
|
|
627
|
-
PlotBoilerplate.prototype.add = function (drawable, redraw) {
|
|
682
|
+
PlotBoilerplate.prototype.add = function (drawable, redraw, doNotFireEvent) {
|
|
628
683
|
if (Array.isArray(drawable)) {
|
|
629
684
|
var arr = drawable;
|
|
630
685
|
for (var i = 0; i < arr.length; i++) {
|
|
631
|
-
this.add(arr[i], false);
|
|
686
|
+
this.add(arr[i], false, doNotFireEvent);
|
|
632
687
|
}
|
|
688
|
+
// !doNotFireEvent && this._fireContentChanged(arr, []);
|
|
633
689
|
}
|
|
634
|
-
else
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
// Add some lines
|
|
640
|
-
this.drawables.push(drawable);
|
|
641
|
-
this.vertices.push(drawable.a);
|
|
642
|
-
this.vertices.push(drawable.b);
|
|
643
|
-
}
|
|
644
|
-
else if (drawable instanceof Vector_1.Vector) {
|
|
645
|
-
this.drawables.push(drawable);
|
|
646
|
-
this.vertices.push(drawable.a);
|
|
647
|
-
this.vertices.push(drawable.b);
|
|
648
|
-
}
|
|
649
|
-
else if (drawable instanceof VEllipse_1.VEllipse) {
|
|
650
|
-
this.vertices.push(drawable.center);
|
|
651
|
-
this.vertices.push(drawable.axis);
|
|
652
|
-
this.drawables.push(drawable);
|
|
653
|
-
drawable.center.listeners.addDragListener(function (event) {
|
|
654
|
-
drawable.axis.add(event.params.dragAmount);
|
|
655
|
-
});
|
|
656
|
-
}
|
|
657
|
-
else if (drawable instanceof VEllipseSector_1.VEllipseSector) {
|
|
658
|
-
this.vertices.push(drawable.ellipse.center);
|
|
659
|
-
this.vertices.push(drawable.ellipse.axis);
|
|
660
|
-
this.drawables.push(drawable);
|
|
661
|
-
drawable.ellipse.center.listeners.addDragListener(function (event) {
|
|
662
|
-
drawable.ellipse.axis.add(event.params.dragAmount);
|
|
663
|
-
});
|
|
664
|
-
}
|
|
665
|
-
else if (drawable instanceof Circle_1.Circle) {
|
|
666
|
-
this.vertices.push(drawable.center);
|
|
667
|
-
this.drawables.push(drawable);
|
|
668
|
-
}
|
|
669
|
-
else if (drawable instanceof CircleSector_1.CircleSector) {
|
|
670
|
-
this.vertices.push(drawable.circle.center);
|
|
671
|
-
this.drawables.push(drawable);
|
|
672
|
-
}
|
|
673
|
-
else if (drawable instanceof Polygon_1.Polygon) {
|
|
674
|
-
this.drawables.push(drawable);
|
|
675
|
-
for (var i = 0; i < drawable.vertices.length; i++) {
|
|
676
|
-
this.vertices.push(drawable.vertices[i]);
|
|
690
|
+
else {
|
|
691
|
+
var addedDrawables = [drawable];
|
|
692
|
+
if (drawable instanceof Vertex_1.Vertex) {
|
|
693
|
+
this.drawables.push(drawable);
|
|
694
|
+
this.vertices.push(drawable);
|
|
677
695
|
}
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
696
|
+
else if (drawable instanceof Line_1.Line) {
|
|
697
|
+
// Add some lines
|
|
698
|
+
this.drawables.push(drawable);
|
|
699
|
+
this.vertices.push(drawable.a);
|
|
700
|
+
this.vertices.push(drawable.b);
|
|
701
|
+
addedDrawables.push(drawable.a, drawable.b);
|
|
702
|
+
}
|
|
703
|
+
else if (drawable instanceof Vector_1.Vector) {
|
|
704
|
+
this.drawables.push(drawable);
|
|
705
|
+
this.vertices.push(drawable.a);
|
|
706
|
+
this.vertices.push(drawable.b);
|
|
707
|
+
addedDrawables.push(drawable.a, drawable.b);
|
|
708
|
+
drawable.a.listeners.addDragListener(function (event) {
|
|
709
|
+
drawable.b.add(event.params.dragAmount);
|
|
710
|
+
});
|
|
711
|
+
}
|
|
712
|
+
else if (drawable instanceof VEllipse_1.VEllipse) {
|
|
713
|
+
this.vertices.push(drawable.center);
|
|
714
|
+
this.vertices.push(drawable.axis);
|
|
715
|
+
addedDrawables.push(drawable.center, drawable.axis);
|
|
716
|
+
this.drawables.push(drawable);
|
|
717
|
+
drawable.center.listeners.addDragListener(function (event) {
|
|
718
|
+
drawable.axis.add(event.params.dragAmount);
|
|
719
|
+
});
|
|
720
|
+
}
|
|
721
|
+
else if (drawable instanceof VEllipseSector_1.VEllipseSector) {
|
|
722
|
+
this.vertices.push(drawable.ellipse.center);
|
|
723
|
+
this.vertices.push(drawable.ellipse.axis);
|
|
724
|
+
addedDrawables.push(drawable.ellipse.center, drawable.ellipse.axis);
|
|
725
|
+
this.drawables.push(drawable);
|
|
726
|
+
drawable.ellipse.center.listeners.addDragListener(function (event) {
|
|
727
|
+
drawable.ellipse.axis.add(event.params.dragAmount);
|
|
728
|
+
});
|
|
729
|
+
}
|
|
730
|
+
else if (drawable instanceof Circle_1.Circle) {
|
|
731
|
+
this.vertices.push(drawable.center);
|
|
732
|
+
addedDrawables.push(drawable.center);
|
|
733
|
+
this.drawables.push(drawable);
|
|
734
|
+
}
|
|
735
|
+
else if (drawable instanceof CircleSector_1.CircleSector) {
|
|
736
|
+
this.vertices.push(drawable.circle.center);
|
|
737
|
+
addedDrawables.push(drawable.circle.center);
|
|
738
|
+
this.drawables.push(drawable);
|
|
739
|
+
}
|
|
740
|
+
else if (drawable instanceof Polygon_1.Polygon) {
|
|
741
|
+
this.drawables.push(drawable);
|
|
742
|
+
for (var i = 0; i < drawable.vertices.length; i++) {
|
|
743
|
+
this.vertices.push(drawable.vertices[i]);
|
|
744
|
+
addedDrawables.push(drawable.vertices[i]);
|
|
691
745
|
}
|
|
692
|
-
this.vertices.push(bezierPath.bezierCurves[i].endPoint);
|
|
693
|
-
this.vertices.push(bezierPath.bezierCurves[i].startControlPoint);
|
|
694
|
-
this.vertices.push(bezierPath.bezierCurves[i].endControlPoint);
|
|
695
|
-
bezierPath.bezierCurves[i].startControlPoint.attr.selectable = false;
|
|
696
|
-
bezierPath.bezierCurves[i].endControlPoint.attr.selectable = false;
|
|
697
746
|
}
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
drawable.
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
747
|
+
else if (drawable instanceof Triangle_1.Triangle) {
|
|
748
|
+
this.drawables.push(drawable);
|
|
749
|
+
this.vertices.push(drawable.a);
|
|
750
|
+
this.vertices.push(drawable.b);
|
|
751
|
+
this.vertices.push(drawable.c);
|
|
752
|
+
addedDrawables.push(drawable.a, drawable.b, drawable.c);
|
|
753
|
+
}
|
|
754
|
+
else if (drawable instanceof BezierPath_1.BezierPath) {
|
|
755
|
+
this.drawables.push(drawable);
|
|
756
|
+
var bezierPath = drawable;
|
|
757
|
+
for (var i = 0; i < bezierPath.bezierCurves.length; i++) {
|
|
758
|
+
if (!drawable.adjustCircular && i == 0) {
|
|
759
|
+
this.vertices.push(bezierPath.bezierCurves[i].startPoint);
|
|
760
|
+
addedDrawables.push(bezierPath.bezierCurves[i].startPoint);
|
|
761
|
+
}
|
|
762
|
+
this.vertices.push(bezierPath.bezierCurves[i].endPoint);
|
|
763
|
+
this.vertices.push(bezierPath.bezierCurves[i].startControlPoint);
|
|
764
|
+
this.vertices.push(bezierPath.bezierCurves[i].endControlPoint);
|
|
765
|
+
addedDrawables.push(bezierPath.bezierCurves[i].endPoint, bezierPath.bezierCurves[i].startControlPoint, bezierPath.bezierCurves[i].endControlPoint);
|
|
766
|
+
bezierPath.bezierCurves[i].startControlPoint.attr.selectable = false;
|
|
767
|
+
bezierPath.bezierCurves[i].endControlPoint.attr.selectable = false;
|
|
768
|
+
}
|
|
769
|
+
PlotBoilerplate.utils.enableBezierPathAutoAdjust(drawable);
|
|
770
|
+
}
|
|
771
|
+
else if (drawable instanceof PBImage_1.PBImage) {
|
|
772
|
+
this.vertices.push(drawable.upperLeft);
|
|
773
|
+
this.vertices.push(drawable.lowerRight);
|
|
774
|
+
addedDrawables.push(drawable.upperLeft, drawable.lowerRight);
|
|
775
|
+
this.drawables.push(drawable);
|
|
776
|
+
// Todo: think about a IDragEvent interface
|
|
777
|
+
drawable.upperLeft.listeners.addDragListener(function (e) {
|
|
778
|
+
drawable.lowerRight.add(e.params.dragAmount);
|
|
779
|
+
});
|
|
780
|
+
drawable.lowerRight.attr.selectable = false;
|
|
781
|
+
}
|
|
782
|
+
else if (drawable instanceof PBText_1.PBText) {
|
|
783
|
+
this.vertices.push(drawable.anchor);
|
|
784
|
+
addedDrawables.push(drawable.anchor);
|
|
785
|
+
this.drawables.push(drawable);
|
|
786
|
+
drawable.anchor.attr.selectable = false;
|
|
787
|
+
}
|
|
788
|
+
else {
|
|
789
|
+
throw "Cannot add drawable of unrecognized type: " + typeof drawable + ".";
|
|
790
|
+
}
|
|
791
|
+
!doNotFireEvent && this._fireContentChanged(addedDrawables, []);
|
|
717
792
|
}
|
|
718
793
|
// This is a workaround for backwards compatibility when the 'redraw' param was not yet present.
|
|
719
|
-
if (redraw || typeof redraw == "undefined")
|
|
794
|
+
if (redraw || typeof redraw == "undefined") {
|
|
720
795
|
this.redraw();
|
|
796
|
+
}
|
|
721
797
|
};
|
|
722
798
|
/**
|
|
723
799
|
* Remove a drawable object.<br>
|
|
@@ -737,88 +813,113 @@ var PlotBoilerplate = /** @class */ (function () {
|
|
|
737
813
|
*
|
|
738
814
|
* @param {Drawable|Array<Drawable>} drawable - The drawable (of one of the allowed class instance) to remove.
|
|
739
815
|
* @param {boolean} [redraw=false]
|
|
816
|
+
* @param {removeWidth}
|
|
740
817
|
* @method remove
|
|
741
818
|
* @instance
|
|
742
819
|
* @memberof PlotBoilerplate
|
|
743
820
|
* @return {void}
|
|
744
821
|
**/
|
|
745
|
-
PlotBoilerplate.prototype.remove = function (drawable, redraw, removeWithVertices) {
|
|
822
|
+
PlotBoilerplate.prototype.remove = function (drawable, redraw, removeWithVertices, doNotFireEvent) {
|
|
746
823
|
if (Array.isArray(drawable)) {
|
|
824
|
+
var removedDrawables_1 = [];
|
|
747
825
|
for (var i = 0; i < drawable.length; i++) {
|
|
748
|
-
this.remove(drawable[i], false, removeWithVertices)
|
|
826
|
+
if (this.remove(drawable[i], false, removeWithVertices, true)) {
|
|
827
|
+
removedDrawables_1.push(drawable[i]);
|
|
828
|
+
}
|
|
749
829
|
}
|
|
750
830
|
if (redraw) {
|
|
751
831
|
this.redraw();
|
|
752
832
|
}
|
|
753
|
-
|
|
833
|
+
!doNotFireEvent && this._fireContentChanged([], removedDrawables_1);
|
|
834
|
+
return removedDrawables_1.length > 0;
|
|
754
835
|
}
|
|
755
836
|
if (drawable instanceof Vertex_1.Vertex) {
|
|
756
|
-
this.removeVertex(drawable, false);
|
|
837
|
+
var wasRemoved_1 = this.removeVertex(drawable, false, false);
|
|
757
838
|
if (redraw) {
|
|
758
839
|
this.redraw();
|
|
759
840
|
}
|
|
841
|
+
!doNotFireEvent && this._fireContentChanged([], [drawable]);
|
|
842
|
+
return wasRemoved_1;
|
|
760
843
|
}
|
|
844
|
+
var wasRemoved = false;
|
|
845
|
+
var removedDrawables = [];
|
|
761
846
|
for (var i = 0; i < this.drawables.length; i++) {
|
|
762
847
|
if (this.drawables[i] === drawable || this.drawables[i].uid === drawable.uid) {
|
|
763
848
|
this.drawables.splice(i, 1);
|
|
849
|
+
removedDrawables.push(drawable);
|
|
764
850
|
if (removeWithVertices) {
|
|
765
851
|
// Check if some listeners need to be removed
|
|
766
852
|
if (drawable instanceof Line_1.Line) {
|
|
767
853
|
// Add some lines
|
|
768
|
-
this.removeVertex(drawable.a, false);
|
|
769
|
-
this.removeVertex(drawable.b, false);
|
|
854
|
+
this.removeVertex(drawable.a, false, true);
|
|
855
|
+
this.removeVertex(drawable.b, false, true);
|
|
856
|
+
removedDrawables.push(drawable.a, drawable.b);
|
|
770
857
|
}
|
|
771
858
|
else if (drawable instanceof Vector_1.Vector) {
|
|
772
|
-
this.removeVertex(drawable.a, false);
|
|
773
|
-
this.removeVertex(drawable.b, false);
|
|
859
|
+
this.removeVertex(drawable.a, false, true);
|
|
860
|
+
this.removeVertex(drawable.b, false, true);
|
|
861
|
+
removedDrawables.push(drawable.a, drawable.b);
|
|
774
862
|
}
|
|
775
863
|
else if (drawable instanceof VEllipse_1.VEllipse) {
|
|
776
|
-
this.removeVertex(drawable.center, false);
|
|
777
|
-
this.removeVertex(drawable.axis, false);
|
|
864
|
+
this.removeVertex(drawable.center, false, true);
|
|
865
|
+
this.removeVertex(drawable.axis, false, true);
|
|
866
|
+
removedDrawables.push(drawable.center, drawable.axis);
|
|
778
867
|
}
|
|
779
868
|
else if (drawable instanceof VEllipseSector_1.VEllipseSector) {
|
|
780
|
-
this.removeVertex(drawable.ellipse.center);
|
|
781
|
-
this.removeVertex(drawable.ellipse.axis);
|
|
869
|
+
this.removeVertex(drawable.ellipse.center, false, true);
|
|
870
|
+
this.removeVertex(drawable.ellipse.axis, false, true);
|
|
871
|
+
removedDrawables.push(drawable.ellipse.center, drawable.ellipse.axis);
|
|
782
872
|
}
|
|
783
873
|
else if (drawable instanceof Circle_1.Circle) {
|
|
784
|
-
this.removeVertex(drawable.center, false);
|
|
874
|
+
this.removeVertex(drawable.center, false, true);
|
|
785
875
|
}
|
|
786
876
|
else if (drawable instanceof CircleSector_1.CircleSector) {
|
|
787
|
-
this.removeVertex(drawable.circle.center, false);
|
|
877
|
+
this.removeVertex(drawable.circle.center, false, true);
|
|
878
|
+
removedDrawables.push(drawable.circle.center);
|
|
788
879
|
}
|
|
789
880
|
else if (drawable instanceof Polygon_1.Polygon) {
|
|
790
881
|
// for( var i in drawable.vertices )
|
|
791
|
-
for (var i = 0; i < drawable.vertices.length; i++)
|
|
792
|
-
this.removeVertex(drawable.vertices[i], false);
|
|
882
|
+
for (var i = 0; i < drawable.vertices.length; i++) {
|
|
883
|
+
this.removeVertex(drawable.vertices[i], false, true);
|
|
884
|
+
removedDrawables.push(drawable.vertices[i]);
|
|
885
|
+
}
|
|
793
886
|
}
|
|
794
887
|
else if (drawable instanceof Triangle_1.Triangle) {
|
|
795
|
-
this.removeVertex(drawable.a, false);
|
|
796
|
-
this.removeVertex(drawable.b, false);
|
|
797
|
-
this.removeVertex(drawable.c, false);
|
|
888
|
+
this.removeVertex(drawable.a, false, true);
|
|
889
|
+
this.removeVertex(drawable.b, false, true);
|
|
890
|
+
this.removeVertex(drawable.c, false, true);
|
|
891
|
+
removedDrawables.push(drawable.a, drawable.b, drawable.c);
|
|
798
892
|
}
|
|
799
893
|
else if (drawable instanceof BezierPath_1.BezierPath) {
|
|
800
894
|
for (var i = 0; i < drawable.bezierCurves.length; i++) {
|
|
801
|
-
this.removeVertex(drawable.bezierCurves[i].startPoint, false);
|
|
802
|
-
this.removeVertex(drawable.bezierCurves[i].startControlPoint, false);
|
|
803
|
-
this.removeVertex(drawable.bezierCurves[i].endControlPoint, false);
|
|
895
|
+
this.removeVertex(drawable.bezierCurves[i].startPoint, false, true);
|
|
896
|
+
this.removeVertex(drawable.bezierCurves[i].startControlPoint, false, true);
|
|
897
|
+
this.removeVertex(drawable.bezierCurves[i].endControlPoint, false, true);
|
|
898
|
+
removedDrawables.push(drawable.bezierCurves[i].startPoint, drawable.bezierCurves[i].startControlPoint, drawable.bezierCurves[i].endControlPoint);
|
|
804
899
|
if (i + 1 == drawable.bezierCurves.length) {
|
|
805
|
-
this.removeVertex(drawable.bezierCurves[i].endPoint, false);
|
|
900
|
+
this.removeVertex(drawable.bezierCurves[i].endPoint, false, true);
|
|
901
|
+
removedDrawables.push(drawable.bezierCurves[i].endPoint);
|
|
806
902
|
}
|
|
807
903
|
}
|
|
808
904
|
}
|
|
809
905
|
else if (drawable instanceof PBImage_1.PBImage) {
|
|
810
|
-
this.removeVertex(drawable.upperLeft, false);
|
|
811
|
-
this.removeVertex(drawable.lowerRight, false);
|
|
906
|
+
this.removeVertex(drawable.upperLeft, false, true);
|
|
907
|
+
this.removeVertex(drawable.lowerRight, false, true);
|
|
908
|
+
removedDrawables.push(drawable.upperLeft, drawable.lowerRight);
|
|
812
909
|
}
|
|
813
910
|
else if (drawable instanceof PBText_1.PBText) {
|
|
814
|
-
this.removeVertex(drawable.anchor, false);
|
|
911
|
+
this.removeVertex(drawable.anchor, false, true);
|
|
912
|
+
removedDrawables.push(drawable.anchor);
|
|
815
913
|
}
|
|
816
914
|
} // END removeWithVertices
|
|
817
915
|
if (redraw) {
|
|
818
916
|
this.redraw();
|
|
819
917
|
}
|
|
820
|
-
|
|
821
|
-
|
|
918
|
+
!doNotFireEvent && this._fireContentChanged([], removedDrawables);
|
|
919
|
+
wasRemoved = true;
|
|
920
|
+
} // END if
|
|
921
|
+
} // END for
|
|
922
|
+
return wasRemoved;
|
|
822
923
|
};
|
|
823
924
|
/**
|
|
824
925
|
* Remove a vertex from the vertex list.<br>
|
|
@@ -828,18 +929,20 @@ var PlotBoilerplate = /** @class */ (function () {
|
|
|
828
929
|
* @method removeVertex
|
|
829
930
|
* @instance
|
|
830
931
|
* @memberof PlotBoilerplate
|
|
831
|
-
* @return {
|
|
932
|
+
* @return {boolean}
|
|
832
933
|
**/
|
|
833
|
-
PlotBoilerplate.prototype.removeVertex = function (vert, redraw) {
|
|
934
|
+
PlotBoilerplate.prototype.removeVertex = function (vert, redraw, doNotFireEvent) {
|
|
834
935
|
for (var i = 0; i < this.vertices.length; i++) {
|
|
835
936
|
if (this.vertices[i] === vert) {
|
|
836
937
|
this.vertices.splice(i, 1);
|
|
837
938
|
if (redraw) {
|
|
838
939
|
this.redraw();
|
|
839
940
|
}
|
|
840
|
-
|
|
941
|
+
!doNotFireEvent && this._fireContentChanged([], [vert]);
|
|
942
|
+
return true;
|
|
841
943
|
}
|
|
842
944
|
}
|
|
945
|
+
return false;
|
|
843
946
|
};
|
|
844
947
|
/**
|
|
845
948
|
* Remove all elements.
|
|
@@ -854,13 +957,16 @@ var PlotBoilerplate = /** @class */ (function () {
|
|
|
854
957
|
* @return {void}
|
|
855
958
|
*/
|
|
856
959
|
PlotBoilerplate.prototype.removeAll = function (keepVertices, triggerRedraw) {
|
|
960
|
+
var removedDrawables = this.drawables;
|
|
857
961
|
this.drawables = [];
|
|
858
962
|
if (!Boolean(keepVertices)) {
|
|
963
|
+
removedDrawables = removedDrawables.concat(this.vertices);
|
|
859
964
|
this.vertices = [];
|
|
860
965
|
}
|
|
861
966
|
if (triggerRedraw || typeof triggerRedraw === "undefined") {
|
|
862
967
|
this.redraw();
|
|
863
968
|
}
|
|
969
|
+
removedDrawables.length > 0 && this._fireContentChanged([], removedDrawables);
|
|
864
970
|
};
|
|
865
971
|
/**
|
|
866
972
|
* Find the vertex near the given position.
|
|
@@ -1115,7 +1221,7 @@ var PlotBoilerplate = /** @class */ (function () {
|
|
|
1115
1221
|
d.b.attr.renderTime = renderTime;
|
|
1116
1222
|
}
|
|
1117
1223
|
else if (d instanceof Vector_1.Vector) {
|
|
1118
|
-
draw.arrow(d.a, d.b, this.drawConfig.vector.color);
|
|
1224
|
+
draw.arrow(d.a, d.b, this.drawConfig.vector.color, this.drawConfig.vector.lineWidth);
|
|
1119
1225
|
if (this.drawConfig.drawHandlePoints && d.b.attr.selectable && d.b.attr.visible) {
|
|
1120
1226
|
draw.setCurrentId("".concat(d.uid, "_h0"));
|
|
1121
1227
|
draw.setCurrentClassName("".concat(d.className, "-handle"));
|