plotboilerplate 1.23.3 → 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 +19 -1
- package/dist/index.esm.js +1684 -394
- 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 +12450 -11120
- package/dist/plotboilerplate.min.js +1 -1
- package/package.json +9 -5
- package/src/cjs/BezierPath.d.ts +41 -5
- package/src/cjs/BezierPath.js +52 -2
- package/src/cjs/BezierPath.js.map +1 -1
- package/src/cjs/Bounds.d.ts +67 -3
- package/src/cjs/Bounds.js +101 -3
- package/src/cjs/Bounds.js.map +1 -1
- package/src/cjs/Circle.d.ts +46 -4
- package/src/cjs/Circle.js +82 -3
- package/src/cjs/Circle.js.map +1 -1
- package/src/cjs/CircleSector.d.ts +51 -2
- package/src/cjs/CircleSector.js +112 -3
- package/src/cjs/CircleSector.js.map +1 -1
- package/src/cjs/CubicBezierCurve.d.ts +113 -7
- package/src/cjs/CubicBezierCurve.js +281 -33
- package/src/cjs/CubicBezierCurve.js.map +1 -1
- package/src/cjs/Line.d.ts +38 -3
- package/src/cjs/Line.js +64 -1
- package/src/cjs/Line.js.map +1 -1
- package/src/cjs/PlotBoilerplate.d.ts +37 -6
- package/src/cjs/PlotBoilerplate.js +224 -125
- package/src/cjs/PlotBoilerplate.js.map +1 -1
- package/src/cjs/Polygon.d.ts +68 -5
- package/src/cjs/Polygon.js +143 -22
- package/src/cjs/Polygon.js.map +1 -1
- package/src/cjs/Triangle.d.ts +52 -3
- package/src/cjs/Triangle.js +80 -1
- package/src/cjs/Triangle.js.map +1 -1
- package/src/cjs/VEllipse.d.ts +62 -3
- package/src/cjs/VEllipse.js +181 -17
- package/src/cjs/VEllipse.js.map +1 -1
- package/src/cjs/VEllipseSector.d.ts +86 -2
- package/src/cjs/VEllipseSector.js +148 -4
- package/src/cjs/VEllipseSector.js.map +1 -1
- package/src/cjs/Vector.d.ts +12 -2
- package/src/cjs/Vector.js +15 -2
- package/src/cjs/Vector.js.map +1 -1
- package/src/cjs/VertTuple.d.ts +28 -4
- package/src/cjs/VertTuple.js +36 -3
- package/src/cjs/VertTuple.js.map +1 -1
- package/src/cjs/Vertex.d.ts +31 -4
- package/src/cjs/Vertex.js +35 -1
- package/src/cjs/Vertex.js.map +1 -1
- package/src/cjs/interfaces/core.d.ts +67 -0
- package/src/cjs/interfaces/core.js +4 -0
- package/src/cjs/interfaces/core.js.map +1 -1
- package/src/cjs/utils/algorithms/convexPolygonIncircle.d.ts +2 -1
- package/src/cjs/utils/algorithms/convexPolygonIncircle.js +14 -6
- package/src/cjs/utils/algorithms/convexPolygonIncircle.js.map +1 -1
- package/src/cjs/utils/createRandomizedPolygon.d.ts +14 -0
- package/src/cjs/utils/createRandomizedPolygon.js +32 -0
- package/src/cjs/utils/createRandomizedPolygon.js.map +1 -0
- 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 +16 -8
- package/src/cjs/utils/helpers/BezierPathInteractionHelper.js +49 -28
- 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 +11 -2
- package/src/cjs/utils/helpers/CircleSectorHelper.js +20 -20
- 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 +32 -0
- package/src/cjs/utils/helpers/VEllipseHelper.js +88 -0
- package/src/cjs/utils/helpers/VEllipseHelper.js.map +1 -0
- package/src/cjs/utils/helpers/VEllipseSectorHelper.d.ts +44 -4
- package/src/cjs/utils/helpers/VEllipseSectorHelper.js +108 -25
- 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 +4 -1
- package/src/esm/BezierPath.d.ts +41 -5
- package/src/esm/BezierPath.js +50 -2
- package/src/esm/BezierPath.js.map +1 -1
- package/src/esm/Bounds.d.ts +67 -3
- package/src/esm/Bounds.js +101 -3
- package/src/esm/Bounds.js.map +1 -1
- package/src/esm/Circle.d.ts +46 -4
- package/src/esm/Circle.js +79 -3
- package/src/esm/Circle.js.map +1 -1
- package/src/esm/CircleSector.d.ts +51 -2
- package/src/esm/CircleSector.js +108 -3
- package/src/esm/CircleSector.js.map +1 -1
- package/src/esm/CubicBezierCurve.d.ts +113 -7
- package/src/esm/CubicBezierCurve.js +277 -33
- package/src/esm/CubicBezierCurve.js.map +1 -1
- package/src/esm/Line.d.ts +38 -3
- package/src/esm/Line.js +62 -1
- package/src/esm/Line.js.map +1 -1
- package/src/esm/PlotBoilerplate.d.ts +37 -6
- package/src/esm/PlotBoilerplate.js +224 -125
- package/src/esm/PlotBoilerplate.js.map +1 -1
- package/src/esm/Polygon.d.ts +68 -5
- package/src/esm/Polygon.js +138 -22
- package/src/esm/Polygon.js.map +1 -1
- package/src/esm/Triangle.d.ts +52 -3
- package/src/esm/Triangle.js +77 -1
- package/src/esm/Triangle.js.map +1 -1
- package/src/esm/VEllipse.d.ts +62 -3
- package/src/esm/VEllipse.js +178 -17
- package/src/esm/VEllipse.js.map +1 -1
- package/src/esm/VEllipseSector.d.ts +86 -2
- package/src/esm/VEllipseSector.js +146 -7
- package/src/esm/VEllipseSector.js.map +1 -1
- package/src/esm/Vector.d.ts +12 -2
- package/src/esm/Vector.js +15 -2
- package/src/esm/Vector.js.map +1 -1
- package/src/esm/VertTuple.d.ts +28 -4
- package/src/esm/VertTuple.js +36 -3
- package/src/esm/VertTuple.js.map +1 -1
- package/src/esm/Vertex.d.ts +31 -4
- package/src/esm/Vertex.js +35 -1
- package/src/esm/Vertex.js.map +1 -1
- package/src/esm/interfaces/core.d.ts +67 -0
- package/src/esm/interfaces/core.js +4 -0
- package/src/esm/interfaces/core.js.map +1 -1
- package/src/esm/utils/algorithms/convexPolygonIncircle.d.ts +2 -1
- package/src/esm/utils/algorithms/convexPolygonIncircle.js +15 -7
- package/src/esm/utils/algorithms/convexPolygonIncircle.js.map +1 -1
- package/src/esm/utils/algorithms/createRandomizedPolygon.d.ts +14 -0
- package/src/esm/utils/algorithms/createRandomizedPolygon.js +28 -0
- package/src/esm/utils/algorithms/createRandomizedPolygon.js.map +1 -0
- package/src/esm/utils/createRandomizedPolygon.d.ts +14 -0
- package/src/esm/utils/createRandomizedPolygon.js +28 -0
- package/src/esm/utils/createRandomizedPolygon.js.map +1 -0
- 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 +16 -8
- package/src/esm/utils/helpers/BezierPathInteractionHelper.js +47 -27
- 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 +11 -2
- package/src/esm/utils/helpers/CircleSectorHelper.js +20 -20
- 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 +32 -0
- package/src/esm/utils/helpers/VEllipseHelper.js +83 -0
- package/src/esm/utils/helpers/VEllipseHelper.js.map +1 -0
- package/src/esm/utils/helpers/VEllipseSectorHelper.d.ts +44 -4
- package/src/esm/utils/helpers/VEllipseSectorHelper.js +107 -24
- 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/BezierPath.ts +58 -5
- package/src/ts/Bounds.ts +110 -6
- package/src/ts/Circle.ts +87 -5
- package/src/ts/CircleSector.ts +115 -5
- package/src/ts/CubicBezierCurve.ts +332 -42
- package/src/ts/Line.ts +66 -3
- package/src/ts/PlotBoilerplate.ts +236 -114
- package/src/ts/Polygon.ts +164 -29
- package/src/ts/Triangle.ts +85 -3
- package/src/ts/VEllipse.ts +214 -19
- package/src/ts/VEllipseSector.ts +154 -8
- package/src/ts/Vector.ts +16 -2
- package/src/ts/VertTuple.ts +39 -4
- package/src/ts/Vertex.ts +40 -4
- package/src/ts/interfaces/core.ts +73 -0
- package/src/ts/utils/algorithms/convexPolygonIncircle.ts +82 -78
- package/src/ts/utils/createRandomizedPolygon.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 +61 -35
- package/src/ts/utils/helpers/CircleHelper.ts +17 -3
- package/src/ts/utils/helpers/CircleSectorHelper.ts +118 -126
- package/src/ts/utils/helpers/TriangleHelper.ts +102 -0
- package/src/ts/utils/helpers/VEllipseHelper.ts +115 -0
- package/src/ts/utils/helpers/VEllipseSectorHelper.ts +144 -26
- package/src/ts/utils/parsers/LinearColorGradientParser.ts +297 -0
|
@@ -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.
|
|
@@ -131,7 +136,8 @@ import {
|
|
|
131
136
|
XYCoords,
|
|
132
137
|
XYDimension,
|
|
133
138
|
DatGuiProps, // DEPRECATED. Please do not use any more.
|
|
134
|
-
LilGuiProps
|
|
139
|
+
LilGuiProps,
|
|
140
|
+
PBContentChangeListener
|
|
135
141
|
} from "./interfaces";
|
|
136
142
|
import { PBText } from "./PBText";
|
|
137
143
|
import { AlloyFingerOptions } from "alloyfinger-typescript/src/cjs/alloy_finger";
|
|
@@ -313,6 +319,11 @@ export class PlotBoilerplate {
|
|
|
313
319
|
*/
|
|
314
320
|
hooks: IHooks;
|
|
315
321
|
|
|
322
|
+
/**
|
|
323
|
+
* A list of content change listeners.
|
|
324
|
+
*/
|
|
325
|
+
contentChangeListeners: Array<PBContentChangeListener> = [];
|
|
326
|
+
|
|
316
327
|
/**
|
|
317
328
|
* @member {KeyHandler|undefined}
|
|
318
329
|
* @memberof PlotBoilerplate
|
|
@@ -804,6 +815,55 @@ export class PlotBoilerplate {
|
|
|
804
815
|
}
|
|
805
816
|
}
|
|
806
817
|
|
|
818
|
+
/**
|
|
819
|
+
* Adds a new content change listener to this instance. Adding duplicates is not possible.
|
|
820
|
+
*
|
|
821
|
+
* @param {PBContentChangeListener} listener - The listenre to add.
|
|
822
|
+
* @method addContentChangeListener
|
|
823
|
+
* @instance
|
|
824
|
+
* @memberof PlotBoilerplate
|
|
825
|
+
* @returns {void}
|
|
826
|
+
*/
|
|
827
|
+
addContentChangeListener(listener: PBContentChangeListener) {
|
|
828
|
+
for (var i in this.contentChangeListeners) {
|
|
829
|
+
if (this.contentChangeListeners[i] === listener) {
|
|
830
|
+
return;
|
|
831
|
+
}
|
|
832
|
+
}
|
|
833
|
+
this.contentChangeListeners.push(listener);
|
|
834
|
+
}
|
|
835
|
+
|
|
836
|
+
/**
|
|
837
|
+
* Removes an existing content change listener from this instance.
|
|
838
|
+
*
|
|
839
|
+
* @param {PBContentChangeListener} listener - The listenre to add.
|
|
840
|
+
* @method removeContentChangeListener
|
|
841
|
+
* @instance
|
|
842
|
+
* @memberof PlotBoilerplate
|
|
843
|
+
* @returns {void}
|
|
844
|
+
*/
|
|
845
|
+
removeContentChangeListener(listener: PBContentChangeListener) {
|
|
846
|
+
for (var i = 0; i < this.contentChangeListeners.length; i++) {
|
|
847
|
+
if (this.contentChangeListeners[i] === listener) {
|
|
848
|
+
this.contentChangeListeners.splice(i, 1);
|
|
849
|
+
return;
|
|
850
|
+
}
|
|
851
|
+
}
|
|
852
|
+
}
|
|
853
|
+
|
|
854
|
+
private _fireContentChanged(addedDrawables: Drawable[], removedDrawables: Drawable[]): void {
|
|
855
|
+
for (var i in this.contentChangeListeners) {
|
|
856
|
+
const listener = this.contentChangeListeners[i];
|
|
857
|
+
if (listener && typeof listener === "function") {
|
|
858
|
+
listener({
|
|
859
|
+
type: addedDrawables.length > 0 ? "DRAWABLES_ADDED" : "DRAWABLES_REMOVED",
|
|
860
|
+
addedDrawables: addedDrawables,
|
|
861
|
+
removedDrawables: removedDrawables
|
|
862
|
+
});
|
|
863
|
+
}
|
|
864
|
+
}
|
|
865
|
+
}
|
|
866
|
+
|
|
807
867
|
/**
|
|
808
868
|
* Add a drawable object.<br>
|
|
809
869
|
* <br>
|
|
@@ -828,87 +888,115 @@ export class PlotBoilerplate {
|
|
|
828
888
|
* @memberof PlotBoilerplate
|
|
829
889
|
* @return {void}
|
|
830
890
|
**/
|
|
831
|
-
add(drawable: Drawable | Array<Drawable>, redraw?: boolean) {
|
|
891
|
+
add(drawable: Drawable | Array<Drawable>, redraw?: boolean, doNotFireEvent?: boolean) {
|
|
832
892
|
if (Array.isArray(drawable)) {
|
|
833
893
|
const arr: Array<Drawable> = drawable as Array<Drawable>;
|
|
834
894
|
for (var i = 0; i < arr.length; i++) {
|
|
835
|
-
this.add(arr[i], false);
|
|
895
|
+
this.add(arr[i], false, doNotFireEvent);
|
|
836
896
|
}
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
drawable.
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
897
|
+
// !doNotFireEvent && this._fireContentChanged(arr, []);
|
|
898
|
+
} else {
|
|
899
|
+
const addedDrawables: Array<Drawable> = [drawable];
|
|
900
|
+
if (drawable instanceof Vertex) {
|
|
901
|
+
this.drawables.push(drawable);
|
|
902
|
+
this.vertices.push(drawable);
|
|
903
|
+
} else if (drawable instanceof Line) {
|
|
904
|
+
// Add some lines
|
|
905
|
+
this.drawables.push(drawable);
|
|
906
|
+
this.vertices.push(drawable.a);
|
|
907
|
+
this.vertices.push(drawable.b);
|
|
908
|
+
addedDrawables.push(drawable.a, drawable.b);
|
|
909
|
+
} else if (drawable instanceof Vector) {
|
|
910
|
+
this.drawables.push(drawable);
|
|
911
|
+
this.vertices.push(drawable.a);
|
|
912
|
+
this.vertices.push(drawable.b);
|
|
913
|
+
addedDrawables.push(drawable.a, drawable.b);
|
|
914
|
+
drawable.a.listeners.addDragListener((event: VertEvent) => {
|
|
915
|
+
drawable.b.add(event.params.dragAmount);
|
|
916
|
+
});
|
|
917
|
+
} else if (drawable instanceof VEllipse) {
|
|
918
|
+
this.vertices.push(drawable.center);
|
|
919
|
+
this.vertices.push(drawable.axis);
|
|
920
|
+
addedDrawables.push(drawable.center, drawable.axis);
|
|
921
|
+
this.drawables.push(drawable);
|
|
922
|
+
drawable.center.listeners.addDragListener((event: VertEvent) => {
|
|
923
|
+
drawable.axis.add(event.params.dragAmount);
|
|
924
|
+
});
|
|
925
|
+
} else if (drawable instanceof VEllipseSector) {
|
|
926
|
+
this.vertices.push(drawable.ellipse.center);
|
|
927
|
+
this.vertices.push(drawable.ellipse.axis);
|
|
928
|
+
addedDrawables.push(drawable.ellipse.center, drawable.ellipse.axis);
|
|
929
|
+
|
|
930
|
+
this.drawables.push(drawable);
|
|
931
|
+
drawable.ellipse.center.listeners.addDragListener((event: VertEvent) => {
|
|
932
|
+
drawable.ellipse.axis.add(event.params.dragAmount);
|
|
933
|
+
});
|
|
934
|
+
} else if (drawable instanceof Circle) {
|
|
935
|
+
this.vertices.push(drawable.center);
|
|
936
|
+
addedDrawables.push(drawable.center);
|
|
937
|
+
this.drawables.push(drawable);
|
|
938
|
+
} else if (drawable instanceof CircleSector) {
|
|
939
|
+
this.vertices.push(drawable.circle.center);
|
|
940
|
+
addedDrawables.push(drawable.circle.center);
|
|
941
|
+
this.drawables.push(drawable);
|
|
942
|
+
} else if (drawable instanceof Polygon) {
|
|
943
|
+
this.drawables.push(drawable);
|
|
944
|
+
for (var i = 0; i < drawable.vertices.length; i++) {
|
|
945
|
+
this.vertices.push(drawable.vertices[i]);
|
|
946
|
+
addedDrawables.push(drawable.vertices[i]);
|
|
947
|
+
}
|
|
948
|
+
} else if (drawable instanceof Triangle) {
|
|
949
|
+
this.drawables.push(drawable);
|
|
950
|
+
this.vertices.push(drawable.a);
|
|
951
|
+
this.vertices.push(drawable.b);
|
|
952
|
+
this.vertices.push(drawable.c);
|
|
953
|
+
addedDrawables.push(drawable.a, drawable.b, drawable.c);
|
|
954
|
+
} else if (drawable instanceof BezierPath) {
|
|
955
|
+
this.drawables.push(drawable);
|
|
956
|
+
const bezierPath: BezierPath = drawable as BezierPath;
|
|
957
|
+
for (var i = 0; i < bezierPath.bezierCurves.length; i++) {
|
|
958
|
+
if (!drawable.adjustCircular && i == 0) {
|
|
959
|
+
this.vertices.push(bezierPath.bezierCurves[i].startPoint);
|
|
960
|
+
addedDrawables.push(bezierPath.bezierCurves[i].startPoint);
|
|
961
|
+
}
|
|
962
|
+
this.vertices.push(bezierPath.bezierCurves[i].endPoint);
|
|
963
|
+
this.vertices.push(bezierPath.bezierCurves[i].startControlPoint);
|
|
964
|
+
this.vertices.push(bezierPath.bezierCurves[i].endControlPoint);
|
|
965
|
+
addedDrawables.push(
|
|
966
|
+
bezierPath.bezierCurves[i].endPoint,
|
|
967
|
+
bezierPath.bezierCurves[i].startControlPoint,
|
|
968
|
+
bezierPath.bezierCurves[i].endControlPoint
|
|
969
|
+
);
|
|
970
|
+
bezierPath.bezierCurves[i].startControlPoint.attr.selectable = false;
|
|
971
|
+
bezierPath.bezierCurves[i].endControlPoint.attr.selectable = false;
|
|
885
972
|
}
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
this.vertices.push(
|
|
889
|
-
|
|
890
|
-
|
|
973
|
+
PlotBoilerplate.utils.enableBezierPathAutoAdjust(drawable);
|
|
974
|
+
} else if (drawable instanceof PBImage) {
|
|
975
|
+
this.vertices.push(drawable.upperLeft);
|
|
976
|
+
this.vertices.push(drawable.lowerRight);
|
|
977
|
+
addedDrawables.push(drawable.upperLeft, drawable.lowerRight);
|
|
978
|
+
this.drawables.push(drawable);
|
|
979
|
+
// Todo: think about a IDragEvent interface
|
|
980
|
+
drawable.upperLeft.listeners.addDragListener((e: VertEvent) => {
|
|
981
|
+
drawable.lowerRight.add(e.params.dragAmount);
|
|
982
|
+
});
|
|
983
|
+
drawable.lowerRight.attr.selectable = false;
|
|
984
|
+
} else if (drawable instanceof PBText) {
|
|
985
|
+
this.vertices.push(drawable.anchor);
|
|
986
|
+
addedDrawables.push(drawable.anchor);
|
|
987
|
+
this.drawables.push(drawable);
|
|
988
|
+
drawable.anchor.attr.selectable = false;
|
|
989
|
+
} else {
|
|
990
|
+
throw "Cannot add drawable of unrecognized type: " + typeof drawable + ".";
|
|
891
991
|
}
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
this.vertices.push(drawable.upperLeft);
|
|
895
|
-
this.vertices.push(drawable.lowerRight);
|
|
896
|
-
this.drawables.push(drawable);
|
|
897
|
-
// Todo: think about a IDragEvent interface
|
|
898
|
-
drawable.upperLeft.listeners.addDragListener((e: VertEvent) => {
|
|
899
|
-
drawable.lowerRight.add(e.params.dragAmount);
|
|
900
|
-
});
|
|
901
|
-
drawable.lowerRight.attr.selectable = false;
|
|
902
|
-
} else if (drawable instanceof PBText) {
|
|
903
|
-
this.vertices.push(drawable.anchor);
|
|
904
|
-
this.drawables.push(drawable);
|
|
905
|
-
drawable.anchor.attr.selectable = false;
|
|
906
|
-
} else {
|
|
907
|
-
throw "Cannot add drawable of unrecognized type: " + typeof drawable + ".";
|
|
992
|
+
|
|
993
|
+
!doNotFireEvent && this._fireContentChanged(addedDrawables, []);
|
|
908
994
|
}
|
|
909
995
|
|
|
910
996
|
// This is a workaround for backwards compatibility when the 'redraw' param was not yet present.
|
|
911
|
-
if (redraw || typeof redraw == "undefined")
|
|
997
|
+
if (redraw || typeof redraw == "undefined") {
|
|
998
|
+
this.redraw();
|
|
999
|
+
}
|
|
912
1000
|
}
|
|
913
1001
|
|
|
914
1002
|
/**
|
|
@@ -929,79 +1017,114 @@ export class PlotBoilerplate {
|
|
|
929
1017
|
*
|
|
930
1018
|
* @param {Drawable|Array<Drawable>} drawable - The drawable (of one of the allowed class instance) to remove.
|
|
931
1019
|
* @param {boolean} [redraw=false]
|
|
1020
|
+
* @param {removeWidth}
|
|
932
1021
|
* @method remove
|
|
933
1022
|
* @instance
|
|
934
1023
|
* @memberof PlotBoilerplate
|
|
935
1024
|
* @return {void}
|
|
936
1025
|
**/
|
|
937
|
-
remove(
|
|
1026
|
+
remove(
|
|
1027
|
+
drawable: Drawable | Array<Drawable>,
|
|
1028
|
+
redraw?: boolean,
|
|
1029
|
+
removeWithVertices?: boolean,
|
|
1030
|
+
doNotFireEvent?: boolean
|
|
1031
|
+
): boolean {
|
|
938
1032
|
if (Array.isArray(drawable)) {
|
|
1033
|
+
const removedDrawables: Array<Drawable> = [];
|
|
939
1034
|
for (var i = 0; i < drawable.length; i++) {
|
|
940
|
-
this.remove(drawable[i], false, removeWithVertices)
|
|
1035
|
+
if (this.remove(drawable[i], false, removeWithVertices, true)) {
|
|
1036
|
+
removedDrawables.push(drawable[i]);
|
|
1037
|
+
}
|
|
941
1038
|
}
|
|
942
1039
|
if (redraw) {
|
|
943
1040
|
this.redraw();
|
|
944
1041
|
}
|
|
945
|
-
|
|
1042
|
+
!doNotFireEvent && this._fireContentChanged([], removedDrawables);
|
|
1043
|
+
return removedDrawables.length > 0;
|
|
946
1044
|
}
|
|
947
1045
|
if (drawable instanceof Vertex) {
|
|
948
|
-
this.removeVertex(drawable, false);
|
|
1046
|
+
const wasRemoved: boolean = this.removeVertex(drawable, false, false);
|
|
949
1047
|
if (redraw) {
|
|
950
1048
|
this.redraw();
|
|
951
1049
|
}
|
|
1050
|
+
!doNotFireEvent && this._fireContentChanged([], [drawable]);
|
|
1051
|
+
return wasRemoved;
|
|
952
1052
|
}
|
|
1053
|
+
let wasRemoved: boolean = false;
|
|
1054
|
+
const removedDrawables: Array<Drawable> = [];
|
|
953
1055
|
for (var i = 0; i < this.drawables.length; i++) {
|
|
954
1056
|
if (this.drawables[i] === drawable || this.drawables[i].uid === drawable.uid) {
|
|
955
1057
|
this.drawables.splice(i, 1);
|
|
1058
|
+
removedDrawables.push(drawable);
|
|
956
1059
|
|
|
957
1060
|
if (removeWithVertices) {
|
|
958
1061
|
// Check if some listeners need to be removed
|
|
959
1062
|
if (drawable instanceof Line) {
|
|
960
1063
|
// Add some lines
|
|
961
|
-
this.removeVertex(drawable.a, false);
|
|
962
|
-
this.removeVertex(drawable.b, false);
|
|
1064
|
+
this.removeVertex(drawable.a, false, true);
|
|
1065
|
+
this.removeVertex(drawable.b, false, true);
|
|
1066
|
+
removedDrawables.push(drawable.a, drawable.b);
|
|
963
1067
|
} else if (drawable instanceof Vector) {
|
|
964
|
-
this.removeVertex(drawable.a, false);
|
|
965
|
-
this.removeVertex(drawable.b, false);
|
|
1068
|
+
this.removeVertex(drawable.a, false, true);
|
|
1069
|
+
this.removeVertex(drawable.b, false, true);
|
|
1070
|
+
removedDrawables.push(drawable.a, drawable.b);
|
|
966
1071
|
} else if (drawable instanceof VEllipse) {
|
|
967
|
-
this.removeVertex(drawable.center, false);
|
|
968
|
-
this.removeVertex(drawable.axis, false);
|
|
1072
|
+
this.removeVertex(drawable.center, false, true);
|
|
1073
|
+
this.removeVertex(drawable.axis, false, true);
|
|
1074
|
+
removedDrawables.push(drawable.center, drawable.axis);
|
|
969
1075
|
} else if (drawable instanceof VEllipseSector) {
|
|
970
|
-
this.removeVertex(drawable.ellipse.center);
|
|
971
|
-
this.removeVertex(drawable.ellipse.axis);
|
|
1076
|
+
this.removeVertex(drawable.ellipse.center, false, true);
|
|
1077
|
+
this.removeVertex(drawable.ellipse.axis, false, true);
|
|
1078
|
+
removedDrawables.push(drawable.ellipse.center, drawable.ellipse.axis);
|
|
972
1079
|
} else if (drawable instanceof Circle) {
|
|
973
|
-
this.removeVertex(drawable.center, false);
|
|
1080
|
+
this.removeVertex(drawable.center, false, true);
|
|
974
1081
|
} else if (drawable instanceof CircleSector) {
|
|
975
|
-
this.removeVertex(drawable.circle.center, false);
|
|
1082
|
+
this.removeVertex(drawable.circle.center, false, true);
|
|
1083
|
+
removedDrawables.push(drawable.circle.center);
|
|
976
1084
|
} else if (drawable instanceof Polygon) {
|
|
977
1085
|
// for( var i in drawable.vertices )
|
|
978
|
-
for (var i = 0; i < drawable.vertices.length; i++)
|
|
1086
|
+
for (var i = 0; i < drawable.vertices.length; i++) {
|
|
1087
|
+
this.removeVertex(drawable.vertices[i], false, true);
|
|
1088
|
+
removedDrawables.push(drawable.vertices[i]);
|
|
1089
|
+
}
|
|
979
1090
|
} else if (drawable instanceof Triangle) {
|
|
980
|
-
this.removeVertex(drawable.a, false);
|
|
981
|
-
this.removeVertex(drawable.b, false);
|
|
982
|
-
this.removeVertex(drawable.c, false);
|
|
1091
|
+
this.removeVertex(drawable.a, false, true);
|
|
1092
|
+
this.removeVertex(drawable.b, false, true);
|
|
1093
|
+
this.removeVertex(drawable.c, false, true);
|
|
1094
|
+
removedDrawables.push(drawable.a, drawable.b, drawable.c);
|
|
983
1095
|
} else if (drawable instanceof BezierPath) {
|
|
984
1096
|
for (var i = 0; i < drawable.bezierCurves.length; i++) {
|
|
985
|
-
this.removeVertex(drawable.bezierCurves[i].startPoint, false);
|
|
986
|
-
this.removeVertex(drawable.bezierCurves[i].startControlPoint, false);
|
|
987
|
-
this.removeVertex(drawable.bezierCurves[i].endControlPoint, false);
|
|
1097
|
+
this.removeVertex(drawable.bezierCurves[i].startPoint, false, true);
|
|
1098
|
+
this.removeVertex(drawable.bezierCurves[i].startControlPoint, false, true);
|
|
1099
|
+
this.removeVertex(drawable.bezierCurves[i].endControlPoint, false, true);
|
|
1100
|
+
removedDrawables.push(
|
|
1101
|
+
drawable.bezierCurves[i].startPoint,
|
|
1102
|
+
drawable.bezierCurves[i].startControlPoint,
|
|
1103
|
+
drawable.bezierCurves[i].endControlPoint
|
|
1104
|
+
);
|
|
988
1105
|
if (i + 1 == drawable.bezierCurves.length) {
|
|
989
|
-
this.removeVertex(drawable.bezierCurves[i].endPoint, false);
|
|
1106
|
+
this.removeVertex(drawable.bezierCurves[i].endPoint, false, true);
|
|
1107
|
+
removedDrawables.push(drawable.bezierCurves[i].endPoint);
|
|
990
1108
|
}
|
|
991
1109
|
}
|
|
992
1110
|
} else if (drawable instanceof PBImage) {
|
|
993
|
-
this.removeVertex(drawable.upperLeft, false);
|
|
994
|
-
this.removeVertex(drawable.lowerRight, false);
|
|
1111
|
+
this.removeVertex(drawable.upperLeft, false, true);
|
|
1112
|
+
this.removeVertex(drawable.lowerRight, false, true);
|
|
1113
|
+
removedDrawables.push(drawable.upperLeft, drawable.lowerRight);
|
|
995
1114
|
} else if (drawable instanceof PBText) {
|
|
996
|
-
this.removeVertex(drawable.anchor, false);
|
|
1115
|
+
this.removeVertex(drawable.anchor, false, true);
|
|
1116
|
+
removedDrawables.push(drawable.anchor);
|
|
997
1117
|
}
|
|
998
1118
|
} // END removeWithVertices
|
|
999
1119
|
|
|
1000
1120
|
if (redraw) {
|
|
1001
1121
|
this.redraw();
|
|
1002
1122
|
}
|
|
1003
|
-
|
|
1004
|
-
|
|
1123
|
+
!doNotFireEvent && this._fireContentChanged([], removedDrawables);
|
|
1124
|
+
wasRemoved = true;
|
|
1125
|
+
} // END if
|
|
1126
|
+
} // END for
|
|
1127
|
+
return wasRemoved;
|
|
1005
1128
|
}
|
|
1006
1129
|
|
|
1007
1130
|
/**
|
|
@@ -1012,18 +1135,20 @@ export class PlotBoilerplate {
|
|
|
1012
1135
|
* @method removeVertex
|
|
1013
1136
|
* @instance
|
|
1014
1137
|
* @memberof PlotBoilerplate
|
|
1015
|
-
* @return {
|
|
1138
|
+
* @return {boolean}
|
|
1016
1139
|
**/
|
|
1017
|
-
removeVertex(vert: Vertex, redraw?: boolean):
|
|
1140
|
+
removeVertex(vert: Vertex, redraw?: boolean, doNotFireEvent?: boolean): boolean {
|
|
1018
1141
|
for (var i = 0; i < this.vertices.length; i++) {
|
|
1019
1142
|
if (this.vertices[i] === vert) {
|
|
1020
1143
|
this.vertices.splice(i, 1);
|
|
1021
1144
|
if (redraw) {
|
|
1022
1145
|
this.redraw();
|
|
1023
1146
|
}
|
|
1024
|
-
|
|
1147
|
+
!doNotFireEvent && this._fireContentChanged([], [vert]);
|
|
1148
|
+
return true;
|
|
1025
1149
|
}
|
|
1026
1150
|
}
|
|
1151
|
+
return false;
|
|
1027
1152
|
}
|
|
1028
1153
|
|
|
1029
1154
|
/**
|
|
@@ -1039,13 +1164,16 @@ export class PlotBoilerplate {
|
|
|
1039
1164
|
* @return {void}
|
|
1040
1165
|
*/
|
|
1041
1166
|
removeAll(keepVertices?: boolean, triggerRedraw?: boolean) {
|
|
1167
|
+
let removedDrawables: Array<Drawable> = this.drawables;
|
|
1042
1168
|
this.drawables = [];
|
|
1043
1169
|
if (!Boolean(keepVertices)) {
|
|
1170
|
+
removedDrawables = removedDrawables.concat(this.vertices);
|
|
1044
1171
|
this.vertices = [];
|
|
1045
1172
|
}
|
|
1046
1173
|
if (triggerRedraw || typeof triggerRedraw === "undefined") {
|
|
1047
1174
|
this.redraw();
|
|
1048
1175
|
}
|
|
1176
|
+
removedDrawables.length > 0 && this._fireContentChanged([], removedDrawables);
|
|
1049
1177
|
}
|
|
1050
1178
|
|
|
1051
1179
|
/**
|
|
@@ -1302,16 +1430,16 @@ export class PlotBoilerplate {
|
|
|
1302
1430
|
}
|
|
1303
1431
|
} else if (d instanceof Triangle) {
|
|
1304
1432
|
draw.polyline([d.a, d.b, d.c], false, this.drawConfig.triangle.color, this.drawConfig.triangle.lineWidth);
|
|
1305
|
-
if (!this.drawConfig.drawHandlePoints)
|
|
1433
|
+
if (!this.drawConfig.drawHandlePoints) {
|
|
1434
|
+
d.a.attr.renderTime = d.b.attr.renderTime = d.c.attr.renderTime = renderTime;
|
|
1435
|
+
}
|
|
1306
1436
|
} else if (d instanceof VEllipse) {
|
|
1307
1437
|
if (this.drawConfig.drawHandleLines) {
|
|
1308
1438
|
draw.setCurrentId(`${d.uid}_e0`);
|
|
1309
1439
|
draw.setCurrentClassName(`${d.className}-v-line`);
|
|
1310
|
-
// draw.line( d.center.clone().add(0,d.axis.y-d.center.y), d.axis, '#c8c8c8' );
|
|
1311
1440
|
draw.handleLine(d.center.clone().add(0, d.signedRadiusV()).rotate(d.rotation, d.center), d.axis); // , "#c8c8c8");
|
|
1312
1441
|
draw.setCurrentId(`${d.uid}_e1`);
|
|
1313
1442
|
draw.setCurrentClassName(`${d.className}-h-line`);
|
|
1314
|
-
// draw.line( d.center.clone().add(d.axis.x-d.center.x,0), d.axis, '#c8c8c8' );
|
|
1315
1443
|
draw.handleLine(d.center.clone().add(d.signedRadiusH(), 0).rotate(d.rotation, d.center), d.axis); // , "#c8c8c8");
|
|
1316
1444
|
}
|
|
1317
1445
|
draw.setCurrentId(d.uid);
|
|
@@ -1332,12 +1460,6 @@ export class PlotBoilerplate {
|
|
|
1332
1460
|
} else if (d instanceof VEllipseSector) {
|
|
1333
1461
|
draw.setCurrentId(d.uid);
|
|
1334
1462
|
draw.setCurrentClassName(`${d.className}`);
|
|
1335
|
-
/* draw.ellipse( d.center,
|
|
1336
|
-
// Math.abs(d.axis.x-d.center.x), Math.abs(d.axis.y-d.center.y),
|
|
1337
|
-
d.radiusH(), d.radiusV(),
|
|
1338
|
-
this.drawConfig.ellipse.color,
|
|
1339
|
-
this.drawConfig.ellipse.lineWidth,
|
|
1340
|
-
d.rotation ); */
|
|
1341
1463
|
const data: SVGPathParams = VEllipseSector.ellipseSectorUtils.describeSVGArc(
|
|
1342
1464
|
d.ellipse.center.x,
|
|
1343
1465
|
d.ellipse.center.y,
|
|
@@ -1371,7 +1493,7 @@ export class PlotBoilerplate {
|
|
|
1371
1493
|
if (!this.drawConfig.drawHandlePoints || !d.a.attr.selectable) d.a.attr.renderTime = renderTime;
|
|
1372
1494
|
if (!this.drawConfig.drawHandlePoints || !d.b.attr.selectable) d.b.attr.renderTime = renderTime;
|
|
1373
1495
|
} else if (d instanceof Vector) {
|
|
1374
|
-
draw.arrow(d.a, d.b, this.drawConfig.vector.color);
|
|
1496
|
+
draw.arrow(d.a, d.b, this.drawConfig.vector.color, this.drawConfig.vector.lineWidth);
|
|
1375
1497
|
if (this.drawConfig.drawHandlePoints && d.b.attr.selectable && d.b.attr.visible) {
|
|
1376
1498
|
draw.setCurrentId(`${d.uid}_h0`);
|
|
1377
1499
|
draw.setCurrentClassName(`${d.className}-handle`);
|