plotboilerplate 1.18.0 → 1.20.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 +1 -1
- package/dist/index.esm.js +244 -63
- 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 +243 -74
- package/dist/plotboilerplate.min.js +1 -1
- package/package.json +1 -1
- package/src/cjs/Bounds.d.ts +14 -5
- package/src/cjs/Bounds.js +18 -8
- package/src/cjs/Bounds.js.map +1 -1
- package/src/cjs/CubicBezierCurve.d.ts +20 -3
- package/src/cjs/CubicBezierCurve.js +25 -2
- package/src/cjs/CubicBezierCurve.js.map +1 -1
- package/src/cjs/Line.d.ts +46 -4
- package/src/cjs/Line.js +60 -3
- package/src/cjs/Line.js.map +1 -1
- package/src/cjs/PlotBoilerplate.d.ts +5 -2
- package/src/cjs/PlotBoilerplate.js +52 -30
- package/src/cjs/PlotBoilerplate.js.map +1 -1
- package/src/cjs/Polygon.js +1 -1
- package/src/cjs/Polygon.js.map +1 -1
- package/src/cjs/VEllipseSector.d.ts +4 -3
- package/src/cjs/VEllipseSector.js +15 -8
- package/src/cjs/VEllipseSector.js.map +1 -1
- package/src/cjs/Vector.d.ts +14 -3
- package/src/cjs/Vector.js +21 -2
- package/src/cjs/Vector.js.map +1 -1
- package/src/cjs/Vertex.d.ts +33 -1
- package/src/cjs/Vertex.js +43 -1
- package/src/cjs/Vertex.js.map +1 -1
- package/src/cjs/drawutilssvg.d.ts +2 -1
- package/src/cjs/drawutilssvg.js +7 -19
- package/src/cjs/drawutilssvg.js.map +1 -1
- package/src/cjs/entry.js +1 -0
- package/src/cjs/interfaces/additionals.d.ts +95 -0
- package/src/cjs/interfaces/additionals.js +3 -0
- package/src/cjs/interfaces/additionals.js.map +1 -0
- package/src/cjs/interfaces/core.d.ts +7 -0
- package/src/cjs/interfaces/core.js +2 -0
- package/src/cjs/interfaces/core.js.map +1 -1
- package/src/cjs/interfaces/index.d.ts +1 -0
- package/src/cjs/interfaces/index.js +1 -0
- package/src/cjs/interfaces/index.js.map +1 -1
- package/src/cjs/utils/algorithms/arrayShuffle.d.ts +8 -0
- package/src/cjs/utils/algorithms/arrayShuffle.js +15 -0
- package/src/cjs/utils/algorithms/arrayShuffle.js.map +1 -0
- package/src/cjs/utils/algorithms/detectPaths.d.ts +21 -0
- package/src/cjs/utils/algorithms/detectPaths.js +169 -0
- package/src/cjs/utils/algorithms/detectPaths.js.map +1 -0
- package/src/cjs/utils/creategui.js +7 -0
- package/src/cjs/utils/datastructures/Color.d.ts +1 -1
- package/src/cjs/utils/datastructures/Color.js +4 -2
- package/src/cjs/utils/datastructures/Color.js.map +1 -1
- package/src/cjs/utils/datastructures/GenericPath.d.ts +75 -0
- package/src/cjs/utils/datastructures/GenericPath.js +105 -0
- package/src/cjs/utils/datastructures/GenericPath.js.map +1 -0
- package/src/cjs/utils/datastructures/GirihTile.d.ts +1 -1
- package/src/cjs/utils/io/FileDrop.d.ts +11 -1
- package/src/cjs/utils/io/FileDrop.js +41 -10
- package/src/cjs/utils/io/FileDrop.js.map +1 -1
- package/src/cjs/utils/parsers/svg/parseSVGPathData.d.ts +26 -0
- package/src/cjs/utils/parsers/svg/parseSVGPathData.js +463 -0
- package/src/cjs/utils/parsers/svg/parseSVGPathData.js.map +1 -0
- package/src/cjs/utils/parsers/svg/splitSVGPathData.d.ts +20 -0
- package/src/cjs/utils/parsers/svg/splitSVGPathData.js +49 -0
- package/src/cjs/utils/parsers/svg/splitSVGPathData.js.map +1 -0
- package/src/cjs/utils/parsers/svg/types.d.ts +43 -0
- package/src/cjs/utils/parsers/svg/types.js +16 -0
- package/src/cjs/utils/parsers/svg/types.js.map +1 -0
- package/src/esm/Bounds.d.ts +14 -5
- package/src/esm/Bounds.js +18 -8
- package/src/esm/Bounds.js.map +1 -1
- package/src/esm/CubicBezierCurve.d.ts +20 -3
- package/src/esm/CubicBezierCurve.js +25 -2
- package/src/esm/CubicBezierCurve.js.map +1 -1
- package/src/esm/Line.d.ts +46 -4
- package/src/esm/Line.js +60 -3
- package/src/esm/Line.js.map +1 -1
- package/src/esm/PlotBoilerplate.d.ts +5 -2
- package/src/esm/PlotBoilerplate.js +52 -30
- package/src/esm/PlotBoilerplate.js.map +1 -1
- package/src/esm/Polygon.js +1 -1
- package/src/esm/Polygon.js.map +1 -1
- package/src/esm/VEllipseSector.d.ts +4 -3
- package/src/esm/VEllipseSector.js +15 -8
- package/src/esm/VEllipseSector.js.map +1 -1
- package/src/esm/Vector.d.ts +13 -2
- package/src/esm/Vector.js +23 -4
- package/src/esm/Vector.js.map +1 -1
- package/src/esm/Vertex.d.ts +33 -1
- package/src/esm/Vertex.js +43 -1
- package/src/esm/Vertex.js.map +1 -1
- package/src/esm/drawutilssvg.d.ts +2 -1
- package/src/esm/drawutilssvg.js +7 -19
- package/src/esm/drawutilssvg.js.map +1 -1
- package/src/esm/entry.js +1 -0
- package/src/esm/interfaces/additionals.d.ts +95 -0
- package/src/esm/interfaces/additionals.js +2 -0
- package/src/esm/interfaces/additionals.js.map +1 -0
- package/src/esm/interfaces/core.d.ts +7 -0
- package/src/esm/interfaces/core.js +2 -0
- package/src/esm/interfaces/core.js.map +1 -1
- package/src/esm/interfaces/index.d.ts +1 -0
- package/src/esm/interfaces/index.js +1 -0
- package/src/esm/interfaces/index.js.map +1 -1
- package/src/esm/utils/algorithms/arrayShuffle.d.ts +8 -0
- package/src/esm/utils/algorithms/arrayShuffle.js +11 -0
- package/src/esm/utils/algorithms/arrayShuffle.js.map +1 -0
- package/src/esm/utils/algorithms/detectPaths.d.ts +21 -0
- package/src/esm/utils/algorithms/detectPaths.js +165 -0
- package/src/esm/utils/algorithms/detectPaths.js.map +1 -0
- package/src/esm/utils/datastructures/Color.d.ts +1 -1
- package/src/esm/utils/datastructures/Color.js +4 -2
- package/src/esm/utils/datastructures/Color.js.map +1 -1
- package/src/esm/utils/datastructures/GenericPath.d.ts +75 -0
- package/src/esm/utils/datastructures/GenericPath.js +100 -0
- package/src/esm/utils/datastructures/GenericPath.js.map +1 -0
- package/src/esm/utils/datastructures/GirihTile.d.ts +1 -1
- package/src/esm/utils/io/FileDrop.d.ts +11 -1
- package/src/esm/utils/io/FileDrop.js +41 -10
- package/src/esm/utils/io/FileDrop.js.map +1 -1
- package/src/esm/utils/parsers/svg/parseSVGPathData.d.ts +26 -0
- package/src/esm/utils/parsers/svg/parseSVGPathData.js +459 -0
- package/src/esm/utils/parsers/svg/parseSVGPathData.js.map +1 -0
- package/src/esm/utils/parsers/svg/splitSVGPathData.d.ts +20 -0
- package/src/esm/utils/parsers/svg/splitSVGPathData.js +45 -0
- package/src/esm/utils/parsers/svg/splitSVGPathData.js.map +1 -0
- package/src/esm/utils/parsers/svg/types.d.ts +43 -0
- package/src/esm/utils/parsers/svg/types.js +15 -0
- package/src/esm/utils/parsers/svg/types.js.map +1 -0
- package/src/ts/Bounds.ts +19 -8
- package/src/ts/CubicBezierCurve.ts +29 -4
- package/src/ts/Line.ts +70 -6
- package/src/ts/PlotBoilerplate.ts +57 -35
- package/src/ts/Polygon.ts +1 -1
- package/src/ts/VEllipseSector.ts +22 -15
- package/src/ts/Vector.ts +24 -4
- package/src/ts/Vertex.ts +46 -1
- package/src/ts/drawutilssvg.ts +8 -19
- package/src/ts/interfaces/additionals.ts +105 -0
- package/src/ts/interfaces/core.ts +5 -0
- package/src/ts/interfaces/index.ts +1 -0
- package/src/ts/utils/algorithms/arrayShuffle.ts +11 -0
- package/src/ts/utils/algorithms/detectPaths.ts +195 -0
- package/src/ts/utils/datastructures/Color.ts +8 -4
- package/src/ts/utils/datastructures/GenericPath.ts +113 -0
- package/src/ts/utils/datastructures/GirihTile.ts +1 -1
- package/src/ts/utils/io/FileDrop.ts +51 -10
- package/src/ts/utils/parsers/svg/parseSVGPathData.ts +572 -0
- package/src/ts/utils/parsers/svg/splitSVGPathData.ts +50 -0
- package/src/ts/utils/parsers/svg/types.ts +70 -0
- package/changelog.md +0 -731
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @author Ikaros Kappler
|
|
3
|
+
* @version 1.0.0
|
|
4
|
+
* @date 2022-10-17
|
|
5
|
+
*/
|
|
6
|
+
export class GenericPath {
|
|
7
|
+
constructor(startSegment) {
|
|
8
|
+
this.segments = [startSegment];
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Get the number of segments in this path.
|
|
12
|
+
*
|
|
13
|
+
* @method getSegmentCount
|
|
14
|
+
* @memberof Path
|
|
15
|
+
* @return {number} The number (integer) of path segments.
|
|
16
|
+
*/
|
|
17
|
+
getSegmentCount() {
|
|
18
|
+
return this.segments.length;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Get the path segment at the given index.
|
|
22
|
+
*
|
|
23
|
+
* @method getSegmentAt
|
|
24
|
+
* @memberof Path
|
|
25
|
+
* @return {PathSegment} The paths segment at the given index.
|
|
26
|
+
*/
|
|
27
|
+
getSegmentAt(index) {
|
|
28
|
+
return this.segments[index];
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Create a deep clone of this path.
|
|
32
|
+
*
|
|
33
|
+
* @method clone
|
|
34
|
+
* @memberof Path
|
|
35
|
+
* @return {Path} A deep clone/copy of this path.
|
|
36
|
+
*/
|
|
37
|
+
clone() {
|
|
38
|
+
const newPath = new GenericPath(this.segments[this.segments.length - 1].clone().reverse());
|
|
39
|
+
for (var i = this.segments.length - 2; i >= 0; i--) {
|
|
40
|
+
newPath.segments.push(this.segments[i].clone().reverse());
|
|
41
|
+
}
|
|
42
|
+
return newPath;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Reverse this path (swap start and end and thus – the direction) in-place.
|
|
46
|
+
*
|
|
47
|
+
* @method reverse
|
|
48
|
+
* @memberof Path
|
|
49
|
+
* @return {PathSegment} This path instance.
|
|
50
|
+
*/
|
|
51
|
+
reverse() {
|
|
52
|
+
const newSegments = [];
|
|
53
|
+
for (var i = this.segments.length - 1; i >= 0; i--) {
|
|
54
|
+
newSegments.push(this.segments[i].reverse());
|
|
55
|
+
}
|
|
56
|
+
this.segments = newSegments;
|
|
57
|
+
return this;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Get the start point of this path segment.
|
|
61
|
+
*
|
|
62
|
+
* @method getStartPoint
|
|
63
|
+
* @memberof PathSegment
|
|
64
|
+
* @return {Vertex} The start point of this path segment.
|
|
65
|
+
*/
|
|
66
|
+
getStartPoint() {
|
|
67
|
+
return this.segments[0].getStartPoint();
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Get the end point of this path segment.
|
|
71
|
+
*
|
|
72
|
+
* @method getEndPoint
|
|
73
|
+
* @memberof PathSegment
|
|
74
|
+
* @return {Vertex} The end point of this path segment.
|
|
75
|
+
*/
|
|
76
|
+
getEndPoint() {
|
|
77
|
+
return this.segments[this.segments.length - 1].getEndPoint();
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Get the tangent's end point at the start point of this segment.
|
|
81
|
+
*
|
|
82
|
+
* @method getStartTangent
|
|
83
|
+
* @memberof PathSegment
|
|
84
|
+
* @return {Vertex} The end point of the starting point's tangent.
|
|
85
|
+
*/
|
|
86
|
+
getStartTangent() {
|
|
87
|
+
return this.segments[0].getStartTangent();
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Get the tangent's end point at the end point of this segment.
|
|
91
|
+
*
|
|
92
|
+
* @method getEndTangent
|
|
93
|
+
* @memberof PathSegment
|
|
94
|
+
* @return {Vertex} The end point of the ending point's tangent.
|
|
95
|
+
*/
|
|
96
|
+
getEndTangent() {
|
|
97
|
+
return this.segments[this.segments.length - 1].getEndTangent();
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=GenericPath.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GenericPath.js","sourceRoot":"","sources":["../../../ts/utils/datastructures/GenericPath.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,MAAM,OAAO,WAAW;IAGtB,YAAY,YAAyB;QACnC,IAAI,CAAC,QAAQ,GAAG,CAAC,YAAY,CAAC,CAAC;IACjC,CAAC;IAED;;;;;;OAMG;IACH,eAAe;QACb,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;IAC9B,CAAC;IAED;;;;;;OAMG;IACH,YAAY,CAAC,KAAa;QACxB,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED;;;;;;OAMG;IACH,KAAK;QACH,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;QAC3F,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;YAClD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;SAC3D;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;;;OAMG;IACH,OAAO;QACL,MAAM,WAAW,GAAuB,EAAE,CAAC;QAC3C,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;YAClD,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;SAC9C;QACD,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;OAMG;IACH,aAAa;QACX,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;IAC1C,CAAC;IAED;;;;;;OAMG;IACH,WAAW;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAC/D,CAAC;IAED;;;;;;OAMG;IACH,eAAe;QACb,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC;IAC5C,CAAC;IAED;;;;;;OAMG;IACH,aAAa;QACX,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;IACjE,CAAC;CACF"}
|
|
@@ -225,7 +225,7 @@ export declare abstract class GirihTile extends Polygon {
|
|
|
225
225
|
* @param {Polygon} neighbourTile - The polygon (or tile) you want to find adjacency for at the specified edge.
|
|
226
226
|
* @return {Polygon|null} the passed tile itself if adjacency was found, null otherwise.
|
|
227
227
|
*/
|
|
228
|
-
transformTilePositionToAdjacency<P extends Polygon>(baseEdgeIndex: number, neighbourTile: P): P;
|
|
228
|
+
transformTilePositionToAdjacency<P extends Polygon>(baseEdgeIndex: number, neighbourTile: P): P | null;
|
|
229
229
|
/**
|
|
230
230
|
* Get the inner tile polygon at the given index.
|
|
231
231
|
* This function applies MOD to the index.
|
|
@@ -13,10 +13,12 @@
|
|
|
13
13
|
* @author Ikaros Kappler
|
|
14
14
|
* @date 2021-10-13
|
|
15
15
|
* @modified 2022-01-31 (ported from the ngdg project, then generalized)
|
|
16
|
-
* @
|
|
16
|
+
* @modified 2023-01-03 Fixing some minor type issues and adding SVG reading capabilities.
|
|
17
|
+
* @version 2.1.0
|
|
17
18
|
*/
|
|
18
19
|
declare type IDroppedCallbackJSON = (jsonData: object) => void;
|
|
19
20
|
declare type IDroppedCallbackText = (textData: string) => void;
|
|
21
|
+
declare type IDroppedCallbackSVG = (svgDocument: Document) => void;
|
|
20
22
|
export declare class FileDrop {
|
|
21
23
|
/**
|
|
22
24
|
* The 'dropzone' element.
|
|
@@ -46,6 +48,13 @@ export declare class FileDrop {
|
|
|
46
48
|
* @member {HTMLElement}
|
|
47
49
|
*/
|
|
48
50
|
private fileDroppedCallbackBinary;
|
|
51
|
+
/**
|
|
52
|
+
* The SVG file drop callback.
|
|
53
|
+
* @private
|
|
54
|
+
* @memberof FileDrop
|
|
55
|
+
* @member {HTMLElement}
|
|
56
|
+
*/
|
|
57
|
+
private fileDroppedCallbackSVG;
|
|
49
58
|
/**
|
|
50
59
|
*
|
|
51
60
|
* @param {HTMLElement} element - The element you wish to operate as the drop zone (like <body/>).
|
|
@@ -71,6 +80,7 @@ export declare class FileDrop {
|
|
|
71
80
|
* @param {(data:object)=>void} callback
|
|
72
81
|
*/
|
|
73
82
|
onFileTextDropped(callback: IDroppedCallbackText): void;
|
|
83
|
+
onFileSVGDropped(callback: IDroppedCallbackSVG): void;
|
|
74
84
|
/**
|
|
75
85
|
* Internally handle a drop event.
|
|
76
86
|
*
|
|
@@ -13,7 +13,8 @@
|
|
|
13
13
|
* @author Ikaros Kappler
|
|
14
14
|
* @date 2021-10-13
|
|
15
15
|
* @modified 2022-01-31 (ported from the ngdg project, then generalized)
|
|
16
|
-
* @
|
|
16
|
+
* @modified 2023-01-03 Fixing some minor type issues and adding SVG reading capabilities.
|
|
17
|
+
* @version 2.1.0
|
|
17
18
|
*/
|
|
18
19
|
export class FileDrop {
|
|
19
20
|
/**
|
|
@@ -31,7 +32,7 @@ export class FileDrop {
|
|
|
31
32
|
event.preventDefault();
|
|
32
33
|
event.stopPropagation();
|
|
33
34
|
this.element.style.opacity = "1.0";
|
|
34
|
-
if (!event.dataTransfer.files || event.dataTransfer.files.length === 0) {
|
|
35
|
+
if (!event.dataTransfer || !event.dataTransfer.files || event.dataTransfer.files.length === 0) {
|
|
35
36
|
// No files were dropped
|
|
36
37
|
return;
|
|
37
38
|
}
|
|
@@ -39,39 +40,66 @@ export class FileDrop {
|
|
|
39
40
|
// Multiple file drop is not nupported
|
|
40
41
|
return;
|
|
41
42
|
}
|
|
42
|
-
if (!this.fileDroppedCallbackJSON) {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
}
|
|
43
|
+
// if (!this.fileDroppedCallbackJSON) {
|
|
44
|
+
// // No handling callback defined.
|
|
45
|
+
// return;
|
|
46
|
+
// }
|
|
46
47
|
if (event.dataTransfer.files[0]) {
|
|
47
48
|
const file = event.dataTransfer.files[0];
|
|
48
49
|
// console.log("file", file);
|
|
49
|
-
if (file.type.match(/json.*/) && this.fileDroppedCallbackJSON) {
|
|
50
|
+
if (file.type.match(/json.*/) && this.fileDroppedCallbackJSON !== null) {
|
|
50
51
|
var reader = new FileReader();
|
|
51
52
|
reader.onload = (readEvent) => {
|
|
53
|
+
if (!readEvent.target) {
|
|
54
|
+
console.warn("Cannot process JSON ProgressEvent data: target is null.");
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
52
57
|
// Finished reading file data.
|
|
53
58
|
const jsonObject = JSON.parse(readEvent.target.result);
|
|
54
59
|
// TODO: what happens on fail?
|
|
55
|
-
this.fileDroppedCallbackJSON(jsonObject);
|
|
60
|
+
this.fileDroppedCallbackJSON && this.fileDroppedCallbackJSON(jsonObject);
|
|
56
61
|
};
|
|
57
62
|
reader.readAsText(file); // start reading the file data.
|
|
58
63
|
}
|
|
59
64
|
else if (file.type.match(/text\/plain.*/) && this.fileDroppedCallbackText) {
|
|
60
65
|
var reader = new FileReader();
|
|
61
66
|
reader.onload = (readEvent) => {
|
|
67
|
+
if (!readEvent.target) {
|
|
68
|
+
console.warn("Cannot process Text ProgressEvent data: target is null.");
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
62
71
|
// Finished reading file data.
|
|
63
|
-
this.fileDroppedCallbackText(readEvent.target.result);
|
|
72
|
+
this.fileDroppedCallbackText && this.fileDroppedCallbackText(readEvent.target.result);
|
|
64
73
|
};
|
|
65
74
|
reader.readAsText(file); // start reading the file data.
|
|
66
75
|
}
|
|
67
76
|
else if (this.fileDroppedCallbackBinary) {
|
|
68
77
|
var reader = new FileReader();
|
|
69
78
|
reader.onload = (readEvent) => {
|
|
79
|
+
if (!readEvent.target) {
|
|
80
|
+
console.warn("Cannot process Binary ProgressEvent data: target is null.");
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
70
83
|
// Finished reading file data.
|
|
71
|
-
this.fileDroppedCallbackBinary
|
|
84
|
+
this.fileDroppedCallbackBinary &&
|
|
85
|
+
this.fileDroppedCallbackBinary(new Blob([readEvent.target.result]), file);
|
|
72
86
|
};
|
|
73
87
|
reader.readAsBinaryString(file); // start reading the file data.
|
|
74
88
|
}
|
|
89
|
+
else if (this.fileDroppedCallbackSVG) {
|
|
90
|
+
var reader = new FileReader();
|
|
91
|
+
reader.onload = (readEvent) => {
|
|
92
|
+
if (!readEvent.target) {
|
|
93
|
+
console.warn("Cannot process SVG ProgressEvent data: target is null.");
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
const parser = new DOMParser();
|
|
97
|
+
const doc = parser.parseFromString(readEvent.target.result, "image/svg+xml");
|
|
98
|
+
// Finished reading file data.
|
|
99
|
+
this.fileDroppedCallbackSVG && this.fileDroppedCallbackSVG(doc);
|
|
100
|
+
};
|
|
101
|
+
reader.readAsText(file); // start reading the file data.
|
|
102
|
+
}
|
|
75
103
|
}
|
|
76
104
|
};
|
|
77
105
|
/**
|
|
@@ -124,6 +152,9 @@ export class FileDrop {
|
|
|
124
152
|
onFileTextDropped(callback) {
|
|
125
153
|
this.fileDroppedCallbackText = callback;
|
|
126
154
|
}
|
|
155
|
+
onFileSVGDropped(callback) {
|
|
156
|
+
this.fileDroppedCallbackSVG = callback;
|
|
157
|
+
}
|
|
127
158
|
/**
|
|
128
159
|
* Removes all listeners (drop, dragover and dragleave).
|
|
129
160
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileDrop.js","sourceRoot":"","sources":["../../../ts/utils/io/FileDrop.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"FileDrop.js","sourceRoot":"","sources":["../../../ts/utils/io/FileDrop.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parse SVG path data strings and convert to PlotBoilerplate path objects.
|
|
3
|
+
*
|
|
4
|
+
* As this parser function does not detect all possible path data strings it should cover the most daily use-cases.
|
|
5
|
+
*
|
|
6
|
+
* For more insight see
|
|
7
|
+
* https://www.w3.org/TR/SVG/paths.html
|
|
8
|
+
*
|
|
9
|
+
* @author Ikaros Kappler
|
|
10
|
+
* @date 2022-11-06
|
|
11
|
+
* @modified 2022-12-21 (winter solstice) Porting this to Typescript.
|
|
12
|
+
* @version 0.0.1-alpha
|
|
13
|
+
**/
|
|
14
|
+
import { CubicBezierCurve } from "../../../CubicBezierCurve";
|
|
15
|
+
import { Line } from "../../../Line";
|
|
16
|
+
/**
|
|
17
|
+
* Transform the given path data (translate and scale. rotating is not intended here).
|
|
18
|
+
*
|
|
19
|
+
* @date 2022-11-06
|
|
20
|
+
*
|
|
21
|
+
* @name parseSVGPathData
|
|
22
|
+
* @static
|
|
23
|
+
* @param {string} data - The data to parse.
|
|
24
|
+
* @return An array of straight line segments (Line) or curve segments (CubicBezierCurve) representing the path.
|
|
25
|
+
*/
|
|
26
|
+
export declare const parseSVGPathData: (dataString: string) => Array<Line | CubicBezierCurve> | null;
|