plotboilerplate 1.12.10 → 1.16.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 +5 -1
- package/changelog.md +50 -0
- package/dist/index.esm.js +999 -510
- 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 +1013 -509
- package/dist/plotboilerplate.min.js +1 -1
- package/package.json +1 -1
- package/src/cjs/BezierPath.d.ts +45 -2
- package/src/cjs/BezierPath.js +114 -18
- package/src/cjs/BezierPath.js.map +1 -1
- package/src/cjs/Circle.d.ts +25 -10
- package/src/cjs/Circle.js +38 -33
- package/src/cjs/Circle.js.map +1 -1
- package/src/cjs/CircleSector.d.ts +27 -13
- package/src/cjs/CircleSector.js +38 -23
- package/src/cjs/CircleSector.js.map +1 -1
- package/src/cjs/CubicBezierCurve.d.ts +17 -1
- package/src/cjs/CubicBezierCurve.js +78 -79
- package/src/cjs/CubicBezierCurve.js.map +1 -1
- package/src/cjs/KeyHandler.d.ts +10 -3
- package/src/cjs/KeyHandler.js +28 -23
- package/src/cjs/KeyHandler.js.map +1 -1
- package/src/cjs/Line.d.ts +2 -1
- package/src/cjs/Line.js +19 -18
- package/src/cjs/Line.js.map +1 -1
- package/src/cjs/MouseHandler.js +43 -53
- package/src/cjs/MouseHandler.js.map +1 -1
- package/src/cjs/PBImage.d.ts +16 -1
- package/src/cjs/PBImage.js +13 -3
- package/src/cjs/PBImage.js.map +1 -1
- package/src/cjs/PBText.d.ts +130 -0
- package/src/cjs/PBText.js +76 -0
- package/src/cjs/PBText.js.map +1 -0
- package/src/cjs/PlotBoilerplate.d.ts +2 -1
- package/src/cjs/PlotBoilerplate.js +44 -16
- package/src/cjs/PlotBoilerplate.js.map +1 -1
- package/src/cjs/Polygon.d.ts +37 -1
- package/src/cjs/Polygon.js +131 -54
- package/src/cjs/Polygon.js.map +1 -1
- package/src/cjs/Triangle.d.ts +16 -1
- package/src/cjs/Triangle.js +50 -54
- package/src/cjs/Triangle.js.map +1 -1
- package/src/cjs/VEllipse.d.ts +16 -1
- package/src/cjs/VEllipse.js +25 -12
- package/src/cjs/VEllipse.js.map +1 -1
- package/src/cjs/VEllipseSector.d.ts +15 -1
- package/src/cjs/VEllipseSector.js +11 -1
- package/src/cjs/VEllipseSector.js.map +1 -1
- package/src/cjs/Vector.d.ts +3 -1
- package/src/cjs/Vector.js +32 -36
- package/src/cjs/Vector.js.map +1 -1
- package/src/cjs/VertTuple.d.ts +15 -1
- package/src/cjs/VertTuple.js +14 -19
- package/src/cjs/VertTuple.js.map +1 -1
- package/src/cjs/Vertex.d.ts +66 -4
- package/src/cjs/Vertex.js +99 -17
- package/src/cjs/Vertex.js.map +1 -1
- package/src/cjs/VertexListeners.d.ts +12 -8
- package/src/cjs/VertexListeners.js +18 -25
- package/src/cjs/VertexListeners.js.map +1 -1
- package/src/cjs/draw.d.ts +30 -2
- package/src/cjs/draw.js +51 -6
- package/src/cjs/draw.js.map +1 -1
- package/src/cjs/drawgl.d.ts +29 -2
- package/src/cjs/drawgl.js +21 -4
- package/src/cjs/drawgl.js.map +1 -1
- package/src/cjs/drawutilssvg.d.ts +25 -7
- package/src/cjs/drawutilssvg.js +62 -14
- package/src/cjs/drawutilssvg.js.map +1 -1
- package/src/cjs/entry.js +1 -0
- package/src/cjs/index.d.ts +1 -0
- package/src/cjs/index.js +1 -0
- package/src/cjs/index.js.map +1 -1
- package/src/cjs/interfaces/DrawLib.d.ts +27 -6
- package/src/cjs/interfaces/DrawLib.js +3 -0
- package/src/cjs/interfaces/DrawLib.js.map +1 -1
- package/src/cjs/interfaces/core.d.ts +9 -1
- package/src/cjs/interfaces/core.js +1 -0
- package/src/cjs/interfaces/core.js.map +1 -1
- package/src/cjs/utils/creategui.js +1 -1
- package/src/cjs/utils/findInVertexArray.d.ts +19 -0
- package/src/cjs/utils/findInVertexArray.js +29 -0
- package/src/cjs/utils/findInVertexArray.js.map +1 -0
- package/src/cjs/utils/helpers/BezierPathInteractionHelper.d.ts +15 -0
- package/src/cjs/utils/helpers/BezierPathInteractionHelper.js +55 -28
- package/src/cjs/utils/helpers/BezierPathInteractionHelper.js.map +1 -1
- package/src/cjs/utils/io/DndFileHandler.d.ts +63 -0
- package/src/cjs/utils/io/DndFileHandler.js +112 -0
- package/src/cjs/utils/io/DndFileHandler.js.map +1 -0
- package/src/cjs/utils/io/FileDrop.d.ts +98 -0
- package/src/cjs/utils/io/FileDrop.js +142 -0
- package/src/cjs/utils/io/FileDrop.js.map +1 -0
- package/src/esm/BezierPath.d.ts +45 -2
- package/src/esm/BezierPath.js +114 -18
- package/src/esm/BezierPath.js.map +1 -1
- package/src/esm/Circle.d.ts +25 -10
- package/src/esm/Circle.js +38 -33
- package/src/esm/Circle.js.map +1 -1
- package/src/esm/CircleSector.d.ts +27 -13
- package/src/esm/CircleSector.js +38 -23
- package/src/esm/CircleSector.js.map +1 -1
- package/src/esm/CubicBezierCurve.d.ts +17 -1
- package/src/esm/CubicBezierCurve.js +78 -79
- package/src/esm/CubicBezierCurve.js.map +1 -1
- package/src/esm/KeyHandler.d.ts +10 -3
- package/src/esm/KeyHandler.js +28 -23
- package/src/esm/KeyHandler.js.map +1 -1
- package/src/esm/Line.d.ts +2 -1
- package/src/esm/Line.js +19 -18
- package/src/esm/Line.js.map +1 -1
- package/src/esm/MouseHandler.js +43 -53
- package/src/esm/MouseHandler.js.map +1 -1
- package/src/esm/PBImage.d.ts +16 -1
- package/src/esm/PBImage.js +13 -3
- package/src/esm/PBImage.js.map +1 -1
- package/src/esm/PBText.d.ts +130 -0
- package/src/esm/PBText.js +71 -0
- package/src/esm/PBText.js.map +1 -0
- package/src/esm/PlotBoilerplate.d.ts +2 -1
- package/src/esm/PlotBoilerplate.js +44 -16
- package/src/esm/PlotBoilerplate.js.map +1 -1
- package/src/esm/Polygon.d.ts +37 -1
- package/src/esm/Polygon.js +131 -54
- package/src/esm/Polygon.js.map +1 -1
- package/src/esm/Triangle.d.ts +16 -1
- package/src/esm/Triangle.js +50 -54
- package/src/esm/Triangle.js.map +1 -1
- package/src/esm/VEllipse.d.ts +16 -1
- package/src/esm/VEllipse.js +25 -12
- package/src/esm/VEllipse.js.map +1 -1
- package/src/esm/VEllipseSector.d.ts +15 -1
- package/src/esm/VEllipseSector.js +11 -1
- package/src/esm/VEllipseSector.js.map +1 -1
- package/src/esm/Vector.d.ts +3 -1
- package/src/esm/Vector.js +32 -36
- package/src/esm/Vector.js.map +1 -1
- package/src/esm/VertTuple.d.ts +15 -1
- package/src/esm/VertTuple.js +14 -19
- package/src/esm/VertTuple.js.map +1 -1
- package/src/esm/Vertex.d.ts +66 -4
- package/src/esm/Vertex.js +99 -17
- package/src/esm/Vertex.js.map +1 -1
- package/src/esm/VertexListeners.d.ts +12 -8
- package/src/esm/VertexListeners.js +18 -25
- package/src/esm/VertexListeners.js.map +1 -1
- package/src/esm/draw.d.ts +30 -2
- package/src/esm/draw.js +51 -6
- package/src/esm/draw.js.map +1 -1
- package/src/esm/drawgl.d.ts +29 -2
- package/src/esm/drawgl.js +21 -4
- package/src/esm/drawgl.js.map +1 -1
- package/src/esm/drawutilssvg.d.ts +25 -7
- package/src/esm/drawutilssvg.js +62 -14
- package/src/esm/drawutilssvg.js.map +1 -1
- package/src/esm/entry.js +1 -0
- package/src/esm/index.d.ts +1 -0
- package/src/esm/index.js +1 -0
- package/src/esm/index.js.map +1 -1
- package/src/esm/interfaces/DrawLib.d.ts +27 -6
- package/src/esm/interfaces/DrawLib.js +3 -0
- package/src/esm/interfaces/DrawLib.js.map +1 -1
- package/src/esm/interfaces/core.d.ts +9 -1
- package/src/esm/interfaces/core.js +1 -0
- package/src/esm/interfaces/core.js.map +1 -1
- package/src/esm/utils/findInVertexArray.d.ts +19 -0
- package/src/esm/utils/findInVertexArray.js +25 -0
- package/src/esm/utils/findInVertexArray.js.map +1 -0
- package/src/esm/utils/helpers/BezierPathInteractionHelper.d.ts +15 -0
- package/src/esm/utils/helpers/BezierPathInteractionHelper.js +54 -28
- package/src/esm/utils/helpers/BezierPathInteractionHelper.js.map +1 -1
- package/src/esm/utils/io/DndFileHandler.d.ts +63 -0
- package/src/esm/utils/io/DndFileHandler.js +106 -0
- package/src/esm/utils/io/DndFileHandler.js.map +1 -0
- package/src/esm/utils/io/FileDrop.d.ts +98 -0
- package/src/esm/utils/io/FileDrop.js +136 -0
- package/src/esm/utils/io/FileDrop.js.map +1 -0
- package/src/ts/BezierPath.ts +133 -16
- package/src/ts/Circle.ts +213 -200
- package/src/ts/CircleSector.ts +171 -141
- package/src/ts/CubicBezierCurve.ts +777 -810
- package/src/ts/KeyHandler.ts +221 -212
- package/src/ts/Line.ts +77 -80
- package/src/ts/MouseHandler.ts +356 -368
- package/src/ts/PBImage.ts +81 -68
- package/src/ts/PBText.ts +166 -0
- package/src/ts/PlotBoilerplate.ts +48 -20
- package/src/ts/Polygon.ts +519 -451
- package/src/ts/Triangle.ts +484 -489
- package/src/ts/VEllipse.ts +36 -11
- package/src/ts/VEllipseSector.ts +20 -1
- package/src/ts/Vector.ts +164 -160
- package/src/ts/VertTuple.ts +333 -338
- package/src/ts/Vertex.ts +117 -16
- package/src/ts/VertexListeners.ts +248 -266
- package/src/ts/draw.ts +71 -8
- package/src/ts/drawgl.ts +48 -8
- package/src/ts/drawutilssvg.ts +94 -17
- package/src/ts/index.ts +1 -0
- package/src/ts/interfaces/DrawLib.ts +30 -4
- package/src/ts/interfaces/core.ts +9 -0
- package/src/ts/utils/findInVertexArray.ts +28 -0
- package/src/ts/utils/helpers/BezierPathInteractionHelper.ts +61 -30
- package/src/ts/utils/io/FileDrop.ts +178 -0
- package/dist/plotboilerplate.browser.min.js.LICENSE.txt +0 -8
- package/src/ts/utils/algorithms/clearPolygonDuplicateVertices.ts~ +0 -5
- package/src/ts/utils/algorithms/findPolygonSelfIntersections.ts~ +0 -45
- package/src/ts/utils/algorithms/sh-tmp.ts~ +0 -59
- package/src/ts/utils/algorithms/splitPolygonToNonIntersecting.ts~ +0 -113
- package/src/ts/utils/algorithms/sutherlandHodgman.ts~ +0 -88
|
@@ -90,7 +90,11 @@ export declare class BezierPathInteractionHelper {
|
|
|
90
90
|
private currentT;
|
|
91
91
|
private currentA;
|
|
92
92
|
private currentB;
|
|
93
|
+
private _mouseHandler;
|
|
94
|
+
private _touchHandler;
|
|
93
95
|
private _keyHandler;
|
|
96
|
+
private _mouseEnterListener;
|
|
97
|
+
private _mouseLeaveListener;
|
|
94
98
|
/**
|
|
95
99
|
* Pre: all paths must have been added to the PlotBoilerplate's drawable buffer (use the add(Drawable) function).
|
|
96
100
|
*
|
|
@@ -158,6 +162,17 @@ export declare class BezierPathInteractionHelper {
|
|
|
158
162
|
* @return {void}
|
|
159
163
|
**/
|
|
160
164
|
update(): void;
|
|
165
|
+
/**
|
|
166
|
+
* This function should invalidate any installed listeners and invalidate this object.
|
|
167
|
+
* After calling this function the object might not hold valid data any more and
|
|
168
|
+
* should not be used any more.
|
|
169
|
+
*
|
|
170
|
+
* @method destroy
|
|
171
|
+
* @instance
|
|
172
|
+
* @memberof BezierPathInteractionHelper
|
|
173
|
+
* @return {void}
|
|
174
|
+
**/
|
|
175
|
+
destroy(): void;
|
|
161
176
|
private _locatePath;
|
|
162
177
|
private _handleDelete;
|
|
163
178
|
private _handleSingleVertexDelete;
|
|
@@ -96,8 +96,15 @@ export class BezierPathInteractionHelper {
|
|
|
96
96
|
for (var i = 0; i < paths.length; i++) {
|
|
97
97
|
this.addPath(paths[i]);
|
|
98
98
|
}
|
|
99
|
-
this.
|
|
100
|
-
|
|
99
|
+
this._mouseEnterListener = () => {
|
|
100
|
+
this.mouseIsOver = true;
|
|
101
|
+
};
|
|
102
|
+
this._mouseLeaveListener = () => {
|
|
103
|
+
this.mouseIsOver = false;
|
|
104
|
+
this._clearMoveEvent();
|
|
105
|
+
};
|
|
106
|
+
this._mouseHandler = this._installMouseListener();
|
|
107
|
+
this._touchHandler = this._installTouchListener();
|
|
101
108
|
this._keyHandler = this._installKeyListener();
|
|
102
109
|
// Paths might have changed by auto-adjustment.
|
|
103
110
|
if (this.autoAdjustPaths)
|
|
@@ -170,6 +177,27 @@ export class BezierPathInteractionHelper {
|
|
|
170
177
|
// Just re-run the calculation with the recent mouse/touch position
|
|
171
178
|
this._handleMoveEvent(this.currentB.x, this.currentB.y);
|
|
172
179
|
}
|
|
180
|
+
/**
|
|
181
|
+
* This function should invalidate any installed listeners and invalidate this object.
|
|
182
|
+
* After calling this function the object might not hold valid data any more and
|
|
183
|
+
* should not be used any more.
|
|
184
|
+
*
|
|
185
|
+
* @method destroy
|
|
186
|
+
* @instance
|
|
187
|
+
* @memberof BezierPathInteractionHelper
|
|
188
|
+
* @return {void}
|
|
189
|
+
**/
|
|
190
|
+
destroy() {
|
|
191
|
+
for (var i = 0; i < this.paths.length; i++) {
|
|
192
|
+
this._removeDefaultPathListeners(this.paths[i]);
|
|
193
|
+
// removePathVertexDragStartListeners(this.paths[i], listener);
|
|
194
|
+
}
|
|
195
|
+
this.paths = [];
|
|
196
|
+
this.pb.canvas.removeEventListener("mouseenter", this._mouseEnterListener);
|
|
197
|
+
this.pb.canvas.removeEventListener("mouseleave", this._mouseLeaveListener);
|
|
198
|
+
this._mouseHandler.destroy();
|
|
199
|
+
this._keyHandler.destroy();
|
|
200
|
+
}
|
|
173
201
|
// +---------------------------------------------------------------------------------
|
|
174
202
|
// | A helper function to locate a given path instance inside the array.
|
|
175
203
|
// |
|
|
@@ -253,6 +281,7 @@ export class BezierPathInteractionHelper {
|
|
|
253
281
|
}
|
|
254
282
|
}
|
|
255
283
|
else {
|
|
284
|
+
// TODO: remove drag listener from removed vertex!
|
|
256
285
|
deletedVertIndices.push(i);
|
|
257
286
|
}
|
|
258
287
|
}
|
|
@@ -278,6 +307,7 @@ export class BezierPathInteractionHelper {
|
|
|
278
307
|
_replacePathAt(pathIndex, newPath) {
|
|
279
308
|
const oldPath = this.paths[pathIndex];
|
|
280
309
|
this.pb.remove(oldPath, false, true); // Remove with vertices
|
|
310
|
+
oldPath.destroy();
|
|
281
311
|
this._removeDefaultPathListeners(oldPath);
|
|
282
312
|
BezierPathInteractionHelper.setPathAutoAdjust(newPath);
|
|
283
313
|
this.paths[pathIndex] = newPath;
|
|
@@ -315,32 +345,34 @@ export class BezierPathInteractionHelper {
|
|
|
315
345
|
var _self = this;
|
|
316
346
|
const afProps = {
|
|
317
347
|
// Todo: which event types does AlloyFinger use?
|
|
318
|
-
touchStart: function (
|
|
348
|
+
touchStart: function (_event) {
|
|
319
349
|
_self.mouseIsOver = true;
|
|
320
350
|
},
|
|
321
|
-
touchMove: function (
|
|
322
|
-
if (_self.pb.getDraggedElementCount() == 0 &&
|
|
351
|
+
touchMove: function (event) {
|
|
352
|
+
if (_self.pb.getDraggedElementCount() == 0 && event.touches.length > 0) {
|
|
323
353
|
// console.log('touchmove');
|
|
324
|
-
_self._handleMoveEvent(
|
|
354
|
+
_self._handleMoveEvent(event.touches[0].clientX, event.touches[0].clientY);
|
|
325
355
|
}
|
|
326
356
|
},
|
|
327
|
-
touchEnd: function (
|
|
357
|
+
touchEnd: function (_event) {
|
|
328
358
|
_self.mouseIsOver = false;
|
|
329
359
|
_self._clearMoveEvent();
|
|
330
360
|
}
|
|
331
361
|
};
|
|
332
362
|
// new AlloyFinger(this.pb.canvas, afProps);
|
|
333
|
-
if (window["createAlloyFinger"])
|
|
334
|
-
window["createAlloyFinger"](this.pb.eventCatcher ? this.pb.eventCatcher : this.pb.canvas, afProps);
|
|
335
|
-
|
|
336
|
-
|
|
363
|
+
if (window["createAlloyFinger"]) {
|
|
364
|
+
return window["createAlloyFinger"](this.pb.eventCatcher ? this.pb.eventCatcher : this.pb.canvas, afProps);
|
|
365
|
+
}
|
|
366
|
+
else {
|
|
367
|
+
return new AlloyFinger(this.pb.eventCatcher ? this.pb.eventCatcher : this.pb.canvas, afProps);
|
|
368
|
+
}
|
|
337
369
|
}
|
|
338
370
|
// +---------------------------------------------------------------------------------
|
|
339
371
|
// | Called once upon initialization.
|
|
340
372
|
// +-------------------------------
|
|
341
373
|
_installMouseListener() {
|
|
342
374
|
var _self = this;
|
|
343
|
-
new MouseHandler(this.pb.canvas)
|
|
375
|
+
var mouseHandler = new MouseHandler(this.pb.canvas)
|
|
344
376
|
.up(function (e) {
|
|
345
377
|
if (e.params.wasDragged)
|
|
346
378
|
return;
|
|
@@ -385,13 +417,16 @@ export class BezierPathInteractionHelper {
|
|
|
385
417
|
_self.mouseIsOver = true;
|
|
386
418
|
_self._handleMoveEvent(e.params.pos.x, e.params.pos.y);
|
|
387
419
|
});
|
|
388
|
-
_self.pb.canvas.addEventListener("mouseenter", function () {
|
|
389
|
-
|
|
390
|
-
});
|
|
391
|
-
_self.pb.canvas.addEventListener("mouseleave", function () {
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
});
|
|
420
|
+
// _self.pb.canvas.addEventListener("mouseenter", function () {
|
|
421
|
+
// _self.mouseIsOver = true;
|
|
422
|
+
// });
|
|
423
|
+
// _self.pb.canvas.addEventListener("mouseleave", function () {
|
|
424
|
+
// _self.mouseIsOver = false;
|
|
425
|
+
// _self._clearMoveEvent();
|
|
426
|
+
// });
|
|
427
|
+
this.pb.canvas.addEventListener("mouseenter", this._mouseEnterListener);
|
|
428
|
+
this.pb.canvas.addEventListener("mouseleave", this._mouseLeaveListener);
|
|
429
|
+
return mouseHandler;
|
|
395
430
|
}
|
|
396
431
|
// +---------------------------------------------------------------------------------
|
|
397
432
|
// | Called once upon initialization.
|
|
@@ -405,15 +440,6 @@ export class BezierPathInteractionHelper {
|
|
|
405
440
|
});
|
|
406
441
|
}
|
|
407
442
|
// +---------------------------------------------------------------------------------
|
|
408
|
-
// | Adds vertex listeners to all path points.
|
|
409
|
-
// |
|
|
410
|
-
// | @param {BezierPath} path - The path to add vertex listeners to.
|
|
411
|
-
// +-------------------------------
|
|
412
|
-
// TODO: THIS CAN BE REMOVED?
|
|
413
|
-
// private _addDefaultPathListeners( path:BezierPath ) : void {
|
|
414
|
-
// BezierPathInteractionHelper.addPathVertexDragListeners( path, this._updateMinDistance );
|
|
415
|
-
// };
|
|
416
|
-
// +---------------------------------------------------------------------------------
|
|
417
443
|
// | Removes vertex listeners from all path points.
|
|
418
444
|
// |
|
|
419
445
|
// | @param {BezierPath} path - The path to remove vertex listeners from.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BezierPathInteractionHelper.js","sourceRoot":"","sources":["../../../ts/utils/helpers/BezierPathInteractionHelper.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BezierPathInteractionHelper.js","sourceRoot":"","sources":["../../../ts/utils/helpers/BezierPathInteractionHelper.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A basic IO handler for file drop (Drag-and-drop).
|
|
3
|
+
*
|
|
4
|
+
* @author Ikaros Kappler
|
|
5
|
+
* @date 2021-10-13
|
|
6
|
+
* @modified 2022-01-31 (ported from the ngdg project, then generalized)
|
|
7
|
+
* @version 2.0.0
|
|
8
|
+
*/
|
|
9
|
+
declare type IDroppedCallbackJSON = (jsonData: object) => void;
|
|
10
|
+
declare type IDroppedCallbackText = (textData: string) => void;
|
|
11
|
+
export declare class ConfigIO {
|
|
12
|
+
/**
|
|
13
|
+
* The 'dropzone' element.
|
|
14
|
+
* @private
|
|
15
|
+
* @memberof ConfigIO
|
|
16
|
+
* @member {HTMLElement}
|
|
17
|
+
*/
|
|
18
|
+
private element;
|
|
19
|
+
/**
|
|
20
|
+
* The JSON file drop callback.
|
|
21
|
+
* @private
|
|
22
|
+
* @memberof ConfigIO
|
|
23
|
+
* @member {HTMLElement}
|
|
24
|
+
*/
|
|
25
|
+
private fileDroppedCallbackJSON;
|
|
26
|
+
private fileDroppedCallbackText;
|
|
27
|
+
/**
|
|
28
|
+
*
|
|
29
|
+
* @param {HTMLElement} element - The element you wish to operate as the drop zone (like <body/>).
|
|
30
|
+
*/
|
|
31
|
+
constructor(element: HTMLElement);
|
|
32
|
+
/**
|
|
33
|
+
* Install the JSON (MIME type json*) file drop callback. Note than only one callback can be installed
|
|
34
|
+
* in this implementation. Calling this method multiple times will overwrite previously
|
|
35
|
+
* installed listeners.
|
|
36
|
+
*
|
|
37
|
+
* The callback will receive the dropped file content as an object (parsed JSON).
|
|
38
|
+
*
|
|
39
|
+
* @param {(data:object)=>void} callback
|
|
40
|
+
*/
|
|
41
|
+
onFileJSONDropped(callback: IDroppedCallbackJSON): void;
|
|
42
|
+
/**
|
|
43
|
+
* Install the text file (MIME type text/plain) drop callback. Note than only one callback can be installed
|
|
44
|
+
* in this implementation. Calling this method multiple times will overwrite previously
|
|
45
|
+
* installed listeners.
|
|
46
|
+
*
|
|
47
|
+
* The callback will receive the dropped file content as a string.
|
|
48
|
+
*
|
|
49
|
+
* @param {(data:object)=>void} callback
|
|
50
|
+
*/
|
|
51
|
+
onFileTextDropped(callback: IDroppedCallbackText): void;
|
|
52
|
+
/**
|
|
53
|
+
* Internally handle a drop event.
|
|
54
|
+
*
|
|
55
|
+
* @param {DragEvent} event
|
|
56
|
+
* @returns {void}
|
|
57
|
+
*/
|
|
58
|
+
private handleDropEvent;
|
|
59
|
+
private handleDragOverEvent;
|
|
60
|
+
private handleDragLeaveEvent;
|
|
61
|
+
destroy(): void;
|
|
62
|
+
}
|
|
63
|
+
export {};
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A basic IO handler for file drop (Drag-and-drop).
|
|
3
|
+
*
|
|
4
|
+
* @author Ikaros Kappler
|
|
5
|
+
* @date 2021-10-13
|
|
6
|
+
* @modified 2022-01-31 (ported from the ngdg project, then generalized)
|
|
7
|
+
* @version 2.0.0
|
|
8
|
+
*/
|
|
9
|
+
export class ConfigIO {
|
|
10
|
+
/**
|
|
11
|
+
*
|
|
12
|
+
* @param {HTMLElement} element - The element you wish to operate as the drop zone (like <body/>).
|
|
13
|
+
*/
|
|
14
|
+
constructor(element) {
|
|
15
|
+
/**
|
|
16
|
+
* Internally handle a drop event.
|
|
17
|
+
*
|
|
18
|
+
* @param {DragEvent} event
|
|
19
|
+
* @returns {void}
|
|
20
|
+
*/
|
|
21
|
+
this.handleDropEvent = (event) => {
|
|
22
|
+
event.preventDefault();
|
|
23
|
+
event.stopPropagation();
|
|
24
|
+
this.element.style.opacity = "1.0";
|
|
25
|
+
if (!event.dataTransfer.files || event.dataTransfer.files.length === 0) {
|
|
26
|
+
// No files were dropped
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
if (event.dataTransfer.files.length > 1) {
|
|
30
|
+
// Multiple file drop is not nupported
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
if (!this.fileDroppedCallbackJSON) {
|
|
34
|
+
// No handling callback defined.
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
if (event.dataTransfer.files[0]) {
|
|
38
|
+
const file = event.dataTransfer.files[0];
|
|
39
|
+
console.log("file", file);
|
|
40
|
+
if (file.type.match(/json.*/) && this.fileDroppedCallbackJSON) {
|
|
41
|
+
var reader = new FileReader();
|
|
42
|
+
reader.onload = (readEvent) => {
|
|
43
|
+
// Finished reading file data.
|
|
44
|
+
const jsonObject = JSON.parse(readEvent.target.result);
|
|
45
|
+
// TODO: what happens on fail?
|
|
46
|
+
this.fileDroppedCallbackJSON(jsonObject);
|
|
47
|
+
};
|
|
48
|
+
reader.readAsText(file); // start reading the file data.
|
|
49
|
+
}
|
|
50
|
+
else if (file.type.match(/text\/plain.*/) && this.fileDroppedCallbackText) {
|
|
51
|
+
var reader = new FileReader();
|
|
52
|
+
reader.onload = (readEvent) => {
|
|
53
|
+
// Finished reading file data.
|
|
54
|
+
this.fileDroppedCallbackText(readEvent.target.result);
|
|
55
|
+
};
|
|
56
|
+
reader.readAsText(file); // start reading the file data.
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
this.handleDragOverEvent = (event) => {
|
|
61
|
+
event.preventDefault();
|
|
62
|
+
event.stopPropagation();
|
|
63
|
+
this.element.style.opacity = "0.5";
|
|
64
|
+
};
|
|
65
|
+
this.handleDragLeaveEvent = (event) => {
|
|
66
|
+
event.preventDefault();
|
|
67
|
+
event.stopPropagation();
|
|
68
|
+
this.element.style.opacity = "1.0";
|
|
69
|
+
};
|
|
70
|
+
this.element = element;
|
|
71
|
+
// Init the drop listeners
|
|
72
|
+
element.addEventListener("drop", this.handleDropEvent.bind(this));
|
|
73
|
+
element.addEventListener("dragover", this.handleDragOverEvent.bind(this));
|
|
74
|
+
element.addEventListener("dragleave", this.handleDragLeaveEvent.bind(this));
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Install the JSON (MIME type json*) file drop callback. Note than only one callback can be installed
|
|
78
|
+
* in this implementation. Calling this method multiple times will overwrite previously
|
|
79
|
+
* installed listeners.
|
|
80
|
+
*
|
|
81
|
+
* The callback will receive the dropped file content as an object (parsed JSON).
|
|
82
|
+
*
|
|
83
|
+
* @param {(data:object)=>void} callback
|
|
84
|
+
*/
|
|
85
|
+
onFileJSONDropped(callback) {
|
|
86
|
+
this.fileDroppedCallbackJSON = callback;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Install the text file (MIME type text/plain) drop callback. Note than only one callback can be installed
|
|
90
|
+
* in this implementation. Calling this method multiple times will overwrite previously
|
|
91
|
+
* installed listeners.
|
|
92
|
+
*
|
|
93
|
+
* The callback will receive the dropped file content as a string.
|
|
94
|
+
*
|
|
95
|
+
* @param {(data:object)=>void} callback
|
|
96
|
+
*/
|
|
97
|
+
onFileTextDropped(callback) {
|
|
98
|
+
this.fileDroppedCallbackText = callback;
|
|
99
|
+
}
|
|
100
|
+
destroy() {
|
|
101
|
+
this.element.removeEventListener("drop", this.handleDropEvent);
|
|
102
|
+
this.element.removeEventListener("dragover", this.handleDragOverEvent);
|
|
103
|
+
this.element.removeEventListener("dragleave", this.handleDragLeaveEvent);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=DndFileHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DndFileHandler.js","sourceRoot":"","sources":["../../../ts/utils/io/DndFileHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A basic IO handler for file drop (Drag-and-drop).
|
|
3
|
+
*
|
|
4
|
+
* Example use:
|
|
5
|
+
* ```javascript
|
|
6
|
+
* var body = document.getElememtByTagName("body")[0];
|
|
7
|
+
* var fileDrop = new FileDrop(body);
|
|
8
|
+
* fileDrop.onFileJSONDropped(function (jsonObject) {
|
|
9
|
+
* console.log("jsonObject", jsonObject);
|
|
10
|
+
* });
|
|
11
|
+
* ```
|
|
12
|
+
*
|
|
13
|
+
* @author Ikaros Kappler
|
|
14
|
+
* @date 2021-10-13
|
|
15
|
+
* @modified 2022-01-31 (ported from the ngdg project, then generalized)
|
|
16
|
+
* @version 2.0.0
|
|
17
|
+
*/
|
|
18
|
+
declare type IDroppedCallbackJSON = (jsonData: object) => void;
|
|
19
|
+
declare type IDroppedCallbackText = (textData: string) => void;
|
|
20
|
+
export declare class FileDrop {
|
|
21
|
+
/**
|
|
22
|
+
* The 'dropzone' element.
|
|
23
|
+
* @private
|
|
24
|
+
* @memberof FileDrop
|
|
25
|
+
* @member {HTMLElement}
|
|
26
|
+
*/
|
|
27
|
+
private element;
|
|
28
|
+
/**
|
|
29
|
+
* The JSON file drop callback.
|
|
30
|
+
* @private
|
|
31
|
+
* @memberof FileDrop
|
|
32
|
+
* @member {HTMLElement}
|
|
33
|
+
*/
|
|
34
|
+
private fileDroppedCallbackJSON;
|
|
35
|
+
/**
|
|
36
|
+
* The text file drop callback.
|
|
37
|
+
* @private
|
|
38
|
+
* @memberof FileDrop
|
|
39
|
+
* @member {HTMLElement}
|
|
40
|
+
*/
|
|
41
|
+
private fileDroppedCallbackText;
|
|
42
|
+
/**
|
|
43
|
+
* The binary file drop callback.
|
|
44
|
+
* @private
|
|
45
|
+
* @memberof FileDrop
|
|
46
|
+
* @member {HTMLElement}
|
|
47
|
+
*/
|
|
48
|
+
private fileDroppedCallbackBinary;
|
|
49
|
+
/**
|
|
50
|
+
*
|
|
51
|
+
* @param {HTMLElement} element - The element you wish to operate as the drop zone (like <body/>).
|
|
52
|
+
*/
|
|
53
|
+
constructor(element: HTMLElement);
|
|
54
|
+
/**
|
|
55
|
+
* Install the JSON (MIME type json*) file drop callback. Note than only one callback can be installed
|
|
56
|
+
* in this implementation. Calling this method multiple times will overwrite previously
|
|
57
|
+
* installed listeners.
|
|
58
|
+
*
|
|
59
|
+
* The callback will receive the dropped file content as an object (parsed JSON).
|
|
60
|
+
*
|
|
61
|
+
* @param {(data:object)=>void} callback
|
|
62
|
+
*/
|
|
63
|
+
onFileJSONDropped(callback: IDroppedCallbackJSON): void;
|
|
64
|
+
/**
|
|
65
|
+
* Install the text file (MIME type text/plain) drop callback. Note than only one callback can be installed
|
|
66
|
+
* in this implementation. Calling this method multiple times will overwrite previously
|
|
67
|
+
* installed listeners.
|
|
68
|
+
*
|
|
69
|
+
* The callback will receive the dropped file content as a string.
|
|
70
|
+
*
|
|
71
|
+
* @param {(data:object)=>void} callback
|
|
72
|
+
*/
|
|
73
|
+
onFileTextDropped(callback: IDroppedCallbackText): void;
|
|
74
|
+
/**
|
|
75
|
+
* Internally handle a drop event.
|
|
76
|
+
*
|
|
77
|
+
* @param {DragEvent} event
|
|
78
|
+
* @returns {void}
|
|
79
|
+
*/
|
|
80
|
+
private handleDropEvent;
|
|
81
|
+
/**
|
|
82
|
+
* Toggles the drop sensitive element's opacity to 0.5.
|
|
83
|
+
*
|
|
84
|
+
* @param {DragEvent} event - The event.
|
|
85
|
+
*/
|
|
86
|
+
private handleDragOverEvent;
|
|
87
|
+
/**
|
|
88
|
+
* Restored the drop sensitive element's opacity back to 1.0.
|
|
89
|
+
*
|
|
90
|
+
* @param {DragEvent} event - The event.
|
|
91
|
+
*/
|
|
92
|
+
private handleDragLeaveEvent;
|
|
93
|
+
/**
|
|
94
|
+
* Removes all listeners (drop, dragover and dragleave).
|
|
95
|
+
*/
|
|
96
|
+
destroy(): void;
|
|
97
|
+
}
|
|
98
|
+
export {};
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A basic IO handler for file drop (Drag-and-drop).
|
|
3
|
+
*
|
|
4
|
+
* Example use:
|
|
5
|
+
* ```javascript
|
|
6
|
+
* var body = document.getElememtByTagName("body")[0];
|
|
7
|
+
* var fileDrop = new FileDrop(body);
|
|
8
|
+
* fileDrop.onFileJSONDropped(function (jsonObject) {
|
|
9
|
+
* console.log("jsonObject", jsonObject);
|
|
10
|
+
* });
|
|
11
|
+
* ```
|
|
12
|
+
*
|
|
13
|
+
* @author Ikaros Kappler
|
|
14
|
+
* @date 2021-10-13
|
|
15
|
+
* @modified 2022-01-31 (ported from the ngdg project, then generalized)
|
|
16
|
+
* @version 2.0.0
|
|
17
|
+
*/
|
|
18
|
+
export class FileDrop {
|
|
19
|
+
/**
|
|
20
|
+
*
|
|
21
|
+
* @param {HTMLElement} element - The element you wish to operate as the drop zone (like <body/>).
|
|
22
|
+
*/
|
|
23
|
+
constructor(element) {
|
|
24
|
+
/**
|
|
25
|
+
* Internally handle a drop event.
|
|
26
|
+
*
|
|
27
|
+
* @param {DragEvent} event
|
|
28
|
+
* @returns {void}
|
|
29
|
+
*/
|
|
30
|
+
this.handleDropEvent = (event) => {
|
|
31
|
+
event.preventDefault();
|
|
32
|
+
event.stopPropagation();
|
|
33
|
+
this.element.style.opacity = "1.0";
|
|
34
|
+
if (!event.dataTransfer.files || event.dataTransfer.files.length === 0) {
|
|
35
|
+
// No files were dropped
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
if (event.dataTransfer.files.length > 1) {
|
|
39
|
+
// Multiple file drop is not nupported
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
if (!this.fileDroppedCallbackJSON) {
|
|
43
|
+
// No handling callback defined.
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
if (event.dataTransfer.files[0]) {
|
|
47
|
+
const file = event.dataTransfer.files[0];
|
|
48
|
+
// console.log("file", file);
|
|
49
|
+
if (file.type.match(/json.*/) && this.fileDroppedCallbackJSON) {
|
|
50
|
+
var reader = new FileReader();
|
|
51
|
+
reader.onload = (readEvent) => {
|
|
52
|
+
// Finished reading file data.
|
|
53
|
+
const jsonObject = JSON.parse(readEvent.target.result);
|
|
54
|
+
// TODO: what happens on fail?
|
|
55
|
+
this.fileDroppedCallbackJSON(jsonObject);
|
|
56
|
+
};
|
|
57
|
+
reader.readAsText(file); // start reading the file data.
|
|
58
|
+
}
|
|
59
|
+
else if (file.type.match(/text\/plain.*/) && this.fileDroppedCallbackText) {
|
|
60
|
+
var reader = new FileReader();
|
|
61
|
+
reader.onload = (readEvent) => {
|
|
62
|
+
// Finished reading file data.
|
|
63
|
+
this.fileDroppedCallbackText(readEvent.target.result);
|
|
64
|
+
};
|
|
65
|
+
reader.readAsText(file); // start reading the file data.
|
|
66
|
+
}
|
|
67
|
+
else if (this.fileDroppedCallbackBinary) {
|
|
68
|
+
var reader = new FileReader();
|
|
69
|
+
reader.onload = (readEvent) => {
|
|
70
|
+
// Finished reading file data.
|
|
71
|
+
this.fileDroppedCallbackBinary(new Blob([readEvent.target.result]), file);
|
|
72
|
+
};
|
|
73
|
+
reader.readAsBinaryString(file); // start reading the file data.
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
/**
|
|
78
|
+
* Toggles the drop sensitive element's opacity to 0.5.
|
|
79
|
+
*
|
|
80
|
+
* @param {DragEvent} event - The event.
|
|
81
|
+
*/
|
|
82
|
+
this.handleDragOverEvent = (event) => {
|
|
83
|
+
event.preventDefault();
|
|
84
|
+
event.stopPropagation();
|
|
85
|
+
this.element.style.opacity = "0.5";
|
|
86
|
+
};
|
|
87
|
+
/**
|
|
88
|
+
* Restored the drop sensitive element's opacity back to 1.0.
|
|
89
|
+
*
|
|
90
|
+
* @param {DragEvent} event - The event.
|
|
91
|
+
*/
|
|
92
|
+
this.handleDragLeaveEvent = (event) => {
|
|
93
|
+
event.preventDefault();
|
|
94
|
+
event.stopPropagation();
|
|
95
|
+
this.element.style.opacity = "1.0";
|
|
96
|
+
};
|
|
97
|
+
this.element = element;
|
|
98
|
+
// Init the drop listeners
|
|
99
|
+
element.addEventListener("drop", this.handleDropEvent.bind(this));
|
|
100
|
+
element.addEventListener("dragover", this.handleDragOverEvent.bind(this));
|
|
101
|
+
element.addEventListener("dragleave", this.handleDragLeaveEvent.bind(this));
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Install the JSON (MIME type json*) file drop callback. Note than only one callback can be installed
|
|
105
|
+
* in this implementation. Calling this method multiple times will overwrite previously
|
|
106
|
+
* installed listeners.
|
|
107
|
+
*
|
|
108
|
+
* The callback will receive the dropped file content as an object (parsed JSON).
|
|
109
|
+
*
|
|
110
|
+
* @param {(data:object)=>void} callback
|
|
111
|
+
*/
|
|
112
|
+
onFileJSONDropped(callback) {
|
|
113
|
+
this.fileDroppedCallbackJSON = callback;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Install the text file (MIME type text/plain) drop callback. Note than only one callback can be installed
|
|
117
|
+
* in this implementation. Calling this method multiple times will overwrite previously
|
|
118
|
+
* installed listeners.
|
|
119
|
+
*
|
|
120
|
+
* The callback will receive the dropped file content as a string.
|
|
121
|
+
*
|
|
122
|
+
* @param {(data:object)=>void} callback
|
|
123
|
+
*/
|
|
124
|
+
onFileTextDropped(callback) {
|
|
125
|
+
this.fileDroppedCallbackText = callback;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Removes all listeners (drop, dragover and dragleave).
|
|
129
|
+
*/
|
|
130
|
+
destroy() {
|
|
131
|
+
this.element.removeEventListener("drop", this.handleDropEvent);
|
|
132
|
+
this.element.removeEventListener("dragover", this.handleDragOverEvent);
|
|
133
|
+
this.element.removeEventListener("dragleave", this.handleDragLeaveEvent);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
//# sourceMappingURL=FileDrop.js.map
|