@rnacanvas/draw.bases.bonds 10.0.2

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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024 pzhaojohnson
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,16 @@
1
+ # Installation
2
+
3
+ With `npm`:
4
+
5
+ ```
6
+ npm install @rnacanvas/draw.bases.bonds
7
+ ```
8
+
9
+ # Usage
10
+
11
+ All exports of this package can be accessed as named imports.
12
+
13
+ ```javascript
14
+ // an example import
15
+ import { StraightBond } from '@rnacanvas/draw.bases.bonds';
16
+ ```
package/_config.yml ADDED
@@ -0,0 +1 @@
1
+ theme: jekyll-theme-minimal
@@ -0,0 +1,6 @@
1
+ module.exports = {
2
+ presets: [
3
+ ['@babel/preset-env', { targets: { node: 'current' } }],
4
+ '@babel/preset-typescript',
5
+ ],
6
+ };
@@ -0,0 +1,37 @@
1
+ interface StraightBond {
2
+ /**
3
+ * The DOM node corresponding to the straight bond.
4
+ */
5
+ domNode: Node;
6
+ /**
7
+ * Returns true if the straight bond is inverted and returns false otherwise.
8
+ */
9
+ isInverted(): boolean;
10
+ setAttribute(name: 'opacity', value: string): void;
11
+ }
12
+ /**
13
+ * A live collection of items that may change over time
14
+ * and whose contents are expected to always be up-to-date.
15
+ */
16
+ interface LiveCollection<T> extends Iterable<T> {
17
+ }
18
+ /**
19
+ * Automatically hides straight bonds that become inverted
20
+ * by setting their `opacity` attributes to zero.
21
+ *
22
+ * Also automatically unhides straight bonds that have stopped being inverted
23
+ * by setting their `opacity` attributes to one.
24
+ *
25
+ * This class will overwrite any previously set `opacity` attribute values on straight bonds.
26
+ */
27
+ export declare class InvertedStraightBondsHider {
28
+ private targetStraightBonds;
29
+ /**
30
+ * @param targetStraightBonds The straight bonds to hide when they become inverted.
31
+ * @param parentSVGDoc The SVG document that the target straight bonds are in.
32
+ */
33
+ constructor(targetStraightBonds: LiveCollection<StraightBond>, parentSVGDoc: SVGSVGElement);
34
+ private updateOpacities;
35
+ }
36
+ export {};
37
+ //# sourceMappingURL=InvertedStraightBondsHider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InvertedStraightBondsHider.d.ts","sourceRoot":"","sources":["../src/InvertedStraightBondsHider.ts"],"names":[],"mappings":"AAAA,UAAU,YAAY;IACpB;;OAEG;IACH,OAAO,EAAE,IAAI,CAAC;IAEd;;OAEG;IACH,UAAU,IAAI,OAAO,CAAC;IAEtB,YAAY,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACpD;AAED;;;GAGG;AACH,UAAU,cAAc,CAAC,CAAC,CAAE,SAAQ,QAAQ,CAAC,CAAC,CAAC;CAAG;AAElD;;;;;;;;GAQG;AACH,qBAAa,0BAA0B;IAKzB,OAAO,CAAC,mBAAmB;IAJvC;;;OAGG;gBACiB,mBAAmB,EAAE,cAAc,CAAC,YAAY,CAAC,EAAE,YAAY,EAAE,aAAa;IAUlG,OAAO,CAAC,eAAe;CAMxB"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * A two-dimensional point.
3
+ */
4
+ export type Point = {
5
+ x: number;
6
+ y: number;
7
+ };
8
+ /**
9
+ * The nucleobase interface used by bonds.
10
+ */
11
+ export interface Nucleobase {
12
+ readonly id: string;
13
+ readonly centerPoint: Point;
14
+ /**
15
+ * Allows one to listen for when the nucleobase moves (i.e., its center point changes).
16
+ */
17
+ addEventListener(eventName: 'move', listener: () => void): void;
18
+ }
19
+ //# sourceMappingURL=Nucleobase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Nucleobase.d.ts","sourceRoot":"","sources":["../src/Nucleobase.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,KAAK,GAAG;IAClB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAEpB,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC;IAE5B;;OAEG;IACH,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;CACjE"}
@@ -0,0 +1,26 @@
1
+ import type { StraightBond } from './StraightBond';
2
+ import type { Nucleobase } from './Nucleobase';
3
+ type NonNullObject = {
4
+ [name: string]: unknown;
5
+ };
6
+ /**
7
+ * Represents a straight bond that can be saved (e.g., in a file)
8
+ * for future drawing.
9
+ */
10
+ export declare class SavableStraightBond<B extends Nucleobase> {
11
+ #private;
12
+ /**
13
+ * @param straightBond A straight bond to wrap.
14
+ */
15
+ constructor(straightBond: StraightBond<B>);
16
+ /**
17
+ * Returns an object that can be serialized to a JSON string
18
+ * and that is the saved representation of the straight bond.
19
+ *
20
+ * Throws if the straight bond has a falsy ID
21
+ * or if base 1 or 2 of the straight bond has a falsy ID.
22
+ */
23
+ toJSONSerializable(): NonNullObject | never;
24
+ }
25
+ export {};
26
+ //# sourceMappingURL=SavableStraightBond.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SavableStraightBond.d.ts","sourceRoot":"","sources":["../src/SavableStraightBond.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,KAAK,aAAa,GAAG;IAAE,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAAC;AAEjD;;;GAGG;AACH,qBAAa,mBAAmB,CAAC,CAAC,SAAS,UAAU;;IAGnD;;OAEG;gBACS,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC;IAIzC;;;;;;OAMG;IACH,kBAAkB,IAAI,aAAa,GAAG,KAAK;CAkB5C"}
@@ -0,0 +1,36 @@
1
+ import { StraightBond } from './StraightBond';
2
+ import type { Nucleobase } from './Nucleobase';
3
+ type NonNullObject = {
4
+ [name: string]: unknown;
5
+ };
6
+ interface Drawing<B extends Nucleobase> {
7
+ /**
8
+ * The actual DOM node corresponding to the drawing and that is the drawing
9
+ * (in this case an SVG document).
10
+ */
11
+ readonly domNode: SVGSVGElement;
12
+ /**
13
+ * All nucleobases in the drawing.
14
+ */
15
+ readonly bases: Iterable<B>;
16
+ }
17
+ /**
18
+ * Represents a straight bond that has been saved (e.g., in a file)
19
+ * and that can be recreated.
20
+ */
21
+ export declare class SavedStraightBond<B extends Nucleobase> {
22
+ #private;
23
+ /**
24
+ * @param jsonSerializable The saved form of the straight bond (e.g., parsed from a file).
25
+ * @param parentDrawing
26
+ */
27
+ constructor(jsonSerializable: NonNullObject | unknown, parentDrawing: Drawing<B>);
28
+ /**
29
+ * Recreates the saved straight bond.
30
+ *
31
+ * Throws if unable to do so.
32
+ */
33
+ recreate(): StraightBond<B> | never;
34
+ }
35
+ export {};
36
+ //# sourceMappingURL=SavedStraightBond.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SavedStraightBond.d.ts","sourceRoot":"","sources":["../src/SavedStraightBond.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,KAAK,aAAa,GAAG;IAAE,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAAC;AAEjD,UAAU,OAAO,CAAC,CAAC,SAAS,UAAU;IACpC;;;OAGG;IACH,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAEhC;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;CAC7B;AAED;;;GAGG;AACH,qBAAa,iBAAiB,CAAC,CAAC,SAAS,UAAU;;IAKjD;;;OAGG;gBACS,gBAAgB,EAAE,aAAa,GAAG,OAAO,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC;IAgGhF;;;;OAIG;IACH,QAAQ,IAAI,YAAY,CAAC,CAAC,CAAC,GAAG,KAAK;CAQpC"}
@@ -0,0 +1,181 @@
1
+ import type { Nucleobase } from './Nucleobase';
2
+ /**
3
+ * A two-dimensional point.
4
+ */
5
+ export type Point = {
6
+ x: number;
7
+ y: number;
8
+ };
9
+ /**
10
+ * A bond that is a straight line between two bases.
11
+ */
12
+ export declare class StraightBond<B extends Nucleobase> {
13
+ private line;
14
+ readonly base1: B;
15
+ readonly base2: B;
16
+ /**
17
+ * Default values for newly created straight bonds.
18
+ */
19
+ static defaultValues: {
20
+ attributes: {
21
+ stroke: string;
22
+ 'stroke-width': string;
23
+ };
24
+ basePadding1: number;
25
+ basePadding2: number;
26
+ };
27
+ /**
28
+ * Creates a new straight bond connecting bases 1 and 2.
29
+ *
30
+ * Applies the default values contained in the `defaultValues` static property object
31
+ * to the newly created straight bond.
32
+ */
33
+ static between<B extends Nucleobase>(base1: B, base2: B): StraightBond<B>;
34
+ private cachedBasePadding1;
35
+ private cachedBasePadding2;
36
+ /**
37
+ * Note that this constructor will not apply any default values to the newly created straight bond.
38
+ *
39
+ * @param line The line element that is the straight bond.
40
+ * @param base1 Base 1 connected by the bond.
41
+ * @param base2 Base 2 connected by the bond.
42
+ */
43
+ constructor(line: SVGLineElement, base1: B, base2: B);
44
+ /**
45
+ * The two bases bound by the straight bond.
46
+ *
47
+ * In the returned base-pair, the two bases bound by the straight bond
48
+ * will be ordered base 1 and then base 2.
49
+ */
50
+ get basePair(): [B, B];
51
+ /**
52
+ * The actual DOM node of the line element that is the straight bond.
53
+ */
54
+ get domNode(): SVGLineElement;
55
+ /**
56
+ * Get an attribute of the line element that is the straight bond.
57
+ */
58
+ getAttribute(name: string): string | null;
59
+ /**
60
+ * Set an attribute of the line element that is the straight bond.
61
+ */
62
+ setAttribute(name: string, value: string): void;
63
+ /**
64
+ * This method is meant to receive as input an object of attribute values
65
+ * keyed by attribute name.
66
+ *
67
+ * Invalid inputs are ignored.
68
+ */
69
+ setAttributes(attributes: {
70
+ [name: string]: unknown;
71
+ } | unknown): void;
72
+ /**
73
+ * The `id` property of the line element that is the straight bond.
74
+ */
75
+ get id(): string;
76
+ /**
77
+ * Assigns a new UUID to the straight bond.
78
+ *
79
+ * (Overwrites any preexisting ID that the straight bond had.)
80
+ */
81
+ assignUUID(): void;
82
+ /**
83
+ * Appends the line element that is the straight bond to the given container node.
84
+ */
85
+ appendTo(container: Node): void;
86
+ /**
87
+ * Removes the line element that is the straight bond from its parent container node.
88
+ *
89
+ * Has no effect if the straight bond (line element) had no parent container node to begin with.
90
+ */
91
+ remove(): void;
92
+ /**
93
+ * Returns true if the line element that is the straight bond is a child (or grandchild, great-grandchild, etc.)
94
+ * of the given container node.
95
+ *
96
+ * Returns false otherwise, including if the given container node is the straight bond (line element) itself.
97
+ */
98
+ isIn(container: Node): boolean;
99
+ /**
100
+ * Returns true if the line element that is the straight bond is a child of any sort of parent container node.
101
+ *
102
+ * Returns false otherwise.
103
+ */
104
+ hasParent(): boolean;
105
+ /**
106
+ * The length of the line element that is the straight bond.
107
+ *
108
+ * Note that this method might throw if the straight bond has not been added to the document of the webpage.
109
+ */
110
+ getTotalLength(): number | never;
111
+ /**
112
+ * Get a point along the length of the straight bond (going from point 1 to point 2).
113
+ *
114
+ * Note that this method might throw if the straight bond has not been added to the document of the webpage.
115
+ */
116
+ getPointAtLength(length: number): Point | never;
117
+ /**
118
+ * The point connecting with base 1 of the straight bond.
119
+ */
120
+ get point1(): Point;
121
+ /**
122
+ * The point connecting with base 2 of the straight bond.
123
+ */
124
+ get point2(): Point;
125
+ /**
126
+ * The distance that point 1 is meant to be from base 1 of the straight bond.
127
+ *
128
+ * Note that this is not the same thing as the current distance between point 1 and base 1 of the straight bond.
129
+ *
130
+ * (This is to allow for proper repositioning of the straight bond after its bases have been moved.)
131
+ */
132
+ get basePadding1(): number;
133
+ /**
134
+ * Will reposition the straight bond.
135
+ */
136
+ set basePadding1(basePadding1: number);
137
+ /**
138
+ * Values that are not finite numbers are ignored.
139
+ *
140
+ * Negative values are clamped to zero.
141
+ */
142
+ setBasePadding1(basePadding1: number | unknown): void;
143
+ /**
144
+ * The distance that point 2 is meant to be from base 2 of the straight bond.
145
+ *
146
+ * Note that this is not the same thing as the current distance between point 2 and base 2 of the straight bond.
147
+ *
148
+ * (This is to allow for proper repositioning of the straight bond after its bases have been moved.)
149
+ */
150
+ get basePadding2(): number;
151
+ /**
152
+ * Will reposition the straight bond.
153
+ */
154
+ set basePadding2(basePadding2: number);
155
+ /**
156
+ * Values that are not finite numbers are ignored.
157
+ *
158
+ * Negative values are clamped to zero.
159
+ */
160
+ setBasePadding2(basePadding2: number | unknown): void;
161
+ /**
162
+ * Returns true if the sum of base paddings 1 and 2 is greater than
163
+ * the distance between the center points of bases 1 and 2 for the straight bond.
164
+ *
165
+ * Returns false otherwise.
166
+ */
167
+ isInverted(): boolean;
168
+ /**
169
+ * Sets values of the straight bond.
170
+ *
171
+ * Is supposed to receive as input an object of property values (keyed by property name).
172
+ *
173
+ * The input object can also contain an attributes child object (with key `attributes`).
174
+ */
175
+ set(values: unknown): void;
176
+ /**
177
+ * Repositions the straight bond based on the current positions of bases 1 and 2.
178
+ */
179
+ private reposition;
180
+ }
181
+ //# sourceMappingURL=StraightBond.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StraightBond.d.ts","sourceRoot":"","sources":["../src/StraightBond.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAU/C;;GAEG;AACH,MAAM,MAAM,KAAK,GAAG;IAClB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX,CAAC;AAYF;;GAEG;AACH,qBAAa,YAAY,CAAC,CAAC,SAAS,UAAU;IA2ChC,OAAO,CAAC,IAAI;IAAkB,QAAQ,CAAC,KAAK,EAAE,CAAC;IAAE,QAAQ,CAAC,KAAK,EAAE,CAAC;IA1C9E;;OAEG;IACH,MAAM,CAAC,aAAa;;;;;;;MAOlB;IAEF;;;;;OAKG;IACH,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,UAAU,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;IAczE,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,kBAAkB,CAAS;IAEnC;;;;;;OAMG;gBACiB,IAAI,EAAE,cAAc,EAAW,KAAK,EAAE,CAAC,EAAW,KAAK,EAAE,CAAC;IAQ9E;;;;;OAKG;IACH,IAAI,QAAQ,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAErB;IAED;;OAEG;IACH,IAAI,OAAO,mBAEV;IAED;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM;IAIzB;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAI/C;;;;;OAKG;IACH,aAAa,CAAC,UAAU,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,GAAG,OAAO,GAAG,IAAI;IAUtE;;OAEG;IACH,IAAI,EAAE,WAIL;IAED;;;;OAIG;IACH,UAAU,IAAI,IAAI;IAIlB;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,IAAI,GAAG,IAAI;IAI/B;;;;OAIG;IACH,MAAM,IAAI,IAAI;IAId;;;;;OAKG;IACH,IAAI,CAAC,SAAS,EAAE,IAAI,GAAG,OAAO;IAI9B;;;;OAIG;IACH,SAAS,IAAI,OAAO;IAIpB;;;;OAIG;IACH,cAAc,IAAI,MAAM,GAAG,KAAK;IAIhC;;;;OAIG;IACH,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,GAAG,KAAK;IAI/C;;OAEG;IACH,IAAI,MAAM,IAAI,KAAK,CAOlB;IAED;;OAEG;IACH,IAAI,MAAM,IAAI,KAAK,CAOlB;IAED;;;;;;OAMG;IACH,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED;;OAEG;IACH,IAAI,YAAY,CAAC,YAAY,EAPT,MAOS,EAG5B;IAED;;;;OAIG;IACH,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI;IASrD;;;;;;OAMG;IACH,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED;;OAEG;IACH,IAAI,YAAY,CAAC,YAAY,EAPT,MAOS,EAG5B;IAED;;;;OAIG;IACH,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI;IASrD;;;;;OAKG;IACH,UAAU,IAAI,OAAO;IAIrB;;;;;;OAMG;IACH,GAAG,CAAC,MAAM,EAAE,OAAO;IAYnB;;OAEG;IACH,OAAO,CAAC,UAAU;CAWnB"}
@@ -0,0 +1,11 @@
1
+ import { StraightBond } from './StraightBond';
2
+ export { StraightBond };
3
+ import type { Nucleobase } from './Nucleobase';
4
+ export type { Nucleobase };
5
+ import { SavableStraightBond } from './SavableStraightBond';
6
+ export { SavableStraightBond };
7
+ import { SavedStraightBond } from './SavedStraightBond';
8
+ export { SavedStraightBond };
9
+ import { InvertedStraightBondsHider } from './InvertedStraightBondsHider';
10
+ export { InvertedStraightBondsHider };
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,CAAC;AAExB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,YAAY,EAAE,UAAU,EAAE,CAAC;AAE3B,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,CAAC;AAE/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,CAAC;AAE7B,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,0BAA0B,EAAE,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1 @@
1
+ !function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports["draw.bases.bonds"]=e():t["draw.bases.bonds"]=e()}(this,(()=>(()=>{var t={726:function(t){var e;e=()=>(()=>{"use strict";var t={d:(e,n)=>{for(var r in n)t.o(n,r)&&!t.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:n[r]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};t.r(e),t.d(e,{CoordinateSystem:()=>l,HorizontalClientScaling:()=>d,InnerXML:()=>w,OuterXML:()=>_,Scaling:()=>c,VerticalClientScaling:()=>f,assignUUID:()=>u,bringToFront:()=>m,sendToBack:()=>p});const n={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};var r,i=new Uint8Array(16);function s(){if(!r&&!(r="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return r(i)}for(var o=[],h=0;h<256;++h)o.push((h+256).toString(16).slice(1));const a=function(t,e,r){if(n.randomUUID&&!e&&!t)return n.randomUUID();var i=(t=t||{}).random||(t.rng||s)();if(i[6]=15&i[6]|64,i[8]=63&i[8]|128,e){r=r||0;for(var h=0;h<16;++h)e[r+h]=i[h];return e}return function(t,e=0){return(o[t[e+0]]+o[t[e+1]]+o[t[e+2]]+o[t[e+3]]+"-"+o[t[e+4]]+o[t[e+5]]+"-"+o[t[e+6]]+o[t[e+7]]+"-"+o[t[e+8]]+o[t[e+9]]+"-"+o[t[e+10]]+o[t[e+11]]+o[t[e+12]]+o[t[e+13]]+o[t[e+14]]+o[t[e+15]]).toLowerCase()}(i)};function u(t){t.id="uuid-"+a()}class l{constructor(t){this.targetSVGDoc=t}get width(){return this.targetSVGDoc.viewBox.baseVal.width}get height(){return this.targetSVGDoc.viewBox.baseVal.height}get minX(){return this.targetSVGDoc.viewBox.baseVal.x}get maxX(){return this.minX+this.width}get minY(){return this.targetSVGDoc.viewBox.baseVal.y}get maxY(){return this.minY+this.height}get horizontalScaling(){return this.targetSVGDoc.width.baseVal.value/this.width}get verticalScaling(){return this.targetSVGDoc.height.baseVal.value/this.height}setScaling(t){this.targetSVGDoc.setAttribute("width",""+t*this.width),this.targetSVGDoc.setAttribute("height",""+t*this.height)}get clientWidth(){return this.targetSVGDoc.getBoundingClientRect().width}get clientHeight(){return this.targetSVGDoc.getBoundingClientRect().height}get horizontalClientScaling(){return this.clientWidth/this.width}get verticalClientScaling(){return this.clientHeight/this.height}get minClientX(){return this.targetSVGDoc.getBoundingClientRect().x}get minClientY(){return this.targetSVGDoc.getBoundingClientRect().y}fromClientX(t){return this.minX+(t-this.minClientX)/this.horizontalClientScaling}fromClientY(t){return this.minY+(t-this.minClientY)/this.verticalClientScaling}fromClientCoordinates(t,e){return[this.fromClientX(t),this.fromClientY(e)]}fromClientPoint(t){return{x:this.fromClientX(t.x),y:this.fromClientY(t.y)}}toClientX(t){return this.minClientX+this.horizontalClientScaling*(t-this.minX)}toClientY(t){return this.minClientY+this.verticalClientScaling*(t-this.minY)}toClientCoordinates(t,e){return[this.toClientX(t),this.toClientY(e)]}toClientPoint(t){return{x:this.toClientX(t.x),y:this.toClientY(t.y)}}}class c{constructor(t){this.targetSVGDoc=t}set(t){let e=this.targetSVGDoc.viewBox.baseVal;this.targetSVGDoc.setAttribute("width",t*e.width+"px"),this.targetSVGDoc.setAttribute("height",t*e.height+"px")}}class d{constructor(t){this.targetSVGDoc=t}get(){let t=this.targetSVGDoc.getBoundingClientRect(),e=this.targetSVGDoc.viewBox.baseVal;return t.width/e.width}}class f{constructor(t){this.targetSVGDoc=t}get(){let t=this.targetSVGDoc.getBoundingClientRect(),e=this.targetSVGDoc.viewBox.baseVal;return t.height/e.height}}function m(t){let e=t.parentNode;e&&e.appendChild(t)}function p(t){let e=t.parentNode;e&&e.prepend(t)}var y,g=function(t,e,n,r){if("a"===n&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!r:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?r:"a"===n?r.call(t):r?r.value:e.get(t)};class w{constructor(t){y.set(this,void 0),function(t,e,n){if("function"==typeof e||!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");e.set(t,n)}(this,y,t)}toString(){return g(this,y,"f").innerHTML}set(t){g(this,y,"f").innerHTML=t}}y=new WeakMap;var b,x=function(t,e,n,r){if("a"===n&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!r:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?r:"a"===n?r.call(t):r?r.value:e.get(t)};class _{constructor(t){b.set(this,void 0),function(t,e,n){if("function"==typeof e||!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");e.set(t,n)}(this,b,t)}toString(){return x(this,b,"f").outerHTML}set(t){let e=document.createElementNS("http://www.w3.org/2000/svg","svg");if(e.style.height="0px",document.body.append(e),e.innerHTML=t,!e.firstElementChild)throw new Error("Outer XML must encode an SVG element.");if(e.childNodes.length>1)throw new Error("Outer XML cannot encode multiple DOM nodes.");if(e.firstElementChild.tagName.toLowerCase()!=x(this,b,"f").tagName.toLowerCase())throw new Error("Outer XML must specify an SVG element with the same tag name as the target SVG element.");[...x(this,b,"f").attributes].forEach((t=>x(this,b,"f").removeAttribute(t.name))),[...e.firstElementChild.attributes].forEach((t=>x(this,b,"f").setAttribute(t.name,t.value))),x(this,b,"f").innerHTML=e.firstElementChild.innerHTML,e.remove()}}return b=new WeakMap,e})(),t.exports=e()},725:function(t){t.exports=(()=>{var t={986:function(t){t.exports=(()=>{"use strict";var t={d:(e,n)=>{for(var r in n)t.o(n,r)&&!t.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:n[r]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};function n(t){var e=0;return t.forEach((function(t){return e+=t})),e}function r(t){return n(t)/t.length}function i(t){t.sort((function(t,e){return t-e}))}t.r(e),t.d(e,{areWithin:()=>d,average:()=>r,degrees:()=>p,isBetweenExclusive:()=>c,isBetweenInclusive:()=>l,max:()=>u,mean:()=>r,median:()=>h,min:()=>a,radians:()=>y,sortNumbers:()=>i,sortNumbersAscending:()=>i,sortNumbersDescending:()=>f,sortedNumbers:()=>o,sortedNumbersAscending:()=>o,sortedNumbersDescending:()=>m,sum:()=>n});var s=function(t,e,n){if(n||2===arguments.length)for(var r,i=0,s=e.length;i<s;i++)!r&&i in e||(r||(r=Array.prototype.slice.call(e,0,i)),r[i]=e[i]);return t.concat(r||Array.prototype.slice.call(e))};function o(t){var e=s([],t,!0);return i(e),e}function h(t){if(0==t.length)return NaN;var e=o(t);if(e.length%2!=0)return e[Math.floor(e.length/2)];var n=e.length/2,i=n-1;return r([e[n],e[i]])}function a(t){if(0==t.length)return 1/0;var e=t[0];return t.slice(1).forEach((function(t){e=Math.min(e,t)})),e}function u(t){if(0==t.length)return-1/0;var e=t[0];return t.slice(1).forEach((function(t){e=Math.max(e,t)})),e}function l(t,e,n){return t>=e&&t<=n}function c(t,e,n){return t>e&&t<n}function d(t,e,n){return Math.abs(t-e)<=n}function f(t){i(t),t.reverse()}function m(t){var e=o(t);return e.reverse(),e}function p(t){return t*(180/Math.PI)}function y(t){return t*(Math.PI/180)}return e})()},854:function(t){t.exports=(()=>{"use strict";var t={d:(e,n)=>{for(var r in n)t.o(n,r)&&!t.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:n[r]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};function n(t){return"number"==typeof t}function r(t){return n(t)&&Number.isFinite(t)}function i(t){return n(t)&&!Number.isFinite(t)}function s(t){return r(t)&&t>0}function o(t){return r(t)&&t>=0}function h(t){return"string"==typeof t}function a(t){return null==t}function u(t){return"object"==typeof t&&null!==t}function l(t){return Array.isArray(t)}return t.r(e),t.d(e,{isArray:()=>l,isFiniteNumber:()=>r,isNonFiniteNumber:()=>i,isNonNegativeFiniteNumber:()=>o,isNonNullObject:()=>u,isNullish:()=>a,isNumber:()=>n,isPositiveFiniteNumber:()=>s,isString:()=>h}),e})()},30:function(t){t.exports=(()=>{"use strict";var t={d:(e,n)=>{for(var r in n)t.o(n,r)&&!t.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:n[r]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};function n(t){return Math.pow(Math.pow(t.x,2)+Math.pow(t.y,2),.5)}function r(t){return Math.atan2(t.y,t.x)}return t.r(e),t.d(e,{direction:()=>r,magnitude:()=>n}),e})()}},e={};function n(r){var i=e[r];if(void 0!==i)return i.exports;var s=e[r]={exports:{}};return t[r].call(s.exports,s,s.exports,n),s.exports}n.d=(t,e)=>{for(var r in e)n.o(e,r)&&!n.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},n.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),n.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var r={};return(()=>{"use strict";n.r(r),n.d(r,{areWithin:()=>h,centroid:()=>f,deepCopy:()=>s,direction:()=>c,displaced:()=>u,displacement:()=>a,distance:()=>o,isFinitePoint:()=>i,isPoint:()=>e,midpoint:()=>m});var t=n(854);function e(e){return(0,t.isNonNullObject)(e)&&(0,t.isNumber)(e.x)&&(0,t.isNumber)(e.y)}function i(n){return e(n)&&(0,t.isFiniteNumber)(n.x)&&(0,t.isFiniteNumber)(n.y)}function s(t){return{x:t.x,y:t.y}}function o(t,e){var n=e.x-t.x,r=e.y-t.y;return Math.pow(Math.pow(n,2)+Math.pow(r,2),.5)}function h(t,e,n){return o(t,e)<=n}function a(t,e){return{x:e.x-t.x,y:e.y-t.y}}function u(t,e){return{x:t.x+e.x,y:t.y+e.y}}var l=n(30);function c(t,e){return(0,l.direction)(a(t,e))}var d=n(986);function f(t){return{x:(0,d.mean)(t.map((function(t){return t.x}))),y:(0,d.mean)(t.map((function(t){return t.y})))}}function m(t,e){return f([t,e])}})(),r})()},854:function(t){t.exports=(()=>{"use strict";var t={d:(e,n)=>{for(var r in n)t.o(n,r)&&!t.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:n[r]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};function n(t){return"number"==typeof t}function r(t){return n(t)&&Number.isFinite(t)}function i(t){return n(t)&&!Number.isFinite(t)}function s(t){return r(t)&&t>0}function o(t){return r(t)&&t>=0}function h(t){return"string"==typeof t}function a(t){return null==t}function u(t){return"object"==typeof t&&null!==t}function l(t){return Array.isArray(t)}function c(t){return l(t)&&0==t.length}function d(t){return l(t)&&t.length>0}function f(t){return l(t)&&t.every(n)}function m(t){return f(t)&&t.length>0}function p(t){return l(t)&&t.every(r)}function y(t){return l(t)&&t.every(i)}function g(t){return l(t)&&t.every(h)}function w(t){return g(t)&&t.length>0}return t.r(e),t.d(e,{isArray:()=>l,isEmptyArray:()=>c,isFiniteNumber:()=>r,isFiniteNumbersArray:()=>p,isNonEmptyArray:()=>d,isNonEmptyNumbersArray:()=>m,isNonEmptyStringsArray:()=>w,isNonFiniteNumber:()=>i,isNonFiniteNumbersArray:()=>y,isNonNegativeFiniteNumber:()=>o,isNonNullObject:()=>u,isNullish:()=>a,isNumber:()=>n,isNumbersArray:()=>f,isPositiveFiniteNumber:()=>s,isString:()=>h,isStringsArray:()=>g}),e})()}},e={};function n(r){var i=e[r];if(void 0!==i)return i.exports;var s=e[r]={exports:{}};return t[r].call(s.exports,s,s.exports,n),s.exports}n.d=(t,e)=>{for(var r in e)n.o(e,r)&&!n.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},n.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),n.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var r={};return(()=>{"use strict";n.r(r),n.d(r,{InvertedStraightBondsHider:()=>nr,SavableStraightBond:()=>Vn,SavedStraightBond:()=>er,StraightBond:()=>In});var t={};n.r(t),n.d(t,{cx:()=>Lt,cy:()=>Ft,height:()=>zt,rx:()=>jt,ry:()=>kt,width:()=>Vt,x:()=>Dt,y:()=>It});var e={};n.r(e),n.d(e,{from:()=>Xt,to:()=>Gt});var i={};n.r(i),n.d(i,{MorphArray:()=>Qt,height:()=>te,width:()=>Kt,x:()=>Jt,y:()=>Zt});var s={};n.r(s),n.d(s,{array:()=>Ce,clear:()=>Te,move:()=>Pe,plot:()=>Ee,size:()=>je});var o={};n.r(o),n.d(o,{amove:()=>hn,ax:()=>sn,ay:()=>on,build:()=>an,center:()=>rn,cx:()=>en,cy:()=>nn,length:()=>Je,move:()=>tn,plain:()=>Qe,x:()=>Ze,y:()=>Ke});var h={};n.r(h),n.d(h,{dmove:()=>mn,dx:()=>pn,dy:()=>yn,height:()=>gn,move:()=>wn,size:()=>bn,width:()=>xn,x:()=>_n,y:()=>vn});const a={},u=[];function l(t,e){if(Array.isArray(t))for(const n of t)l(n,e);else if("object"!=typeof t)d(Object.getOwnPropertyNames(e)),a[t]=Object.assign(a[t]||{},e);else for(const e in t)l(e,t[e])}function c(t){return a[t]||{}}function d(t){u.push(...t)}function f(t,e){let n;const r=t.length,i=[];for(n=0;n<r;n++)i.push(e(t[n]));return i}function m(t){return t%360*Math.PI/180}function p(t){return t.charAt(0).toUpperCase()+t.slice(1)}function y(t,e,n,r){return null!=e&&null!=n||(r=r||t.bbox(),null==e?e=r.width/r.height*n:null==n&&(n=r.height/r.width*e)),{width:e,height:n}}function g(t,e){const n=t.origin;let r=null!=t.ox?t.ox:null!=t.originX?t.originX:"center",i=null!=t.oy?t.oy:null!=t.originY?t.originY:"center";null!=n&&([r,i]=Array.isArray(n)?n:"object"==typeof n?[n.x,n.y]:[n,n]);const s="string"==typeof r,o="string"==typeof i;if(s||o){const{height:t,width:n,x:h,y:a}=e.bbox();s&&(r=r.includes("left")?h:r.includes("right")?h+n:h+n/2),o&&(i=i.includes("top")?a:i.includes("bottom")?a+t:a+t/2)}return[r,i]}const w=new Set(["desc","metadata","title"]),b=t=>w.has(t.nodeName),x=(t,e,n={})=>{const r={...e};for(const t in r)r[t].valueOf()===n[t]&&delete r[t];Object.keys(r).length?t.node.setAttribute("data-svgjs",JSON.stringify(r)):(t.node.removeAttribute("data-svgjs"),t.node.removeAttribute("svgjs:data"))},_="http://www.w3.org/2000/svg",v="http://www.w3.org/2000/xmlns/",S="http://www.w3.org/1999/xlink",M={window:"undefined"==typeof window?null:window,document:"undefined"==typeof document?null:document};class N{}const O={},A="___SYMBOL___ROOT___";function C(t,e=_){return M.document.createElementNS(e,t)}function T(t,e=!1){if(t instanceof N)return t;if("object"==typeof t)return j(t);if(null==t)return new O[A];if("string"==typeof t&&"<"!==t.charAt(0))return j(M.document.querySelector(t));const n=e?M.document.createElement("div"):C("svg");return n.innerHTML=t,t=j(n.firstChild),n.removeChild(n.firstChild),t}function P(t,e){return e&&(e instanceof M.window.Node||e.ownerDocument&&e instanceof e.ownerDocument.defaultView.Node)?e:C(t)}function E(t){if(!t)return null;if(t.instance instanceof N)return t.instance;if("#document-fragment"===t.nodeName)return new O.Fragment(t);let e=p(t.nodeName||"Dom");return"LinearGradient"===e||"RadialGradient"===e?e="Gradient":O[e]||(e="Dom"),new O[e](t)}let j=E;function k(t,e=t.name,n=!1){return O[e]=t,n&&(O[A]=t),d(Object.getOwnPropertyNames(t.prototype)),t}let D=1e3;function I(t){return"Svgjs"+p(t)+D++}function L(t){for(let e=t.children.length-1;e>=0;e--)L(t.children[e]);return t.id?(t.id=I(t.nodeName),t):t}function F(t,e){let n,r;for(r=(t=Array.isArray(t)?t:[t]).length-1;r>=0;r--)for(n in e)t[r].prototype[n]=e[n]}function V(t){return function(...e){const n=e[e.length-1];return!n||n.constructor!==Object||n instanceof Array?t.apply(this,e):t.apply(this,e.slice(0,-1)).attr(n)}}l("Dom",{siblings:function(){return this.parent().children()},position:function(){return this.parent().index(this)},next:function(){return this.siblings()[this.position()+1]},prev:function(){return this.siblings()[this.position()-1]},forward:function(){const t=this.position();return this.parent().add(this.remove(),t+1),this},backward:function(){const t=this.position();return this.parent().add(this.remove(),t?t-1:0),this},front:function(){return this.parent().add(this.remove()),this},back:function(){return this.parent().add(this.remove(),0),this},before:function(t){(t=T(t)).remove();const e=this.position();return this.parent().add(t,e),this},after:function(t){(t=T(t)).remove();const e=this.position();return this.parent().add(t,e+1),this},insertBefore:function(t){return(t=T(t)).before(this),this},insertAfter:function(t){return(t=T(t)).after(this),this}});const z=/^([+-]?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?)([a-z%]*)$/i,R=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i,B=/rgb\((\d+),(\d+),(\d+)\)/,q=/(#[a-z_][a-z0-9\-_]*)/i,X=/\)\s*,?\s*/,G=/\s/g,Y=/^#[a-f0-9]{3}$|^#[a-f0-9]{6}$/i,H=/^rgb\(/,U=/^(\s+)?$/,$=/^[+-]?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,W=/\.(jpg|jpeg|png|gif|svg)(\?[^=]+.*)?/i,Q=/[\s,]+/,J=/[MLHVCSQTAZ]/i;function Z(t){const e=Math.round(t),n=Math.max(0,Math.min(255,e)).toString(16);return 1===n.length?"0"+n:n}function K(t,e){for(let n=e.length;n--;)if(null==t[e[n]])return!1;return!0}function tt(t,e,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?t+6*(e-t)*n:n<.5?e:n<2/3?t+(e-t)*(2/3-n)*6:t}l("Dom",{classes:function(){const t=this.attr("class");return null==t?[]:t.trim().split(Q)},hasClass:function(t){return-1!==this.classes().indexOf(t)},addClass:function(t){if(!this.hasClass(t)){const e=this.classes();e.push(t),this.attr("class",e.join(" "))}return this},removeClass:function(t){return this.hasClass(t)&&this.attr("class",this.classes().filter((function(e){return e!==t})).join(" ")),this},toggleClass:function(t){return this.hasClass(t)?this.removeClass(t):this.addClass(t)}}),l("Dom",{css:function(t,e){const n={};if(0===arguments.length)return this.node.style.cssText.split(/\s*;\s*/).filter((function(t){return!!t.length})).forEach((function(t){const e=t.split(/\s*:\s*/);n[e[0]]=e[1]})),n;if(arguments.length<2){if(Array.isArray(t)){for(const e of t){const t=e;n[e]=this.node.style.getPropertyValue(t)}return n}if("string"==typeof t)return this.node.style.getPropertyValue(t);if("object"==typeof t)for(const e in t)this.node.style.setProperty(e,null==t[e]||U.test(t[e])?"":t[e])}return 2===arguments.length&&this.node.style.setProperty(t,null==e||U.test(e)?"":e),this},show:function(){return this.css("display","")},hide:function(){return this.css("display","none")},visible:function(){return"none"!==this.css("display")}}),l("Dom",{data:function(t,e,n){if(null==t)return this.data(f(function(t){let e;const n=t.length,r=[];for(e=0;e<n;e++)0===t[e].nodeName.indexOf("data-")&&r.push(t[e]);return r}(this.node.attributes),(t=>t.nodeName.slice(5))));if(t instanceof Array){const e={};for(const n of t)e[n]=this.data(n);return e}if("object"==typeof t)for(e in t)this.data(e,t[e]);else if(arguments.length<2)try{return JSON.parse(this.attr("data-"+t))}catch(e){return this.attr("data-"+t)}else this.attr("data-"+t,null===e?null:!0===n||"string"==typeof e||"number"==typeof e?e:JSON.stringify(e));return this}}),l("Dom",{remember:function(t,e){if("object"==typeof arguments[0])for(const e in t)this.remember(e,t[e]);else{if(1===arguments.length)return this.memory()[t];this.memory()[t]=e}return this},forget:function(){if(0===arguments.length)this._memory={};else for(let t=arguments.length-1;t>=0;t--)delete this.memory()[arguments[t]];return this},memory:function(){return this._memory=this._memory||{}}});class et{constructor(...t){this.init(...t)}static isColor(t){return t&&(t instanceof et||this.isRgb(t)||this.test(t))}static isRgb(t){return t&&"number"==typeof t.r&&"number"==typeof t.g&&"number"==typeof t.b}static random(t="vibrant",e){const{random:n,round:r,sin:i,PI:s}=Math;if("vibrant"===t){const t=24*n()+57,e=38*n()+45,r=360*n();return new et(t,e,r,"lch")}if("sine"===t){const t=r(80*i(2*s*(e=null==e?n():e)/.5+.01)+150),o=r(50*i(2*s*e/.5+4.6)+200),h=r(100*i(2*s*e/.5+2.3)+150);return new et(t,o,h)}if("pastel"===t){const t=8*n()+86,e=17*n()+9,r=360*n();return new et(t,e,r,"lch")}if("dark"===t){const t=10+10*n(),e=50*n()+86,r=360*n();return new et(t,e,r,"lch")}if("rgb"===t){const t=255*n(),e=255*n(),r=255*n();return new et(t,e,r)}if("lab"===t){const t=100*n(),e=256*n()-128,r=256*n()-128;return new et(t,e,r,"lab")}if("grey"===t){const t=255*n();return new et(t,t,t)}throw new Error("Unsupported random color mode")}static test(t){return"string"==typeof t&&(Y.test(t)||H.test(t))}cmyk(){const{_a:t,_b:e,_c:n}=this.rgb(),[r,i,s]=[t,e,n].map((t=>t/255)),o=Math.min(1-r,1-i,1-s);return 1===o?new et(0,0,0,1,"cmyk"):new et((1-r-o)/(1-o),(1-i-o)/(1-o),(1-s-o)/(1-o),o,"cmyk")}hsl(){const{_a:t,_b:e,_c:n}=this.rgb(),[r,i,s]=[t,e,n].map((t=>t/255)),o=Math.max(r,i,s),h=Math.min(r,i,s),a=(o+h)/2,u=o===h,l=o-h;return new et(360*(u?0:o===r?((i-s)/l+(i<s?6:0))/6:o===i?((s-r)/l+2)/6:o===s?((r-i)/l+4)/6:0),100*(u?0:a>.5?l/(2-o-h):l/(o+h)),100*a,"hsl")}init(t=0,e=0,n=0,r=0,i="rgb"){if(t=t||0,this.space)for(const t in this.space)delete this[this.space[t]];if("number"==typeof t)i="string"==typeof r?r:i,r="string"==typeof r?0:r,Object.assign(this,{_a:t,_b:e,_c:n,_d:r,space:i});else if(t instanceof Array)this.space=e||("string"==typeof t[3]?t[3]:t[4])||"rgb",Object.assign(this,{_a:t[0],_b:t[1],_c:t[2],_d:t[3]||0});else if(t instanceof Object){const n=function(t,e){const n=K(t,"rgb")?{_a:t.r,_b:t.g,_c:t.b,_d:0,space:"rgb"}:K(t,"xyz")?{_a:t.x,_b:t.y,_c:t.z,_d:0,space:"xyz"}:K(t,"hsl")?{_a:t.h,_b:t.s,_c:t.l,_d:0,space:"hsl"}:K(t,"lab")?{_a:t.l,_b:t.a,_c:t.b,_d:0,space:"lab"}:K(t,"lch")?{_a:t.l,_b:t.c,_c:t.h,_d:0,space:"lch"}:K(t,"cmyk")?{_a:t.c,_b:t.m,_c:t.y,_d:t.k,space:"cmyk"}:{_a:0,_b:0,_c:0,space:"rgb"};return n.space=e||n.space,n}(t,e);Object.assign(this,n)}else if("string"==typeof t)if(H.test(t)){const e=t.replace(G,""),[n,r,i]=B.exec(e).slice(1,4).map((t=>parseInt(t)));Object.assign(this,{_a:n,_b:r,_c:i,_d:0,space:"rgb"})}else{if(!Y.test(t))throw Error("Unsupported string format, can't construct Color");{const e=t=>parseInt(t,16),[,n,r,i]=R.exec(function(t){return 4===t.length?["#",t.substring(1,2),t.substring(1,2),t.substring(2,3),t.substring(2,3),t.substring(3,4),t.substring(3,4)].join(""):t}(t)).map(e);Object.assign(this,{_a:n,_b:r,_c:i,_d:0,space:"rgb"})}}const{_a:s,_b:o,_c:h,_d:a}=this,u="rgb"===this.space?{r:s,g:o,b:h}:"xyz"===this.space?{x:s,y:o,z:h}:"hsl"===this.space?{h:s,s:o,l:h}:"lab"===this.space?{l:s,a:o,b:h}:"lch"===this.space?{l:s,c:o,h}:"cmyk"===this.space?{c:s,m:o,y:h,k:a}:{};Object.assign(this,u)}lab(){const{x:t,y:e,z:n}=this.xyz();return new et(116*e-16,500*(t-e),200*(e-n),"lab")}lch(){const{l:t,a:e,b:n}=this.lab(),r=Math.sqrt(e**2+n**2);let i=180*Math.atan2(n,e)/Math.PI;return i<0&&(i*=-1,i=360-i),new et(t,r,i,"lch")}rgb(){if("rgb"===this.space)return this;if("lab"===(t=this.space)||"xyz"===t||"lch"===t){let{x:t,y:e,z:n}=this;if("lab"===this.space||"lch"===this.space){let{l:r,a:i,b:s}=this;if("lch"===this.space){const{c:t,h:e}=this,n=Math.PI/180;i=t*Math.cos(n*e),s=t*Math.sin(n*e)}const o=(r+16)/116,h=i/500+o,a=o-s/200,u=16/116,l=.008856,c=7.787;t=.95047*(h**3>l?h**3:(h-u)/c),e=1*(o**3>l?o**3:(o-u)/c),n=1.08883*(a**3>l?a**3:(a-u)/c)}const r=3.2406*t+-1.5372*e+-.4986*n,i=-.9689*t+1.8758*e+.0415*n,s=.0557*t+-.204*e+1.057*n,o=Math.pow,h=.0031308,a=r>h?1.055*o(r,1/2.4)-.055:12.92*r,u=i>h?1.055*o(i,1/2.4)-.055:12.92*i,l=s>h?1.055*o(s,1/2.4)-.055:12.92*s;return new et(255*a,255*u,255*l)}if("hsl"===this.space){let{h:t,s:e,l:n}=this;if(t/=360,e/=100,n/=100,0===e)return n*=255,new et(n,n,n);const r=n<.5?n*(1+e):n+e-n*e,i=2*n-r,s=255*tt(i,r,t+1/3),o=255*tt(i,r,t),h=255*tt(i,r,t-1/3);return new et(s,o,h)}if("cmyk"===this.space){const{c:t,m:e,y:n,k:r}=this,i=255*(1-Math.min(1,t*(1-r)+r)),s=255*(1-Math.min(1,e*(1-r)+r)),o=255*(1-Math.min(1,n*(1-r)+r));return new et(i,s,o)}return this;var t}toArray(){const{_a:t,_b:e,_c:n,_d:r,space:i}=this;return[t,e,n,r,i]}toHex(){const[t,e,n]=this._clamped().map(Z);return`#${t}${e}${n}`}toRgb(){const[t,e,n]=this._clamped();return`rgb(${t},${e},${n})`}toString(){return this.toHex()}xyz(){const{_a:t,_b:e,_c:n}=this.rgb(),[r,i,s]=[t,e,n].map((t=>t/255)),o=r>.04045?Math.pow((r+.055)/1.055,2.4):r/12.92,h=i>.04045?Math.pow((i+.055)/1.055,2.4):i/12.92,a=s>.04045?Math.pow((s+.055)/1.055,2.4):s/12.92,u=(.4124*o+.3576*h+.1805*a)/.95047,l=(.2126*o+.7152*h+.0722*a)/1,c=(.0193*o+.1192*h+.9505*a)/1.08883,d=u>.008856?Math.pow(u,1/3):7.787*u+16/116,f=l>.008856?Math.pow(l,1/3):7.787*l+16/116,m=c>.008856?Math.pow(c,1/3):7.787*c+16/116;return new et(d,f,m,"xyz")}_clamped(){const{_a:t,_b:e,_c:n}=this.rgb(),{max:r,min:i,round:s}=Math;return[t,e,n].map((t=>r(0,i(s(t),255))))}}class nt{constructor(...t){this.init(...t)}clone(){return new nt(this)}init(t,e){const n=Array.isArray(t)?{x:t[0],y:t[1]}:"object"==typeof t?{x:t.x,y:t.y}:{x:t,y:e};return this.x=null==n.x?0:n.x,this.y=null==n.y?0:n.y,this}toArray(){return[this.x,this.y]}transform(t){return this.clone().transformO(t)}transformO(t){it.isMatrixLike(t)||(t=new it(t));const{x:e,y:n}=this;return this.x=t.a*e+t.c*n+t.e,this.y=t.b*e+t.d*n+t.f,this}}function rt(t,e,n){return Math.abs(e-t)<(n||1e-6)}class it{constructor(...t){this.init(...t)}static formatTransforms(t){const e="both"===t.flip||!0===t.flip,n=t.flip&&(e||"x"===t.flip)?-1:1,r=t.flip&&(e||"y"===t.flip)?-1:1,i=t.skew&&t.skew.length?t.skew[0]:isFinite(t.skew)?t.skew:isFinite(t.skewX)?t.skewX:0,s=t.skew&&t.skew.length?t.skew[1]:isFinite(t.skew)?t.skew:isFinite(t.skewY)?t.skewY:0,o=t.scale&&t.scale.length?t.scale[0]*n:isFinite(t.scale)?t.scale*n:isFinite(t.scaleX)?t.scaleX*n:n,h=t.scale&&t.scale.length?t.scale[1]*r:isFinite(t.scale)?t.scale*r:isFinite(t.scaleY)?t.scaleY*r:r,a=t.shear||0,u=t.rotate||t.theta||0,l=new nt(t.origin||t.around||t.ox||t.originX,t.oy||t.originY),c=l.x,d=l.y,f=new nt(t.position||t.px||t.positionX||NaN,t.py||t.positionY||NaN),m=f.x,p=f.y,y=new nt(t.translate||t.tx||t.translateX,t.ty||t.translateY),g=y.x,w=y.y,b=new nt(t.relative||t.rx||t.relativeX,t.ry||t.relativeY);return{scaleX:o,scaleY:h,skewX:i,skewY:s,shear:a,theta:u,rx:b.x,ry:b.y,tx:g,ty:w,ox:c,oy:d,px:m,py:p}}static fromArray(t){return{a:t[0],b:t[1],c:t[2],d:t[3],e:t[4],f:t[5]}}static isMatrixLike(t){return null!=t.a||null!=t.b||null!=t.c||null!=t.d||null!=t.e||null!=t.f}static matrixMultiply(t,e,n){const r=t.a*e.a+t.c*e.b,i=t.b*e.a+t.d*e.b,s=t.a*e.c+t.c*e.d,o=t.b*e.c+t.d*e.d,h=t.e+t.a*e.e+t.c*e.f,a=t.f+t.b*e.e+t.d*e.f;return n.a=r,n.b=i,n.c=s,n.d=o,n.e=h,n.f=a,n}around(t,e,n){return this.clone().aroundO(t,e,n)}aroundO(t,e,n){const r=t||0,i=e||0;return this.translateO(-r,-i).lmultiplyO(n).translateO(r,i)}clone(){return new it(this)}decompose(t=0,e=0){const n=this.a,r=this.b,i=this.c,s=this.d,o=this.e,h=this.f,a=n*s-r*i,u=a>0?1:-1,l=u*Math.sqrt(n*n+r*r),c=Math.atan2(u*r,u*n),d=180/Math.PI*c,f=Math.cos(c),m=Math.sin(c),p=(n*i+r*s)/a,y=i*l/(p*n-r)||s*l/(p*r+n);return{scaleX:l,scaleY:y,shear:p,rotate:d,translateX:o-t+t*f*l+e*(p*f*l-m*y),translateY:h-e+t*m*l+e*(p*m*l+f*y),originX:t,originY:e,a:this.a,b:this.b,c:this.c,d:this.d,e:this.e,f:this.f}}equals(t){if(t===this)return!0;const e=new it(t);return rt(this.a,e.a)&&rt(this.b,e.b)&&rt(this.c,e.c)&&rt(this.d,e.d)&&rt(this.e,e.e)&&rt(this.f,e.f)}flip(t,e){return this.clone().flipO(t,e)}flipO(t,e){return"x"===t?this.scaleO(-1,1,e,0):"y"===t?this.scaleO(1,-1,0,e):this.scaleO(-1,-1,t,e||t)}init(t){const e=it.fromArray([1,0,0,1,0,0]);return t=t instanceof At?t.matrixify():"string"==typeof t?it.fromArray(t.split(Q).map(parseFloat)):Array.isArray(t)?it.fromArray(t):"object"==typeof t&&it.isMatrixLike(t)?t:"object"==typeof t?(new it).transform(t):6===arguments.length?it.fromArray([].slice.call(arguments)):e,this.a=null!=t.a?t.a:e.a,this.b=null!=t.b?t.b:e.b,this.c=null!=t.c?t.c:e.c,this.d=null!=t.d?t.d:e.d,this.e=null!=t.e?t.e:e.e,this.f=null!=t.f?t.f:e.f,this}inverse(){return this.clone().inverseO()}inverseO(){const t=this.a,e=this.b,n=this.c,r=this.d,i=this.e,s=this.f,o=t*r-e*n;if(!o)throw new Error("Cannot invert "+this);const h=r/o,a=-e/o,u=-n/o,l=t/o,c=-(h*i+u*s),d=-(a*i+l*s);return this.a=h,this.b=a,this.c=u,this.d=l,this.e=c,this.f=d,this}lmultiply(t){return this.clone().lmultiplyO(t)}lmultiplyO(t){const e=t instanceof it?t:new it(t);return it.matrixMultiply(e,this,this)}multiply(t){return this.clone().multiplyO(t)}multiplyO(t){const e=t instanceof it?t:new it(t);return it.matrixMultiply(this,e,this)}rotate(t,e,n){return this.clone().rotateO(t,e,n)}rotateO(t,e=0,n=0){t=m(t);const r=Math.cos(t),i=Math.sin(t),{a:s,b:o,c:h,d:a,e:u,f:l}=this;return this.a=s*r-o*i,this.b=o*r+s*i,this.c=h*r-a*i,this.d=a*r+h*i,this.e=u*r-l*i+n*i-e*r+e,this.f=l*r+u*i-e*i-n*r+n,this}scale(){return this.clone().scaleO(...arguments)}scaleO(t,e=t,n=0,r=0){3===arguments.length&&(r=n,n=e,e=t);const{a:i,b:s,c:o,d:h,e:a,f:u}=this;return this.a=i*t,this.b=s*e,this.c=o*t,this.d=h*e,this.e=a*t-n*t+n,this.f=u*e-r*e+r,this}shear(t,e,n){return this.clone().shearO(t,e,n)}shearO(t,e=0,n=0){const{a:r,b:i,c:s,d:o,e:h,f:a}=this;return this.a=r+i*t,this.c=s+o*t,this.e=h+a*t-n*t,this}skew(){return this.clone().skewO(...arguments)}skewO(t,e=t,n=0,r=0){3===arguments.length&&(r=n,n=e,e=t),t=m(t),e=m(e);const i=Math.tan(t),s=Math.tan(e),{a:o,b:h,c:a,d:u,e:l,f:c}=this;return this.a=o+h*i,this.b=h+o*s,this.c=a+u*i,this.d=u+a*s,this.e=l+c*i-r*i,this.f=c+l*s-n*s,this}skewX(t,e,n){return this.skew(t,0,e,n)}skewY(t,e,n){return this.skew(0,t,e,n)}toArray(){return[this.a,this.b,this.c,this.d,this.e,this.f]}toString(){return"matrix("+this.a+","+this.b+","+this.c+","+this.d+","+this.e+","+this.f+")"}transform(t){if(it.isMatrixLike(t))return new it(t).multiplyO(this);const e=it.formatTransforms(t),{x:n,y:r}=new nt(e.ox,e.oy).transform(this),i=(new it).translateO(e.rx,e.ry).lmultiplyO(this).translateO(-n,-r).scaleO(e.scaleX,e.scaleY).skewO(e.skewX,e.skewY).shearO(e.shear).rotateO(e.theta).translateO(n,r);if(isFinite(e.px)||isFinite(e.py)){const t=new nt(n,r).transform(i),s=isFinite(e.px)?e.px-t.x:0,o=isFinite(e.py)?e.py-t.y:0;i.translateO(s,o)}return i.translateO(e.tx,e.ty),i}translate(t,e){return this.clone().translateO(t,e)}translateO(t,e){return this.e+=t||0,this.f+=e||0,this}valueOf(){return{a:this.a,b:this.b,c:this.c,d:this.d,e:this.e,f:this.f}}}function st(){if(!st.nodes){const t=T().size(2,0);t.node.style.cssText=["opacity: 0","position: absolute","left: -100%","top: -100%","overflow: hidden"].join(";"),t.attr("focusable","false"),t.attr("aria-hidden","true");const e=t.path().node;st.nodes={svg:t,path:e}}if(!st.nodes.svg.node.parentNode){const t=M.document.body||M.document.documentElement;st.nodes.svg.addTo(t)}return st.nodes}function ot(t){return!(t.width||t.height||t.x||t.y)}k(it,"Matrix");class ht{constructor(...t){this.init(...t)}addOffset(){return this.x+=M.window.pageXOffset,this.y+=M.window.pageYOffset,new ht(this)}init(t){return t="string"==typeof t?t.split(Q).map(parseFloat):Array.isArray(t)?t:"object"==typeof t?[null!=t.left?t.left:t.x,null!=t.top?t.top:t.y,t.width,t.height]:4===arguments.length?[].slice.call(arguments):[0,0,0,0],this.x=t[0]||0,this.y=t[1]||0,this.width=this.w=t[2]||0,this.height=this.h=t[3]||0,this.x2=this.x+this.w,this.y2=this.y+this.h,this.cx=this.x+this.w/2,this.cy=this.y+this.h/2,this}isNulled(){return ot(this)}merge(t){const e=Math.min(this.x,t.x),n=Math.min(this.y,t.y),r=Math.max(this.x+this.width,t.x+t.width)-e,i=Math.max(this.y+this.height,t.y+t.height)-n;return new ht(e,n,r,i)}toArray(){return[this.x,this.y,this.width,this.height]}toString(){return this.x+" "+this.y+" "+this.width+" "+this.height}transform(t){t instanceof it||(t=new it(t));let e=1/0,n=-1/0,r=1/0,i=-1/0;return[new nt(this.x,this.y),new nt(this.x2,this.y),new nt(this.x,this.y2),new nt(this.x2,this.y2)].forEach((function(s){s=s.transform(t),e=Math.min(e,s.x),n=Math.max(n,s.x),r=Math.min(r,s.y),i=Math.max(i,s.y)})),new ht(e,r,n-e,i-r)}}function at(t,e,n){let r;try{if(r=e(t.node),ot(r)&&(i=t.node)!==M.document&&!(M.document.documentElement.contains||function(t){for(;t.parentNode;)t=t.parentNode;return t===M.document}).call(M.document.documentElement,i))throw new Error("Element not in the dom")}catch(e){r=n(t)}var i;return r}l({viewbox:{viewbox(t,e,n,r){return null==t?new ht(this.attr("viewBox")):this.attr("viewBox",new ht(t,e,n,r))},zoom(t,e){let{width:n,height:r}=this.attr(["width","height"]);if((n||r)&&"string"!=typeof n&&"string"!=typeof r||(n=this.node.clientWidth,r=this.node.clientHeight),!n||!r)throw new Error("Impossible to get absolute width and height. Please provide an absolute width and height attribute on the zooming element");const i=this.viewbox(),s=n/i.width,o=r/i.height,h=Math.min(s,o);if(null==t)return h;let a=h/t;a===1/0&&(a=Number.MAX_SAFE_INTEGER/100),e=e||new nt(n/2/s+i.x,r/2/o+i.y);const u=new ht(i).transform(new it({scale:a,origin:e}));return this.viewbox(u)}}}),k(ht,"Box");class ut extends Array{constructor(t=[],...e){if(super(t,...e),"number"==typeof t)return this;this.length=0,this.push(...t)}}const lt=ut;F([ut],{each(t,...e){return"function"==typeof t?this.map(((e,n,r)=>t.call(e,e,n,r))):this.map((n=>n[t](...e)))},toArray(){return Array.prototype.concat.apply([],this)}});const ct=["toArray","constructor","each"];function dt(t,e){return new lt(f((e||M.document).querySelectorAll(t),(function(t){return E(t)})))}ut.extend=function(t){t=t.reduce(((t,e)=>(ct.includes(e)||"_"===e[0]||(e in Array.prototype&&(t["$"+e]=Array.prototype[e]),t[e]=function(...t){return this.each(e,...t)}),t)),{}),F([ut],t)};let ft=0;const mt={};function pt(t){let e=t.getEventHolder();return e===M.window&&(e=mt),e.events||(e.events={}),e.events}function yt(t){return t.getEventTarget()}function gt(t,e,n,r,i){const s=n.bind(r||t),o=T(t),h=pt(o),a=yt(o);e=Array.isArray(e)?e:e.split(Q),n._svgjsListenerId||(n._svgjsListenerId=++ft),e.forEach((function(t){const e=t.split(".")[0],r=t.split(".")[1]||"*";h[e]=h[e]||{},h[e][r]=h[e][r]||{},h[e][r][n._svgjsListenerId]=s,a.addEventListener(e,s,i||!1)}))}function wt(t,e,n,r){const i=T(t),s=pt(i),o=yt(i);("function"!=typeof n||(n=n._svgjsListenerId))&&(e=Array.isArray(e)?e:(e||"").split(Q)).forEach((function(t){const e=t&&t.split(".")[0],h=t&&t.split(".")[1];let a,u;if(n)s[e]&&s[e][h||"*"]&&(o.removeEventListener(e,s[e][h||"*"][n],r||!1),delete s[e][h||"*"][n]);else if(e&&h){if(s[e]&&s[e][h]){for(u in s[e][h])wt(o,[e,h].join("."),u);delete s[e][h]}}else if(h)for(t in s)for(a in s[t])h===a&&wt(o,[t,h].join("."));else if(e){if(s[e]){for(a in s[e])wt(o,[e,a].join("."));delete s[e]}}else{for(t in s)wt(o,t);!function(t){let e=t.getEventHolder();e===M.window&&(e=mt),e.events&&(e.events={})}(i)}}))}class bt extends N{addEventListener(){}dispatch(t,e,n){return function(t,e,n,r){const i=yt(t);return e instanceof M.window.Event||(e=new M.window.CustomEvent(e,{detail:n,cancelable:!0,...r})),i.dispatchEvent(e),e}(this,t,e,n)}dispatchEvent(t){const e=this.getEventHolder().events;if(!e)return!0;const n=e[t.type];for(const e in n)for(const r in n[e])n[e][r](t);return!t.defaultPrevented}fire(t,e,n){return this.dispatch(t,e,n),this}getEventHolder(){return this}getEventTarget(){return this}off(t,e,n){return wt(this,t,e,n),this}on(t,e,n,r){return gt(this,t,e,n,r),this}removeEventListener(){}}function xt(){}k(bt,"EventTarget");const _t={"fill-opacity":1,"stroke-opacity":1,"stroke-width":0,"stroke-linejoin":"miter","stroke-linecap":"butt",fill:"#000000",stroke:"#000000",opacity:1,x:0,y:0,cx:0,cy:0,width:0,height:0,r:0,rx:0,ry:0,offset:0,"stop-opacity":1,"stop-color":"#000000","text-anchor":"start"};class vt extends Array{constructor(...t){super(...t),this.init(...t)}clone(){return new this.constructor(this)}init(t){return"number"==typeof t||(this.length=0,this.push(...this.parse(t))),this}parse(t=[]){return t instanceof Array?t:t.trim().split(Q).map(parseFloat)}toArray(){return Array.prototype.concat.apply([],this)}toSet(){return new Set(this)}toString(){return this.join(" ")}valueOf(){const t=[];return t.push(...this),t}}class St{constructor(...t){this.init(...t)}convert(t){return new St(this.value,t)}divide(t){return t=new St(t),new St(this/t,this.unit||t.unit)}init(t,e){return e=Array.isArray(t)?t[1]:e,t=Array.isArray(t)?t[0]:t,this.value=0,this.unit=e||"","number"==typeof t?this.value=isNaN(t)?0:isFinite(t)?t:t<0?-34e37:34e37:"string"==typeof t?(e=t.match(z))&&(this.value=parseFloat(e[1]),"%"===e[5]?this.value/=100:"s"===e[5]&&(this.value*=1e3),this.unit=e[5]):t instanceof St&&(this.value=t.valueOf(),this.unit=t.unit),this}minus(t){return t=new St(t),new St(this-t,this.unit||t.unit)}plus(t){return t=new St(t),new St(this+t,this.unit||t.unit)}times(t){return t=new St(t),new St(this*t,this.unit||t.unit)}toArray(){return[this.value,this.unit]}toJSON(){return this.toString()}toString(){return("%"===this.unit?~~(1e8*this.value)/1e6:"s"===this.unit?this.value/1e3:this.value)+this.unit}valueOf(){return this.value}}const Mt=new Set(["fill","stroke","color","bgcolor","stop-color","flood-color","lighting-color"]),Nt=[];class Ot extends bt{constructor(t,e){super(),this.node=t,this.type=t.nodeName,e&&t!==e&&this.attr(e)}add(t,e){return(t=T(t)).removeNamespace&&this.node instanceof M.window.SVGElement&&t.removeNamespace(),null==e?this.node.appendChild(t.node):t.node!==this.node.childNodes[e]&&this.node.insertBefore(t.node,this.node.childNodes[e]),this}addTo(t,e){return T(t).put(this,e)}children(){return new lt(f(this.node.children,(function(t){return E(t)})))}clear(){for(;this.node.hasChildNodes();)this.node.removeChild(this.node.lastChild);return this}clone(t=!0,e=!0){this.writeDataToDom();let n=this.node.cloneNode(t);return e&&(n=L(n)),new this.constructor(n)}each(t,e){const n=this.children();let r,i;for(r=0,i=n.length;r<i;r++)t.apply(n[r],[r,n]),e&&n[r].each(t,e);return this}element(t,e){return this.put(new Ot(C(t),e))}first(){return E(this.node.firstChild)}get(t){return E(this.node.childNodes[t])}getEventHolder(){return this.node}getEventTarget(){return this.node}has(t){return this.index(t)>=0}html(t,e){return this.xml(t,e,"http://www.w3.org/1999/xhtml")}id(t){return void 0!==t||this.node.id||(this.node.id=I(this.type)),this.attr("id",t)}index(t){return[].slice.call(this.node.childNodes).indexOf(t.node)}last(){return E(this.node.lastChild)}matches(t){const e=this.node,n=e.matches||e.matchesSelector||e.msMatchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.oMatchesSelector||null;return n&&n.call(e,t)}parent(t){let e=this;if(!e.node.parentNode)return null;if(e=E(e.node.parentNode),!t)return e;do{if("string"==typeof t?e.matches(t):e instanceof t)return e}while(e=E(e.node.parentNode));return e}put(t,e){return t=T(t),this.add(t,e),t}putIn(t,e){return T(t).add(this,e)}remove(){return this.parent()&&this.parent().removeElement(this),this}removeElement(t){return this.node.removeChild(t.node),this}replace(t){return t=T(t),this.node.parentNode&&this.node.parentNode.replaceChild(t.node,this.node),t}round(t=2,e=null){const n=10**t,r=this.attr(e);for(const t in r)"number"==typeof r[t]&&(r[t]=Math.round(r[t]*n)/n);return this.attr(r),this}svg(t,e){return this.xml(t,e,_)}toString(){return this.id()}words(t){return this.node.textContent=t,this}wrap(t){const e=this.parent();if(!e)return this.addTo(t);const n=e.index(this);return e.put(t,n).put(this)}writeDataToDom(){return this.each((function(){this.writeDataToDom()})),this}xml(t,e,n){if("boolean"==typeof t&&(n=e,e=t,t=null),null==t||"function"==typeof t){e=null==e||e,this.writeDataToDom();let n=this;if(null!=t){if(n=E(n.node.cloneNode(!0)),e){const e=t(n);if(n=e||n,!1===e)return""}n.each((function(){const e=t(this),n=e||this;!1===e?this.remove():e&&this!==n&&this.replace(n)}),!0)}return e?n.node.outerHTML:n.node.innerHTML}e=null!=e&&e;const r=C("wrapper",n),i=M.document.createDocumentFragment();r.innerHTML=t;for(let t=r.children.length;t--;)i.appendChild(r.firstElementChild);const s=this.parent();return e?this.replace(i)&&s:this.add(i)}}F(Ot,{attr:function(t,e,n){if(null==t){t={},e=this.node.attributes;for(const n of e)t[n.nodeName]=$.test(n.nodeValue)?parseFloat(n.nodeValue):n.nodeValue;return t}if(t instanceof Array)return t.reduce(((t,e)=>(t[e]=this.attr(e),t)),{});if("object"==typeof t&&t.constructor===Object)for(e in t)this.attr(e,t[e]);else if(null===e)this.node.removeAttribute(t);else{if(null==e)return null==(e=this.node.getAttribute(t))?_t[t]:$.test(e)?parseFloat(e):e;"number"==typeof(e=Nt.reduce(((e,n)=>n(t,e,this)),e))?e=new St(e):Mt.has(t)&&et.isColor(e)?e=new et(e):e.constructor===Array&&(e=new vt(e)),"leading"===t?this.leading&&this.leading(e):"string"==typeof n?this.node.setAttributeNS(n,t,e.toString()):this.node.setAttribute(t,e.toString()),!this.rebuild||"font-size"!==t&&"x"!==t||this.rebuild()}return this},find:function(t){return dt(t,this.node)},findOne:function(t){return E(this.node.querySelector(t))}}),k(Ot,"Dom");class At extends Ot{constructor(t,e){super(t,e),this.dom={},this.node.instance=this,(t.hasAttribute("data-svgjs")||t.hasAttribute("svgjs:data"))&&this.setData(JSON.parse(t.getAttribute("data-svgjs"))??JSON.parse(t.getAttribute("svgjs:data"))??{})}center(t,e){return this.cx(t).cy(e)}cx(t){return null==t?this.x()+this.width()/2:this.x(t-this.width()/2)}cy(t){return null==t?this.y()+this.height()/2:this.y(t-this.height()/2)}defs(){const t=this.root();return t&&t.defs()}dmove(t,e){return this.dx(t).dy(e)}dx(t=0){return this.x(new St(t).plus(this.x()))}dy(t=0){return this.y(new St(t).plus(this.y()))}getEventHolder(){return this}height(t){return this.attr("height",t)}move(t,e){return this.x(t).y(e)}parents(t=this.root()){const e="string"==typeof t;e||(t=T(t));const n=new lt;let r=this;for(;(r=r.parent())&&r.node!==M.document&&"#document-fragment"!==r.nodeName&&(n.push(r),e||r.node!==t.node)&&(!e||!r.matches(t));)if(r.node===this.root().node)return null;return n}reference(t){if(!(t=this.attr(t)))return null;const e=(t+"").match(q);return e?T(e[1]):null}root(){const t=this.parent(O[A]);return t&&t.root()}setData(t){return this.dom=t,this}size(t,e){const n=y(this,t,e);return this.width(new St(n.width)).height(new St(n.height))}width(t){return this.attr("width",t)}writeDataToDom(){return x(this,this.dom),super.writeDataToDom()}x(t){return this.attr("x",t)}y(t){return this.attr("y",t)}}F(At,{bbox:function(){const t=at(this,(t=>t.getBBox()),(t=>{try{const e=t.clone().addTo(st().svg).show(),n=e.node.getBBox();return e.remove(),n}catch(e){throw new Error(`Getting bbox of element "${t.node.nodeName}" is not possible: ${e.toString()}`)}}));return new ht(t)},rbox:function(t){const e=at(this,(t=>t.getBoundingClientRect()),(t=>{throw new Error(`Getting rbox of element "${t.node.nodeName}" is not possible`)})),n=new ht(e);return t?n.transform(t.screenCTM().inverseO()):n.addOffset()},inside:function(t,e){const n=this.bbox();return t>n.x&&e>n.y&&t<n.x+n.width&&e<n.y+n.height},point:function(t,e){return new nt(t,e).transformO(this.screenCTM().inverseO())},ctm:function(){return new it(this.node.getCTM())},screenCTM:function(){try{if("function"==typeof this.isRoot&&!this.isRoot()){const t=this.rect(1,1),e=t.node.getScreenCTM();return t.remove(),new it(e)}return new it(this.node.getScreenCTM())}catch(t){return console.warn(`Cannot get CTM from SVG node ${this.node.nodeName}. Is the element rendered?`),new it}}}),k(At,"Element");const Ct={stroke:["color","width","opacity","linecap","linejoin","miterlimit","dasharray","dashoffset"],fill:["color","opacity","rule"],prefix:function(t,e){return"color"===e?t:t+"-"+e}};["fill","stroke"].forEach((function(t){const e={};let n;e[t]=function(e){if(void 0===e)return this.attr(t);if("string"==typeof e||e instanceof et||et.isRgb(e)||e instanceof At)this.attr(t,e);else for(n=Ct[t].length-1;n>=0;n--)null!=e[Ct[t][n]]&&this.attr(Ct.prefix(t,Ct[t][n]),e[Ct[t][n]]);return this},l(["Element","Runner"],e)})),l(["Element","Runner"],{matrix:function(t,e,n,r,i,s){return null==t?new it(this):this.attr("transform",new it(t,e,n,r,i,s))},rotate:function(t,e,n){return this.transform({rotate:t,ox:e,oy:n},!0)},skew:function(t,e,n,r){return 1===arguments.length||3===arguments.length?this.transform({skew:t,ox:e,oy:n},!0):this.transform({skew:[t,e],ox:n,oy:r},!0)},shear:function(t,e,n){return this.transform({shear:t,ox:e,oy:n},!0)},scale:function(t,e,n,r){return 1===arguments.length||3===arguments.length?this.transform({scale:t,ox:e,oy:n},!0):this.transform({scale:[t,e],ox:n,oy:r},!0)},translate:function(t,e){return this.transform({translate:[t,e]},!0)},relative:function(t,e){return this.transform({relative:[t,e]},!0)},flip:function(t="both",e="center"){return-1==="xybothtrue".indexOf(t)&&(e=t,t="both"),this.transform({flip:t,origin:e},!0)},opacity:function(t){return this.attr("opacity",t)}}),l("radius",{radius:function(t,e=t){return"radialGradient"===(this._element||this).type?this.attr("r",new St(t)):this.rx(t).ry(e)}}),l("Path",{length:function(){return this.node.getTotalLength()},pointAt:function(t){return new nt(this.node.getPointAtLength(t))}}),l(["Element","Runner"],{font:function(t,e){if("object"==typeof t){for(e in t)this.font(e,t[e]);return this}return"leading"===t?this.leading(e):"anchor"===t?this.attr("text-anchor",e):"size"===t||"family"===t||"weight"===t||"stretch"===t||"variant"===t||"style"===t?this.attr("font-"+t,e):this.attr(t,e)}}),l("Element",["click","dblclick","mousedown","mouseup","mouseover","mouseout","mousemove","mouseenter","mouseleave","touchstart","touchmove","touchleave","touchend","touchcancel","contextmenu","wheel","pointerdown","pointermove","pointerup","pointerleave","pointercancel"].reduce((function(t,e){return t[e]=function(t){return null===t?this.off(e):this.on(e,t),this},t}),{})),l("Element",{untransform:function(){return this.attr("transform",null)},matrixify:function(){return(this.attr("transform")||"").split(X).slice(0,-1).map((function(t){const e=t.trim().split("(");return[e[0],e[1].split(Q).map((function(t){return parseFloat(t)}))]})).reverse().reduce((function(t,e){return"matrix"===e[0]?t.lmultiply(it.fromArray(e[1])):t[e[0]].apply(t,e[1])}),new it)},toParent:function(t,e){if(this===t)return this;if(b(this.node))return this.addTo(t,e);const n=this.screenCTM(),r=t.screenCTM().inverse();return this.addTo(t,e).untransform().transform(r.multiply(n)),this},toRoot:function(t){return this.toParent(this.root(),t)},transform:function(t,e){if(null==t||"string"==typeof t){const e=new it(this).decompose();return null==t?e:e[t]}it.isMatrixLike(t)||(t={...t,origin:g(t,this)});const n=new it(!0===e?this:e||!1).transform(t);return this.attr("transform",n)}});class Tt extends At{flatten(){return this.each((function(){if(this instanceof Tt)return this.flatten().ungroup()})),this}ungroup(t=this.parent(),e=t.index(this)){return e=-1===e?t.children().length:e,this.each((function(n,r){return r[r.length-n-1].toParent(t,e)})),this.remove()}}k(Tt,"Container");class Pt extends Tt{constructor(t,e=t){super(P("defs",t),e)}flatten(){return this}ungroup(){return this}}k(Pt,"Defs");class Et extends At{}function jt(t){return this.attr("rx",t)}function kt(t){return this.attr("ry",t)}function Dt(t){return null==t?this.cx()-this.rx():this.cx(t+this.rx())}function It(t){return null==t?this.cy()-this.ry():this.cy(t+this.ry())}function Lt(t){return this.attr("cx",t)}function Ft(t){return this.attr("cy",t)}function Vt(t){return null==t?2*this.rx():this.rx(new St(t).divide(2))}function zt(t){return null==t?2*this.ry():this.ry(new St(t).divide(2))}k(Et,"Shape");class Rt extends Et{constructor(t,e=t){super(P("ellipse",t),e)}size(t,e){const n=y(this,t,e);return this.rx(new St(n.width).divide(2)).ry(new St(n.height).divide(2))}}F(Rt,t),l("Container",{ellipse:V((function(t=0,e=t){return this.put(new Rt).size(t,e).move(0,0)}))}),k(Rt,"Ellipse");class Bt extends Ot{constructor(t=M.document.createDocumentFragment()){super(t)}xml(t,e,n){if("boolean"==typeof t&&(n=e,e=t,t=null),null==t||"function"==typeof t){const t=new Ot(C("wrapper",n));return t.add(this.node.cloneNode(!0)),t.xml(!1,n)}return super.xml(t,!1,n)}}k(Bt,"Fragment");const qt=Bt;function Xt(t,e){return"radialGradient"===(this._element||this).type?this.attr({fx:new St(t),fy:new St(e)}):this.attr({x1:new St(t),y1:new St(e)})}function Gt(t,e){return"radialGradient"===(this._element||this).type?this.attr({cx:new St(t),cy:new St(e)}):this.attr({x2:new St(t),y2:new St(e)})}class Yt extends Tt{constructor(t,e){super(P(t+"Gradient","string"==typeof t?null:t),e)}attr(t,e,n){return"transform"===t&&(t="gradientTransform"),super.attr(t,e,n)}bbox(){return new ht}targets(){return dt("svg [fill*="+this.id()+"]")}toString(){return this.url()}update(t){return this.clear(),"function"==typeof t&&t.call(this,this),this}url(){return"url(#"+this.id()+")"}}F(Yt,e),l({Container:{gradient(...t){return this.defs().gradient(...t)}},Defs:{gradient:V((function(t,e){return this.put(new Yt(t)).update(e)}))}}),k(Yt,"Gradient");class Ht extends Tt{constructor(t,e=t){super(P("pattern",t),e)}attr(t,e,n){return"transform"===t&&(t="patternTransform"),super.attr(t,e,n)}bbox(){return new ht}targets(){return dt("svg [fill*="+this.id()+"]")}toString(){return this.url()}update(t){return this.clear(),"function"==typeof t&&t.call(this,this),this}url(){return"url(#"+this.id()+")"}}l({Container:{pattern(...t){return this.defs().pattern(...t)}},Defs:{pattern:V((function(t,e,n){return this.put(new Ht).update(n).attr({x:0,y:0,width:t,height:e,patternUnits:"userSpaceOnUse"})}))}}),k(Ht,"Pattern");class Ut extends Et{constructor(t,e=t){super(P("image",t),e)}load(t,e){if(!t)return this;const n=new M.window.Image;return gt(n,"load",(function(t){const r=this.parent(Ht);0===this.width()&&0===this.height()&&this.size(n.width,n.height),r instanceof Ht&&0===r.width()&&0===r.height()&&r.size(this.width(),this.height()),"function"==typeof e&&e.call(this,t)}),this),gt(n,"load error",(function(){wt(n)})),this.attr("href",n.src=t,S)}}var $t;$t=function(t,e,n){return"fill"!==t&&"stroke"!==t||W.test(e)&&(e=n.root().defs().image(e)),e instanceof Ut&&(e=n.root().defs().pattern(0,0,(t=>{t.add(e)}))),e},Nt.push($t),l({Container:{image:V((function(t,e){return this.put(new Ut).size(0,0).load(t,e)}))}}),k(Ut,"Image");class Wt extends vt{bbox(){let t=-1/0,e=-1/0,n=1/0,r=1/0;return this.forEach((function(i){t=Math.max(i[0],t),e=Math.max(i[1],e),n=Math.min(i[0],n),r=Math.min(i[1],r)})),new ht(n,r,t-n,e-r)}move(t,e){const n=this.bbox();if(t-=n.x,e-=n.y,!isNaN(t)&&!isNaN(e))for(let n=this.length-1;n>=0;n--)this[n]=[this[n][0]+t,this[n][1]+e];return this}parse(t=[0,0]){const e=[];(t=t instanceof Array?Array.prototype.concat.apply([],t):t.trim().split(Q).map(parseFloat)).length%2!=0&&t.pop();for(let n=0,r=t.length;n<r;n+=2)e.push([t[n],t[n+1]]);return e}size(t,e){let n;const r=this.bbox();for(n=this.length-1;n>=0;n--)r.width&&(this[n][0]=(this[n][0]-r.x)*t/r.width+r.x),r.height&&(this[n][1]=(this[n][1]-r.y)*e/r.height+r.y);return this}toLine(){return{x1:this[0][0],y1:this[0][1],x2:this[1][0],y2:this[1][1]}}toString(){const t=[];for(let e=0,n=this.length;e<n;e++)t.push(this[e].join(","));return t.join(" ")}transform(t){return this.clone().transformO(t)}transformO(t){it.isMatrixLike(t)||(t=new it(t));for(let e=this.length;e--;){const[n,r]=this[e];this[e][0]=t.a*n+t.c*r+t.e,this[e][1]=t.b*n+t.d*r+t.f}return this}}const Qt=Wt;function Jt(t){return null==t?this.bbox().x:this.move(t,this.bbox().y)}function Zt(t){return null==t?this.bbox().y:this.move(this.bbox().x,t)}function Kt(t){const e=this.bbox();return null==t?e.width:this.size(t,e.height)}function te(t){const e=this.bbox();return null==t?e.height:this.size(e.width,t)}class ee extends Et{constructor(t,e=t){super(P("line",t),e)}array(){return new Wt([[this.attr("x1"),this.attr("y1")],[this.attr("x2"),this.attr("y2")]])}move(t,e){return this.attr(this.array().move(t,e).toLine())}plot(t,e,n,r){return null==t?this.array():(t=void 0!==e?{x1:t,y1:e,x2:n,y2:r}:new Wt(t).toLine(),this.attr(t))}size(t,e){const n=y(this,t,e);return this.attr(this.array().size(n.width,n.height).toLine())}}F(ee,i),l({Container:{line:V((function(...t){return ee.prototype.plot.apply(this.put(new ee),null!=t[0]?t:[0,0,0,0])}))}}),k(ee,"Line");class ne extends Tt{constructor(t,e=t){super(P("marker",t),e)}height(t){return this.attr("markerHeight",t)}orient(t){return this.attr("orient",t)}ref(t,e){return this.attr("refX",t).attr("refY",e)}toString(){return"url(#"+this.id()+")"}update(t){return this.clear(),"function"==typeof t&&t.call(this,this),this}width(t){return this.attr("markerWidth",t)}}function re(t,e){return function(n){return null==n?this[t]:(this[t]=n,e&&e.call(this),this)}}l({Container:{marker(...t){return this.defs().marker(...t)}},Defs:{marker:V((function(t,e,n){return this.put(new ne).size(t,e).ref(t/2,e/2).viewbox(0,0,t,e).attr("orient","auto").update(n)}))},marker:{marker(t,e,n,r){let i=["marker"];return"all"!==t&&i.push(t),i=i.join("-"),t=arguments[1]instanceof ne?arguments[1]:this.defs().marker(e,n,r),this.attr(i,t)}}}),k(ne,"Marker");const ie={"-":function(t){return t},"<>":function(t){return-Math.cos(t*Math.PI)/2+.5},">":function(t){return Math.sin(t*Math.PI/2)},"<":function(t){return 1-Math.cos(t*Math.PI/2)},bezier:function(t,e,n,r){return function(i){return i<0?t>0?e/t*i:n>0?r/n*i:0:i>1?n<1?(1-r)/(1-n)*i+(r-n)/(1-n):t<1?(1-e)/(1-t)*i+(e-t)/(1-t):1:3*i*(1-i)**2*e+3*i**2*(1-i)*r+i**3}},steps:function(t,e="end"){e=e.split("-").reverse()[0];let n=t;return"none"===e?--n:"both"===e&&++n,(r,i=!1)=>{let s=Math.floor(r*t);const o=r*s%1==0;return"start"!==e&&"both"!==e||++s,i&&o&&--s,r>=0&&s<0&&(s=0),r<=1&&s>n&&(s=n),s/n}}};class se{done(){return!1}}class oe extends se{constructor(t=">"){super(),this.ease=ie[t]||t}step(t,e,n){return"number"!=typeof t?n<1?t:e:t+(e-t)*this.ease(n)}}class he extends se{constructor(t){super(),this.stepper=t}done(t){return t.done}step(t,e,n,r){return this.stepper(t,e,n,r)}}function ae(){const t=(this._duration||500)/1e3,e=this._overshoot||0,n=Math.PI,r=Math.log(e/100+1e-10),i=-r/Math.sqrt(n*n+r*r),s=3.9/(i*t);this.d=2*i*s,this.k=s*s}F(class extends he{constructor(t=500,e=0){super(),this.duration(t).overshoot(e)}step(t,e,n,r){if("string"==typeof t)return t;if(r.done=n===1/0,n===1/0)return e;if(0===n)return t;n>100&&(n=16),n/=1e3;const i=r.velocity||0,s=-this.d*i-this.k*(t-e),o=t+i*n+s*n*n/2;return r.velocity=i+s*n,r.done=Math.abs(e-o)+Math.abs(i)<.002,r.done?e:o}},{duration:re("_duration",ae),overshoot:re("_overshoot",ae)}),F(class extends he{constructor(t=.1,e=.01,n=0,r=1e3){super(),this.p(t).i(e).d(n).windup(r)}step(t,e,n,r){if("string"==typeof t)return t;if(r.done=n===1/0,n===1/0)return e;if(0===n)return t;const i=e-t;let s=(r.integral||0)+i*n;const o=(i-(r.error||0))/n,h=this._windup;return!1!==h&&(s=Math.max(-h,Math.min(s,h))),r.error=i,r.integral=s,r.done=Math.abs(i)<.001,r.done?e:t+(this.P*i+this.I*s+this.D*o)}},{windup:re("_windup"),p:re("P"),i:re("I"),d:re("D")});const ue={M:2,L:2,H:1,V:1,C:6,S:4,Q:4,T:2,A:7,Z:0},le={M:function(t,e,n){return e.x=n.x=t[0],e.y=n.y=t[1],["M",e.x,e.y]},L:function(t,e){return e.x=t[0],e.y=t[1],["L",t[0],t[1]]},H:function(t,e){return e.x=t[0],["H",t[0]]},V:function(t,e){return e.y=t[0],["V",t[0]]},C:function(t,e){return e.x=t[4],e.y=t[5],["C",t[0],t[1],t[2],t[3],t[4],t[5]]},S:function(t,e){return e.x=t[2],e.y=t[3],["S",t[0],t[1],t[2],t[3]]},Q:function(t,e){return e.x=t[2],e.y=t[3],["Q",t[0],t[1],t[2],t[3]]},T:function(t,e){return e.x=t[0],e.y=t[1],["T",t[0],t[1]]},Z:function(t,e,n){return e.x=n.x,e.y=n.y,["Z"]},A:function(t,e){return e.x=t[5],e.y=t[6],["A",t[0],t[1],t[2],t[3],t[4],t[5],t[6]]}},ce="mlhvqtcsaz".split("");for(let t=0,e=ce.length;t<e;++t)le[ce[t]]=function(t){return function(e,n,r){if("H"===t)e[0]=e[0]+n.x;else if("V"===t)e[0]=e[0]+n.y;else if("A"===t)e[5]=e[5]+n.x,e[6]=e[6]+n.y;else for(let t=0,r=e.length;t<r;++t)e[t]=e[t]+(t%2?n.y:n.x);return le[t](e,n,r)}}(ce[t].toUpperCase());function de(t){return t.segment.length&&t.segment.length-1===ue[t.segment[0].toUpperCase()]}function fe(t,e){t.inNumber&&me(t,!1);const n=J.test(e);if(n)t.segment=[e];else{const e=t.lastCommand,n=e.toLowerCase(),r=e===n;t.segment=["m"===n?r?"l":"L":e]}return t.inSegment=!0,t.lastCommand=t.segment[0],n}function me(t,e){if(!t.inNumber)throw new Error("Parser Error");t.number&&t.segment.push(parseFloat(t.number)),t.inNumber=e,t.number="",t.pointSeen=!1,t.hasExponent=!1,de(t)&&pe(t)}function pe(t){t.inSegment=!1,t.absolute&&(t.segment=function(t){const e=t.segment[0];return le[e](t.segment.slice(1),t.p,t.p0)}(t)),t.segments.push(t.segment)}function ye(t){if(!t.segment.length)return!1;const e="A"===t.segment[0].toUpperCase(),n=t.segment.length;return e&&(4===n||5===n)}function ge(t){return"E"===t.lastToken.toUpperCase()}const we=new Set([" ",",","\t","\n","\r","\f"]);class be extends vt{bbox(){return st().path.setAttribute("d",this.toString()),new ht(st.nodes.path.getBBox())}move(t,e){const n=this.bbox();if(t-=n.x,e-=n.y,!isNaN(t)&&!isNaN(e))for(let n,r=this.length-1;r>=0;r--)n=this[r][0],"M"===n||"L"===n||"T"===n?(this[r][1]+=t,this[r][2]+=e):"H"===n?this[r][1]+=t:"V"===n?this[r][1]+=e:"C"===n||"S"===n||"Q"===n?(this[r][1]+=t,this[r][2]+=e,this[r][3]+=t,this[r][4]+=e,"C"===n&&(this[r][5]+=t,this[r][6]+=e)):"A"===n&&(this[r][6]+=t,this[r][7]+=e);return this}parse(t="M0 0"){return Array.isArray(t)&&(t=Array.prototype.concat.apply([],t).toString()),function(t,e=!0){let n=0,r="";const i={segment:[],inNumber:!1,number:"",lastToken:"",inSegment:!1,segments:[],pointSeen:!1,hasExponent:!1,absolute:e,p0:new nt,p:new nt};for(;i.lastToken=r,r=t.charAt(n++);)if(i.inSegment||!fe(i,r))if("."!==r)if(isNaN(parseInt(r)))if(we.has(r))i.inNumber&&me(i,!1);else if("-"!==r&&"+"!==r)if("E"!==r.toUpperCase()){if(J.test(r)){if(i.inNumber)me(i,!1);else{if(!de(i))throw new Error("parser Error");pe(i)}--n}}else i.number+=r,i.hasExponent=!0;else{if(i.inNumber&&!ge(i)){me(i,!1),--n;continue}i.number+=r,i.inNumber=!0}else{if("0"===i.number||ye(i)){i.inNumber=!0,i.number=r,me(i,!0);continue}i.inNumber=!0,i.number+=r}else{if(i.pointSeen||i.hasExponent){me(i,!1),--n;continue}i.inNumber=!0,i.pointSeen=!0,i.number+=r}return i.inNumber&&me(i,!1),i.inSegment&&de(i)&&pe(i),i.segments}(t)}size(t,e){const n=this.bbox();let r,i;for(n.width=0===n.width?1:n.width,n.height=0===n.height?1:n.height,r=this.length-1;r>=0;r--)i=this[r][0],"M"===i||"L"===i||"T"===i?(this[r][1]=(this[r][1]-n.x)*t/n.width+n.x,this[r][2]=(this[r][2]-n.y)*e/n.height+n.y):"H"===i?this[r][1]=(this[r][1]-n.x)*t/n.width+n.x:"V"===i?this[r][1]=(this[r][1]-n.y)*e/n.height+n.y:"C"===i||"S"===i||"Q"===i?(this[r][1]=(this[r][1]-n.x)*t/n.width+n.x,this[r][2]=(this[r][2]-n.y)*e/n.height+n.y,this[r][3]=(this[r][3]-n.x)*t/n.width+n.x,this[r][4]=(this[r][4]-n.y)*e/n.height+n.y,"C"===i&&(this[r][5]=(this[r][5]-n.x)*t/n.width+n.x,this[r][6]=(this[r][6]-n.y)*e/n.height+n.y)):"A"===i&&(this[r][1]=this[r][1]*t/n.width,this[r][2]=this[r][2]*e/n.height,this[r][6]=(this[r][6]-n.x)*t/n.width+n.x,this[r][7]=(this[r][7]-n.y)*e/n.height+n.y);return this}toString(){return function(t){let e="";for(let n=0,r=t.length;n<r;n++)e+=t[n][0],null!=t[n][1]&&(e+=t[n][1],null!=t[n][2]&&(e+=" ",e+=t[n][2],null!=t[n][3]&&(e+=" ",e+=t[n][3],e+=" ",e+=t[n][4],null!=t[n][5]&&(e+=" ",e+=t[n][5],e+=" ",e+=t[n][6],null!=t[n][7]&&(e+=" ",e+=t[n][7])))));return e+" "}(this)}}const xe=t=>{const e=typeof t;return"number"===e?St:"string"===e?et.isColor(t)?et:Q.test(t)?J.test(t)?be:vt:z.test(t)?St:ve:Oe.indexOf(t.constructor)>-1?t.constructor:Array.isArray(t)?vt:"object"===e?Ne:ve};class _e{constructor(t){this._stepper=t||new oe("-"),this._from=null,this._to=null,this._type=null,this._context=null,this._morphObj=null}at(t){return this._morphObj.morph(this._from,this._to,t,this._stepper,this._context)}done(){return this._context.map(this._stepper.done).reduce((function(t,e){return t&&e}),!0)}from(t){return null==t?this._from:(this._from=this._set(t),this)}stepper(t){return null==t?this._stepper:(this._stepper=t,this)}to(t){return null==t?this._to:(this._to=this._set(t),this)}type(t){return null==t?this._type:(this._type=t,this)}_set(t){this._type||this.type(xe(t));let e=new this._type(t);return this._type===et&&(e=this._to?e[this._to[4]]():this._from?e[this._from[4]]():e),this._type===Ne&&(e=this._to?e.align(this._to):this._from?e.align(this._from):e),e=e.toConsumable(),this._morphObj=this._morphObj||new this._type,this._context=this._context||Array.apply(null,Array(e.length)).map(Object).map((function(t){return t.done=!0,t})),e}}class ve{constructor(...t){this.init(...t)}init(t){return t=Array.isArray(t)?t[0]:t,this.value=t,this}toArray(){return[this.value]}valueOf(){return this.value}}class Se{constructor(...t){this.init(...t)}init(t){return Array.isArray(t)&&(t={scaleX:t[0],scaleY:t[1],shear:t[2],rotate:t[3],translateX:t[4],translateY:t[5],originX:t[6],originY:t[7]}),Object.assign(this,Se.defaults,t),this}toArray(){const t=this;return[t.scaleX,t.scaleY,t.shear,t.rotate,t.translateX,t.translateY,t.originX,t.originY]}}Se.defaults={scaleX:1,scaleY:1,shear:0,rotate:0,translateX:0,translateY:0,originX:0,originY:0};const Me=(t,e)=>t[0]<e[0]?-1:t[0]>e[0]?1:0;class Ne{constructor(...t){this.init(...t)}align(t){const e=this.values;for(let n=0,r=e.length;n<r;++n){if(e[n+1]===t[n+1]){if(e[n+1]===et&&t[n+7]!==e[n+7]){const e=t[n+7],r=new et(this.values.splice(n+3,5))[e]().toArray();this.values.splice(n+3,0,...r)}n+=e[n+2]+2;continue}if(!t[n+1])return this;const r=(new t[n+1]).toArray(),i=e[n+2]+3;e.splice(n,i,t[n],t[n+1],t[n+2],...r),n+=e[n+2]+2}return this}init(t){if(this.values=[],Array.isArray(t))return void(this.values=t.slice());t=t||{};const e=[];for(const n in t){const r=xe(t[n]),i=new r(t[n]).toArray();e.push([n,r,i.length,...i])}return e.sort(Me),this.values=e.reduce(((t,e)=>t.concat(e)),[]),this}toArray(){return this.values}valueOf(){const t={},e=this.values;for(;e.length;){const n=e.shift(),r=e.shift(),i=e.shift(),s=e.splice(0,i);t[n]=new r(s)}return t}}const Oe=[ve,Se,Ne];class Ae extends Et{constructor(t,e=t){super(P("path",t),e)}array(){return this._array||(this._array=new be(this.attr("d")))}clear(){return delete this._array,this}height(t){return null==t?this.bbox().height:this.size(this.bbox().width,t)}move(t,e){return this.attr("d",this.array().move(t,e))}plot(t){return null==t?this.array():this.clear().attr("d","string"==typeof t?t:this._array=new be(t))}size(t,e){const n=y(this,t,e);return this.attr("d",this.array().size(n.width,n.height))}width(t){return null==t?this.bbox().width:this.size(t,this.bbox().height)}x(t){return null==t?this.bbox().x:this.move(t,this.bbox().y)}y(t){return null==t?this.bbox().y:this.move(this.bbox().x,t)}}function Ce(){return this._array||(this._array=new Wt(this.attr("points")))}function Te(){return delete this._array,this}function Pe(t,e){return this.attr("points",this.array().move(t,e))}function Ee(t){return null==t?this.array():this.clear().attr("points","string"==typeof t?t:this._array=new Wt(t))}function je(t,e){const n=y(this,t,e);return this.attr("points",this.array().size(n.width,n.height))}Ae.prototype.MorphArray=be,l({Container:{path:V((function(t){return this.put(new Ae).plot(t||new be)}))}}),k(Ae,"Path");class ke extends Et{constructor(t,e=t){super(P("polygon",t),e)}}l({Container:{polygon:V((function(t){return this.put(new ke).plot(t||new Wt)}))}}),F(ke,i),F(ke,s),k(ke,"Polygon");class De extends Et{constructor(t,e=t){super(P("polyline",t),e)}}l({Container:{polyline:V((function(t){return this.put(new De).plot(t||new Wt)}))}}),F(De,i),F(De,s),k(De,"Polyline");class Ie extends Et{constructor(t,e=t){super(P("rect",t),e)}}F(Ie,{rx:jt,ry:kt}),l({Container:{rect:V((function(t,e){return this.put(new Ie).size(t,e)}))}}),k(Ie,"Rect");class Le{constructor(){this._first=null,this._last=null}first(){return this._first&&this._first.value}last(){return this._last&&this._last.value}push(t){const e=void 0!==t.next?t:{value:t,next:null,prev:null};return this._last?(e.prev=this._last,this._last.next=e,this._last=e):(this._last=e,this._first=e),e}remove(t){t.prev&&(t.prev.next=t.next),t.next&&(t.next.prev=t.prev),t===this._last&&(this._last=t.prev),t===this._first&&(this._first=t.next),t.prev=null,t.next=null}shift(){const t=this._first;return t?(this._first=t.next,this._first&&(this._first.prev=null),this._last=this._first?this._last:null,t.value):null}}const Fe={nextDraw:null,frames:new Le,timeouts:new Le,immediates:new Le,timer:()=>M.window.performance||M.window.Date,transforms:[],frame(t){const e=Fe.frames.push({run:t});return null===Fe.nextDraw&&(Fe.nextDraw=M.window.requestAnimationFrame(Fe._draw)),e},timeout(t,e){e=e||0;const n=Fe.timer().now()+e,r=Fe.timeouts.push({run:t,time:n});return null===Fe.nextDraw&&(Fe.nextDraw=M.window.requestAnimationFrame(Fe._draw)),r},immediate(t){const e=Fe.immediates.push(t);return null===Fe.nextDraw&&(Fe.nextDraw=M.window.requestAnimationFrame(Fe._draw)),e},cancelFrame(t){null!=t&&Fe.frames.remove(t)},clearTimeout(t){null!=t&&Fe.timeouts.remove(t)},cancelImmediate(t){null!=t&&Fe.immediates.remove(t)},_draw(t){let e=null;const n=Fe.timeouts.last();for(;(e=Fe.timeouts.shift())&&(t>=e.time?e.run():Fe.timeouts.push(e),e!==n););let r=null;const i=Fe.frames.last();for(;r!==i&&(r=Fe.frames.shift());)r.run(t);let s=null;for(;s=Fe.immediates.shift();)s();Fe.nextDraw=Fe.timeouts.first()||Fe.frames.first()?M.window.requestAnimationFrame(Fe._draw):null}},Ve=Fe,ze=function(t){const e=t.start,n=t.runner.duration();return{start:e,duration:n,end:e+n,runner:t.runner}},Re=function(){const t=M.window;return(t.performance||t.Date).now()};class Be extends bt{constructor(t=Re){super(),this._timeSource=t,this.terminate()}active(){return!!this._nextFrame}finish(){return this.time(this.getEndTimeOfTimeline()+1),this.pause()}getEndTime(){const t=this.getLastRunnerInfo(),e=t?t.runner.duration():0;return(t?t.start:this._time)+e}getEndTimeOfTimeline(){const t=this._runners.map((t=>t.start+t.runner.duration()));return Math.max(0,...t)}getLastRunnerInfo(){return this.getRunnerInfoById(this._lastRunnerId)}getRunnerInfoById(t){return this._runners[this._runnerIds.indexOf(t)]||null}pause(){return this._paused=!0,this._continue()}persist(t){return null==t?this._persist:(this._persist=t,this)}play(){return this._paused=!1,this.updateTime()._continue()}reverse(t){const e=this.speed();if(null==t)return this.speed(-e);const n=Math.abs(e);return this.speed(t?-n:n)}schedule(t,e,n){if(null==t)return this._runners.map(ze);let r=0;const i=this.getEndTime();if(e=e||0,null==n||"last"===n||"after"===n)r=i;else if("absolute"===n||"start"===n)r=e,e=0;else if("now"===n)r=this._time;else if("relative"===n){const n=this.getRunnerInfoById(t.id);n&&(r=n.start+e,e=0)}else{if("with-last"!==n)throw new Error('Invalid value for the "when" parameter');{const t=this.getLastRunnerInfo();r=t?t.start:this._time}}t.unschedule(),t.timeline(this);const s=t.persist(),o={persist:null===s?this._persist:s,start:r+e,runner:t};return this._lastRunnerId=t.id,this._runners.push(o),this._runners.sort(((t,e)=>t.start-e.start)),this._runnerIds=this._runners.map((t=>t.runner.id)),this.updateTime()._continue(),this}seek(t){return this.time(this._time+t)}source(t){return null==t?this._timeSource:(this._timeSource=t,this)}speed(t){return null==t?this._speed:(this._speed=t,this)}stop(){return this.time(0),this.pause()}time(t){return null==t?this._time:(this._time=t,this._continue(!0))}unschedule(t){const e=this._runnerIds.indexOf(t.id);return e<0||(this._runners.splice(e,1),this._runnerIds.splice(e,1),t.timeline(null)),this}updateTime(){return this.active()||(this._lastSourceTime=this._timeSource()),this}_continue(t=!1){return Ve.cancelFrame(this._nextFrame),this._nextFrame=null,t?this._stepImmediate():(this._paused||(this._nextFrame=Ve.frame(this._step)),this)}_stepFn(t=!1){const e=this._timeSource();let n=e-this._lastSourceTime;t&&(n=0);const r=this._speed*n+(this._time-this._lastStepTime);this._lastSourceTime=e,t||(this._time+=r,this._time=this._time<0?0:this._time),this._lastStepTime=this._time,this.fire("time",this._time);for(let t=this._runners.length;t--;){const e=this._runners[t],n=e.runner;this._time-e.start<=0&&n.reset()}let i=!1;for(let t=0,e=this._runners.length;t<e;t++){const n=this._runners[t],s=n.runner;let o=r;const h=this._time-n.start;h<=0?i=!0:(h<o&&(o=h),s.active()&&(s.step(o).done?!0!==n.persist&&s.duration()-s.time()+this._time+n.persist<this._time&&(s.unschedule(),--t,--e):i=!0))}return i&&!(this._speed<0&&0===this._time)||this._runnerIds.length&&this._speed<0&&this._time>0?this._continue():(this.pause(),this.fire("finished")),this}terminate(){this._startTime=0,this._speed=1,this._persist=0,this._nextFrame=null,this._paused=!0,this._runners=[],this._runnerIds=[],this._lastRunnerId=-1,this._time=0,this._lastSourceTime=0,this._lastStepTime=0,this._step=this._stepFn.bind(this,!1),this._stepImmediate=this._stepFn.bind(this,!0)}}l({Element:{timeline:function(t){return null==t?(this._timeline=this._timeline||new Be,this._timeline):(this._timeline=t,this)}}});class qe extends bt{constructor(t){super(),this.id=qe.id++,t="function"==typeof(t=null==t?400:t)?new he(t):t,this._element=null,this._timeline=null,this.done=!1,this._queue=[],this._duration="number"==typeof t&&t,this._isDeclarative=t instanceof he,this._stepper=this._isDeclarative?t:new oe,this._history={},this.enabled=!0,this._time=0,this._lastTime=0,this._reseted=!0,this.transforms=new it,this.transformId=1,this._haveReversed=!1,this._reverse=!1,this._loopsDone=0,this._swing=!1,this._wait=0,this._times=1,this._frameId=null,this._persist=!!this._isDeclarative||null}static sanitise(t,e,n){let r=1,i=!1,s=0;return e=e??0,n=n||"last","object"!=typeof(t=t??400)||t instanceof se||(e=t.delay??e,n=t.when??n,i=t.swing||i,r=t.times??r,s=t.wait??s,t=t.duration??400),{duration:t,delay:e,swing:i,times:r,wait:s,when:n}}active(t){return null==t?this.enabled:(this.enabled=t,this)}addTransform(t){return this.transforms.lmultiplyO(t),this}after(t){return this.on("finished",t)}animate(t,e,n){const r=qe.sanitise(t,e,n),i=new qe(r.duration);return this._timeline&&i.timeline(this._timeline),this._element&&i.element(this._element),i.loop(r).schedule(r.delay,r.when)}clearTransform(){return this.transforms=new it,this}clearTransformsFromQueue(){this.done&&this._timeline&&this._timeline._runnerIds.includes(this.id)||(this._queue=this._queue.filter((t=>!t.isTransform)))}delay(t){return this.animate(0,t)}duration(){return this._times*(this._wait+this._duration)-this._wait}during(t){return this.queue(null,t)}ease(t){return this._stepper=new oe(t),this}element(t){return null==t?this._element:(this._element=t,t._prepareRunner(),this)}finish(){return this.step(1/0)}loop(t,e,n){return"object"==typeof t&&(e=t.swing,n=t.wait,t=t.times),this._times=t||1/0,this._swing=e||!1,this._wait=n||0,!0===this._times&&(this._times=1/0),this}loops(t){const e=this._duration+this._wait;if(null==t){const t=Math.floor(this._time/e),n=(this._time-t*e)/this._duration;return Math.min(t+n,this._times)}const n=t%1,r=e*Math.floor(t)+this._duration*n;return this.time(r)}persist(t){return null==t?this._persist:(this._persist=t,this)}position(t){const e=this._time,n=this._duration,r=this._wait,i=this._times,s=this._swing,o=this._reverse;let h;if(null==t){const t=function(t){const e=s*Math.floor(t%(2*(r+n))/(r+n)),i=e&&!o||!e&&o,h=Math.pow(-1,i)*(t%(r+n))/n+i;return Math.max(Math.min(h,1),0)},a=i*(r+n)-r;return h=e<=0?Math.round(t(1e-5)):e<a?t(e):Math.round(t(a-1e-5)),h}const a=Math.floor(this.loops()),u=s&&a%2==0;return h=a+(u&&!o||o&&u?t:1-t),this.loops(h)}progress(t){return null==t?Math.min(1,this._time/this.duration()):this.time(t*this.duration())}queue(t,e,n,r){return this._queue.push({initialiser:t||xt,runner:e||xt,retarget:n,isTransform:r,initialised:!1,finished:!1}),this.timeline()&&this.timeline()._continue(),this}reset(){return this._reseted||(this.time(0),this._reseted=!0),this}reverse(t){return this._reverse=null==t?!this._reverse:t,this}schedule(t,e,n){if(t instanceof Be||(n=e,e=t,t=this.timeline()),!t)throw Error("Runner cannot be scheduled without timeline");return t.schedule(this,e,n),this}step(t){if(!this.enabled)return this;t=null==t?16:t,this._time+=t;const e=this.position(),n=this._lastPosition!==e&&this._time>=0;this._lastPosition=e;const r=this.duration(),i=this._lastTime<=0&&this._time>0,s=this._lastTime<r&&this._time>=r;this._lastTime=this._time,i&&this.fire("start",this);const o=this._isDeclarative;this.done=!o&&!s&&this._time>=r,this._reseted=!1;let h=!1;return(n||o)&&(this._initialise(n),this.transforms=new it,h=this._run(o?t:e),this.fire("step",this)),this.done=this.done||h&&o,s&&this.fire("finished",this),this}time(t){if(null==t)return this._time;const e=t-this._time;return this.step(e),this}timeline(t){return void 0===t?this._timeline:(this._timeline=t,this)}unschedule(){const t=this.timeline();return t&&t.unschedule(this),this}_initialise(t){if(t||this._isDeclarative)for(let e=0,n=this._queue.length;e<n;++e){const n=this._queue[e],r=this._isDeclarative||!n.initialised&&t;t=!n.finished,r&&t&&(n.initialiser.call(this),n.initialised=!0)}}_rememberMorpher(t,e){if(this._history[t]={morpher:e,caller:this._queue[this._queue.length-1]},this._isDeclarative){const t=this.timeline();t&&t.play()}}_run(t){let e=!0;for(let n=0,r=this._queue.length;n<r;++n){const r=this._queue[n],i=r.runner.call(this,t);r.finished=r.finished||!0===i,e=e&&r.finished}return e}_tryRetarget(t,e,n){if(this._history[t]){if(!this._history[t].caller.initialised){const e=this._queue.indexOf(this._history[t].caller);return this._queue.splice(e,1),!1}this._history[t].caller.retarget?this._history[t].caller.retarget.call(this,e,n):this._history[t].morpher.to(e),this._history[t].caller.finished=!1;const r=this.timeline();return r&&r.play(),!0}return!1}}qe.id=0;class Xe{constructor(t=new it,e=-1,n=!0){this.transforms=t,this.id=e,this.done=n}clearTransformsFromQueue(){}}F([qe,Xe],{mergeWith(t){return new Xe(t.transforms.lmultiply(this.transforms),t.id)}});const Ge=(t,e)=>t.lmultiplyO(e),Ye=t=>t.transforms;function He(){const t=this._transformationRunners.runners.map(Ye).reduce(Ge,new it);this.transform(t),this._transformationRunners.merge(),1===this._transformationRunners.length()&&(this._frameId=null)}class Ue{constructor(){this.runners=[],this.ids=[]}add(t){if(this.runners.includes(t))return;const e=t.id+1;return this.runners.push(t),this.ids.push(e),this}clearBefore(t){const e=this.ids.indexOf(t+1)||1;return this.ids.splice(0,e,0),this.runners.splice(0,e,new Xe).forEach((t=>t.clearTransformsFromQueue())),this}edit(t,e){const n=this.ids.indexOf(t+1);return this.ids.splice(n,1,t+1),this.runners.splice(n,1,e),this}getByID(t){return this.runners[this.ids.indexOf(t+1)]}length(){return this.ids.length}merge(){let t=null;for(let e=0;e<this.runners.length;++e){const n=this.runners[e];if(!(t&&n.done&&t.done)||n._timeline&&n._timeline._runnerIds.includes(n.id)||t._timeline&&t._timeline._runnerIds.includes(t.id))t=n;else{this.remove(n.id);const r=n.mergeWith(t);this.edit(t.id,r),t=r,--e}}return this}remove(t){const e=this.ids.indexOf(t+1);return this.ids.splice(e,1),this.runners.splice(e,1),this}}l({Element:{animate(t,e,n){const r=qe.sanitise(t,e,n),i=this.timeline();return new qe(r.duration).loop(r).element(this).timeline(i.play()).schedule(r.delay,r.when)},delay(t,e){return this.animate(0,t,e)},_clearTransformRunnersBefore(t){this._transformationRunners.clearBefore(t.id)},_currentTransform(t){return this._transformationRunners.runners.filter((e=>e.id<=t.id)).map(Ye).reduce(Ge,new it)},_addRunner(t){this._transformationRunners.add(t),Ve.cancelImmediate(this._frameId),this._frameId=Ve.immediate(He.bind(this))},_prepareRunner(){null==this._frameId&&(this._transformationRunners=(new Ue).add(new Xe(new it(this))))}}}),F(qe,{attr(t,e){return this.styleAttr("attr",t,e)},css(t,e){return this.styleAttr("css",t,e)},styleAttr(t,e,n){if("string"==typeof e)return this.styleAttr(t,{[e]:n});let r=e;if(this._tryRetarget(t,r))return this;let i=new _e(this._stepper).to(r),s=Object.keys(r);return this.queue((function(){i=i.from(this.element()[t](s))}),(function(e){return this.element()[t](i.at(e).valueOf()),i.done()}),(function(e){const n=Object.keys(e),o=(h=s,n.filter((t=>!h.includes(t))));var h;if(o.length){const e=this.element()[t](o),n=new Ne(i.from()).valueOf();Object.assign(n,e),i.from(n)}const a=new Ne(i.to()).valueOf();Object.assign(a,e),i.to(a),s=n,r=e})),this._rememberMorpher(t,i),this},zoom(t,e){if(this._tryRetarget("zoom",t,e))return this;let n=new _e(this._stepper).to(new St(t));return this.queue((function(){n=n.from(this.element().zoom())}),(function(t){return this.element().zoom(n.at(t),e),n.done()}),(function(t,r){e=r,n.to(t)})),this._rememberMorpher("zoom",n),this},transform(t,e,n){if(e=t.relative||e,this._isDeclarative&&!e&&this._tryRetarget("transform",t))return this;const r=it.isMatrixLike(t);n=null!=t.affine?t.affine:null!=n?n:!r;const i=new _e(this._stepper).type(n?Se:it);let s,o,h,a,u;return this.queue((function(){o=o||this.element(),s=s||g(t,o),u=new it(e?void 0:o),o._addRunner(this),e||o._clearTransformRunnersBefore(this)}),(function(l){e||this.clearTransform();const{x:c,y:d}=new nt(s).transform(o._currentTransform(this));let f=new it({...t,origin:[c,d]}),m=this._isDeclarative&&h?h:u;if(n){f=f.decompose(c,d),m=m.decompose(c,d);const t=f.rotate,e=m.rotate,n=[t-360,t,t+360],r=n.map((t=>Math.abs(t-e))),i=Math.min(...r),s=r.indexOf(i);f.rotate=n[s]}e&&(r||(f.rotate=t.rotate||0),this._isDeclarative&&a&&(m.rotate=a)),i.from(m),i.to(f);const p=i.at(l);return a=p.rotate,h=new it(p),this.addTransform(h),o._addRunner(this),i.done()}),(function(e){(e.origin||"center").toString()!==(t.origin||"center").toString()&&(s=g(e,o)),t={...e,origin:s}}),!0),this._isDeclarative&&this._rememberMorpher("transform",i),this},x(t){return this._queueNumber("x",t)},y(t){return this._queueNumber("y",t)},ax(t){return this._queueNumber("ax",t)},ay(t){return this._queueNumber("ay",t)},dx(t=0){return this._queueNumberDelta("x",t)},dy(t=0){return this._queueNumberDelta("y",t)},dmove(t,e){return this.dx(t).dy(e)},_queueNumberDelta(t,e){if(e=new St(e),this._tryRetarget(t,e))return this;const n=new _e(this._stepper).to(e);let r=null;return this.queue((function(){r=this.element()[t](),n.from(r),n.to(r+e)}),(function(e){return this.element()[t](n.at(e)),n.done()}),(function(t){n.to(r+new St(t))})),this._rememberMorpher(t,n),this},_queueObject(t,e){if(this._tryRetarget(t,e))return this;const n=new _e(this._stepper).to(e);return this.queue((function(){n.from(this.element()[t]())}),(function(e){return this.element()[t](n.at(e)),n.done()})),this._rememberMorpher(t,n),this},_queueNumber(t,e){return this._queueObject(t,new St(e))},cx(t){return this._queueNumber("cx",t)},cy(t){return this._queueNumber("cy",t)},move(t,e){return this.x(t).y(e)},amove(t,e){return this.ax(t).ay(e)},center(t,e){return this.cx(t).cy(e)},size(t,e){let n;return t&&e||(n=this._element.bbox()),t||(t=n.width/n.height*e),e||(e=n.height/n.width*t),this.width(t).height(e)},width(t){return this._queueNumber("width",t)},height(t){return this._queueNumber("height",t)},plot(t,e,n,r){if(4===arguments.length)return this.plot([t,e,n,r]);if(this._tryRetarget("plot",t))return this;const i=new _e(this._stepper).type(this._element.MorphArray).to(t);return this.queue((function(){i.from(this._element.array())}),(function(t){return this._element.plot(i.at(t)),i.done()})),this._rememberMorpher("plot",i),this},leading(t){return this._queueNumber("leading",t)},viewbox(t,e,n,r){return this._queueObject("viewbox",new ht(t,e,n,r))},update(t){return"object"!=typeof t?this.update({offset:arguments[0],color:arguments[1],opacity:arguments[2]}):(null!=t.opacity&&this.attr("stop-opacity",t.opacity),null!=t.color&&this.attr("stop-color",t.color),null!=t.offset&&this.attr("offset",t.offset),this)}}),F(qe,{rx:jt,ry:kt,from:Xt,to:Gt}),k(qe,"Runner");class $e extends Tt{constructor(t,e=t){super(P("svg",t),e),this.namespace()}defs(){return this.isRoot()?E(this.node.querySelector("defs"))||this.put(new Pt):this.root().defs()}isRoot(){return!this.node.parentNode||!(this.node.parentNode instanceof M.window.SVGElement)&&"#document-fragment"!==this.node.parentNode.nodeName}namespace(){return this.isRoot()?this.attr({xmlns:_,version:"1.1"}).attr("xmlns:xlink",S,v):this.root().namespace()}removeNamespace(){return this.attr({xmlns:null,version:null}).attr("xmlns:xlink",null,v).attr("xmlns:svgjs",null,v)}root(){return this.isRoot()?this:super.root()}}l({Container:{nested:V((function(){return this.put(new $e)}))}}),k($e,"Svg",!0);class We extends Tt{constructor(t,e=t){super(P("symbol",t),e)}}function Qe(t){return!1===this._build&&this.clear(),this.node.appendChild(M.document.createTextNode(t)),this}function Je(){return this.node.getComputedTextLength()}function Ze(t,e=this.bbox()){return null==t?e.x:this.attr("x",this.attr("x")+t-e.x)}function Ke(t,e=this.bbox()){return null==t?e.y:this.attr("y",this.attr("y")+t-e.y)}function tn(t,e,n=this.bbox()){return this.x(t,n).y(e,n)}function en(t,e=this.bbox()){return null==t?e.cx:this.attr("x",this.attr("x")+t-e.cx)}function nn(t,e=this.bbox()){return null==t?e.cy:this.attr("y",this.attr("y")+t-e.cy)}function rn(t,e,n=this.bbox()){return this.cx(t,n).cy(e,n)}function sn(t){return this.attr("x",t)}function on(t){return this.attr("y",t)}function hn(t,e){return this.ax(t).ay(e)}function an(t){return this._build=!!t,this}l({Container:{symbol:V((function(){return this.put(new We)}))}}),k(We,"Symbol");class un extends Et{constructor(t,e=t){super(P("text",t),e),this.dom.leading=this.dom.leading??new St(1.3),this._rebuild=!0,this._build=!1}leading(t){return null==t?this.dom.leading:(this.dom.leading=new St(t),this.rebuild())}rebuild(t){if("boolean"==typeof t&&(this._rebuild=t),this._rebuild){const t=this;let e=0;const n=this.dom.leading;this.each((function(r){if(b(this.node))return;const i=M.window.getComputedStyle(this.node).getPropertyValue("font-size"),s=n*new St(i);this.dom.newLined&&(this.attr("x",t.attr("x")),"\n"===this.text()?e+=s:(this.attr("dy",r?s+e:0),e=0))})),this.fire("rebuild")}return this}setData(t){return this.dom=t,this.dom.leading=new St(t.leading||1.3),this}writeDataToDom(){return x(this,this.dom,{leading:1.3}),this}text(t){if(void 0===t){const e=this.node.childNodes;let n=0;t="";for(let r=0,i=e.length;r<i;++r)"textPath"===e[r].nodeName||b(e[r])?0===r&&(n=r+1):(r!==n&&3!==e[r].nodeType&&!0===E(e[r]).dom.newLined&&(t+="\n"),t+=e[r].textContent);return t}if(this.clear().build(!0),"function"==typeof t)t.call(this,this);else for(let e=0,n=(t=(t+"").split("\n")).length;e<n;e++)this.newLine(t[e]);return this.build(!1).rebuild()}}F(un,o),l({Container:{text:V((function(t=""){return this.put(new un).text(t)})),plain:V((function(t=""){return this.put(new un).plain(t)}))}}),k(un,"Text");class ln extends Et{constructor(t,e=t){super(P("tspan",t),e),this._build=!1}dx(t){return this.attr("dx",t)}dy(t){return this.attr("dy",t)}newLine(){this.dom.newLined=!0;const t=this.parent();if(!(t instanceof un))return this;const e=t.index(this),n=M.window.getComputedStyle(this.node).getPropertyValue("font-size"),r=t.dom.leading*new St(n);return this.dy(e?r:0).attr("x",t.x())}text(t){return null==t?this.node.textContent+(this.dom.newLined?"\n":""):("function"==typeof t?(this.clear().build(!0),t.call(this,this),this.build(!1)):this.plain(t),this)}}F(ln,o),l({Tspan:{tspan:V((function(t=""){const e=new ln;return this._build||this.clear(),this.put(e).text(t)}))},Text:{newLine:function(t=""){return this.tspan(t).newLine()}}}),k(ln,"Tspan");class cn extends Et{constructor(t,e=t){super(P("circle",t),e)}radius(t){return this.attr("r",t)}rx(t){return this.attr("r",t)}ry(t){return this.rx(t)}size(t){return this.radius(new St(t).divide(2))}}F(cn,{x:Dt,y:It,cx:Lt,cy:Ft,width:Vt,height:zt}),l({Container:{circle:V((function(t=0){return this.put(new cn).size(t).move(0,0)}))}}),k(cn,"Circle");class dn extends Tt{constructor(t,e=t){super(P("clipPath",t),e)}remove(){return this.targets().forEach((function(t){t.unclip()})),super.remove()}targets(){return dt("svg [clip-path*="+this.id()+"]")}}l({Container:{clip:V((function(){return this.defs().put(new dn)}))},Element:{clipper(){return this.reference("clip-path")},clipWith(t){const e=t instanceof dn?t:this.parent().clip().add(t);return this.attr("clip-path","url(#"+e.id()+")")},unclip(){return this.attr("clip-path",null)}}}),k(dn,"ClipPath");class fn extends At{constructor(t,e=t){super(P("foreignObject",t),e)}}function mn(t,e){return this.children().forEach((n=>{let r;try{r=n.node instanceof M.window.SVGSVGElement?new ht(n.attr(["x","y","width","height"])):n.bbox()}catch(t){return}const i=new it(n),s=i.translate(t,e).transform(i.inverse()),o=new nt(r.x,r.y).transform(s);n.move(o.x,o.y)})),this}function pn(t){return this.dmove(t,0)}function yn(t){return this.dmove(0,t)}function gn(t,e=this.bbox()){return null==t?e.height:this.size(e.width,t,e)}function wn(t=0,e=0,n=this.bbox()){const r=t-n.x,i=e-n.y;return this.dmove(r,i)}function bn(t,e,n=this.bbox()){const r=y(this,t,e,n),i=r.width/n.width,s=r.height/n.height;return this.children().forEach((t=>{const e=new nt(n).transform(new it(t).inverse());t.scale(i,s,e.x,e.y)})),this}function xn(t,e=this.bbox()){return null==t?e.width:this.size(t,e.height,e)}function _n(t,e=this.bbox()){return null==t?e.x:this.move(t,e.y,e)}function vn(t,e=this.bbox()){return null==t?e.y:this.move(e.x,t,e)}l({Container:{foreignObject:V((function(t,e){return this.put(new fn).size(t,e)}))}}),k(fn,"ForeignObject");class Sn extends Tt{constructor(t,e=t){super(P("g",t),e)}}F(Sn,h),l({Container:{group:V((function(){return this.put(new Sn)}))}}),k(Sn,"G");class Mn extends Tt{constructor(t,e=t){super(P("a",t),e)}target(t){return this.attr("target",t)}to(t){return this.attr("href",t,S)}}F(Mn,h),l({Container:{link:V((function(t){return this.put(new Mn).to(t)}))},Element:{unlink(){const t=this.linker();if(!t)return this;const e=t.parent();if(!e)return this.remove();const n=e.index(t);return e.add(this,n),t.remove(),this},linkTo(t){let e=this.linker();return e||(e=new Mn,this.wrap(e)),"function"==typeof t?t.call(e,e):e.to(t),this},linker(){const t=this.parent();return t&&"a"===t.node.nodeName.toLowerCase()?t:null}}}),k(Mn,"A");class Nn extends Tt{constructor(t,e=t){super(P("mask",t),e)}remove(){return this.targets().forEach((function(t){t.unmask()})),super.remove()}targets(){return dt("svg [mask*="+this.id()+"]")}}l({Container:{mask:V((function(){return this.defs().put(new Nn)}))},Element:{masker(){return this.reference("mask")},maskWith(t){const e=t instanceof Nn?t:this.parent().mask().add(t);return this.attr("mask","url(#"+e.id()+")")},unmask(){return this.attr("mask",null)}}}),k(Nn,"Mask");class On extends At{constructor(t,e=t){super(P("stop",t),e)}update(t){return("number"==typeof t||t instanceof St)&&(t={offset:arguments[0],color:arguments[1],opacity:arguments[2]}),null!=t.opacity&&this.attr("stop-opacity",t.opacity),null!=t.color&&this.attr("stop-color",t.color),null!=t.offset&&this.attr("offset",new St(t.offset)),this}}l({Gradient:{stop:function(t,e,n){return this.put(new On).update(t,e,n)}}}),k(On,"Stop");class An extends At{constructor(t,e=t){super(P("style",t),e)}addText(t=""){return this.node.textContent+=t,this}font(t,e,n={}){return this.rule("@font-face",{fontFamily:t,src:e,...n})}rule(t,e){return this.addText(function(t,e){if(!t)return"";if(!e)return t;let n=t+"{";for(const t in e)n+=t.replace(/([A-Z])/g,(function(t,e){return"-"+e.toLowerCase()}))+":"+e[t]+";";return n+="}",n}(t,e))}}l("Dom",{style(t,e){return this.put(new An).rule(t,e)},fontface(t,e,n){return this.put(new An).font(t,e,n)}}),k(An,"Style");class Cn extends un{constructor(t,e=t){super(P("textPath",t),e)}array(){const t=this.track();return t?t.array():null}plot(t){const e=this.track();let n=null;return e&&(n=e.plot(t)),null==t?n:this}track(){return this.reference("href")}}l({Container:{textPath:V((function(t,e){return t instanceof un||(t=this.text(t)),t.path(e)}))},Text:{path:V((function(t,e=!0){const n=new Cn;let r;if(t instanceof Ae||(t=this.defs().path(t)),n.attr("href","#"+t,S),e)for(;r=this.node.firstChild;)n.node.appendChild(r);return this.put(n)})),textPath(){return this.findOne("textPath")}},Path:{text:V((function(t){return t instanceof un||(t=(new un).addTo(this.parent()).text(t)),t.path(this)})),targets(){return dt("svg textPath").filter((t=>(t.attr("href")||"").includes(this.id())))}}}),Cn.prototype.MorphArray=be,k(Cn,"TextPath");class Tn extends Et{constructor(t,e=t){super(P("use",t),e)}use(t,e){return this.attr("href",(e||"")+"#"+t,S)}}l({Container:{use:V((function(t,e){return this.put(new Tn).use(t,e)}))}}),k(Tn,"Use"),F([$e,We,Ut,Ht,ne],c("viewbox")),F([ee,De,ke,Ae],c("marker")),F(un,c("Text")),F(Ae,c("Path")),F(Pt,c("Defs")),F([un,ln],c("Tspan")),F([Ie,Rt,Yt,qe],c("radius")),F(bt,c("EventTarget")),F(Ot,c("Dom")),F(At,c("Element")),F(Et,c("Shape")),F([Tt,qt],c("Container")),F(Yt,c("Gradient")),F(qe,c("Runner")),lt.extend([...new Set(u)]),function(t=[]){Oe.push(...[].concat(t))}([St,et,ht,it,vt,Wt,be,nt]),F(Oe,{to(t){return(new _e).type(this.constructor).from(this.toArray()).to(t)},fromArray(t){return this.init(t),this},toConsumable(){return this.toArray()},morph(t,e,n,r,i){return this.fromArray(t.map((function(t,s){return r.step(t,e[s],n,i[s],i)})))}});var Pn=n(726),En=n(725),jn=n(854);const kn=["basePadding1","basePadding2"],Dn={basePadding1:"setBasePadding1",basePadding2:"setBasePadding2"};class In{static between(t,e){let n=(new ee).node,r=new In(n,t,e);return r.assignUUID(),r.set(In.defaultValues),r.reposition(),r}constructor(t,e,n){this.line=t,this.base1=e,this.base2=n,this.cachedBasePadding1=(0,En.distance)(this.point1,this.base1.centerPoint),this.cachedBasePadding2=(0,En.distance)(this.point2,this.base2.centerPoint),e.addEventListener("move",(()=>this.reposition())),n.addEventListener("move",(()=>this.reposition()))}get basePair(){return[this.base1,this.base2]}get domNode(){return this.line}getAttribute(t){return this.domNode.getAttribute(t)}setAttribute(t,e){this.domNode.setAttribute(t,e)}setAttributes(t){if((0,jn.isNonNullObject)(t))try{new ee(this.domNode).attr(t)}catch(t){}}get id(){return this.domNode.id}assignUUID(){(0,Pn.assignUUID)(this.domNode)}appendTo(t){t.appendChild(this.domNode)}remove(){this.domNode.remove()}isIn(t){return t.contains(this.domNode)&&t!==this.domNode}hasParent(){return!!this.domNode.parentNode}getTotalLength(){return this.domNode.getTotalLength()}getPointAtLength(t){return this.domNode.getPointAtLength(t)}get point1(){return{x:this.domNode.x1.baseVal.value,y:this.domNode.y1.baseVal.value}}get point2(){return{x:this.domNode.x2.baseVal.value,y:this.domNode.y2.baseVal.value}}get basePadding1(){return this.cachedBasePadding1}set basePadding1(t){this.cachedBasePadding1=t,this.reposition()}setBasePadding1(t){(0,jn.isFiniteNumber)(t)&&(this.basePadding1=Math.max(0,t))}get basePadding2(){return this.cachedBasePadding2}set basePadding2(t){this.cachedBasePadding2=t,this.reposition()}setBasePadding2(t){(0,jn.isFiniteNumber)(t)&&(this.basePadding2=Math.max(0,t))}isInverted(){return this.basePadding1+this.basePadding2>(0,En.distance)(this.base1.centerPoint,this.base2.centerPoint)}set(t){try{this.setAttributes(t.attributes)}catch(t){}kn.forEach((e=>{try{this[Dn[e]](t[e])}catch(t){}}))}reposition(){let t=this.base1.centerPoint,e=this.base2.centerPoint,n=(0,En.direction)(t,e);this.setAttribute("x1",`${t.x+this.basePadding1*Math.cos(n)}`),this.setAttribute("y1",`${t.y+this.basePadding1*Math.sin(n)}`),this.setAttribute("x2",""+(e.x-this.basePadding2*Math.cos(n))),this.setAttribute("y2",""+(e.y-this.basePadding2*Math.sin(n)))}}In.defaultValues={attributes:{stroke:"#000000","stroke-width":"2"},basePadding1:6,basePadding2:6};var Ln,Fn=function(t,e,n,r){if("a"===n&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!r:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?r:"a"===n?r.call(t):r?r.value:e.get(t)};class Vn{constructor(t){Ln.set(this,void 0),function(t,e,n,r,i){if("m"===r)throw new TypeError("Private method is not writable");if("a"===r&&!i)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!i:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");"a"===r?i.call(t,n):i?i.value=n:e.set(t,n)}(this,Ln,t,"f")}toJSONSerializable(){let t=Fn(this,Ln,"f").id,e=Fn(this,Ln,"f").base1.id,n=Fn(this,Ln,"f").base2.id;if(!t)throw new Error("Straight bond ID is falsy.");if(!e)throw new Error("Base ID 1 is falsy.");if(!n)throw new Error("Base ID 2 is falsy.");return{id:t,baseID1:e,baseID2:n,basePadding1:Fn(this,Ln,"f").basePadding1,basePadding2:Fn(this,Ln,"f").basePadding2}}}Ln=new WeakMap;var zn,Rn,Bn,qn,Xn,Gn,Yn,Hn,Un,$n,Wn,Qn,Jn,Zn,Kn=function(t,e,n,r,i){if("m"===r)throw new TypeError("Private method is not writable");if("a"===r&&!i)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!i:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===r?i.call(t,n):i?i.value=n:e.set(t,n),n},tr=function(t,e,n,r){if("a"===n&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!r:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?r:"a"===n?r.call(t):r?r.value:e.get(t)};class er{constructor(t,e){zn.add(this),Rn.set(this,void 0),Bn.set(this,void 0),Kn(this,Rn,t,"f"),Kn(this,Bn,e,"f")}recreate(){let t=new In(tr(this,zn,"a",Gn),tr(this,zn,"a",$n),tr(this,zn,"a",Wn));try{t.basePadding1=tr(this,zn,"a",Jn)}catch(t){}try{t.basePadding2=tr(this,zn,"a",Zn)}catch(t){}return t}}Rn=new WeakMap,Bn=new WeakMap,zn=new WeakSet,qn=function(t){let e=tr(this,Rn,"f")[t];if(!e)throw new Error(`No ID with name "${t}" was saved.`);if("string"!=typeof e)throw new Error(`The ID with name "${t}" is not a string: ${e}.`);return e},Xn=function(){try{return tr(this,zn,"m",qn).call(this,"id")}catch(t){return tr(this,zn,"m",qn).call(this,"lineId")}},Gn=function(){let t=tr(this,zn,"a",Xn),e=tr(this,Bn,"f").domNode.querySelector(`#${t}`);if(!e)throw new Error(`No DOM node in the drawing has the ID "${t}".`);if(!(e instanceof SVGLineElement))throw new Error(`The DOM node with ID "${t}" is not an SVG line element.`);return e},Yn=function(){try{return tr(this,zn,"m",qn).call(this,"baseID1")}catch(t){return tr(this,zn,"m",qn).call(this,"baseId1")}},Hn=function(){try{return tr(this,zn,"m",qn).call(this,"baseID2")}catch(t){return tr(this,zn,"m",qn).call(this,"baseId2")}},Un=function(t){let e={1:tr(this,zn,"a",Yn),2:tr(this,zn,"a",Hn)}[t],n=[...tr(this,Bn,"f").bases].find((t=>t.id===e));if(!n)throw new Error(`No base in the drawing has the ID "${e}".`);return n},$n=function(){return tr(this,zn,"m",Un).call(this,1)},Wn=function(){return tr(this,zn,"m",Un).call(this,2)},Qn=function(t){let e=tr(this,Rn,"f")[`basePadding${t}`];if("number"!=typeof e)throw new Error(`Saved base padding ${t} is not a number: ${e}.`);return e},Jn=function(){return tr(this,zn,"m",Qn).call(this,1)},Zn=function(){return tr(this,zn,"m",Qn).call(this,2)};class nr{constructor(t,e){this.targetStraightBonds=t,new MutationObserver((t=>{let e=new Set([...this.targetStraightBonds].map((t=>t.domNode)));!t.some((t=>e.has(t.target)))||this.updateOpacities()})).observe(e,{attributes:!0,attributeFilter:["x1","y1","x2","y2"],subtree:!0})}updateOpacities(){[...this.targetStraightBonds].forEach((t=>{let e=t.isInverted()?"0":"1";t.setAttribute("opacity",e)}))}}})(),r})()));
package/package.json ADDED
@@ -0,0 +1,34 @@
1
+ {
2
+ "name": "@rnacanvas/draw.bases.bonds",
3
+ "version": "10.0.2",
4
+ "description": "Draw bonds between bases",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "https://github.com/pzhaojohnson/rnacanvas.draw.bases.bonds.git"
8
+ },
9
+ "main": "./dist/index.js",
10
+ "scripts": {
11
+ "test": "jest",
12
+ "build": "webpack"
13
+ },
14
+ "author": "pzhaojohnson",
15
+ "license": "MIT",
16
+ "devDependencies": {
17
+ "@babel/core": "^7.23.7",
18
+ "@babel/preset-env": "^7.23.7",
19
+ "@babel/preset-typescript": "^7.23.3",
20
+ "babel-jest": "^29.7.0",
21
+ "jest": "^29.7.0",
22
+ "jest-environment-jsdom": "^29.7.0",
23
+ "ts-loader": "^9.5.1",
24
+ "typescript": "^5.3.3",
25
+ "webpack": "^5.89.0",
26
+ "webpack-cli": "^5.1.4"
27
+ },
28
+ "dependencies": {
29
+ "@rnacanvas/draw.svg": "^3.3.0",
30
+ "@rnacanvas/points": "^1.12.0",
31
+ "@rnacanvas/value-check": "^1.6.2",
32
+ "@svgdotjs/svg.js": "^3.2.0"
33
+ }
34
+ }
package/tsconfig.json ADDED
@@ -0,0 +1,13 @@
1
+ {
2
+ "compilerOptions": {
3
+ "strict": true,
4
+ "outDir": "./dist/",
5
+ "sourceMap": true,
6
+ "declaration": true,
7
+ "declarationDir": "./dist/",
8
+ "declarationMap": true,
9
+ "module": "es6",
10
+ "target": "es6",
11
+ "moduleResolution": "node"
12
+ }
13
+ }
@@ -0,0 +1,28 @@
1
+ const path = require('path');
2
+
3
+ module.exports = {
4
+ entry: './src/index.ts',
5
+ mode: 'production',
6
+ module: {
7
+ rules: [
8
+ {
9
+ test: /\.tsx?$/,
10
+ use: 'ts-loader',
11
+ exclude: /node_modules/,
12
+ },
13
+ ],
14
+ },
15
+ resolve: {
16
+ extensions: ['.tsx', '.ts', '.js'],
17
+ },
18
+ output: {
19
+ path: path.resolve(__dirname, 'dist'),
20
+ filename: 'index.js',
21
+ globalObject: 'this',
22
+ library: {
23
+ name: 'draw.bases.bonds',
24
+ type: 'umd',
25
+ },
26
+ clean: true,
27
+ },
28
+ };