plotboilerplate 1.24.0 → 1.26.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.
Files changed (222) hide show
  1. package/README.md +14 -1
  2. package/dist/index.esm.js +433 -162
  3. package/dist/index.esm.js.map +1 -1
  4. package/dist/index.esm.min.js +1 -1
  5. package/dist/index.esm.min.js.map +1 -1
  6. package/dist/plotboilerplate.browser.min.js +1 -1
  7. package/dist/plotboilerplate.browser.min.js.map +1 -1
  8. package/dist/plotboilerplate.js +12312 -12041
  9. package/dist/plotboilerplate.min.js +1 -1
  10. package/package.json +9 -5
  11. package/src/cjs/Bounds.d.ts +79 -25
  12. package/src/cjs/Bounds.js +102 -29
  13. package/src/cjs/Bounds.js.map +1 -1
  14. package/src/cjs/CircleSector.d.ts +3 -0
  15. package/src/cjs/CircleSector.js +28 -1
  16. package/src/cjs/CircleSector.js.map +1 -1
  17. package/src/cjs/PlotBoilerplate.d.ts +37 -6
  18. package/src/cjs/PlotBoilerplate.js +222 -116
  19. package/src/cjs/PlotBoilerplate.js.map +1 -1
  20. package/src/cjs/Polygon.d.ts +26 -7
  21. package/src/cjs/Polygon.js +56 -10
  22. package/src/cjs/Polygon.js.map +1 -1
  23. package/src/cjs/Triangle.js +2 -2
  24. package/src/cjs/Triangle.js.map +1 -1
  25. package/src/cjs/Vertex.d.ts +15 -3
  26. package/src/cjs/Vertex.js +18 -1
  27. package/src/cjs/Vertex.js.map +1 -1
  28. package/src/cjs/drawutilssvg.d.ts +2 -1
  29. package/src/cjs/drawutilssvg.js +9 -3
  30. package/src/cjs/drawutilssvg.js.map +1 -1
  31. package/src/cjs/interfaces/core.d.ts +28 -0
  32. package/src/cjs/interfaces/core.js +2 -0
  33. package/src/cjs/interfaces/core.js.map +1 -1
  34. package/src/cjs/utils/LissajousFigure.d.ts +34 -0
  35. package/src/cjs/utils/LissajousFigure.js +100 -0
  36. package/src/cjs/utils/LissajousFigure.js.map +1 -0
  37. package/src/cjs/utils/PerlinNoise.d.ts +19 -0
  38. package/src/cjs/utils/PerlinNoise.js +352 -0
  39. package/src/cjs/utils/PerlinNoise.js.map +1 -0
  40. package/src/cjs/utils/SVGPathUtils.d.ts +22 -0
  41. package/src/cjs/utils/SVGPathUtils.js +45 -0
  42. package/src/cjs/utils/SVGPathUtils.js.map +1 -0
  43. package/src/cjs/utils/algorithms/pixelCornersToRoundPaths.d.ts +23 -0
  44. package/src/cjs/utils/algorithms/pixelCornersToRoundPaths.js +270 -0
  45. package/src/cjs/utils/algorithms/pixelCornersToRoundPaths.js.map +1 -0
  46. package/src/cjs/utils/datastructures/Color.d.ts +147 -1
  47. package/src/cjs/utils/datastructures/Color.js +385 -41
  48. package/src/cjs/utils/datastructures/Color.js.map +1 -1
  49. package/src/cjs/utils/datastructures/ColorGradient.d.ts +79 -0
  50. package/src/cjs/utils/datastructures/ColorGradient.js +171 -0
  51. package/src/cjs/utils/datastructures/ColorGradient.js.map +1 -0
  52. package/src/cjs/utils/datastructures/DataGrid2d.d.ts +6 -0
  53. package/src/cjs/utils/datastructures/DataGrid2dArrayMatrix.d.ts +88 -0
  54. package/src/cjs/utils/datastructures/DataGrid2dArrayMatrix.js +155 -0
  55. package/src/cjs/utils/datastructures/DataGrid2dArrayMatrix.js.map +1 -0
  56. package/src/cjs/utils/datastructures/DataGrid2dListAdapter.d.ts +1 -7
  57. package/src/cjs/utils/datastructures/DataGrid2dListAdapter.js +3 -3
  58. package/src/cjs/utils/datastructures/DataGrid2dListAdapter.js.map +1 -1
  59. package/src/cjs/utils/datastructures/GeometryMesh.d.ts +49 -0
  60. package/src/cjs/utils/datastructures/GeometryMesh.js +58 -0
  61. package/src/cjs/utils/datastructures/GeometryMesh.js.map +1 -0
  62. package/src/cjs/utils/detectDarkMode.js +16 -7
  63. package/src/cjs/utils/detectDarkMode.js.map +1 -1
  64. package/src/cjs/utils/dom/components/ColorGradientPicker.d.ts +246 -0
  65. package/src/cjs/utils/dom/components/ColorGradientPicker.js +667 -0
  66. package/src/cjs/utils/dom/components/ColorGradientPicker.js.map +1 -0
  67. package/src/cjs/utils/dom/components/ColorGradientPickerJSX.d.ts +129 -0
  68. package/src/cjs/utils/dom/components/ColorGradientPickerJSX.js +520 -0
  69. package/src/cjs/utils/dom/components/ColorGradientPickerJSX.js.map +1 -0
  70. package/src/cjs/utils/dom/components/ColorGradientSelector.d.ts +118 -0
  71. package/src/cjs/utils/dom/components/ColorGradientSelector.js +327 -0
  72. package/src/cjs/utils/dom/components/ColorGradientSelector.js.map +1 -0
  73. package/src/cjs/utils/dom/components/Test.d.ts +7 -0
  74. package/src/cjs/utils/dom/components/Test.js +30 -0
  75. package/src/cjs/utils/dom/components/Test.js.map +1 -0
  76. package/src/cjs/utils/dom/guiSizeToggler.js +1 -1
  77. package/src/cjs/utils/dom/guiSizeToggler.js.map +1 -1
  78. package/src/cjs/utils/helpers/BezierPathInteractionHelper.d.ts +9 -3
  79. package/src/cjs/utils/helpers/BezierPathInteractionHelper.js +20 -13
  80. package/src/cjs/utils/helpers/BezierPathInteractionHelper.js.map +1 -1
  81. package/src/cjs/utils/helpers/CircleHelper.d.ts +10 -1
  82. package/src/cjs/utils/helpers/CircleHelper.js +13 -2
  83. package/src/cjs/utils/helpers/CircleHelper.js.map +1 -1
  84. package/src/cjs/utils/helpers/CircleSectorHelper.d.ts +2 -2
  85. package/src/cjs/utils/helpers/CircleSectorHelper.js +1 -0
  86. package/src/cjs/utils/helpers/CircleSectorHelper.js.map +1 -1
  87. package/src/cjs/utils/helpers/TriangleHelper.d.ts +57 -0
  88. package/src/cjs/utils/helpers/TriangleHelper.js +83 -0
  89. package/src/cjs/utils/helpers/TriangleHelper.js.map +1 -0
  90. package/src/cjs/utils/helpers/VEllipseHelper.d.ts +6 -4
  91. package/src/cjs/utils/helpers/VEllipseHelper.js +4 -2
  92. package/src/cjs/utils/helpers/VEllipseHelper.js.map +1 -1
  93. package/src/cjs/utils/helpers/VEllipseSectorHelper.d.ts +3 -2
  94. package/src/cjs/utils/helpers/VEllipseSectorHelper.js +1 -0
  95. package/src/cjs/utils/helpers/VEllipseSectorHelper.js.map +1 -1
  96. package/src/cjs/utils/parsers/LinearColorGradientParser.d.ts +78 -0
  97. package/src/cjs/utils/parsers/LinearColorGradientParser.js +224 -0
  98. package/src/cjs/utils/parsers/LinearColorGradientParser.js.map +1 -0
  99. package/src/cjs/utils/parsers/svg/types.d.ts +8 -8
  100. package/src/createDemoDrawables.js +1 -0
  101. package/src/esm/Bounds.d.ts +79 -25
  102. package/src/esm/Bounds.js +102 -29
  103. package/src/esm/Bounds.js.map +1 -1
  104. package/src/esm/CircleSector.d.ts +3 -0
  105. package/src/esm/CircleSector.js +28 -1
  106. package/src/esm/CircleSector.js.map +1 -1
  107. package/src/esm/PlotBoilerplate.d.ts +37 -6
  108. package/src/esm/PlotBoilerplate.js +222 -116
  109. package/src/esm/PlotBoilerplate.js.map +1 -1
  110. package/src/esm/Polygon.d.ts +26 -7
  111. package/src/esm/Polygon.js +53 -10
  112. package/src/esm/Polygon.js.map +1 -1
  113. package/src/esm/Triangle.js +2 -2
  114. package/src/esm/Triangle.js.map +1 -1
  115. package/src/esm/Vertex.d.ts +15 -3
  116. package/src/esm/Vertex.js +18 -1
  117. package/src/esm/Vertex.js.map +1 -1
  118. package/src/esm/drawutilssvg.d.ts +2 -1
  119. package/src/esm/drawutilssvg.js +9 -3
  120. package/src/esm/drawutilssvg.js.map +1 -1
  121. package/src/esm/interfaces/core.d.ts +28 -0
  122. package/src/esm/interfaces/core.js +2 -0
  123. package/src/esm/interfaces/core.js.map +1 -1
  124. package/src/esm/utils/LissajousFigure.d.ts +34 -0
  125. package/src/esm/utils/LissajousFigure.js +95 -0
  126. package/src/esm/utils/LissajousFigure.js.map +1 -0
  127. package/src/esm/utils/PerlinNoise.d.ts +19 -0
  128. package/src/esm/utils/PerlinNoise.js +346 -0
  129. package/src/esm/utils/PerlinNoise.js.map +1 -0
  130. package/src/esm/utils/SVGPathUtils.d.ts +22 -0
  131. package/src/esm/utils/SVGPathUtils.js +42 -0
  132. package/src/esm/utils/SVGPathUtils.js.map +1 -0
  133. package/src/esm/utils/algorithms/pixelCornersToRoundPaths.d.ts +23 -0
  134. package/src/esm/utils/algorithms/pixelCornersToRoundPaths.js +266 -0
  135. package/src/esm/utils/algorithms/pixelCornersToRoundPaths.js.map +1 -0
  136. package/src/esm/utils/datastructures/Color.d.ts +147 -1
  137. package/src/esm/utils/datastructures/Color.js +386 -42
  138. package/src/esm/utils/datastructures/Color.js.map +1 -1
  139. package/src/esm/utils/datastructures/ColorGradient.d.ts +79 -0
  140. package/src/esm/utils/datastructures/ColorGradient.js +166 -0
  141. package/src/esm/utils/datastructures/ColorGradient.js.map +1 -0
  142. package/src/esm/utils/datastructures/DataGrid2d.d.ts +6 -0
  143. package/src/esm/utils/datastructures/DataGrid2dArrayMatrix.d.ts +88 -0
  144. package/src/esm/utils/datastructures/DataGrid2dArrayMatrix.js +150 -0
  145. package/src/esm/utils/datastructures/DataGrid2dArrayMatrix.js.map +1 -0
  146. package/src/esm/utils/datastructures/DataGrid2dListAdapter.d.ts +1 -7
  147. package/src/esm/utils/datastructures/DataGrid2dListAdapter.js +3 -3
  148. package/src/esm/utils/datastructures/DataGrid2dListAdapter.js.map +1 -1
  149. package/src/esm/utils/datastructures/GeometryMesh.d.ts +49 -0
  150. package/src/esm/utils/datastructures/GeometryMesh.js +53 -0
  151. package/src/esm/utils/datastructures/GeometryMesh.js.map +1 -0
  152. package/src/esm/utils/detectDarkMode.js +16 -7
  153. package/src/esm/utils/detectDarkMode.js.map +1 -1
  154. package/src/esm/utils/dom/components/ColorGradientPicker.d.ts +246 -0
  155. package/src/esm/utils/dom/components/ColorGradientPicker.js +743 -0
  156. package/src/esm/utils/dom/components/ColorGradientPicker.js.map +1 -0
  157. package/src/esm/utils/dom/components/ColorGradientPickerJSX.d.ts +129 -0
  158. package/src/esm/utils/dom/components/ColorGradientPickerJSX.js +582 -0
  159. package/src/esm/utils/dom/components/ColorGradientPickerJSX.js.map +1 -0
  160. package/src/esm/utils/dom/components/ColorGradientSelector.d.ts +118 -0
  161. package/src/esm/utils/dom/components/ColorGradientSelector.js +339 -0
  162. package/src/esm/utils/dom/components/ColorGradientSelector.js.map +1 -0
  163. package/src/esm/utils/dom/components/Test.d.ts +7 -0
  164. package/src/esm/utils/dom/components/Test.js +26 -0
  165. package/src/esm/utils/dom/components/Test.js.map +1 -0
  166. package/src/esm/utils/dom/guiSizeToggler.js +1 -1
  167. package/src/esm/utils/dom/guiSizeToggler.js.map +1 -1
  168. package/src/esm/utils/helpers/BezierPathInteractionHelper.d.ts +9 -3
  169. package/src/esm/utils/helpers/BezierPathInteractionHelper.js +20 -13
  170. package/src/esm/utils/helpers/BezierPathInteractionHelper.js.map +1 -1
  171. package/src/esm/utils/helpers/CircleHelper.d.ts +10 -1
  172. package/src/esm/utils/helpers/CircleHelper.js +13 -2
  173. package/src/esm/utils/helpers/CircleHelper.js.map +1 -1
  174. package/src/esm/utils/helpers/CircleSectorHelper.d.ts +2 -2
  175. package/src/esm/utils/helpers/CircleSectorHelper.js +1 -0
  176. package/src/esm/utils/helpers/CircleSectorHelper.js.map +1 -1
  177. package/src/esm/utils/helpers/TriangleHelper.d.ts +57 -0
  178. package/src/esm/utils/helpers/TriangleHelper.js +78 -0
  179. package/src/esm/utils/helpers/TriangleHelper.js.map +1 -0
  180. package/src/esm/utils/helpers/VEllipseHelper.d.ts +6 -4
  181. package/src/esm/utils/helpers/VEllipseHelper.js +4 -2
  182. package/src/esm/utils/helpers/VEllipseHelper.js.map +1 -1
  183. package/src/esm/utils/helpers/VEllipseSectorHelper.d.ts +3 -2
  184. package/src/esm/utils/helpers/VEllipseSectorHelper.js +1 -0
  185. package/src/esm/utils/helpers/VEllipseSectorHelper.js.map +1 -1
  186. package/src/esm/utils/parsers/LinearColorGradientParser.d.ts +78 -0
  187. package/src/esm/utils/parsers/LinearColorGradientParser.js +217 -0
  188. package/src/esm/utils/parsers/LinearColorGradientParser.js.map +1 -0
  189. package/src/esm/utils/parsers/svg/types.d.ts +8 -8
  190. package/src/external.d.ts +9 -0
  191. package/src/ts/Bounds.ts +107 -22
  192. package/src/ts/CircleSector.ts +39 -6
  193. package/src/ts/PlotBoilerplate.ts +233 -105
  194. package/src/ts/Polygon.ts +68 -14
  195. package/src/ts/Triangle.ts +2 -2
  196. package/src/ts/Vertex.ts +21 -3
  197. package/src/ts/drawutilssvg.ts +8 -3
  198. package/src/ts/interfaces/core.ts +31 -0
  199. package/src/ts/utils/LissajousFigure.ts +110 -0
  200. package/src/ts/utils/PerlinNoise.ts +368 -0
  201. package/src/ts/utils/SVGPathUtils.ts +55 -0
  202. package/src/ts/utils/algorithms/pixelCornersToRoundPaths.ts +379 -0
  203. package/src/ts/utils/datastructures/Color.ts +423 -44
  204. package/src/ts/utils/datastructures/ColorGradient.ts +196 -0
  205. package/src/ts/utils/datastructures/DataGrid2d.ts +7 -0
  206. package/src/ts/utils/datastructures/DataGrid2dArrayMatrix.ts +182 -0
  207. package/src/ts/utils/datastructures/DataGrid2dListAdapter.ts +4 -11
  208. package/src/ts/utils/datastructures/GeometryMesh.ts +79 -0
  209. package/src/ts/utils/detectDarkMode.ts +17 -8
  210. package/src/ts/utils/dom/components/ColorGradientPicker.tsx +889 -0
  211. package/src/ts/utils/dom/components/ColorGradientSelector.tsx +452 -0
  212. package/src/ts/utils/dom/components/Test.tsx +44 -0
  213. package/src/ts/utils/dom/components/_ColorGradientPicker_raw.ts_ +392 -0
  214. package/src/ts/utils/dom/guiSizeToggler.ts +1 -1
  215. package/src/ts/utils/helpers/BezierPathInteractionHelper.ts +25 -15
  216. package/src/ts/utils/helpers/CircleHelper.ts +17 -3
  217. package/src/ts/utils/helpers/CircleSectorHelper.ts +4 -2
  218. package/src/ts/utils/helpers/TriangleHelper.ts +102 -0
  219. package/src/ts/utils/helpers/VEllipseHelper.ts +6 -4
  220. package/src/ts/utils/helpers/VEllipseSectorHelper.ts +3 -2
  221. package/src/ts/utils/parsers/LinearColorGradientParser.ts +297 -0
  222. package/src/ts/utils/parsers/svg/types.ts +8 -8
@@ -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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"}