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,520 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Approach for a 'simple' color gradient picker for my PlotBoilerplate library.
|
|
4
|
+
*
|
|
5
|
+
* @author Ikaros Kappler
|
|
6
|
+
* @date 2025-06-27
|
|
7
|
+
* @version 1.0.0
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.ColorGradientPicker = void 0;
|
|
11
|
+
var NoReact = require("noreact");
|
|
12
|
+
var Color_1 = require("../../datastructures/Color");
|
|
13
|
+
var ColorGradientPicker = /** @class */ (function () {
|
|
14
|
+
/**
|
|
15
|
+
* The constructor: creates a new color gradient picker in the given container.
|
|
16
|
+
* If no container or ID is given then a new unbound `container` will be created (DIV).
|
|
17
|
+
*
|
|
18
|
+
* Pass a container ID or nothing – in the latter case the constructor will create
|
|
19
|
+
* a new DIV element.
|
|
20
|
+
*
|
|
21
|
+
* @param {string?} containerID - (optional) If you want to use an existing container (should be a DIV).
|
|
22
|
+
*/
|
|
23
|
+
function ColorGradientPicker(containerID) {
|
|
24
|
+
var _this = this;
|
|
25
|
+
this._sliderElementRefs = [];
|
|
26
|
+
this.sliderMin = 0;
|
|
27
|
+
this.sliderMax = 100;
|
|
28
|
+
this.indicatorWidth_num = 1.0;
|
|
29
|
+
this.indicatorWidth = "1em";
|
|
30
|
+
this.indicatorWidth_half = "0.5em";
|
|
31
|
+
this.indicatorHeight = "1em";
|
|
32
|
+
this.COLORSET = ["#ff0000", "#ff8800", "#ffff00", "#00ff00", "#0000ff", "#8800ff"];
|
|
33
|
+
/**
|
|
34
|
+
* Creates a callback function for range slider.
|
|
35
|
+
*
|
|
36
|
+
* @returns
|
|
37
|
+
*/
|
|
38
|
+
this.__createSliderChangeHandler = function () {
|
|
39
|
+
var _self = _this;
|
|
40
|
+
return function (e) {
|
|
41
|
+
var targetSlider = e.target;
|
|
42
|
+
console.log("Clicked", targetSlider ? targetSlider.getAttribute("id") : null);
|
|
43
|
+
if (!targetSlider) {
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
var currentSliderValue = Number.parseFloat(targetSlider.value);
|
|
47
|
+
var rangeSliderIndexRaw = targetSlider.dataset["rangeSliderIndex"];
|
|
48
|
+
console.log("rangeSliderIndexRaw", rangeSliderIndexRaw);
|
|
49
|
+
if (!rangeSliderIndexRaw) {
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
52
|
+
var rangeSliderIndex = Number.parseInt(rangeSliderIndexRaw);
|
|
53
|
+
var leftSliderValue = _this.__getSliderValue(rangeSliderIndex - 1, _self.sliderMin);
|
|
54
|
+
var rightSliderValue = _this.__getSliderValue(rangeSliderIndex + 1, _self.sliderMax);
|
|
55
|
+
if (leftSliderValue >= currentSliderValue) {
|
|
56
|
+
targetSlider.value = "".concat(leftSliderValue);
|
|
57
|
+
_self.__updateBackgroundGradient();
|
|
58
|
+
_self.__updateColorIndicator(rangeSliderIndex);
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
else if (rightSliderValue <= currentSliderValue) {
|
|
62
|
+
targetSlider.value = "".concat(rightSliderValue);
|
|
63
|
+
_self.__updateBackgroundGradient();
|
|
64
|
+
_self.__updateColorIndicator(rangeSliderIndex);
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
_self.__updateBackgroundGradient();
|
|
69
|
+
_self.__updateColorIndicator(rangeSliderIndex);
|
|
70
|
+
return true;
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
};
|
|
74
|
+
if (containerID) {
|
|
75
|
+
var cont = document.getElementById(containerID);
|
|
76
|
+
if (!cont) {
|
|
77
|
+
throw "Cannot create ColorGradientPicker. Component ID does not exist.";
|
|
78
|
+
}
|
|
79
|
+
this.container = cont;
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
this.container = document.createElement("div");
|
|
83
|
+
}
|
|
84
|
+
this.baseID = Math.floor(Math.random() * 65535);
|
|
85
|
+
this.container.append(this._render("test"));
|
|
86
|
+
this.__updateColorIndicator(0);
|
|
87
|
+
this.__updateBackgroundGradient();
|
|
88
|
+
} // END constructor
|
|
89
|
+
/**
|
|
90
|
+
* Creates a new color range input element.
|
|
91
|
+
*
|
|
92
|
+
* @private
|
|
93
|
+
* @param {number} baseID
|
|
94
|
+
* @param index
|
|
95
|
+
* @param sliderMin
|
|
96
|
+
* @param sliderMax
|
|
97
|
+
* @param initialValue
|
|
98
|
+
* @param initialColor
|
|
99
|
+
* @returns
|
|
100
|
+
*/
|
|
101
|
+
ColorGradientPicker.prototype.__createColorRangeInput = function (index, sliderMin, sliderMax, initialValue, initialColor) {
|
|
102
|
+
var sliderHandler = this.__createSliderChangeHandler();
|
|
103
|
+
var ref = NoReact.useRef();
|
|
104
|
+
// this._sliderElementRefs.push(ref);
|
|
105
|
+
this._sliderElementRefs.splice(index, 0, ref);
|
|
106
|
+
console.log("new _sliderElementRefs", this._sliderElementRefs);
|
|
107
|
+
// Update all elements to the right of the new elelemt
|
|
108
|
+
// for (var i = index + 1; i < this._sliderElementRefs.length; i++) {
|
|
109
|
+
// this._sliderElementRefs[i].current.setAttribute("data-range-slider-index", `${i}`);
|
|
110
|
+
// this._sliderElementRefs[i].current.setAttribute("id", `rage-slider-${this.baseID}-${i}`);
|
|
111
|
+
// }
|
|
112
|
+
this.__updateSliderDataSetIndices(index + 1);
|
|
113
|
+
return (NoReact.createElement("input", { id: "rage-slider-".concat(this.baseID, "-").concat(index), type: "range", min: sliderMin, max: sliderMax, value: initialValue, style: { position: "absolute", left: "0px", top: "0px", width: "100%" }, "data-range-slider-index": index, "data-color-value": initialColor, onChange: sliderHandler, onClick: sliderHandler,
|
|
114
|
+
// onMouseDown={mouseDownHandler}
|
|
115
|
+
// onMouseUp={mouseUpHandler}
|
|
116
|
+
ref: ref }));
|
|
117
|
+
};
|
|
118
|
+
ColorGradientPicker.prototype.getRangeLength = function () {
|
|
119
|
+
return this.sliderMax - this.sliderMin;
|
|
120
|
+
};
|
|
121
|
+
ColorGradientPicker.prototype.__colorChangeHandler = function () {
|
|
122
|
+
var _this = this;
|
|
123
|
+
var _self = this;
|
|
124
|
+
return function (_evt) {
|
|
125
|
+
// const colorInput : HTMLInputElement | null = evt.target;
|
|
126
|
+
console.log("__colorChangeHandler");
|
|
127
|
+
var activeSliderIndex_raw = _this.colorInputRef.current.dataset["activeSliderIndex"];
|
|
128
|
+
if (!activeSliderIndex_raw) {
|
|
129
|
+
console.warn("Cannot update color indicator; no active range slider set.");
|
|
130
|
+
return false;
|
|
131
|
+
}
|
|
132
|
+
var activeSliderIndex = Number.parseInt(activeSliderIndex_raw);
|
|
133
|
+
if (Number.isNaN(activeSliderIndex) || activeSliderIndex < 0 || activeSliderIndex >= _self._sliderElementRefs.length) {
|
|
134
|
+
console.warn("Cannot update color indicator; active index invalid or out of bounds.", activeSliderIndex);
|
|
135
|
+
return false;
|
|
136
|
+
}
|
|
137
|
+
var newColor = _self.colorInputRef.current.value;
|
|
138
|
+
var rangeSlider = _self._sliderElementRefs[activeSliderIndex].current;
|
|
139
|
+
rangeSlider.dataset["colorValue"] = newColor;
|
|
140
|
+
// rangeSlider.dataset["colorValue"] = newColor;
|
|
141
|
+
_this.colorIndicatorColorButtonRef.current.style["background-color"] = newColor;
|
|
142
|
+
_self.__updateBackgroundGradient();
|
|
143
|
+
return true;
|
|
144
|
+
};
|
|
145
|
+
};
|
|
146
|
+
/**
|
|
147
|
+
* Removed the current color slider from the DOM and highlights the left neighbour.
|
|
148
|
+
* @returns
|
|
149
|
+
*/
|
|
150
|
+
ColorGradientPicker.prototype.__handleRemoveColor = function () {
|
|
151
|
+
// const colorInput : HTMLInputElement | null = evt.target;
|
|
152
|
+
console.log("__colorChangeHandler");
|
|
153
|
+
var activeSliderIndex_raw = this.colorInputRef.current.dataset["activeSliderIndex"];
|
|
154
|
+
if (!activeSliderIndex_raw) {
|
|
155
|
+
console.warn("Cannot remove color indicator; no active range slider set.");
|
|
156
|
+
return false;
|
|
157
|
+
}
|
|
158
|
+
var activeSliderIndex = Number.parseInt(activeSliderIndex_raw);
|
|
159
|
+
if (Number.isNaN(activeSliderIndex) || activeSliderIndex < 0 || activeSliderIndex >= this._sliderElementRefs.length) {
|
|
160
|
+
console.warn("Cannot remove color indicator; active index invalid or out of bounds.", activeSliderIndex);
|
|
161
|
+
return false;
|
|
162
|
+
}
|
|
163
|
+
if (activeSliderIndex === 0 || activeSliderIndex + 1 === this.getRangeLength()) {
|
|
164
|
+
console.warn("Cannot remove color indicator; leftmost and rightmost slider must not be removed.", activeSliderIndex);
|
|
165
|
+
return false;
|
|
166
|
+
}
|
|
167
|
+
var sliderElementRef = this._sliderElementRefs[activeSliderIndex];
|
|
168
|
+
sliderElementRef.current.remove();
|
|
169
|
+
this._sliderElementRefs.splice(activeSliderIndex, 1);
|
|
170
|
+
// Update all elements to the right of the removed elelemt
|
|
171
|
+
this.__updateSliderDataSetIndices(activeSliderIndex);
|
|
172
|
+
// Set left element active
|
|
173
|
+
this.__updateColorIndicator(activeSliderIndex - 1);
|
|
174
|
+
this.__updateBackgroundGradient();
|
|
175
|
+
return true;
|
|
176
|
+
};
|
|
177
|
+
ColorGradientPicker.prototype.__updateSliderDataSetIndices = function (startIndex) {
|
|
178
|
+
// Update all elements to the right of the new elelemt
|
|
179
|
+
for (var i = startIndex; i < this._sliderElementRefs.length; i++) {
|
|
180
|
+
this._sliderElementRefs[i].current.setAttribute("data-range-slider-index", "".concat(i));
|
|
181
|
+
this._sliderElementRefs[i].current.setAttribute("id", "rage-slider-".concat(this.baseID, "-").concat(i));
|
|
182
|
+
}
|
|
183
|
+
};
|
|
184
|
+
ColorGradientPicker.prototype.__containerClickHandler = function () {
|
|
185
|
+
var _this = this;
|
|
186
|
+
var _self = this;
|
|
187
|
+
var maxDifference = _self.getRangeLength() * 0.01;
|
|
188
|
+
return function (evt) {
|
|
189
|
+
var relativeValue = _this.__clickEventToRelativeValue(evt);
|
|
190
|
+
if (relativeValue < 0 || relativeValue > 1.0) {
|
|
191
|
+
// Clicked somewhere outside the range
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
var absoluteValue = _this.__relativeToAbsolute(relativeValue);
|
|
195
|
+
console.log("click", "relativeValue", relativeValue, "absoluteValue", absoluteValue);
|
|
196
|
+
// Check if click position (ratio) is far enough away from any slider
|
|
197
|
+
var _a = _self.__locateClosestSliderValue(absoluteValue), leftSliderIndex = _a[0], closestSliderValue = _a[1];
|
|
198
|
+
var diff = Math.abs(closestSliderValue - absoluteValue);
|
|
199
|
+
// console.log(
|
|
200
|
+
// "[__containerClickHandler] closestSliderValue",
|
|
201
|
+
// closestSliderValue,
|
|
202
|
+
// "leftSliderIndex",
|
|
203
|
+
// leftSliderIndex,
|
|
204
|
+
// "relativeValue",
|
|
205
|
+
// relativeValue,
|
|
206
|
+
// "difference",
|
|
207
|
+
// diff
|
|
208
|
+
// );
|
|
209
|
+
if (diff >= maxDifference) {
|
|
210
|
+
console.log("Add slider here");
|
|
211
|
+
_self.__addSliderAt(absoluteValue, leftSliderIndex);
|
|
212
|
+
}
|
|
213
|
+
else {
|
|
214
|
+
console.debug("Don't add slider here.");
|
|
215
|
+
}
|
|
216
|
+
};
|
|
217
|
+
};
|
|
218
|
+
ColorGradientPicker.prototype.__locateClosestSliderValue = function (absoluteValue) {
|
|
219
|
+
var allSliderValues = this.__getAllSliderValues();
|
|
220
|
+
console.log("allSliderValues", allSliderValues);
|
|
221
|
+
if (allSliderValues.length === 0) {
|
|
222
|
+
console.warn("[Warn] All slider values array is empty. This should not happen, cannot proceed.");
|
|
223
|
+
return [NaN, NaN]; // This should not happen: at least two values must be present in a gradient
|
|
224
|
+
}
|
|
225
|
+
console.log("__locateClosestSliderValue", "allSliderValues", allSliderValues);
|
|
226
|
+
// Todo: Find closest ratio value
|
|
227
|
+
// let closestSliderValue = Number.MAX_VALUE;
|
|
228
|
+
var leftSliderIndex = 0;
|
|
229
|
+
var closestSliderValue = allSliderValues[leftSliderIndex];
|
|
230
|
+
for (var i = 1; i < allSliderValues.length; i++) {
|
|
231
|
+
var curVal = allSliderValues[i];
|
|
232
|
+
if (Math.abs(curVal - absoluteValue) < Math.abs(closestSliderValue - absoluteValue)) {
|
|
233
|
+
closestSliderValue = curVal;
|
|
234
|
+
if (curVal > absoluteValue) {
|
|
235
|
+
leftSliderIndex = i - 1;
|
|
236
|
+
}
|
|
237
|
+
else {
|
|
238
|
+
leftSliderIndex = i;
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
return [leftSliderIndex, closestSliderValue];
|
|
243
|
+
};
|
|
244
|
+
ColorGradientPicker.prototype.__clickEventToRelativeValue = function (evt) {
|
|
245
|
+
var target = evt.target;
|
|
246
|
+
var rect = target.getBoundingClientRect();
|
|
247
|
+
var x = evt.clientX - rect.left; //x position within the element.
|
|
248
|
+
var width = rect.width; // target.clientWidth;
|
|
249
|
+
var relativeValue = x / width;
|
|
250
|
+
console.log("width", width, "x", x, "relativeValue", relativeValue);
|
|
251
|
+
return relativeValue;
|
|
252
|
+
};
|
|
253
|
+
ColorGradientPicker.prototype.__addSliderAt = function (absoluteValue, leftSliderIndex) {
|
|
254
|
+
console.log("__addSliderAt", "absoluteValue", absoluteValue, "leftSliderIndex", leftSliderIndex);
|
|
255
|
+
var leftSlider = this._sliderElementRefs[leftSliderIndex].current;
|
|
256
|
+
// const colorAtPosition = this.__getSliderColorAt(relativeValue);
|
|
257
|
+
var newColor = this.__getSliderColorAt(absoluteValue);
|
|
258
|
+
var newSliderIndex = leftSliderIndex + 1;
|
|
259
|
+
var _newSlider = this.__createColorRangeInput(newSliderIndex, this.sliderMin, this.sliderMax, absoluteValue, newColor.cssRGB() // initialColor: string
|
|
260
|
+
);
|
|
261
|
+
var sliderRef = this._sliderElementRefs[newSliderIndex];
|
|
262
|
+
leftSlider.after(sliderRef.current);
|
|
263
|
+
// No visible change, but let's reflect this in the output gradient anyway
|
|
264
|
+
this.__updateBackgroundGradient();
|
|
265
|
+
// Highlight the newly added range slider
|
|
266
|
+
this.__updateColorIndicator(newSliderIndex);
|
|
267
|
+
};
|
|
268
|
+
/**
|
|
269
|
+
* Get the slider color at the given absolute value. That value must be inside the [MIN_VALUE, MAX_VALUE] interval.
|
|
270
|
+
* @param absoluteValue
|
|
271
|
+
* @returns
|
|
272
|
+
*/
|
|
273
|
+
ColorGradientPicker.prototype.__getSliderColorAt = function (absoluteValue) {
|
|
274
|
+
console.log("__getSliderColorAt", "absoluteValue", absoluteValue);
|
|
275
|
+
// Locate interval
|
|
276
|
+
var leftIndex = this.__locateIntervalAt(absoluteValue);
|
|
277
|
+
var leftSliderValue = this.__getSliderValue(leftIndex, NaN);
|
|
278
|
+
var rightSliderValue = this.__getSliderValue(leftIndex + 1, NaN);
|
|
279
|
+
if (Number.isNaN(leftSliderValue) || Number.isNaN(rightSliderValue)) {
|
|
280
|
+
console.warn("[Warn] Failed to determine left/right slider values at indices ".concat(leftIndex, " or ").concat(rightSliderValue, ". Cannot proceed for absolute value ").concat(absoluteValue, "."));
|
|
281
|
+
return null;
|
|
282
|
+
}
|
|
283
|
+
var leftColorString = this.__getSliderColor(leftIndex, null);
|
|
284
|
+
var rightColorString = this.__getSliderColor(leftIndex + 1, null);
|
|
285
|
+
if (!leftColorString || !rightColorString) {
|
|
286
|
+
console.warn("[Warn] Failed to determine left/right color string values at indices ".concat(leftIndex, " or ").concat(rightSliderValue, ". Cannot proceed for absolute value ").concat(absoluteValue, "."));
|
|
287
|
+
return null;
|
|
288
|
+
}
|
|
289
|
+
var positionInsideInterval = (absoluteValue - leftSliderValue) / (rightSliderValue - leftSliderValue);
|
|
290
|
+
console.log("leftColorString", leftColorString, "rightColorString", rightColorString);
|
|
291
|
+
var leftColorObject = Color_1.Color.parse(leftColorString);
|
|
292
|
+
var rightColorObject = Color_1.Color.parse(rightColorString);
|
|
293
|
+
var newColor = leftColorObject.interpolate(rightColorObject, positionInsideInterval);
|
|
294
|
+
// console.log(
|
|
295
|
+
// "absoluteValue",
|
|
296
|
+
// absoluteValue,
|
|
297
|
+
// "leftIndex",
|
|
298
|
+
// leftIndex,
|
|
299
|
+
// "leftSliderValue",
|
|
300
|
+
// leftSliderValue,
|
|
301
|
+
// "leftColorObject",
|
|
302
|
+
// leftColorObject.cssRGB(),
|
|
303
|
+
// "rightSliderValue",
|
|
304
|
+
// rightSliderValue,
|
|
305
|
+
// "rightColorObject",
|
|
306
|
+
// rightColorObject.cssRGB(),
|
|
307
|
+
// "positionInsideInterval",
|
|
308
|
+
// positionInsideInterval,
|
|
309
|
+
// "newColor",
|
|
310
|
+
// newColor.cssRGB()
|
|
311
|
+
// );
|
|
312
|
+
return newColor;
|
|
313
|
+
};
|
|
314
|
+
/**
|
|
315
|
+
* Locate the slider interval that contains the given (absolute) slider value. The given value must be
|
|
316
|
+
* somewhere between MIN_VALUE and MAX_VALUE (usually between 0 and 100 in the default configuraion.).
|
|
317
|
+
*
|
|
318
|
+
* @param {number} absoluteValue - The absolute value to search for.
|
|
319
|
+
* @returns {number} The left slider inder the containing interval is starting with – or -1 if out of bounds.
|
|
320
|
+
*/
|
|
321
|
+
ColorGradientPicker.prototype.__locateIntervalAt = function (absoluteValue) {
|
|
322
|
+
for (var i = 0; i + 1 < this._sliderElementRefs.length; i++) {
|
|
323
|
+
if (this.__getSliderValue(i, this.sliderMin) <= absoluteValue &&
|
|
324
|
+
absoluteValue < this.__getSliderValue(i + 1, this.sliderMax)) {
|
|
325
|
+
return i;
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
return -1;
|
|
329
|
+
};
|
|
330
|
+
/**
|
|
331
|
+
* Converts a relative value in [0..1] to [min..max].
|
|
332
|
+
* @param relativeValue
|
|
333
|
+
*/
|
|
334
|
+
ColorGradientPicker.prototype.__relativeToAbsolute = function (relativeValue) {
|
|
335
|
+
return this.sliderMin + (this.sliderMax - this.sliderMin) * relativeValue;
|
|
336
|
+
};
|
|
337
|
+
/**
|
|
338
|
+
* Get the value of the n-th rangel slider.
|
|
339
|
+
*
|
|
340
|
+
* @param {number} sliderIndex
|
|
341
|
+
* @param {number} fallback
|
|
342
|
+
* @returns
|
|
343
|
+
*/
|
|
344
|
+
ColorGradientPicker.prototype.__getSliderValue = function (sliderIndex, fallback) {
|
|
345
|
+
if (sliderIndex < 0 || sliderIndex >= this._sliderElementRefs.length) {
|
|
346
|
+
return fallback;
|
|
347
|
+
}
|
|
348
|
+
return Number.parseFloat(this._sliderElementRefs[sliderIndex].current.value);
|
|
349
|
+
};
|
|
350
|
+
ColorGradientPicker.prototype.__getAllSliderValues = function () {
|
|
351
|
+
var _this = this;
|
|
352
|
+
// return this._sliderElementRefs.map((ref, index: number) => this.__getSliderPercentage(index));
|
|
353
|
+
return this._sliderElementRefs.map(function (ref, index) { return _this.__getSliderValue(index, NaN); });
|
|
354
|
+
};
|
|
355
|
+
/**
|
|
356
|
+
* Updates the container's background to display the configured color gradient.
|
|
357
|
+
*
|
|
358
|
+
* @private
|
|
359
|
+
*/
|
|
360
|
+
ColorGradientPicker.prototype.__updateBackgroundGradient = function () {
|
|
361
|
+
var colorGradient = this.getColorGradient();
|
|
362
|
+
this.containerRef.current.style["background"] = colorGradient;
|
|
363
|
+
};
|
|
364
|
+
ColorGradientPicker.prototype.__updateColorIndicator = function (rangeSliderIndex) {
|
|
365
|
+
var colorValue = this.__getSliderColor(rangeSliderIndex, "grey");
|
|
366
|
+
var ratio = this.__getSliderPercentage(rangeSliderIndex);
|
|
367
|
+
// console.log("__updateColorIndicator", colorValue, ratio);
|
|
368
|
+
// this.colorIndicatorButtonRef.current.style["left"] = `calc( ${ratio * 100}% + ${
|
|
369
|
+
// (1.0 - ratio) * this.indicatorWidth_num * 0.5
|
|
370
|
+
// }em - ${ratio * this.indicatorWidth_num * 0.5}em)`;
|
|
371
|
+
this.colorInputContainerRef.current.style["left"] = "calc( ".concat(ratio * 100, "% + ").concat((1.0 - ratio) * this.indicatorWidth_num * 0.5, "em - ").concat(ratio * this.indicatorWidth_num * 0.5, "em)");
|
|
372
|
+
this.colorIndicatorColorButtonRef.current.style["background-color"] = colorValue;
|
|
373
|
+
this.colorInputRef.current.value = colorValue;
|
|
374
|
+
this.colorInputRef.current.dataset["activeSliderIndex"] = "".concat(rangeSliderIndex);
|
|
375
|
+
if (rangeSliderIndex <= 0 || rangeSliderIndex + 1 >= this.getRangeLength()) {
|
|
376
|
+
this.colorIndicatorRemoveButtonRef.current.style["visibility"] = "hidden";
|
|
377
|
+
}
|
|
378
|
+
else {
|
|
379
|
+
this.colorIndicatorRemoveButtonRef.current.style["visibility"] = "visible";
|
|
380
|
+
}
|
|
381
|
+
};
|
|
382
|
+
/**
|
|
383
|
+
* Get a color gradient CSS value string from the current editor settings.
|
|
384
|
+
*
|
|
385
|
+
* @instance
|
|
386
|
+
* @memberof ColorGradientPicker
|
|
387
|
+
* @returns {string}
|
|
388
|
+
*/
|
|
389
|
+
ColorGradientPicker.prototype.getColorGradient = function () {
|
|
390
|
+
// Example:
|
|
391
|
+
// linear-gradient(90deg,rgba(42, 123, 155, 1) 0%, rgba(87, 199, 133, 1) 38%, rgba(161, 210, 108, 1) 68%, rgba(237, 221, 83, 1) 100%)
|
|
392
|
+
var buffer = ["linear-gradient( 90deg, "];
|
|
393
|
+
for (var i = 0; i < this._sliderElementRefs.length; i++) {
|
|
394
|
+
if (i > 0) {
|
|
395
|
+
buffer.push(",");
|
|
396
|
+
}
|
|
397
|
+
var colorValue = this.__getSliderColor(i, "black");
|
|
398
|
+
buffer.push(colorValue);
|
|
399
|
+
// const sliderValue: number = this.__getSliderValue(i, 0.0);
|
|
400
|
+
// const percentage: number = (this.sliderMin + sliderValue) / (this.sliderMax - this.sliderMin);
|
|
401
|
+
var percentage = this.__getSliderPercentage(i);
|
|
402
|
+
buffer.push("".concat(percentage * 100, "%"));
|
|
403
|
+
}
|
|
404
|
+
buffer.push(")");
|
|
405
|
+
return buffer.join(" ");
|
|
406
|
+
};
|
|
407
|
+
/**
|
|
408
|
+
* Get the configured color value of the n-th rangel slider.
|
|
409
|
+
*
|
|
410
|
+
* @param {number} sliderIndex
|
|
411
|
+
* @param {string} fallback
|
|
412
|
+
* @returns
|
|
413
|
+
*/
|
|
414
|
+
ColorGradientPicker.prototype.__getSliderColor = function (sliderIndex, fallback) {
|
|
415
|
+
if (sliderIndex < 0 || sliderIndex >= this._sliderElementRefs.length) {
|
|
416
|
+
return fallback;
|
|
417
|
+
}
|
|
418
|
+
var colorValue = this._sliderElementRefs[sliderIndex].current.dataset["colorValue"];
|
|
419
|
+
return colorValue ? colorValue : fallback;
|
|
420
|
+
};
|
|
421
|
+
/**
|
|
422
|
+
* Get the slider's value in a mapped range of 0.0 ... 1.0.
|
|
423
|
+
*
|
|
424
|
+
* @param sliderIndex
|
|
425
|
+
* @returns
|
|
426
|
+
*/
|
|
427
|
+
ColorGradientPicker.prototype.__getSliderPercentage = function (sliderIndex) {
|
|
428
|
+
var sliderValue = this.__getSliderValue(sliderIndex, 0.0);
|
|
429
|
+
var percentage = (this.sliderMin + sliderValue) / (this.sliderMax - this.sliderMin);
|
|
430
|
+
return percentage;
|
|
431
|
+
};
|
|
432
|
+
/**
|
|
433
|
+
* Init the container contents.
|
|
434
|
+
*
|
|
435
|
+
* @private
|
|
436
|
+
*/
|
|
437
|
+
ColorGradientPicker.prototype._render = function (name) {
|
|
438
|
+
var _this = this;
|
|
439
|
+
var _self = this;
|
|
440
|
+
console.log("Rendering ...", NoReact);
|
|
441
|
+
this.colorIndicatorColorButtonRef = NoReact.useRef();
|
|
442
|
+
this.colorIndicatorRemoveButtonRef = NoReact.useRef();
|
|
443
|
+
this.colorInputRef = NoReact.useRef();
|
|
444
|
+
this.colorInputContainerRef = NoReact.useRef();
|
|
445
|
+
this.containerRef = NoReact.useRef();
|
|
446
|
+
var handleIndicatorButtonClick = function (evt) {
|
|
447
|
+
evt.preventDefault(); // Prevent other inputs to react to this event.
|
|
448
|
+
evt.stopPropagation();
|
|
449
|
+
// But fake a click on the input element
|
|
450
|
+
_self.colorInputRef.current.click();
|
|
451
|
+
};
|
|
452
|
+
var handleRemoveColorButtonClick = function (evt) {
|
|
453
|
+
evt.preventDefault(); // Prevent other inputs to react to this event.
|
|
454
|
+
evt.stopPropagation();
|
|
455
|
+
console.log("Todo: remove color");
|
|
456
|
+
// TODO
|
|
457
|
+
_self.__handleRemoveColor();
|
|
458
|
+
};
|
|
459
|
+
var currentColors = [0, 1, 2, 3, 4, 5];
|
|
460
|
+
var stepCount = currentColors.length;
|
|
461
|
+
var elementId = "color-gradient-container-".concat(this.baseID);
|
|
462
|
+
return (NoReact.createElement("div", { id: elementId, style: {
|
|
463
|
+
display: "flex",
|
|
464
|
+
flexDirection: "column",
|
|
465
|
+
width: "100%",
|
|
466
|
+
height: "32px",
|
|
467
|
+
position: "relative"
|
|
468
|
+
}, ref: this.containerRef, onClick: this.__containerClickHandler() },
|
|
469
|
+
createCustomStylesElement(elementId),
|
|
470
|
+
currentColors.map(function (index) {
|
|
471
|
+
var initialColor = _this.COLORSET[index % _this.COLORSET.length];
|
|
472
|
+
var initialValue = (100 / (stepCount - 1)) * index;
|
|
473
|
+
return _this.__createColorRangeInput(index, _this.sliderMin, _this.sliderMax, initialValue, initialColor);
|
|
474
|
+
}),
|
|
475
|
+
NoReact.createElement("div", { style: { width: "100%" } },
|
|
476
|
+
NoReact.createElement("input", { id: "color-indicator-input-".concat(this.baseID), type: "color", style: { visibility: "hidden" }, "data-active-slider-index": "", ref: this.colorInputRef, onInput: this.__colorChangeHandler() }),
|
|
477
|
+
NoReact.createElement("div", { ref: this.colorInputContainerRef, style: {
|
|
478
|
+
position: "absolute",
|
|
479
|
+
bottom: "0px",
|
|
480
|
+
left: "0%",
|
|
481
|
+
display: "flex",
|
|
482
|
+
flexDirection: "column",
|
|
483
|
+
transform: "translate(0%, 100%)"
|
|
484
|
+
} },
|
|
485
|
+
NoReact.createElement("button", { id: "color-indicator-button-".concat(this.baseID), style: {
|
|
486
|
+
backgroundColor: "grey",
|
|
487
|
+
borderRadius: "3px",
|
|
488
|
+
border: "1px solid grey",
|
|
489
|
+
width: this.indicatorWidth, // "1em",
|
|
490
|
+
height: this.indicatorHeight, // "1em",
|
|
491
|
+
transform: "translate(-50%, 0%)"
|
|
492
|
+
}, onClick: handleIndicatorButtonClick, ref: this.colorIndicatorColorButtonRef }),
|
|
493
|
+
NoReact.createElement("button", { id: "color-remove-button-".concat(this.baseID), className: "color-remove-button", style: {
|
|
494
|
+
backgroundColor: "grey",
|
|
495
|
+
borderRadius: "3px",
|
|
496
|
+
border: "1px solid grey",
|
|
497
|
+
width: this.indicatorWidth, // "1em",
|
|
498
|
+
height: this.indicatorHeight, // "1em",
|
|
499
|
+
transform: "translate(-50%, 50%)",
|
|
500
|
+
lineHeight: "0.5em",
|
|
501
|
+
padding: 0
|
|
502
|
+
}, onClick: handleRemoveColorButtonClick, ref: this.colorIndicatorRemoveButtonRef },
|
|
503
|
+
NoReact.createElement("span", { style: { fontSize: "0.5em" } }, "\uD83D\uDDD1"))))));
|
|
504
|
+
};
|
|
505
|
+
return ColorGradientPicker;
|
|
506
|
+
}());
|
|
507
|
+
exports.ColorGradientPicker = ColorGradientPicker;
|
|
508
|
+
/**
|
|
509
|
+
* Adds custom styles (global STYLE tag).
|
|
510
|
+
*
|
|
511
|
+
* @private
|
|
512
|
+
*/
|
|
513
|
+
var createCustomStylesElement = function (elementId) {
|
|
514
|
+
var thumbWidth = "0.5em";
|
|
515
|
+
var thumbHeight = "1.333em";
|
|
516
|
+
// Thanks to Ana Tudor
|
|
517
|
+
// https://css-tricks.com/multi-thumb-sliders-particular-two-thumb-case/
|
|
518
|
+
return (NoReact.createElement("style", null, "\n #".concat(elementId, " input[type='range'] {\n\n -webkit-appearance: none;\n\n grid-column: 1;\n grid-row: 2;\n \n /* same as before */\n background: none; /* get rid of white Chrome background */\n color: #000;\n font: inherit; /* fix too small font-size in both Chrome & Firefox */\n margin: 0;\n pointer-events: none; /* let clicks pass through */\n }\n\n #").concat(elementId, " input[type='range']::-webkit-slider-runnable-track {\n -webkit-appearance: none;\n\n background: none; /* get rid of Firefox track background */\n height: 100%;\n width: 100%;\n\n pointer-events: none;\n }\n\n #").concat(elementId, " input[type='range']::-webkit-slider-thumb {\n -webkit-appearance: none;\n background: currentcolor;\n border: none; /* get rid of Firefox thumb border */\n border-radius: 6px; /* get rid of Firefox corner rounding */\n pointer-events: auto; /* catch clicks */\n width: ").concat(thumbWidth, "; \n height: ").concat(thumbHeight, ";\n }\n\n #").concat(elementId, " input[type='range']:focus::-webkit-slider-thumb {\n border: 2px solid white;\n }\n\n #").concat(elementId, " input[type='range']::-moz-range-track {\n -webkit-appearance: none;\n background: none; /* get rid of Firefox track background */\n height: 100%;\n width: 100%;\n pointer-events: none;\n }\n\n #").concat(elementId, " input[type='range']::-moz-range-thumb {\n /* -webkit-appearance: none; */\n background: currentcolor;\n border: none; /* get rid of Firefox thumb border */\n border-radius: 6px; /* get rid of Firefox corner rounding */\n pointer-events: auto; /* catch clicks */\n width: ").concat(thumbWidth, "; \n height: ").concat(thumbHeight, ";\n }\n\n #").concat(elementId, " input[type='range']:focus::-moz-range-thumb {\n border: 2px solid white;\n }\n\n #").concat(elementId, " input[type='range'] {\n /* same as before */\n z-index: 1;\n }\n \n #").concat(elementId, " input[type='range']:focus {\n z-index: 2;\n /* outline: dotted 1px orange; */\n color: darkorange;\n }\n ")));
|
|
519
|
+
};
|
|
520
|
+
//# sourceMappingURL=ColorGradientPickerJSX.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ColorGradientPickerJSX.js","sourceRoot":"","sources":["../../../../ts/utils/dom/components/ColorGradientPickerJSX.tsx"],"names":[],"mappings":"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"}
|