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
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* A CSS gradient string parser.
|
|
4
|
+
*
|
|
5
|
+
* Source:
|
|
6
|
+
* https://stackoverflow.com/questions/20215440/parse-css-gradient-rule-with-javascript-regex
|
|
7
|
+
* Thanks to Dean Taylor
|
|
8
|
+
*
|
|
9
|
+
* @date 2025-09-04
|
|
10
|
+
* @OriginalAuthor Dean Taylor
|
|
11
|
+
* @RefactoredBy Ikaros Kappler, ported to Typescript.
|
|
12
|
+
* @version 1.0.0
|
|
13
|
+
*/
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.LinearColorGradientParser = exports.__parseGradient = exports.DefaultPositionConverter = void 0;
|
|
16
|
+
var Color_1 = require("../datastructures/Color");
|
|
17
|
+
var ColorGradient_1 = require("../datastructures/ColorGradient");
|
|
18
|
+
/**
|
|
19
|
+
* The default implementation of `PositionToRatioConverter`.
|
|
20
|
+
* @param positionString
|
|
21
|
+
* @returns
|
|
22
|
+
*/
|
|
23
|
+
var DefaultPositionConverter = function (positionString) {
|
|
24
|
+
if (typeof positionString === "undefined") {
|
|
25
|
+
throw new Error("Cannot parse positioning string `null`.");
|
|
26
|
+
}
|
|
27
|
+
var tmp = positionString.trim();
|
|
28
|
+
if (tmp.length === 0) {
|
|
29
|
+
throw new Error('Cannot parse empty positioning string "".');
|
|
30
|
+
}
|
|
31
|
+
if (!tmp.endsWith("%")) {
|
|
32
|
+
throw new Error("Cannot parse positioning string, must end with '%': '".concat(tmp, "'"));
|
|
33
|
+
}
|
|
34
|
+
return Number.parseFloat(tmp) / 100.0;
|
|
35
|
+
};
|
|
36
|
+
exports.DefaultPositionConverter = DefaultPositionConverter;
|
|
37
|
+
/**
|
|
38
|
+
* Utility combine multiple regular expressions.
|
|
39
|
+
*
|
|
40
|
+
* Source:
|
|
41
|
+
* https://stackoverflow.com/questions/20215440/parse-css-gradient-rule-with-javascript-regex
|
|
42
|
+
* Thanks to Dean Taylor
|
|
43
|
+
*
|
|
44
|
+
* @param {Array<RegExp | string>} regexpList List of regular expressions or strings.
|
|
45
|
+
* @param {string} flags Normal RegExp flags.
|
|
46
|
+
*/
|
|
47
|
+
var __combineRegExp = function (regexpList, flags) {
|
|
48
|
+
var source = "";
|
|
49
|
+
for (var i = 0; i < regexpList.length; i++) {
|
|
50
|
+
var regex = regexpList[i];
|
|
51
|
+
if (typeof regex === "string") {
|
|
52
|
+
source += regex;
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
source += regex.source;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return new RegExp(source, flags);
|
|
59
|
+
};
|
|
60
|
+
/**
|
|
61
|
+
* Generate the required regular expressions once.
|
|
62
|
+
*
|
|
63
|
+
* Regular Expressions are easier to manage this way and can be well described.
|
|
64
|
+
*
|
|
65
|
+
* @result {object} Object containing regular expressions.
|
|
66
|
+
*/
|
|
67
|
+
var __generateDefaultRegExpLib = function () {
|
|
68
|
+
// Note any variables with "Capture" in name include capturing bracket set(s).
|
|
69
|
+
var searchFlags = "gi", // ignore case for angles, "rgb" etc
|
|
70
|
+
rAngle = /(?:[+-]?\d*\.?\d+)(?:deg|grad|rad|turn)/, // Angle +ive, -ive and angle types
|
|
71
|
+
rSideCornerCapture = /to\s+((?:(?:left|right)(?:\s+(?:top|bottom))?))/, // optional 2nd part
|
|
72
|
+
rComma = /\s*,\s*/, // Allow space around comma.
|
|
73
|
+
rColorHex = /\#(?:[a-f0-9]{6}|[a-f0-9]{3})/, // 3 or 6 character form
|
|
74
|
+
rDigits3 = /\(\s*(?:\d{1,3}\s*,\s*){2}\d{1,3}\s*\)/, // "(1, 2, 3)"
|
|
75
|
+
rDigits4 = /\(\s*(?:\d{1,3}\s*,\s*){2}\d{1,3}\s*,\s*\d*\.?\d+\)/, // "(1, 2, 3, 4)"
|
|
76
|
+
rValue = /(?:[+-]?\d*\.?\d+)(?:%|[a-z]+)?/, // ".9", "-5px", "100%".
|
|
77
|
+
rKeyword = /[_a-z-][_a-z0-9-]*/, // "red", "transparent", "border-collapse".
|
|
78
|
+
rColor = __combineRegExp(["(?:", rColorHex, "|", "(?:rgb|hsl)", rDigits3, "|", "(?:rgba|hsla)", rDigits4, "|", rKeyword, ")"], ""), rColorStop = __combineRegExp([rColor, "(?:\\s+", rValue, "(?:\\s+", rValue, ")?)?"], ""), // Single Color Stop, optional %, optional length.
|
|
79
|
+
rColorStopList = __combineRegExp(["(?:", rColorStop, rComma, ")*", rColorStop], ""), // List of color stops min 1.
|
|
80
|
+
rLineCapture = __combineRegExp(["(?:(", rAngle, ")|", rSideCornerCapture, ")"], ""), // Angle or SideCorner
|
|
81
|
+
rGradientSearch = __combineRegExp(["(?:(", rLineCapture, ")", rComma, ")?(", rColorStopList, ")"], searchFlags), // Capture 1:"line", 2:"angle" (optional), 3:"side corner" (optional) and 4:"stop list".
|
|
82
|
+
rColorStopSearch = __combineRegExp(["\\s*(", rColor, ")", "(?:\\s+", "(", rValue, "))?", "(?:", rComma, "\\s*)?"], searchFlags); // Capture 1:"color" and 2:"position" (optional).
|
|
83
|
+
return {
|
|
84
|
+
gradientSearch: rGradientSearch,
|
|
85
|
+
colorStopSearch: rColorStopSearch
|
|
86
|
+
};
|
|
87
|
+
};
|
|
88
|
+
/**
|
|
89
|
+
* Actually parse the input gradient parameters string into an object for reusability.
|
|
90
|
+
*
|
|
91
|
+
*
|
|
92
|
+
* @note Really this only supports the standard syntax not historical versions, see MDN for details
|
|
93
|
+
* https://developer.mozilla.org/en-US/docs/Web/CSS/linear-gradient
|
|
94
|
+
*
|
|
95
|
+
* @param {ColorGradientParserRegExpLib} regExpLib
|
|
96
|
+
* @param {string} input Input string in the form "to right bottom, #FF0 0%, red 20px, rgb(0, 0, 255) 100%"
|
|
97
|
+
* @returns {object|undefined} Object containing break down of input string including array of stop points.
|
|
98
|
+
*/
|
|
99
|
+
var __parseGradient = function (regExpLib, input) {
|
|
100
|
+
var result;
|
|
101
|
+
var matchGradient, matchColorStop, stopResult;
|
|
102
|
+
// reset search position, because we reuse regex.
|
|
103
|
+
regExpLib.gradientSearch.lastIndex = 0;
|
|
104
|
+
matchGradient = regExpLib.gradientSearch.exec(input);
|
|
105
|
+
if (matchGradient !== null) {
|
|
106
|
+
result = {
|
|
107
|
+
original: matchGradient[0],
|
|
108
|
+
colorStopList: [],
|
|
109
|
+
line: null,
|
|
110
|
+
angle: null,
|
|
111
|
+
sideCorner: null
|
|
112
|
+
};
|
|
113
|
+
// Line (Angle or Side-Corner).
|
|
114
|
+
if (!!matchGradient[1]) {
|
|
115
|
+
result.line = matchGradient[1];
|
|
116
|
+
}
|
|
117
|
+
// Angle or undefined if side-corner.
|
|
118
|
+
if (!!matchGradient[2]) {
|
|
119
|
+
result.angle = matchGradient[2];
|
|
120
|
+
}
|
|
121
|
+
// Side-corner or undefined if angle.
|
|
122
|
+
if (!!matchGradient[3]) {
|
|
123
|
+
result.sideCorner = matchGradient[3];
|
|
124
|
+
}
|
|
125
|
+
// reset search position, because we reuse regex.
|
|
126
|
+
regExpLib.colorStopSearch.lastIndex = 0;
|
|
127
|
+
// Loop though all the color-stops.
|
|
128
|
+
matchColorStop = regExpLib.colorStopSearch.exec(matchGradient[4]);
|
|
129
|
+
while (matchColorStop !== null) {
|
|
130
|
+
stopResult = {
|
|
131
|
+
color: matchColorStop[1],
|
|
132
|
+
position: null
|
|
133
|
+
};
|
|
134
|
+
// Position (optional).
|
|
135
|
+
if (!!matchColorStop[2]) {
|
|
136
|
+
stopResult.position = matchColorStop[2];
|
|
137
|
+
}
|
|
138
|
+
result.colorStopList.push(stopResult);
|
|
139
|
+
// Continue searching from previous position.
|
|
140
|
+
matchColorStop = regExpLib.colorStopSearch.exec(matchGradient[4]);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
// Can be undefined if match not found.
|
|
144
|
+
return result;
|
|
145
|
+
};
|
|
146
|
+
exports.__parseGradient = __parseGradient;
|
|
147
|
+
/**
|
|
148
|
+
* The actual parser class.
|
|
149
|
+
*/
|
|
150
|
+
var LinearColorGradientParser = /** @class */ (function () {
|
|
151
|
+
function LinearColorGradientParser(regExpLib) {
|
|
152
|
+
this.regExpLib = regExpLib || __generateDefaultRegExpLib();
|
|
153
|
+
}
|
|
154
|
+
LinearColorGradientParser.prototype.parse = function (input, positionConverter) {
|
|
155
|
+
var result = this.parseRaw(input);
|
|
156
|
+
return LinearColorGradientParser.parseResultToColorGradient(result, positionConverter);
|
|
157
|
+
};
|
|
158
|
+
LinearColorGradientParser.prototype.parseRaw = function (input) {
|
|
159
|
+
var result;
|
|
160
|
+
var rGradientEnclosedInBrackets = /.*gradient\s*\(((?:\([^\)]*\)|[^\)\(]*)*)\)/; // Captures inside brackets - max one additional inner set.
|
|
161
|
+
var match = rGradientEnclosedInBrackets.exec(input);
|
|
162
|
+
var bracketPos = input.indexOf("(");
|
|
163
|
+
var gradientType = bracketPos === -1 ? null : input.substring(0, bracketPos).toLowerCase();
|
|
164
|
+
if (match !== null) {
|
|
165
|
+
// Get the parameters for the gradient
|
|
166
|
+
result = (0, exports.__parseGradient)(this.regExpLib, match[1]);
|
|
167
|
+
result.gradientType = gradientType;
|
|
168
|
+
if (result.original.trim() !== match[1].trim()) {
|
|
169
|
+
// Did not match the input exactly - possible parsing error.
|
|
170
|
+
result.parseWarning = true;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
// result = new Error("Failed to find gradient");
|
|
175
|
+
throw new Error("Failed to find gradient");
|
|
176
|
+
}
|
|
177
|
+
return result;
|
|
178
|
+
};
|
|
179
|
+
LinearColorGradientParser.parseResultToColorGradient = function (result, positionConverter) {
|
|
180
|
+
if (!result.gradientType || result.gradientType.toLowerCase() != "linear-gradient") {
|
|
181
|
+
throw new Error("Cannot create linear gradient from type '".concat(result.gradientType, "'."));
|
|
182
|
+
}
|
|
183
|
+
if (!result.colorStopList || result.colorStopList.length <= 1) {
|
|
184
|
+
throw new Error("Cannot create linear gradient from color stop list of length '".concat(result.colorStopList.length, "'. Too few elements."));
|
|
185
|
+
}
|
|
186
|
+
var colorStops = [];
|
|
187
|
+
var converter = positionConverter !== null && positionConverter !== void 0 ? positionConverter : exports.DefaultPositionConverter;
|
|
188
|
+
for (var i = 0; i < result.colorStopList.length; i++) {
|
|
189
|
+
var stopListItem = result.colorStopList[i];
|
|
190
|
+
console.log(stopListItem);
|
|
191
|
+
var color = Color_1.Color.parse(stopListItem.color);
|
|
192
|
+
// var position: number = LinearColorGradientParser.parsePosition(stopListItem.position);
|
|
193
|
+
var ratio;
|
|
194
|
+
if (typeof stopListItem.position === "undefined") {
|
|
195
|
+
// Try to auto-fill undefined positions by their index in the list.
|
|
196
|
+
ratio = i / (result.colorStopList.length - 1);
|
|
197
|
+
}
|
|
198
|
+
else {
|
|
199
|
+
ratio = converter(stopListItem.position);
|
|
200
|
+
}
|
|
201
|
+
colorStops.push({ color: color, ratio: ratio });
|
|
202
|
+
}
|
|
203
|
+
return new ColorGradient_1.ColorGradient(colorStops, result.line);
|
|
204
|
+
};
|
|
205
|
+
return LinearColorGradientParser;
|
|
206
|
+
}()); // END class
|
|
207
|
+
exports.LinearColorGradientParser = LinearColorGradientParser;
|
|
208
|
+
// var test_this_one = function (regExpLib, input) {
|
|
209
|
+
// var result,
|
|
210
|
+
// rGradientEnclosedInBrackets = /.*gradient\s*\(((?:\([^\)]*\)|[^\)\(]*)*)\)/, // Captures inside brackets - max one additional inner set.
|
|
211
|
+
// match = rGradientEnclosedInBrackets.exec(input);
|
|
212
|
+
// if (match !== null) {
|
|
213
|
+
// // Get the parameters for the gradient
|
|
214
|
+
// result = parseGradient(regExpLib, match[1]);
|
|
215
|
+
// if (result.original.trim() !== match[1].trim()) {
|
|
216
|
+
// // Did not match the input exactly - possible parsing error.
|
|
217
|
+
// result.parseWarning = true;
|
|
218
|
+
// }
|
|
219
|
+
// } else {
|
|
220
|
+
// result = "Failed to find gradient";
|
|
221
|
+
// }
|
|
222
|
+
// return result;
|
|
223
|
+
// };
|
|
224
|
+
//# sourceMappingURL=LinearColorGradientParser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LinearColorGradientParser.js","sourceRoot":"","sources":["../../../ts/utils/parsers/LinearColorGradientParser.ts"],"names":[],"mappings":"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"}
|
|
@@ -154,6 +154,7 @@ function createDemoDrawables(pb, imagePath, drawCallback) {
|
|
|
154
154
|
new Vertex(diameter * 1.6, diameter * 1.6)
|
|
155
155
|
)
|
|
156
156
|
];
|
|
157
|
+
// Hint: better use TriangleHelper class for this task.
|
|
157
158
|
var setEquilateral = function (triangle) {
|
|
158
159
|
const vec = new Vector(triangle.a, triangle.b);
|
|
159
160
|
const mid = vec.vertAt(0.5);
|
|
@@ -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
|
*
|