plotboilerplate 1.27.1 → 1.28.1

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 (78) hide show
  1. package/dist/index.esm.js +135 -36
  2. package/dist/index.esm.js.map +1 -1
  3. package/dist/index.esm.min.js +1 -1
  4. package/dist/index.esm.min.js.map +1 -1
  5. package/dist/plotboilerplate.browser.min.js +1 -1
  6. package/dist/plotboilerplate.browser.min.js.map +1 -1
  7. package/dist/plotboilerplate.js +96 -17
  8. package/dist/plotboilerplate.min.js +1 -1
  9. package/package.json +2 -1
  10. package/src/cjs/PlotBoilerplate.d.ts +11 -1
  11. package/src/cjs/PlotBoilerplate.js +23 -7
  12. package/src/cjs/PlotBoilerplate.js.map +1 -1
  13. package/src/cjs/VertexListeners.d.ts +2 -1
  14. package/src/cjs/VertexListeners.js +5 -1
  15. package/src/cjs/VertexListeners.js.map +1 -1
  16. package/src/cjs/draw.d.ts +18 -2
  17. package/src/cjs/draw.js +21 -2
  18. package/src/cjs/draw.js.map +1 -1
  19. package/src/cjs/drawgl.d.ts +18 -3
  20. package/src/cjs/drawgl.js +19 -2
  21. package/src/cjs/drawgl.js.map +1 -1
  22. package/src/cjs/drawutilssvg.d.ts +19 -1
  23. package/src/cjs/drawutilssvg.js +28 -5
  24. package/src/cjs/drawutilssvg.js.map +1 -1
  25. package/src/cjs/interfaces/DrawLib.d.ts +18 -1
  26. package/src/cjs/interfaces/DrawLib.js +2 -0
  27. package/src/cjs/interfaces/DrawLib.js.map +1 -1
  28. package/src/cjs/utils/Params.d.ts +3 -2
  29. package/src/cjs/utils/Params.js +11 -3
  30. package/src/cjs/utils/Params.js.map +1 -1
  31. package/src/cjs/utils/WebColors.d.ts +2 -1
  32. package/src/cjs/utils/WebColors.js +15 -2
  33. package/src/cjs/utils/WebColors.js.map +1 -1
  34. package/src/cjs/utils/algorithms/HobbyPath.js +13 -16
  35. package/src/cjs/utils/algorithms/HobbyPath.js.map +1 -1
  36. package/src/cjs/utils/helpers/BezierResizeHelper.d.ts +144 -0
  37. package/src/cjs/utils/helpers/BezierResizeHelper.js +319 -0
  38. package/src/cjs/utils/helpers/BezierResizeHelper.js.map +1 -0
  39. package/src/esm/PlotBoilerplate.d.ts +11 -1
  40. package/src/esm/PlotBoilerplate.js +23 -7
  41. package/src/esm/PlotBoilerplate.js.map +1 -1
  42. package/src/esm/VertexListeners.d.ts +2 -1
  43. package/src/esm/VertexListeners.js +5 -1
  44. package/src/esm/VertexListeners.js.map +1 -1
  45. package/src/esm/draw.d.ts +18 -2
  46. package/src/esm/draw.js +21 -2
  47. package/src/esm/draw.js.map +1 -1
  48. package/src/esm/drawgl.d.ts +18 -3
  49. package/src/esm/drawgl.js +19 -2
  50. package/src/esm/drawgl.js.map +1 -1
  51. package/src/esm/drawutilssvg.d.ts +19 -1
  52. package/src/esm/drawutilssvg.js +28 -5
  53. package/src/esm/drawutilssvg.js.map +1 -1
  54. package/src/esm/interfaces/DrawLib.d.ts +18 -1
  55. package/src/esm/interfaces/DrawLib.js +2 -0
  56. package/src/esm/interfaces/DrawLib.js.map +1 -1
  57. package/src/esm/utils/Params.d.ts +3 -2
  58. package/src/esm/utils/Params.js +11 -3
  59. package/src/esm/utils/Params.js.map +1 -1
  60. package/src/esm/utils/WebColors.d.ts +2 -1
  61. package/src/esm/utils/WebColors.js +15 -2
  62. package/src/esm/utils/WebColors.js.map +1 -1
  63. package/src/esm/utils/algorithms/HobbyPath.js +13 -16
  64. package/src/esm/utils/algorithms/HobbyPath.js.map +1 -1
  65. package/src/esm/utils/helpers/BezierResizeHelper.d.ts +144 -0
  66. package/src/esm/utils/helpers/BezierResizeHelper.js +314 -0
  67. package/src/esm/utils/helpers/BezierResizeHelper.js.map +1 -0
  68. package/src/ts/PlotBoilerplate.ts +37 -11
  69. package/src/ts/VertexListeners.ts +5 -1
  70. package/src/ts/draw.ts +32 -2
  71. package/src/ts/drawgl.ts +38 -3
  72. package/src/ts/drawutilssvg.ts +33 -6
  73. package/src/ts/interfaces/DrawLib.ts +19 -1
  74. package/src/ts/utils/Params.ts +11 -3
  75. package/src/ts/utils/WebColors.ts +15 -2
  76. package/src/ts/utils/algorithms/HobbyPath.ts +248 -272
  77. package/src/ts/utils/helpers/BezierResizeHelper.ts +390 -0
  78. package/src/cjs/utils/_gup.js_ +0 -13
@@ -0,0 +1,319 @@
1
+ "use strict";
2
+ /**
3
+ * A helper to resize bezier paths in horizontal and vertical orientation.
4
+ *
5
+ * @requires PlotBoilerplate
6
+ * @requires BezierPath
7
+ * @requires Vertex
8
+ *
9
+ * @author Ikaros Kappler
10
+ * @date 2026-04-04 Copied from the ngdg project, made minor type adaptions.
11
+ * @version 1.2.0
12
+ *
13
+ */
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.BezierResizeHelper = void 0;
16
+ var Vertex_1 = require("../../Vertex");
17
+ // A closure to hide helper functions.
18
+ var BezierResizeHelper = /** @class */ (function () {
19
+ /**
20
+ * The constructor.
21
+ *
22
+ * @param {PlotBoilerplate} pb
23
+ * @param {BezierPath} bezierPath
24
+ * @param {function} updateCallback
25
+ */
26
+ function BezierResizeHelper(pb, bezierPath, updateCallback) {
27
+ this.pb = pb;
28
+ this.bezierPath = bezierPath;
29
+ // @public
30
+ this.topResizeHandle = new Vertex_1.Vertex(0, 0);
31
+ this.leftResizeHandle = new Vertex_1.Vertex(0, 0);
32
+ this.bottomResizeHandle = new Vertex_1.Vertex(0, 0);
33
+ this.rightResizeHandle = new Vertex_1.Vertex(0, 0);
34
+ // @private
35
+ this.topHandleDragStartPosition = null;
36
+ this.leftHandleDragStartPosition = null;
37
+ this.bottomHandleDragStartPosition = null;
38
+ this.rightHandleDragStartPosition = null;
39
+ this.__listeners = this.__installListeners(this, pb, bezierPath, updateCallback);
40
+ this.updateResizeHandles();
41
+ }
42
+ BezierResizeHelper.prototype.draw = function (draw, fill) {
43
+ this.drawHandleLines(draw, fill, "grey");
44
+ this.drawTriangles(draw, fill, "rgba(0,192,192,1.0)");
45
+ };
46
+ /**
47
+ * Call this method from the outside to see active helper lines for those edges
48
+ * that are currently dragged.
49
+ *
50
+ * @param {DrawLib<any>} draw
51
+ * @param {DrawLib<any>} fill
52
+ * @param {string} lineColor
53
+ */
54
+ BezierResizeHelper.prototype.drawHandleLines = function (draw, fill, lineColor) {
55
+ // console.log("drawResizeHandleLines", bezierResizer.verticalResizeHandleDragStartPosition);
56
+ var bounds = this.bezierPath.getBounds();
57
+ if (this.topHandleDragStartPosition) {
58
+ draw.line({ x: bounds.min.x, y: this.topResizeHandle.y }, { x: bounds.max.x, y: this.topResizeHandle.y }, lineColor, 1.0, {
59
+ dashOffset: 0.0,
60
+ dashArray: [5, 5]
61
+ });
62
+ }
63
+ if (this.leftHandleDragStartPosition) {
64
+ draw.line({ x: this.leftResizeHandle.x, y: bounds.min.y }, { x: this.leftResizeHandle.x, y: bounds.max.y }, lineColor, 1.0, { dashOffset: 0.0, dashArray: [5, 5] });
65
+ }
66
+ if (this.bottomHandleDragStartPosition) {
67
+ draw.line({ x: bounds.min.x, y: this.bottomResizeHandle.y }, { x: bounds.max.x, y: this.bottomResizeHandle.y }, lineColor, 1.0, {
68
+ dashOffset: 0.0,
69
+ dashArray: [5, 5]
70
+ });
71
+ }
72
+ if (this.rightHandleDragStartPosition) {
73
+ draw.line({ x: this.rightResizeHandle.x, y: bounds.min.y }, { x: this.rightResizeHandle.x, y: bounds.max.y }, lineColor, 1.0, { dashOffset: 0.0, dashArray: [5, 5] });
74
+ }
75
+ };
76
+ BezierResizeHelper.prototype.drawTriangles = function (draw, _fill, color) {
77
+ // this.__drawUpTriangle(draw, this.topResizeHandle, color);
78
+ // this.__drawDownTriangle(draw, this.bottomResizeHandle, color);
79
+ // this.__drawLeftTriangle(draw, this.leftResizeHandle, color);
80
+ // this.__drawRightTriangle(draw, this.rightResizeHandle, color);
81
+ this.drawTopTriangle(draw, _fill, color);
82
+ this.drawLeftTriangle(draw, _fill, color);
83
+ this.drawBottomTriangle(draw, _fill, color);
84
+ this.drawRightTriangle(draw, _fill, color);
85
+ };
86
+ /**
87
+ * Draws an up-trinangle at the top handle position.
88
+ *
89
+ * @param draw
90
+ * @param position
91
+ * @param color
92
+ */
93
+ BezierResizeHelper.prototype.drawTopTriangle = function (draw, _fill, color) {
94
+ this.__drawUpTriangle(draw, _fill, this.topResizeHandle, color);
95
+ };
96
+ /**
97
+ * Draws an up-trinangle at the top handle position.
98
+ *
99
+ * @param draw
100
+ * @param position
101
+ * @param color
102
+ */
103
+ BezierResizeHelper.prototype.drawLeftTriangle = function (draw, _fill, color) {
104
+ this.__drawLeftTriangle(draw, _fill, this.leftResizeHandle, color);
105
+ };
106
+ /**
107
+ * Draws an up-trinangle at the top handle position.
108
+ *
109
+ * @param draw
110
+ * @param position
111
+ * @param color
112
+ */
113
+ BezierResizeHelper.prototype.drawBottomTriangle = function (draw, _fill, color) {
114
+ this.__drawDownTriangle(draw, _fill, this.bottomResizeHandle, color);
115
+ };
116
+ /**
117
+ * Draws an right-trinangle at the top handle position.
118
+ *
119
+ * @param draw
120
+ * @param position
121
+ * @param color
122
+ */
123
+ BezierResizeHelper.prototype.drawRightTriangle = function (draw, _fill, color) {
124
+ this.__drawRightTriangle(draw, _fill, this.rightResizeHandle, color);
125
+ };
126
+ /**
127
+ * Draws an up-trinangle at the top handle position.
128
+ *
129
+ * @param draw
130
+ * @param position
131
+ * @param color
132
+ */
133
+ BezierResizeHelper.prototype.__drawUpTriangle = function (draw, _fill, position, color) {
134
+ var arrowSize = 6.0;
135
+ var arrowSizeH = arrowSize / this.pb.config.scaleX;
136
+ var arrowSizeV = arrowSize / this.pb.config.scaleY;
137
+ var verts = [
138
+ { x: position.x - arrowSizeH, y: position.y + arrowSizeV * 0.5 }, // left corner
139
+ { x: position.x, y: position.y - arrowSizeV }, // up corner
140
+ { x: position.x + arrowSizeH, y: position.y + arrowSizeV * 0.5 } // right corner
141
+ ];
142
+ draw.polyline(verts, false, color, 1.0);
143
+ };
144
+ /**
145
+ * Draws an left-trinangle at the left handle position.
146
+ *
147
+ * @param draw
148
+ * @param position
149
+ * @param color
150
+ */
151
+ BezierResizeHelper.prototype.__drawLeftTriangle = function (draw, _fill, position, color) {
152
+ var arrowSize = 6.0;
153
+ var arrowSizeH = arrowSize / this.pb.config.scaleX;
154
+ var arrowSizeV = arrowSize / this.pb.config.scaleY;
155
+ var verts = [
156
+ { x: position.x - arrowSizeH, y: position.y }, // left corner
157
+ { x: position.x + arrowSizeH * 0.5, y: position.y - arrowSizeV }, // up corner
158
+ { x: position.x + arrowSizeH * 0.5, y: position.y + arrowSizeV } // down corner
159
+ ];
160
+ draw.polyline(verts, false, color, 1.0);
161
+ };
162
+ /**
163
+ * Draws a down-trinangle at the top handle position.
164
+ *
165
+ * @param draw
166
+ * @param position
167
+ * @param color
168
+ */
169
+ BezierResizeHelper.prototype.__drawDownTriangle = function (draw, _fill, position, color) {
170
+ var arrowSize = 6.0;
171
+ var arrowSizeH = arrowSize / this.pb.config.scaleX;
172
+ var arrowSizeV = arrowSize / this.pb.config.scaleY;
173
+ var verts = [
174
+ { x: position.x + arrowSizeH, y: position.y - arrowSizeV * 0.5 }, // right corner
175
+ { x: position.x, y: position.y + arrowSizeV }, // down corner
176
+ { x: position.x - arrowSizeH, y: position.y - arrowSizeV * 0.5 } // left corner
177
+ ];
178
+ draw.polyline(verts, false, color, 1.0);
179
+ };
180
+ /**
181
+ * Draws an left-trinangle at the left handle position.
182
+ *
183
+ * @param draw
184
+ * @param position
185
+ * @param color
186
+ */
187
+ BezierResizeHelper.prototype.__drawRightTriangle = function (draw, _fill, position, color) {
188
+ var arrowSize = 6.0;
189
+ var arrowSizeH = arrowSize / this.pb.config.scaleX;
190
+ var arrowSizeV = arrowSize / this.pb.config.scaleY;
191
+ var verts = [
192
+ { x: position.x + arrowSizeH, y: position.y }, // left corner
193
+ { x: position.x - arrowSizeH * 0.5, y: position.y - arrowSizeV }, // up corner
194
+ { x: position.x - arrowSizeH * 0.5, y: position.y + arrowSizeV } // down corner
195
+ ];
196
+ draw.polyline(verts, false, color, 1.0);
197
+ };
198
+ /**
199
+ * Destroys this helper by removing all previously installed vertex listeners.
200
+ */
201
+ BezierResizeHelper.prototype.destroy = function () {
202
+ this.topResizeHandle.listeners.removeDragStartListener(this.__listeners[0]);
203
+ this.topResizeHandle.listeners.removeDragEndListener(this.__listeners[1]);
204
+ this.leftResizeHandle.listeners.removeDragStartListener(this.__listeners[2]);
205
+ this.leftResizeHandle.listeners.removeDragEndListener(this.__listeners[3]);
206
+ this.bottomResizeHandle.listeners.removeDragStartListener(this.__listeners[4]);
207
+ this.bottomResizeHandle.listeners.removeDragEndListener(this.__listeners[5]);
208
+ this.rightResizeHandle.listeners.removeDragStartListener(this.__listeners[6]);
209
+ this.rightResizeHandle.listeners.removeDragEndListener(this.__listeners[7]);
210
+ };
211
+ /**
212
+ * Install all required drag-start and drag-end listeners.
213
+ */
214
+ BezierResizeHelper.prototype.__installListeners = function (_self, pb, bezierPath, updateCallback) {
215
+ var listeners = [];
216
+ listeners.push(_self.topResizeHandle.listeners.addDragStartListener(function (e) {
217
+ var relPos = pb.transformMousePosition(e.params.draggedFrom.x, e.params.draggedFrom.y);
218
+ _self.topHandleDragStartPosition = relPos;
219
+ }));
220
+ listeners.push(_self.topResizeHandle.listeners.addDragEndListener(function (e) {
221
+ var relTargetPos = pb.transformMousePosition(e.params.pos.x, e.params.pos.y);
222
+ var targetHeightDifference = _self.topHandleDragStartPosition.y - relTargetPos.y;
223
+ _self.__changePathHeightTop(bezierPath, targetHeightDifference);
224
+ _self.updateResizeHandles();
225
+ _self.topHandleDragStartPosition = null;
226
+ updateCallback();
227
+ }));
228
+ listeners.push(_self.leftResizeHandle.listeners.addDragStartListener(function (e) {
229
+ var relPos = pb.transformMousePosition(e.params.draggedFrom.x, e.params.draggedFrom.y);
230
+ _self.leftHandleDragStartPosition = relPos;
231
+ }));
232
+ listeners.push(_self.leftResizeHandle.listeners.addDragEndListener(function (e) {
233
+ var relTargetPos = pb.transformMousePosition(e.params.pos.x, e.params.pos.y);
234
+ var targetWidthDifference = _self.leftHandleDragStartPosition.x - relTargetPos.x;
235
+ _self.__changePathWidthLeft(bezierPath, targetWidthDifference);
236
+ _self.updateResizeHandles();
237
+ _self.leftHandleDragStartPosition = null;
238
+ updateCallback();
239
+ }));
240
+ listeners.push(_self.bottomResizeHandle.listeners.addDragStartListener(function (e) {
241
+ var relPos = pb.transformMousePosition(e.params.draggedFrom.x, e.params.draggedFrom.y);
242
+ _self.bottomHandleDragStartPosition = relPos;
243
+ }));
244
+ listeners.push(_self.bottomResizeHandle.listeners.addDragEndListener(function (e) {
245
+ var relTargetPos = pb.transformMousePosition(e.params.pos.x, e.params.pos.y);
246
+ var targetHeightDifference = relTargetPos.y - _self.bottomHandleDragStartPosition.y;
247
+ _self.__changePathHeightBottom(bezierPath, targetHeightDifference);
248
+ _self.updateResizeHandles();
249
+ _self.bottomHandleDragStartPosition = null;
250
+ updateCallback();
251
+ }));
252
+ listeners.push(_self.rightResizeHandle.listeners.addDragStartListener(function (e) {
253
+ var relPos = pb.transformMousePosition(e.params.draggedFrom.x, e.params.draggedFrom.y);
254
+ _self.rightHandleDragStartPosition = relPos;
255
+ }));
256
+ listeners.push(_self.rightResizeHandle.listeners.addDragEndListener(function (e) {
257
+ var relTargetPos = pb.transformMousePosition(e.params.pos.x, e.params.pos.y);
258
+ var targetWidthDifference = relTargetPos.x - _self.rightHandleDragStartPosition.x;
259
+ _self.__changePathWidthRight(bezierPath, targetWidthDifference);
260
+ _self.updateResizeHandles();
261
+ _self.rightHandleDragStartPosition = null;
262
+ updateCallback();
263
+ }));
264
+ return listeners;
265
+ };
266
+ /**
267
+ * @param {BezierPath} bezierPath - The path to update.
268
+ * @param {number} heightAmount - The height difference to apply. Can be positive or negative or zero.
269
+ */
270
+ BezierResizeHelper.prototype.__changePathHeightTop = function (bezierPath, heightAmount) {
271
+ var bounds = bezierPath.getBounds();
272
+ var scaleAnchor = bounds.max;
273
+ var verticalScaleFactor = (bounds.height + heightAmount) / bounds.height;
274
+ bezierPath.scaleXY({ x: 1.0, y: verticalScaleFactor }, scaleAnchor);
275
+ };
276
+ /**
277
+ * @param {BezierPath} bezierPath - The path to update.
278
+ * @param {number} widthAmount - The width difference to apply. Can be positive or negative or zero.
279
+ */
280
+ BezierResizeHelper.prototype.__changePathWidthLeft = function (bezierPath, widthAmount) {
281
+ var bounds = bezierPath.getBounds();
282
+ var scaleAnchor = bounds.max;
283
+ var horizontalScaleFactor = (bounds.width + widthAmount) / bounds.width;
284
+ bezierPath.scaleXY({ x: horizontalScaleFactor, y: 1.0 }, scaleAnchor);
285
+ };
286
+ /**
287
+ * @param {BezierPath} bezierPath - The path to update.
288
+ * @param {number} heightAmount - The height difference to apply. Can be positive or negative or zero.
289
+ */
290
+ BezierResizeHelper.prototype.__changePathHeightBottom = function (bezierPath, heightAmount) {
291
+ var bounds = bezierPath.getBounds();
292
+ var scaleAnchor = bounds.min;
293
+ var verticalScaleFactor = (bounds.height + heightAmount) / bounds.height;
294
+ bezierPath.scaleXY({ x: 1.0, y: verticalScaleFactor }, scaleAnchor);
295
+ };
296
+ /**
297
+ * @param {BezierPath} bezierPath - The path to update.
298
+ * @param {number} widthAmount - The width difference to apply. Can be positive or negative or zero.
299
+ */
300
+ BezierResizeHelper.prototype.__changePathWidthRight = function (bezierPath, widthAmount) {
301
+ var bounds = bezierPath.getBounds();
302
+ var scaleAnchor = bounds.min;
303
+ var horizontalScaleFactor = (bounds.width + widthAmount) / bounds.width;
304
+ bezierPath.scaleXY({ x: horizontalScaleFactor, y: 1.0 }, scaleAnchor);
305
+ };
306
+ /**
307
+ * Set the handles to the new position after the path was resized.
308
+ */
309
+ BezierResizeHelper.prototype.updateResizeHandles = function () {
310
+ var bounds = this.bezierPath.getBounds();
311
+ this.leftResizeHandle.set(bounds.min.x, bounds.min.y + bounds.height / 2.0);
312
+ this.topResizeHandle.set(bounds.min.x + bounds.width / 2.0, bounds.min.y);
313
+ this.rightResizeHandle.set(bounds.max.x, bounds.min.y + bounds.height / 2.0);
314
+ this.bottomResizeHandle.set(bounds.min.x + bounds.width / 2.0, bounds.max.y);
315
+ };
316
+ return BezierResizeHelper;
317
+ }()); // END class
318
+ exports.BezierResizeHelper = BezierResizeHelper;
319
+ //# sourceMappingURL=BezierResizeHelper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BezierResizeHelper.js","sourceRoot":"","sources":["../../../ts/utils/helpers/BezierResizeHelper.ts"],"names":[],"mappings":"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"}
@@ -92,8 +92,9 @@
92
92
  * @modified 2025-05-07 Moving full vectors now by default when vector point a is moved.
93
93
  * @modified 2025-05-20 Applying `lineWith` parameter in the draw routine for vectors (had been missing).
94
94
  * @modified 2026-03-13 Changed visibility of `setZoom` and `setOffset` to public. There was no good reason to have the private.
95
+ * @modified 2026-04-04 Added `isInPanningMode` attribute and `isPanning` method.
95
96
  *
96
- * @version 1.21.2
97
+ * @version 1.22.0
97
98
  *
98
99
  * @file PlotBoilerplate
99
100
  * @fileoverview The main class.
@@ -258,6 +259,14 @@ export declare class PlotBoilerplate {
258
259
  * @instance
259
260
  */
260
261
  hooks: IHooks;
262
+ /**
263
+ * Indicator if the instance is currently in 'panning' mode.
264
+ * Please use `isPanning()` method to determine value.
265
+ * @member {boolean}
266
+ * @memberof PlotBoilerplate
267
+ * @instance
268
+ */
269
+ private isInPanningMode;
261
270
  /**
262
271
  * A list of content change listeners.
263
272
  */
@@ -370,6 +379,7 @@ export declare class PlotBoilerplate {
370
379
  * @private
371
380
  **/
372
381
  private _setToRetina;
382
+ isPanning(): boolean;
373
383
  /**
374
384
  * Set the current zoom and draw offset to fit the given bounds.
375
385
  *
@@ -92,8 +92,9 @@
92
92
  * @modified 2025-05-07 Moving full vectors now by default when vector point a is moved.
93
93
  * @modified 2025-05-20 Applying `lineWith` parameter in the draw routine for vectors (had been missing).
94
94
  * @modified 2026-03-13 Changed visibility of `setZoom` and `setOffset` to public. There was no good reason to have the private.
95
+ * @modified 2026-04-04 Added `isInPanningMode` attribute and `isPanning` method.
95
96
  *
96
- * @version 1.21.2
97
+ * @version 1.22.0
97
98
  *
98
99
  * @file PlotBoilerplate
99
100
  * @fileoverview The main class.
@@ -551,6 +552,9 @@ export class PlotBoilerplate {
551
552
  this.resizeCanvas();
552
553
  this.updateCSSscale();
553
554
  }
555
+ isPanning() {
556
+ return this.isInPanningMode;
557
+ }
554
558
  /**
555
559
  * Set the current zoom and draw offset to fit the given bounds.
556
560
  *
@@ -1430,13 +1434,12 @@ export class PlotBoilerplate {
1430
1434
  **/
1431
1435
  // TODO: this was moved to the DOM utils
1432
1436
  getAvailableContainerSpace() {
1433
- const _self = this;
1434
- const container = _self.canvas.parentNode; // Element | Document | DocumentFragment;
1435
- _self.canvas.style.display = "none";
1436
- var padding = this.getFProp(container, "padding") || 0, border = this.getFProp(_self.canvas, "border-width") || 0, pl = this.getFProp(container, "padding-left") || padding, pr = this.getFProp(container, "padding-right") || padding, pt = this.getFProp(container, "padding-top") || padding, pb = this.getFProp(container, "padding-bottom") || padding, bl = this.getFProp(_self.canvas, "border-left-width") || border, br = this.getFProp(_self.canvas, "border-right-width") || border, bt = this.getFProp(_self.canvas, "border-top-width") || border, bb = this.getFProp(_self.canvas, "border-bottom-width") || border;
1437
+ const container = this.canvas.parentNode; // Element | Document | DocumentFragment;
1438
+ this.canvas.style.display = "none";
1439
+ var padding = this.getFProp(container, "padding") || 0, border = this.getFProp(this.canvas, "border-width") || 0, pl = this.getFProp(container, "padding-left") || padding, pr = this.getFProp(container, "padding-right") || padding, pt = this.getFProp(container, "padding-top") || padding, pb = this.getFProp(container, "padding-bottom") || padding, bl = this.getFProp(this.canvas, "border-left-width") || border, br = this.getFProp(this.canvas, "border-right-width") || border, bt = this.getFProp(this.canvas, "border-top-width") || border, bb = this.getFProp(this.canvas, "border-bottom-width") || border;
1437
1440
  var w = container.clientWidth;
1438
1441
  var h = container.clientHeight;
1439
- _self.canvas.style.display = "block";
1442
+ this.canvas.style.display = "block";
1440
1443
  return { width: w - pl - pr - bl - br, height: h - pt - pb - bt - bb };
1441
1444
  }
1442
1445
  /**
@@ -1698,7 +1701,8 @@ export class PlotBoilerplate {
1698
1701
  // not this one. So this tab will never receive any [Ctrl-down] events
1699
1702
  // until next keypress; the implication is, that [Ctrl] would still
1700
1703
  // considered to be pressed which is not true.
1701
- if (this.keyHandler && (this.keyHandler.isDown("alt") || this.keyHandler.isDown("spacebar"))) {
1704
+ // if (this.keyHandler && (this.keyHandler.isDown("alt") || this.keyHandler.isDown("spacebar"))) {
1705
+ if (this.isInPanningMode) {
1702
1706
  if (!this.config.enablePan) {
1703
1707
  return;
1704
1708
  }
@@ -2049,6 +2053,18 @@ export class PlotBoilerplate {
2049
2053
  _self.selectVerticesInPolygon(_self.selectPolygon);
2050
2054
  _self.selectPolygon = null;
2051
2055
  _self.redraw();
2056
+ })
2057
+ .down("alt", function () {
2058
+ _self.isInPanningMode = true;
2059
+ })
2060
+ .up("alt", function () {
2061
+ _self.isInPanningMode = false;
2062
+ })
2063
+ .down("spacebar", function () {
2064
+ _self.isInPanningMode = true;
2065
+ })
2066
+ .up("spacebar", function () {
2067
+ _self.isInPanningMode = false;
2052
2068
  });
2053
2069
  } // END IF enableKeys?
2054
2070
  else {