@rnacanvas/draw.bases.numberings 3.0.0 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +271 -0
- package/_config.yml +1 -0
- package/dist/Numbering.d.ts +2 -1
- package/dist/Numbering.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
package/README.md
ADDED
|
@@ -0,0 +1,271 @@
|
|
|
1
|
+
# Installation
|
|
2
|
+
|
|
3
|
+
With `npm`:
|
|
4
|
+
|
|
5
|
+
```
|
|
6
|
+
npm install @rnacanvas/draw.bases.numberings
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
# Usage
|
|
10
|
+
|
|
11
|
+
All exports of this package can be accessed as named imports.
|
|
12
|
+
|
|
13
|
+
```javascript
|
|
14
|
+
// example imports
|
|
15
|
+
import { Numbering, NumberingLine } from '@rnacanvas/draw.bases.numberings';
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## `class Numbering`
|
|
19
|
+
|
|
20
|
+
A numbering for a [base](https://pzhaojohnson.github.io/rnacanvas.draw.bases/).
|
|
21
|
+
|
|
22
|
+
Numberings move "with" their owner bases.
|
|
23
|
+
|
|
24
|
+
```javascript
|
|
25
|
+
var b = Nucleobase.create('G');
|
|
26
|
+
|
|
27
|
+
// a numbering of 100 for the base
|
|
28
|
+
var n = Numbering.numbering(b, 100);
|
|
29
|
+
|
|
30
|
+
n.owner === b; // true
|
|
31
|
+
|
|
32
|
+
n.textContent; // "100"
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### `static defaultValues`
|
|
36
|
+
|
|
37
|
+
Default values for numberings created using static methods such as `static numbering()`.
|
|
38
|
+
|
|
39
|
+
```javascript
|
|
40
|
+
// any attribute can be given a default value
|
|
41
|
+
Numbering.defaultValues.attributes['font-family'] = 'Arial';
|
|
42
|
+
Numbering.defaultValues.attributes['font-size'] = '8';
|
|
43
|
+
Numbering.defaultValues.attributes['font-weight'] = '400';
|
|
44
|
+
Numbering.defaultValues.attributes['fill'] = 'gray';
|
|
45
|
+
|
|
46
|
+
var b = Nucleobase.create('G');
|
|
47
|
+
|
|
48
|
+
var n = Numbering.numbering(b, 10);
|
|
49
|
+
|
|
50
|
+
n.getAttribute('font-family'); // "Arial"
|
|
51
|
+
n.getAttribute('font-size'); // "8"
|
|
52
|
+
n.getAttribute('font-weight'); // "400"
|
|
53
|
+
n.getAttribute('fill'); // "gray"
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### `static numbering()`
|
|
57
|
+
|
|
58
|
+
Creates and returns a new numbering object
|
|
59
|
+
that numbers the specified base the given number.
|
|
60
|
+
|
|
61
|
+
```javascript
|
|
62
|
+
var b = Nucleobase.create('A');
|
|
63
|
+
|
|
64
|
+
var n = Numbering.numbering(b, 12);
|
|
65
|
+
|
|
66
|
+
n.owner === b; // true
|
|
67
|
+
|
|
68
|
+
n.textContent; // "12"
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### `readonly domNode`
|
|
72
|
+
|
|
73
|
+
The DOM node corresponding to the numbering
|
|
74
|
+
(an SVG text element).
|
|
75
|
+
|
|
76
|
+
```javascript
|
|
77
|
+
var n = [...app.drawing.numberings][0];
|
|
78
|
+
|
|
79
|
+
n.domNode instanceof SVGTextElement; // true
|
|
80
|
+
|
|
81
|
+
app.drawing.domNode.contains(n.domNode); // true
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### `readonly owner`
|
|
85
|
+
|
|
86
|
+
The base that the numbering belongs to.
|
|
87
|
+
|
|
88
|
+
```javascript
|
|
89
|
+
var b = Nucleobase.create('A');
|
|
90
|
+
|
|
91
|
+
var n = Numbering.numbering(b, 5);
|
|
92
|
+
|
|
93
|
+
n.owner === b; // true
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### `id`
|
|
97
|
+
|
|
98
|
+
The ID of the numbering.
|
|
99
|
+
|
|
100
|
+
(Corresponds to the `id` attribute of the underlying DOM node.)
|
|
101
|
+
|
|
102
|
+
<b>All numberings must have a unique ID.</b>
|
|
103
|
+
|
|
104
|
+
Otherwise RNAcanvas drawings can't be saved and undo/redo functionality won't work.
|
|
105
|
+
|
|
106
|
+
Numberings created using the `static numbering()` method are automatically given unique IDs.
|
|
107
|
+
|
|
108
|
+
```javascript
|
|
109
|
+
var b = Nucleobase.create('G');
|
|
110
|
+
|
|
111
|
+
var n = Numbering.numbering(b, 5);
|
|
112
|
+
|
|
113
|
+
typeof n.id; // "string"
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
As with any element,
|
|
117
|
+
the ID for a numbering should never be changed.
|
|
118
|
+
|
|
119
|
+
### `hasAttribute()`
|
|
120
|
+
|
|
121
|
+
Returns `true` if the DOM node corresponding to the numbering
|
|
122
|
+
has the specified attribute.
|
|
123
|
+
|
|
124
|
+
```javascript
|
|
125
|
+
var b = Nucleobase.create('A');
|
|
126
|
+
|
|
127
|
+
var n = Numbering.numbering(b, 5);
|
|
128
|
+
|
|
129
|
+
n.domNode.setAttribute('fill-opacity', '0.5');
|
|
130
|
+
|
|
131
|
+
n.hasAttribute('fill-opacity'); // true
|
|
132
|
+
|
|
133
|
+
n.domNode.removeAttribute('fill-opacity');
|
|
134
|
+
|
|
135
|
+
n.hasAttribute('fill-opacity'); // false
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
### `getAttribute()`
|
|
139
|
+
|
|
140
|
+
Returns the string value of the specified attribute.
|
|
141
|
+
|
|
142
|
+
Returns `null` if the DOM node corresponding to the numbering
|
|
143
|
+
does not have the specified attribute.
|
|
144
|
+
|
|
145
|
+
```javascript
|
|
146
|
+
var b = Nucleobase.create('U');
|
|
147
|
+
|
|
148
|
+
var n = Numbering.numbering(b, 10);
|
|
149
|
+
|
|
150
|
+
n.domNode.setAttribute('fill', 'green');
|
|
151
|
+
|
|
152
|
+
n.getAttribute('fill'); // "green"
|
|
153
|
+
|
|
154
|
+
n.domNode.removeAttribute('fill');
|
|
155
|
+
|
|
156
|
+
n.getAttribute('fill'); // null
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
### `setAttribute()`
|
|
160
|
+
|
|
161
|
+
Sets an attribute on the DOM node corresponding to the numbering.
|
|
162
|
+
|
|
163
|
+
```javascript
|
|
164
|
+
var b = Nucleobase.create('T');
|
|
165
|
+
|
|
166
|
+
var n = Numbering.numbering(b, 20);
|
|
167
|
+
|
|
168
|
+
n.setAttribute('font-family', 'Arial Narrow');
|
|
169
|
+
|
|
170
|
+
n.domNode.getAttribute('font-family'); // "Arial Narrow"
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
### `setAttributes()`
|
|
174
|
+
|
|
175
|
+
Set multiple attributes of the numbering at once using an object.
|
|
176
|
+
|
|
177
|
+
```javascript
|
|
178
|
+
var b = Nucleobase.create('G');
|
|
179
|
+
|
|
180
|
+
var n = Numbering.numbering(b, -100);
|
|
181
|
+
|
|
182
|
+
n.setAttributes({
|
|
183
|
+
'font-family': 'Helvetica',
|
|
184
|
+
'font-size': '12',
|
|
185
|
+
'fill': 'blue',
|
|
186
|
+
});
|
|
187
|
+
|
|
188
|
+
n.getAttribute('font-family'); // "Helvetica"
|
|
189
|
+
n.getAttribute('font-size'); // "12"
|
|
190
|
+
n.getAttribute('fill'); // "blue"
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
### `removeAttribute()`
|
|
194
|
+
|
|
195
|
+
Removes an attribute from the DOM node corresponding to the numbering.
|
|
196
|
+
|
|
197
|
+
```javascript
|
|
198
|
+
var b = Nucleobase.create('A');
|
|
199
|
+
|
|
200
|
+
var n = Numbering.numbering(b, 2);
|
|
201
|
+
|
|
202
|
+
n.domNode.setAttribute('font-size', '8');
|
|
203
|
+
|
|
204
|
+
n.domNode.hasAttribute('font-size'); // true
|
|
205
|
+
|
|
206
|
+
n.removeAttribute('font-size');
|
|
207
|
+
|
|
208
|
+
n.domNode.hasAttribute('font-size'); // false
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
### `textContent`
|
|
212
|
+
|
|
213
|
+
The text content of the numbering.
|
|
214
|
+
|
|
215
|
+
(Is expected to be the string of a number.)
|
|
216
|
+
|
|
217
|
+
```javascript
|
|
218
|
+
var b = Nucleobase.create('C');
|
|
219
|
+
|
|
220
|
+
var n = Numbering.numbering(b, 52);
|
|
221
|
+
|
|
222
|
+
n.textContent; // "52"
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
### `displacement()`
|
|
226
|
+
|
|
227
|
+
The displacement of the numbering relative to its owner base.
|
|
228
|
+
|
|
229
|
+
Displacement is calculated in reference to the center point of the numbering
|
|
230
|
+
and the center point of the owner base.
|
|
231
|
+
|
|
232
|
+
```javascript
|
|
233
|
+
var n = [...app.drawing.numberings][0];
|
|
234
|
+
|
|
235
|
+
// must be present in the document body
|
|
236
|
+
// (for displacement calculations to work)
|
|
237
|
+
document.body.contains(n.domNode); // true
|
|
238
|
+
|
|
239
|
+
// set displacement using X and Y values
|
|
240
|
+
n.displacement.x = 30;
|
|
241
|
+
n.displacement.y = 30 * 3**0.5;
|
|
242
|
+
|
|
243
|
+
n.displacement.magnitude; // 60
|
|
244
|
+
n.displacement.direction; // Math.PI / 3
|
|
245
|
+
|
|
246
|
+
// set displacement by magnitude and direction
|
|
247
|
+
n.displacement.magnitude = 50;
|
|
248
|
+
n.displacement.direction = Math.PI / 6;
|
|
249
|
+
|
|
250
|
+
n.displacement.x; // 25 * 3**0.5
|
|
251
|
+
n.displacement.y; // 25
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
### `serialized()`
|
|
255
|
+
|
|
256
|
+
Returns the serialized form of the numbering,
|
|
257
|
+
which contains the necessary information for recreating it.
|
|
258
|
+
|
|
259
|
+
This method is used when saving drawings, for instance.
|
|
260
|
+
|
|
261
|
+
```javascript
|
|
262
|
+
var b = Nucleobase.create('A');
|
|
263
|
+
|
|
264
|
+
var n = Numbering.numbering(b, 55);
|
|
265
|
+
|
|
266
|
+
var savedNumbering = n.serialized();
|
|
267
|
+
|
|
268
|
+
savedNumbering.id === n.id; // true
|
|
269
|
+
|
|
270
|
+
savedNumbering.ownerID === b.id; // true
|
|
271
|
+
```
|
package/_config.yml
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
theme: jekyll-theme-minimal
|
package/dist/Numbering.d.ts
CHANGED
|
@@ -21,7 +21,6 @@ export declare class Numbering<B extends Nucleobase> {
|
|
|
21
21
|
readonly centerPoint: CenterPoint;
|
|
22
22
|
constructor(domNode: SVGTextElement, owner: B);
|
|
23
23
|
get id(): string;
|
|
24
|
-
get textContent(): string;
|
|
25
24
|
hasAttribute(name: string): boolean;
|
|
26
25
|
getAttribute(name: string): string | null;
|
|
27
26
|
setAttribute(name: string, value: string): void;
|
|
@@ -29,6 +28,8 @@ export declare class Numbering<B extends Nucleobase> {
|
|
|
29
28
|
[name: string]: string;
|
|
30
29
|
}): void;
|
|
31
30
|
removeAttribute(name: string): void;
|
|
31
|
+
get textContent(): string;
|
|
32
|
+
set textContent(textContent: string);
|
|
32
33
|
get displacement(): {
|
|
33
34
|
x: number;
|
|
34
35
|
y: number;
|
package/dist/Numbering.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Numbering.d.ts","sourceRoot":"","sources":["../src/Numbering.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIzC,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAUvD,qBAAa,SAAS,CAAC,CAAC,SAAS,UAAU;;IAkC7B,QAAQ,CAAC,OAAO,EAAE,cAAc;IAAE,QAAQ,CAAC,KAAK,EAAE,CAAC;IAjC/D,MAAM,CAAC,aAAa;;;;;;;MAOlB;IAEF;;;OAGG;IACH,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;IAgBrE,QAAQ,CAAC,WAAW,cAAC;gBAIA,OAAO,EAAE,cAAc,EAAW,KAAK,EAAE,CAAC;IAa/D,IAAI,EAAE,WAEL;IAED,
|
|
1
|
+
{"version":3,"file":"Numbering.d.ts","sourceRoot":"","sources":["../src/Numbering.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIzC,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAUvD,qBAAa,SAAS,CAAC,CAAC,SAAS,UAAU;;IAkC7B,QAAQ,CAAC,OAAO,EAAE,cAAc;IAAE,QAAQ,CAAC,KAAK,EAAE,CAAC;IAjC/D,MAAM,CAAC,aAAa;;;;;;;MAOlB;IAEF;;;OAGG;IACH,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;IAgBrE,QAAQ,CAAC,WAAW,cAAC;gBAIA,OAAO,EAAE,cAAc,EAAW,KAAK,EAAE,CAAC;IAa/D,IAAI,EAAE,WAEL;IAED,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAInC,YAAY,CAAC,IAAI,EAAE,MAAM;IAIzB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAI/C,aAAa,CAAC,UAAU,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,GAAG,IAAI;IAI3D,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAInC,IAAI,WAAW,WAEd;IAED,IAAI,WAAW,CAAC,WAAW,QAAA,EAE1B;IAED,IAAI,YAAY;;;;;MAsCf;IAED;;OAEG;IACH,UAAU;;;;;;;;IAUV;;;;;;;OAOG;IACH,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,UAAU,EAAE,cAAc,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC;CAmB7F"}
|
package/dist/index.js
CHANGED
|
@@ -1 +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.numberings"]=e():t["draw.bases.numberings"]=e()}(this,()=>(()=>{var t={277(t){var e;e=()=>(()=>{"use strict";var t={d:(e,r)=>{for(var n in r)t.o(r,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:r[n]})},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,{Vector:()=>r});class r{static matching(t){return new r(t.x,t.y)}constructor(t,e){this.x=t,this.y=e}[Symbol.iterator](){return[this.x,this.y].values()}get magnitude(){return Math.sqrt(Math.pow(this.x,2)+Math.pow(this.y,2))}set magnitude(t){let e=this.direction;this.x=t*Math.cos(e),this.y=t*Math.sin(e)}get direction(){return Math.atan2(this.y,this.x)}set direction(t){let e=this.magnitude;this.x=e*Math.cos(t),this.y=e*Math.sin(t)}}return e})(),t.exports=e()},645(t){var e;e=()=>(()=>{var t={986:function(t){t.exports=(()=>{"use strict";var t={d:(e,r)=>{for(var n in r)t.o(r,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:r[n]})},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 r(t){var e=0;return t.forEach(function(t){return e+=t}),e}function n(t){return r(t)/t.length}function i(t){t.sort(function(t,e){return t-e})}t.r(e),t.d(e,{areWithin:()=>f,average:()=>n,clamp:()=>l,degrees:()=>b,flipAway:()=>w,isBetween:()=>h,isBetweenExclusive:()=>d,isBetweenInclusive:()=>h,max:()=>c,mean:()=>n,median:()=>a,min:()=>u,normalizeAngle:()=>y,radians:()=>p,sortNumbers:()=>i,sortNumbersAscending:()=>i,sortNumbersDescending:()=>m,sortedNumbers:()=>s,sortedNumbersAscending:()=>s,sortedNumbersDescending:()=>g,sum:()=>r});var o=function(t,e,r){if(r||2===arguments.length)for(var n,i=0,o=e.length;i<o;i++)!n&&i in e||(n||(n=Array.prototype.slice.call(e,0,i)),n[i]=e[i]);return t.concat(n||Array.prototype.slice.call(e))};function s(t){var e=o([],t,!0);return i(e),e}function a(t){if(0==t.length)return NaN;var e=s(t);if(e.length%2!=0)return e[Math.floor(e.length/2)];var r=e.length/2,i=r-1;return n([e[r],e[i]])}function u(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 c(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 h(t,e,r){return t>=e&&t<=r}function d(t,e,r){return t>e&&t<r}function l(t,e,r){return t<e?e:t>r?r:t}function f(t,e,r){return Math.abs(t-e)<=r}function m(t){i(t),t.reverse()}function g(t){var e=s(t);return e.reverse(),e}function b(t){return t*(180/Math.PI)}function p(t){return t*(Math.PI/180)}function y(t,e){void 0===e&&(e=-Math.PI);var r=t-e;return e+((r%=2*Math.PI)>=0?r:r+2*Math.PI)}function w(t,e){var r=(e=y(e,t))-t;return(r<Math.PI/2||r>3*Math.PI/2)&&(t+=Math.PI),t}return e})()}},e={};function r(n){var i=e[n];if(void 0!==i)return i.exports;var o=e[n]={exports:{}};return t[n].call(o.exports,o,o.exports,r),o.exports}r.d=(t,e)=>{for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var n={};return(()=>{"use strict";r.r(n),r.d(n,{Box:()=>e});var t=r(986);class e{static bounding(r){let n=r.map(t=>e.matching(t)),i=(0,t.min)(n.map(t=>t.left)),o=(0,t.min)(n.map(t=>t.top)),s=(0,t.max)(n.map(t=>t.right))-i,a=(0,t.max)(n.map(t=>t.bottom))-o;return new e(i,o,s,a)}static matching(t){let{x:r,y:n,width:i,height:o}=t;return new e(r,n,i,o)}constructor(t,e,r,n){this.x=t,this.y=e,this.width=r,this.height=n}get centerX(){return this.minX+this.width/2}get centerY(){return this.minY+this.height/2}get minX(){return this.x}get minY(){return this.y}get maxX(){return this.minX+this.width}get maxY(){return this.minY+this.height}get top(){return this.minY}get right(){return this.maxX}get bottom(){return this.maxY}get left(){return this.minX}isBoundedBy(t){let r=e.matching(t);return this.minX>=r.minX&&this.minY>=r.minY&&this.maxX<=r.maxX&&this.maxY<=r.maxY}padded(t,r){return"number"!=typeof r&&(r=t),new e(this.x-t,this.y-r,this.width+2*t,this.height+2*r)}peripheralPoint(t){let e=this.width/2,r=this.height/2,n=Math.pow(Math.pow(e,2)+Math.pow(r,2),.5),i=this.centerX+n*Math.cos(t),o=this.centerY+n*Math.sin(t),s=n;return Math.abs(this.centerX-i)>e&&(s=Math.abs(e/Math.cos(t)),s=Number.isFinite(s)?s:r),Math.abs(this.centerY-o)>r&&(s=Math.abs(r/Math.sin(t)),s=Number.isFinite(s)?s:e),{x:this.centerX+s*Math.cos(t),y:this.centerY+s*Math.sin(t)}}}})(),n})(),t.exports=e()},725(t){t.exports=(()=>{var t={986:function(t){t.exports=(()=>{"use strict";var t={d:(e,r)=>{for(var n in r)t.o(r,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:r[n]})},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 r(t){var e=0;return t.forEach(function(t){return e+=t}),e}function n(t){return r(t)/t.length}function i(t){t.sort(function(t,e){return t-e})}t.r(e),t.d(e,{areWithin:()=>l,average:()=>n,degrees:()=>g,isBetweenExclusive:()=>d,isBetweenInclusive:()=>h,max:()=>c,mean:()=>n,median:()=>a,min:()=>u,radians:()=>b,sortNumbers:()=>i,sortNumbersAscending:()=>i,sortNumbersDescending:()=>f,sortedNumbers:()=>s,sortedNumbersAscending:()=>s,sortedNumbersDescending:()=>m,sum:()=>r});var o=function(t,e,r){if(r||2===arguments.length)for(var n,i=0,o=e.length;i<o;i++)!n&&i in e||(n||(n=Array.prototype.slice.call(e,0,i)),n[i]=e[i]);return t.concat(n||Array.prototype.slice.call(e))};function s(t){var e=o([],t,!0);return i(e),e}function a(t){if(0==t.length)return NaN;var e=s(t);if(e.length%2!=0)return e[Math.floor(e.length/2)];var r=e.length/2,i=r-1;return n([e[r],e[i]])}function u(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 c(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 h(t,e,r){return t>=e&&t<=r}function d(t,e,r){return t>e&&t<r}function l(t,e,r){return Math.abs(t-e)<=r}function f(t){i(t),t.reverse()}function m(t){var e=s(t);return e.reverse(),e}function g(t){return t*(180/Math.PI)}function b(t){return t*(Math.PI/180)}return e})()},854:function(t){t.exports=(()=>{"use strict";var t={d:(e,r)=>{for(var n in r)t.o(r,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:r[n]})},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 r(t){return"number"==typeof t}function n(t){return r(t)&&Number.isFinite(t)}function i(t){return r(t)&&!Number.isFinite(t)}function o(t){return n(t)&&t>0}function s(t){return n(t)&&t>=0}function a(t){return"string"==typeof t}function u(t){return null==t}function c(t){return"object"==typeof t&&null!==t}function h(t){return Array.isArray(t)}return t.r(e),t.d(e,{isArray:()=>h,isFiniteNumber:()=>n,isNonFiniteNumber:()=>i,isNonNegativeFiniteNumber:()=>s,isNonNullObject:()=>c,isNullish:()=>u,isNumber:()=>r,isPositiveFiniteNumber:()=>o,isString:()=>a}),e})()},30:function(t){t.exports=(()=>{"use strict";var t={d:(e,r)=>{for(var n in r)t.o(r,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:r[n]})},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 r(t){return Math.pow(Math.pow(t.x,2)+Math.pow(t.y,2),.5)}function n(t){return Math.atan2(t.y,t.x)}return t.r(e),t.d(e,{direction:()=>n,magnitude:()=>r}),e})()}},e={};function r(n){var i=e[n];if(void 0!==i)return i.exports;var o=e[n]={exports:{}};return t[n].call(o.exports,o,o.exports,r),o.exports}r.d=(t,e)=>{for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var n={};return(()=>{"use strict";r.r(n),r.d(n,{areWithin:()=>a,centroid:()=>f,deepCopy:()=>o,direction:()=>d,displaced:()=>c,displacement:()=>u,distance:()=>s,isFinitePoint:()=>i,isPoint:()=>e,midpoint:()=>m});var t=r(854);function e(e){return(0,t.isNonNullObject)(e)&&(0,t.isNumber)(e.x)&&(0,t.isNumber)(e.y)}function i(r){return e(r)&&(0,t.isFiniteNumber)(r.x)&&(0,t.isFiniteNumber)(r.y)}function o(t){return{x:t.x,y:t.y}}function s(t,e){var r=e.x-t.x,n=e.y-t.y;return Math.pow(Math.pow(r,2)+Math.pow(n,2),.5)}function a(t,e,r){return s(t,e)<=r}function u(t,e){return{x:e.x-t.x,y:e.y-t.y}}function c(t,e){return{x:t.x+e.x,y:t.y+e.y}}var h=r(30);function d(t,e){return(0,h.direction)(u(t,e))}var l=r(986);function f(t){return{x:(0,l.mean)(t.map(function(t){return t.x})),y:(0,l.mean)(t.map(function(t){return t.y}))}}function m(t,e){return f([t,e])}})(),n})()},726(t){var e;e=()=>(()=>{var t={854:function(t){t.exports=(()=>{"use strict";var t={d:(e,r)=>{for(var n in r)t.o(r,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:r[n]})},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 r(t){return"number"==typeof t}function n(t){return r(t)&&Number.isFinite(t)}function i(t){return r(t)&&!Number.isFinite(t)}function o(t){return n(t)&&t>0}function s(t){return n(t)&&t>=0}function a(t){return"string"==typeof t}function u(t){return null==t}function c(t){return"object"==typeof t&&null!==t}function h(t){return Array.isArray(t)}function d(t){return h(t)&&0==t.length}function l(t){return h(t)&&t.length>0}function f(t){return h(t)&&t.every(r)}function m(t){return f(t)&&t.length>0}function g(t){return h(t)&&t.every(n)}function b(t){return h(t)&&t.every(i)}function p(t){return h(t)&&t.every(a)}function y(t){return p(t)&&t.length>0}return t.r(e),t.d(e,{isArray:()=>h,isEmptyArray:()=>d,isFiniteNumber:()=>n,isFiniteNumbersArray:()=>g,isNonEmptyArray:()=>l,isNonEmptyNumbersArray:()=>m,isNonEmptyStringsArray:()=>y,isNonFiniteNumber:()=>i,isNonFiniteNumbersArray:()=>b,isNonNegativeFiniteNumber:()=>s,isNonNullObject:()=>c,isNullish:()=>u,isNumber:()=>r,isNumbersArray:()=>f,isPositiveFiniteNumber:()=>o,isString:()=>a,isStringsArray:()=>p}),e})()}},e={};function r(n){var i=e[n];if(void 0!==i)return i.exports;var o=e[n]={exports:{}};return t[n].call(o.exports,o,o.exports,r),o.exports}r.d=(t,e)=>{for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var n={};return(()=>{"use strict";function t(t,e){for(let[r,n]of Object.entries(e))t.setAttribute(r,n)}r.r(n),r.d(n,{CoordinateSystem:()=>d,HorizontalClientScaling:()=>f,InnerXML:()=>w,OuterXML:()=>P,Scaling:()=>l,VerticalClientScaling:()=>m,assignUUID:()=>h,bringToFront:()=>g,drawOnCanvas:()=>j,isSVGGraphicsElement:()=>S,isSVGGraphicsElementsArray:()=>M,sendToBack:()=>b,setAttributes:()=>t});const e={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};var i,o=new Uint8Array(16);function s(){if(!i&&!(i="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 i(o)}for(var a=[],u=0;u<256;++u)a.push((u+256).toString(16).slice(1));const c=function(t,r,n){if(e.randomUUID&&!r&&!t)return e.randomUUID();var i=(t=t||{}).random||(t.rng||s)();if(i[6]=15&i[6]|64,i[8]=63&i[8]|128,r){n=n||0;for(var o=0;o<16;++o)r[n+o]=i[o];return r}return function(t,e=0){return(a[t[e+0]]+a[t[e+1]]+a[t[e+2]]+a[t[e+3]]+"-"+a[t[e+4]]+a[t[e+5]]+"-"+a[t[e+6]]+a[t[e+7]]+"-"+a[t[e+8]]+a[t[e+9]]+"-"+a[t[e+10]]+a[t[e+11]]+a[t[e+12]]+a[t[e+13]]+a[t[e+14]]+a[t[e+15]]).toLowerCase()}(i)};function h(t){t.id="uuid-"+c()}class d{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 l{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 f{constructor(t){this.targetSVGDoc=t}get(){let t=this.targetSVGDoc.getBoundingClientRect(),e=this.targetSVGDoc.viewBox.baseVal;return t.width/e.width}}class m{constructor(t){this.targetSVGDoc=t}get(){let t=this.targetSVGDoc.getBoundingClientRect(),e=this.targetSVGDoc.viewBox.baseVal;return t.height/e.height}}function g(t){let e=t.parentNode;e&&e.appendChild(t)}function b(t){let e=t.parentNode;e&&e.prepend(t)}var p,y=function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};class w{constructor(t){p.set(this,void 0),function(t,e,r){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,r)}(this,p,t)}toString(){return y(this,p,"f").innerHTML}set(t){y(this,p,"f").innerHTML=t}}p=new WeakMap;var v,x=function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};class P{constructor(t){v.set(this,void 0),function(t,e,r){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,r)}(this,v,t)}toString(){return x(this,v,"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,v,"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,v,"f").attributes].forEach(t=>x(this,v,"f").removeAttribute(t.name)),[...e.firstElementChild.attributes].forEach(t=>x(this,v,"f").setAttribute(t.name,t.value)),x(this,v,"f").innerHTML=e.firstElementChild.innerHTML,e.remove()}}function S(t){return t instanceof SVGGraphicsElement}v=new WeakMap;var N=r(854);function M(t){return(0,N.isArray)(t)&&t.every(S)}var E=function(t,e,r,n){return new(r||(r=Promise))(function(i,o){function s(t){try{u(n.next(t))}catch(t){o(t)}}function a(t){try{u(n.throw(t))}catch(t){o(t)}}function u(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(s,a)}u((n=n.apply(t,e||[])).next())})};function j(t){return E(this,void 0,void 0,function*(){let e=document.createElement("canvas");e.style.position="fixed",e.style.display="none",e.style.pointerEvents="none",document.body.append(e),e.width=t.width.baseVal.value,e.height=t.height.baseVal.value;let r=e.getContext("2d");if(!r)throw new Error("Unable to get canvas context.");let n=(new XMLSerializer).serializeToString(t),i=new Image;return i.src="data:image/svg+xml;charset=utf-8,"+encodeURIComponent(n),yield i.decode(),r.drawImage(i,0,0,t.width.baseVal.value,t.height.baseVal.value),e.remove(),e.style.position="",e.style.display="",e.style.pointerEvents="",e})}})(),n})(),t.exports=e()},731(t){var e;e=()=>(()=>{"use strict";var t={d:(e,r)=>{for(var n in r)t.o(r,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:r[n]})},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,{CenterPoint:()=>c});var r,n,i,o,s,a=function(t,e,r,n,i){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!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"===n?i.call(t,r):i?i.value=r:e.set(t,r),r},u=function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};class c{constructor(t){r.add(this),n.set(this,void 0),i.set(this,{move:[]}),o.set(this,void 0),a(this,n,t,"f"),a(this,o,new MutationObserver(()=>u(this,r,"m",s).call(this,"move")),"f"),u(this,o,"f").observe(t,{attributes:!0,childList:!0,characterData:!0,subtree:!0})}get x(){let t=u(this,n,"f").getBBox();return t.x+t.width/2}set x(t){let e=this.x,r=[...u(this,n,"f").x.baseVal].map(t=>t.value);0!=r.length||r.push(0),r=r.map(r=>r+(t-e)),u(this,n,"f").setAttribute("x",r.join(", "))}get y(){let t=u(this,n,"f").getBBox();return t.y+t.height/2}set y(t){let e=this.y,r=[...u(this,n,"f").y.baseVal].map(t=>t.value);0!=r.length||r.push(0),r=r.map(r=>r+(t-e)),u(this,n,"f").setAttribute("y",r.join(", "))}addEventListener(t,e){u(this,i,"f")[t].push(e)}removeEventListener(t,e){u(this,i,"f")[t]=u(this,i,"f")[t].filter(t=>t!==e)}}return n=new WeakMap,i=new WeakMap,o=new WeakMap,r=new WeakSet,s=function(t){u(this,i,"f")[t].forEach(t=>t())},e})(),t.exports=e()},854(t){t.exports=(()=>{"use strict";var t={d:(e,r)=>{for(var n in r)t.o(r,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:r[n]})},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 r(t){return"number"==typeof t}function n(t){return r(t)&&Number.isFinite(t)}function i(t){return r(t)&&!Number.isFinite(t)}function o(t){return n(t)&&t>0}function s(t){return n(t)&&t>=0}function a(t){return"string"==typeof t}function u(t){return null==t}function c(t){return"object"==typeof t&&null!==t}function h(t){return Array.isArray(t)}function d(t){return h(t)&&0==t.length}function l(t){return h(t)&&t.length>0}function f(t){return h(t)&&t.every(r)}function m(t){return f(t)&&t.length>0}function g(t){return h(t)&&t.every(n)}function b(t){return h(t)&&t.every(i)}function p(t){return h(t)&&t.every(a)}function y(t){return p(t)&&t.length>0}return t.r(e),t.d(e,{isArray:()=>h,isEmptyArray:()=>d,isFiniteNumber:()=>n,isFiniteNumbersArray:()=>g,isNonEmptyArray:()=>l,isNonEmptyNumbersArray:()=>m,isNonEmptyStringsArray:()=>y,isNonFiniteNumber:()=>i,isNonFiniteNumbersArray:()=>b,isNonNegativeFiniteNumber:()=>s,isNonNullObject:()=>c,isNullish:()=>u,isNumber:()=>r,isNumbersArray:()=>f,isPositiveFiniteNumber:()=>o,isString:()=>a,isStringsArray:()=>p}),e})()}},e={};function r(n){var i=e[n];if(void 0!==i)return i.exports;var o=e[n]={exports:{}};return t[n].call(o.exports,o,o.exports,r),o.exports}r.d=(t,e)=>{for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var n={};return(()=>{"use strict";r.r(n),r.d(n,{Numbering:()=>m,NumberingLine:()=>M});var t,e=r(726),i=r(731),o=r(277),s=r(725),a=r(854),u=function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};class c{constructor(e){if(t.set(this,void 0),!(0,a.isNonNullObject)(e))throw new Error("Saved numberings must be non-null objects.");!function(t,e,r,n,i){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!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"===n?i.call(t,r):i?i.value=r:e.set(t,r)}(this,t,e,"f")}get id(){if((0,a.isString)(u(this,t,"f").id))return u(this,t,"f").id;if((0,a.isString)(u(this,t,"f").textId))return u(this,t,"f").textId;throw new Error("Unable to find the ID of the saved numbering.")}get ownerID(){if((0,a.isString)(u(this,t,"f").ownerID))return u(this,t,"f").ownerID;throw new Error("Unable to find the owner ID of the saved numbering.")}get displacement(){return u(this,t,"f").displacement}}t=new WeakMap;var h,d,l,f=function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};class m{static numbering(t,r){let n=document.createElementNS("http://www.w3.org/2000/svg","text");(0,e.assignUUID)(n),n.textContent=`${r}`;let i=new m(n,t);return i.setAttributes(m.defaultValues.attributes),i.displacement.magnitude=0,i}constructor(t,e){h.add(this),this.domNode=t,this.owner=e,d.set(this,void 0),this.centerPoint=new i.CenterPoint(t),function(t,e,r,n,i){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!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"===n?i.call(t,r):i?i.value=r:e.set(t,r)}(this,d,o.Vector.matching((0,s.displacement)(e.centerPoint,this.centerPoint)),"f"),e.centerPoint.addEventListener("move",()=>f(this,h,"m",l).call(this))}get id(){return this.domNode.id}get textContent(){return this.domNode.textContent}hasAttribute(t){return this.domNode.hasAttribute(t)}getAttribute(t){return this.domNode.getAttribute(t)}setAttribute(t,e){this.domNode.setAttribute(t,e)}setAttributes(t){Object.entries(t).forEach(([t,e])=>this.setAttribute(t,e))}removeAttribute(t){this.domNode.removeAttribute(t)}get displacement(){const t=()=>f(this,d,"f").x,e=t=>{f(this,d,"f").x=t,f(this,h,"m",l).call(this)},r=()=>f(this,d,"f").y,n=t=>{f(this,d,"f").y=t,f(this,h,"m",l).call(this)},i=()=>f(this,d,"f").magnitude,o=t=>{f(this,d,"f").magnitude=t,f(this,h,"m",l).call(this)},s=()=>f(this,d,"f").direction,a=t=>{f(this,d,"f").direction=t,f(this,h,"m",l).call(this)};return{get x(){return t()},set x(t){e(t)},get y(){return r()},set y(t){n(t)},get magnitude(){return i()},set magnitude(t){o(t)},get direction(){return s()},set direction(t){a(t)}}}serialized(){return{id:this.id,ownerID:this.owner.id,displacement:{x:this.displacement.x,y:this.displacement.y}}}static deserialized(t,e){let r=new c(t),n=e.domNode.querySelector("#"+r.id);if(!n)throw new Error("Numbering DOM node not found.");if(!(n instanceof SVGTextElement))throw new Error("Numbering DOM node must be an SVG text element.");let i=e.bases.find(t=>t.id===r.ownerID);if(!i)throw new Error("Unable to find numbering owner.");let o=new m(n,i);return(0,s.isPoint)(r.displacement)&&(o.displacement.x=r.displacement.x,o.displacement.y=r.displacement.y),o}}d=new WeakMap,h=new WeakSet,l=function(){this.centerPoint.x=this.owner.centerPoint.x+f(this,d,"f").x,this.centerPoint.y=this.owner.centerPoint.y+f(this,d,"f").y},m.defaultValues={attributes:{"font-family":"Arial","font-size":"8","font-weight":"400",fill:"#808080"}};var g,b=r(645),p=function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};class y{constructor(t){if(g.set(this,void 0),!(0,a.isNonNullObject)(t))throw new Error("Saved numbering lines must be non-null objects.");!function(t,e,r,n,i){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!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"===n?i.call(t,r):i?i.value=r:e.set(t,r)}(this,g,t,"f")}get id(){if((0,a.isString)(p(this,g,"f").id))return p(this,g,"f").id;if((0,a.isString)(p(this,g,"f").lineId))return p(this,g,"f").lineId;throw new Error("Unable to find saved numbering line ID.")}get ownerID(){if((0,a.isString)(p(this,g,"f").ownerID))return p(this,g,"f").ownerID;if((0,a.isString)(p(this,g,"f").textId))return p(this,g,"f").textId;throw new Error("Unable to find saved numbering line owner ID.")}get basePadding(){return p(this,g,"f").basePadding}get numberingPadding(){return p(this,g,"f").numberingPadding}}g=new WeakMap;var w,v,x,P,S=function(t,e,r,n,i){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!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"===n?i.call(t,r):i?i.value=r:e.set(t,r),r},N=function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};class M{static connecting(t){let r=document.createElementNS("http://www.w3.org/2000/svg","line");(0,e.assignUUID)(r),r.setAttribute("x1",`${t.owner.centerPoint.x}`),r.setAttribute("y1",`${t.owner.centerPoint.y}`),r.setAttribute("x2",`${t.centerPoint.x}`),r.setAttribute("y2",`${t.centerPoint.y}`);let n=new M(r,t);return n.set(M.defaultValues),n}static unpadded(t){let e=M.connecting(t);return e.basePadding=0,e.numberingPadding=0,e}constructor(t,e){w.add(this),this.domNode=t,this.owner=e,v.set(this,void 0),x.set(this,void 0),S(this,v,(0,s.distance)(e.owner.centerPoint,this.point1),"f");let r=b.Box.matching(e.domNode.getBBox());S(this,x,(0,s.distance)(this.point2,r.peripheralPoint(e.displacement.direction+Math.PI)),"f"),e.centerPoint.addEventListener("move",()=>N(this,w,"m",P).call(this)),e.owner.centerPoint.addEventListener("move",()=>N(this,w,"m",P).call(this))}get id(){return this.domNode.id}hasAttribute(t){return this.domNode.hasAttribute(t)}getAttribute(t){return this.domNode.getAttribute(t)}setAttribute(t,e){this.domNode.setAttribute(t,e)}setAttributes(t){Object.entries(t).forEach(([t,e])=>this.setAttribute(t,e))}removeAttribute(t){this.domNode.removeAttribute(t)}get x1(){return this.domNode.x1.baseVal.value}get y1(){return this.domNode.y1.baseVal.value}get point1(){return{x:this.x1,y:this.y1}}get x2(){return this.domNode.x2.baseVal.value}get y2(){return this.domNode.y2.baseVal.value}get point2(){return{x:this.x2,y:this.y2}}get length(){return(0,s.distance)(this.point1,this.point2)}set length(t){let e=b.Box.matching(this.owner.domNode.getBBox());this.owner.displacement.magnitude=this.basePadding+t+this.numberingPadding+(0,s.distance)(this.owner.centerPoint,e.peripheralPoint(this.owner.displacement.direction+Math.PI))}get direction(){return(0,s.direction)(this.point1,this.point2)}set direction(t){let e=this.length;this.owner.displacement.direction=t,this.length=e}get basePadding(){return N(this,v,"f")}set basePadding(t){S(this,v,t,"f"),N(this,w,"m",P).call(this)}get numberingPadding(){return N(this,x,"f")}set numberingPadding(t){S(this,x,t,"f"),N(this,w,"m",P).call(this)}set(t){!t.attributes||this.setAttributes(t.attributes),!(0,a.isNumber)(t.basePadding)||(this.basePadding=t.basePadding),!(0,a.isNumber)(t.numberingPadding)||(this.numberingPadding=t.numberingPadding)}serialized(){return{id:this.id,ownerID:this.owner.id,basePadding:this.basePadding,numberingPadding:this.numberingPadding}}static deserialized(t,e){let r=new y(t),n=e.domNode.querySelector("#"+r.id);if(!n)throw new Error("Numbering line DOM node not found.");if(!(n instanceof SVGLineElement))throw new Error("Numbering line DOM node must be an SVG line element.");let i=e.numberings.find(t=>t.id===r.ownerID);if(!i)throw new Error("Numbering line owner not found.");let o=new M(n,i);return(0,a.isNumber)(r.basePadding)&&(o.basePadding=r.basePadding),(0,a.isNumber)(r.numberingPadding)&&(o.numberingPadding=r.numberingPadding),o}}v=new WeakMap,x=new WeakMap,w=new WeakSet,P=function(){let t=this.owner.displacement.direction;this.domNode.setAttribute("x1",`${this.owner.owner.centerPoint.x+N(this,v,"f")*Math.cos(t)}`),this.domNode.setAttribute("y1",`${this.owner.owner.centerPoint.y+N(this,v,"f")*Math.sin(t)}`);let e=b.Box.matching(this.owner.domNode.getBBox()).peripheralPoint(t+Math.PI);this.domNode.setAttribute("x2",`${e.x+N(this,x,"f")*Math.cos(t+Math.PI)}`),this.domNode.setAttribute("y2",`${e.y+N(this,x,"f")*Math.sin(t+Math.PI)}`)},M.defaultValues={attributes:{stroke:"#808080","stroke-width":"1","stroke-opacity":"1"},basePadding:5,numberingPadding:1}})(),n})());
|
|
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.numberings"]=e():t["draw.bases.numberings"]=e()}(this,()=>(()=>{var t={277(t){var e;e=()=>(()=>{"use strict";var t={d:(e,r)=>{for(var n in r)t.o(r,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:r[n]})},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,{Vector:()=>r});class r{static matching(t){return new r(t.x,t.y)}constructor(t,e){this.x=t,this.y=e}[Symbol.iterator](){return[this.x,this.y].values()}get magnitude(){return Math.sqrt(Math.pow(this.x,2)+Math.pow(this.y,2))}set magnitude(t){let e=this.direction;this.x=t*Math.cos(e),this.y=t*Math.sin(e)}get direction(){return Math.atan2(this.y,this.x)}set direction(t){let e=this.magnitude;this.x=e*Math.cos(t),this.y=e*Math.sin(t)}}return e})(),t.exports=e()},645(t){var e;e=()=>(()=>{var t={986:function(t){t.exports=(()=>{"use strict";var t={d:(e,r)=>{for(var n in r)t.o(r,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:r[n]})},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 r(t){var e=0;return t.forEach(function(t){return e+=t}),e}function n(t){return r(t)/t.length}function i(t){t.sort(function(t,e){return t-e})}t.r(e),t.d(e,{areWithin:()=>f,average:()=>n,clamp:()=>l,degrees:()=>b,flipAway:()=>w,isBetween:()=>h,isBetweenExclusive:()=>d,isBetweenInclusive:()=>h,max:()=>c,mean:()=>n,median:()=>a,min:()=>u,normalizeAngle:()=>y,radians:()=>p,sortNumbers:()=>i,sortNumbersAscending:()=>i,sortNumbersDescending:()=>m,sortedNumbers:()=>s,sortedNumbersAscending:()=>s,sortedNumbersDescending:()=>g,sum:()=>r});var o=function(t,e,r){if(r||2===arguments.length)for(var n,i=0,o=e.length;i<o;i++)!n&&i in e||(n||(n=Array.prototype.slice.call(e,0,i)),n[i]=e[i]);return t.concat(n||Array.prototype.slice.call(e))};function s(t){var e=o([],t,!0);return i(e),e}function a(t){if(0==t.length)return NaN;var e=s(t);if(e.length%2!=0)return e[Math.floor(e.length/2)];var r=e.length/2,i=r-1;return n([e[r],e[i]])}function u(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 c(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 h(t,e,r){return t>=e&&t<=r}function d(t,e,r){return t>e&&t<r}function l(t,e,r){return t<e?e:t>r?r:t}function f(t,e,r){return Math.abs(t-e)<=r}function m(t){i(t),t.reverse()}function g(t){var e=s(t);return e.reverse(),e}function b(t){return t*(180/Math.PI)}function p(t){return t*(Math.PI/180)}function y(t,e){void 0===e&&(e=-Math.PI);var r=t-e;return e+((r%=2*Math.PI)>=0?r:r+2*Math.PI)}function w(t,e){var r=(e=y(e,t))-t;return(r<Math.PI/2||r>3*Math.PI/2)&&(t+=Math.PI),t}return e})()}},e={};function r(n){var i=e[n];if(void 0!==i)return i.exports;var o=e[n]={exports:{}};return t[n].call(o.exports,o,o.exports,r),o.exports}r.d=(t,e)=>{for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var n={};return(()=>{"use strict";r.r(n),r.d(n,{Box:()=>e});var t=r(986);class e{static bounding(r){let n=r.map(t=>e.matching(t)),i=(0,t.min)(n.map(t=>t.left)),o=(0,t.min)(n.map(t=>t.top)),s=(0,t.max)(n.map(t=>t.right))-i,a=(0,t.max)(n.map(t=>t.bottom))-o;return new e(i,o,s,a)}static matching(t){let{x:r,y:n,width:i,height:o}=t;return new e(r,n,i,o)}constructor(t,e,r,n){this.x=t,this.y=e,this.width=r,this.height=n}get centerX(){return this.minX+this.width/2}get centerY(){return this.minY+this.height/2}get minX(){return this.x}get minY(){return this.y}get maxX(){return this.minX+this.width}get maxY(){return this.minY+this.height}get top(){return this.minY}get right(){return this.maxX}get bottom(){return this.maxY}get left(){return this.minX}isBoundedBy(t){let r=e.matching(t);return this.minX>=r.minX&&this.minY>=r.minY&&this.maxX<=r.maxX&&this.maxY<=r.maxY}padded(t,r){return"number"!=typeof r&&(r=t),new e(this.x-t,this.y-r,this.width+2*t,this.height+2*r)}peripheralPoint(t){let e=this.width/2,r=this.height/2,n=Math.pow(Math.pow(e,2)+Math.pow(r,2),.5),i=this.centerX+n*Math.cos(t),o=this.centerY+n*Math.sin(t),s=n;return Math.abs(this.centerX-i)>e&&(s=Math.abs(e/Math.cos(t)),s=Number.isFinite(s)?s:r),Math.abs(this.centerY-o)>r&&(s=Math.abs(r/Math.sin(t)),s=Number.isFinite(s)?s:e),{x:this.centerX+s*Math.cos(t),y:this.centerY+s*Math.sin(t)}}}})(),n})(),t.exports=e()},725(t){t.exports=(()=>{var t={986:function(t){t.exports=(()=>{"use strict";var t={d:(e,r)=>{for(var n in r)t.o(r,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:r[n]})},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 r(t){var e=0;return t.forEach(function(t){return e+=t}),e}function n(t){return r(t)/t.length}function i(t){t.sort(function(t,e){return t-e})}t.r(e),t.d(e,{areWithin:()=>l,average:()=>n,degrees:()=>g,isBetweenExclusive:()=>d,isBetweenInclusive:()=>h,max:()=>c,mean:()=>n,median:()=>a,min:()=>u,radians:()=>b,sortNumbers:()=>i,sortNumbersAscending:()=>i,sortNumbersDescending:()=>f,sortedNumbers:()=>s,sortedNumbersAscending:()=>s,sortedNumbersDescending:()=>m,sum:()=>r});var o=function(t,e,r){if(r||2===arguments.length)for(var n,i=0,o=e.length;i<o;i++)!n&&i in e||(n||(n=Array.prototype.slice.call(e,0,i)),n[i]=e[i]);return t.concat(n||Array.prototype.slice.call(e))};function s(t){var e=o([],t,!0);return i(e),e}function a(t){if(0==t.length)return NaN;var e=s(t);if(e.length%2!=0)return e[Math.floor(e.length/2)];var r=e.length/2,i=r-1;return n([e[r],e[i]])}function u(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 c(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 h(t,e,r){return t>=e&&t<=r}function d(t,e,r){return t>e&&t<r}function l(t,e,r){return Math.abs(t-e)<=r}function f(t){i(t),t.reverse()}function m(t){var e=s(t);return e.reverse(),e}function g(t){return t*(180/Math.PI)}function b(t){return t*(Math.PI/180)}return e})()},854:function(t){t.exports=(()=>{"use strict";var t={d:(e,r)=>{for(var n in r)t.o(r,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:r[n]})},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 r(t){return"number"==typeof t}function n(t){return r(t)&&Number.isFinite(t)}function i(t){return r(t)&&!Number.isFinite(t)}function o(t){return n(t)&&t>0}function s(t){return n(t)&&t>=0}function a(t){return"string"==typeof t}function u(t){return null==t}function c(t){return"object"==typeof t&&null!==t}function h(t){return Array.isArray(t)}return t.r(e),t.d(e,{isArray:()=>h,isFiniteNumber:()=>n,isNonFiniteNumber:()=>i,isNonNegativeFiniteNumber:()=>s,isNonNullObject:()=>c,isNullish:()=>u,isNumber:()=>r,isPositiveFiniteNumber:()=>o,isString:()=>a}),e})()},30:function(t){t.exports=(()=>{"use strict";var t={d:(e,r)=>{for(var n in r)t.o(r,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:r[n]})},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 r(t){return Math.pow(Math.pow(t.x,2)+Math.pow(t.y,2),.5)}function n(t){return Math.atan2(t.y,t.x)}return t.r(e),t.d(e,{direction:()=>n,magnitude:()=>r}),e})()}},e={};function r(n){var i=e[n];if(void 0!==i)return i.exports;var o=e[n]={exports:{}};return t[n].call(o.exports,o,o.exports,r),o.exports}r.d=(t,e)=>{for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var n={};return(()=>{"use strict";r.r(n),r.d(n,{areWithin:()=>a,centroid:()=>f,deepCopy:()=>o,direction:()=>d,displaced:()=>c,displacement:()=>u,distance:()=>s,isFinitePoint:()=>i,isPoint:()=>e,midpoint:()=>m});var t=r(854);function e(e){return(0,t.isNonNullObject)(e)&&(0,t.isNumber)(e.x)&&(0,t.isNumber)(e.y)}function i(r){return e(r)&&(0,t.isFiniteNumber)(r.x)&&(0,t.isFiniteNumber)(r.y)}function o(t){return{x:t.x,y:t.y}}function s(t,e){var r=e.x-t.x,n=e.y-t.y;return Math.pow(Math.pow(r,2)+Math.pow(n,2),.5)}function a(t,e,r){return s(t,e)<=r}function u(t,e){return{x:e.x-t.x,y:e.y-t.y}}function c(t,e){return{x:t.x+e.x,y:t.y+e.y}}var h=r(30);function d(t,e){return(0,h.direction)(u(t,e))}var l=r(986);function f(t){return{x:(0,l.mean)(t.map(function(t){return t.x})),y:(0,l.mean)(t.map(function(t){return t.y}))}}function m(t,e){return f([t,e])}})(),n})()},726(t){var e;e=()=>(()=>{var t={854:function(t){t.exports=(()=>{"use strict";var t={d:(e,r)=>{for(var n in r)t.o(r,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:r[n]})},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 r(t){return"number"==typeof t}function n(t){return r(t)&&Number.isFinite(t)}function i(t){return r(t)&&!Number.isFinite(t)}function o(t){return n(t)&&t>0}function s(t){return n(t)&&t>=0}function a(t){return"string"==typeof t}function u(t){return null==t}function c(t){return"object"==typeof t&&null!==t}function h(t){return Array.isArray(t)}function d(t){return h(t)&&0==t.length}function l(t){return h(t)&&t.length>0}function f(t){return h(t)&&t.every(r)}function m(t){return f(t)&&t.length>0}function g(t){return h(t)&&t.every(n)}function b(t){return h(t)&&t.every(i)}function p(t){return h(t)&&t.every(a)}function y(t){return p(t)&&t.length>0}return t.r(e),t.d(e,{isArray:()=>h,isEmptyArray:()=>d,isFiniteNumber:()=>n,isFiniteNumbersArray:()=>g,isNonEmptyArray:()=>l,isNonEmptyNumbersArray:()=>m,isNonEmptyStringsArray:()=>y,isNonFiniteNumber:()=>i,isNonFiniteNumbersArray:()=>b,isNonNegativeFiniteNumber:()=>s,isNonNullObject:()=>c,isNullish:()=>u,isNumber:()=>r,isNumbersArray:()=>f,isPositiveFiniteNumber:()=>o,isString:()=>a,isStringsArray:()=>p}),e})()}},e={};function r(n){var i=e[n];if(void 0!==i)return i.exports;var o=e[n]={exports:{}};return t[n].call(o.exports,o,o.exports,r),o.exports}r.d=(t,e)=>{for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var n={};return(()=>{"use strict";function t(t,e){for(let[r,n]of Object.entries(e))t.setAttribute(r,n)}r.r(n),r.d(n,{CoordinateSystem:()=>d,HorizontalClientScaling:()=>f,InnerXML:()=>w,OuterXML:()=>P,Scaling:()=>l,VerticalClientScaling:()=>m,assignUUID:()=>h,bringToFront:()=>g,drawOnCanvas:()=>j,isSVGGraphicsElement:()=>S,isSVGGraphicsElementsArray:()=>M,sendToBack:()=>b,setAttributes:()=>t});const e={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};var i,o=new Uint8Array(16);function s(){if(!i&&!(i="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 i(o)}for(var a=[],u=0;u<256;++u)a.push((u+256).toString(16).slice(1));const c=function(t,r,n){if(e.randomUUID&&!r&&!t)return e.randomUUID();var i=(t=t||{}).random||(t.rng||s)();if(i[6]=15&i[6]|64,i[8]=63&i[8]|128,r){n=n||0;for(var o=0;o<16;++o)r[n+o]=i[o];return r}return function(t,e=0){return(a[t[e+0]]+a[t[e+1]]+a[t[e+2]]+a[t[e+3]]+"-"+a[t[e+4]]+a[t[e+5]]+"-"+a[t[e+6]]+a[t[e+7]]+"-"+a[t[e+8]]+a[t[e+9]]+"-"+a[t[e+10]]+a[t[e+11]]+a[t[e+12]]+a[t[e+13]]+a[t[e+14]]+a[t[e+15]]).toLowerCase()}(i)};function h(t){t.id="uuid-"+c()}class d{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 l{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 f{constructor(t){this.targetSVGDoc=t}get(){let t=this.targetSVGDoc.getBoundingClientRect(),e=this.targetSVGDoc.viewBox.baseVal;return t.width/e.width}}class m{constructor(t){this.targetSVGDoc=t}get(){let t=this.targetSVGDoc.getBoundingClientRect(),e=this.targetSVGDoc.viewBox.baseVal;return t.height/e.height}}function g(t){let e=t.parentNode;e&&e.appendChild(t)}function b(t){let e=t.parentNode;e&&e.prepend(t)}var p,y=function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};class w{constructor(t){p.set(this,void 0),function(t,e,r){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,r)}(this,p,t)}toString(){return y(this,p,"f").innerHTML}set(t){y(this,p,"f").innerHTML=t}}p=new WeakMap;var v,x=function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};class P{constructor(t){v.set(this,void 0),function(t,e,r){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,r)}(this,v,t)}toString(){return x(this,v,"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,v,"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,v,"f").attributes].forEach(t=>x(this,v,"f").removeAttribute(t.name)),[...e.firstElementChild.attributes].forEach(t=>x(this,v,"f").setAttribute(t.name,t.value)),x(this,v,"f").innerHTML=e.firstElementChild.innerHTML,e.remove()}}function S(t){return t instanceof SVGGraphicsElement}v=new WeakMap;var N=r(854);function M(t){return(0,N.isArray)(t)&&t.every(S)}var E=function(t,e,r,n){return new(r||(r=Promise))(function(i,o){function s(t){try{u(n.next(t))}catch(t){o(t)}}function a(t){try{u(n.throw(t))}catch(t){o(t)}}function u(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(s,a)}u((n=n.apply(t,e||[])).next())})};function j(t){return E(this,void 0,void 0,function*(){let e=document.createElement("canvas");e.style.position="fixed",e.style.display="none",e.style.pointerEvents="none",document.body.append(e),e.width=t.width.baseVal.value,e.height=t.height.baseVal.value;let r=e.getContext("2d");if(!r)throw new Error("Unable to get canvas context.");let n=(new XMLSerializer).serializeToString(t),i=new Image;return i.src="data:image/svg+xml;charset=utf-8,"+encodeURIComponent(n),yield i.decode(),r.drawImage(i,0,0,t.width.baseVal.value,t.height.baseVal.value),e.remove(),e.style.position="",e.style.display="",e.style.pointerEvents="",e})}})(),n})(),t.exports=e()},731(t){var e;e=()=>(()=>{"use strict";var t={d:(e,r)=>{for(var n in r)t.o(r,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:r[n]})},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,{CenterPoint:()=>c});var r,n,i,o,s,a=function(t,e,r,n,i){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!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"===n?i.call(t,r):i?i.value=r:e.set(t,r),r},u=function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};class c{constructor(t){r.add(this),n.set(this,void 0),i.set(this,{move:[]}),o.set(this,void 0),a(this,n,t,"f"),a(this,o,new MutationObserver(()=>u(this,r,"m",s).call(this,"move")),"f"),u(this,o,"f").observe(t,{attributes:!0,childList:!0,characterData:!0,subtree:!0})}get x(){let t=u(this,n,"f").getBBox();return t.x+t.width/2}set x(t){let e=this.x,r=[...u(this,n,"f").x.baseVal].map(t=>t.value);0!=r.length||r.push(0),r=r.map(r=>r+(t-e)),u(this,n,"f").setAttribute("x",r.join(", "))}get y(){let t=u(this,n,"f").getBBox();return t.y+t.height/2}set y(t){let e=this.y,r=[...u(this,n,"f").y.baseVal].map(t=>t.value);0!=r.length||r.push(0),r=r.map(r=>r+(t-e)),u(this,n,"f").setAttribute("y",r.join(", "))}addEventListener(t,e){u(this,i,"f")[t].push(e)}removeEventListener(t,e){u(this,i,"f")[t]=u(this,i,"f")[t].filter(t=>t!==e)}}return n=new WeakMap,i=new WeakMap,o=new WeakMap,r=new WeakSet,s=function(t){u(this,i,"f")[t].forEach(t=>t())},e})(),t.exports=e()},854(t){t.exports=(()=>{"use strict";var t={d:(e,r)=>{for(var n in r)t.o(r,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:r[n]})},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 r(t){return"number"==typeof t}function n(t){return r(t)&&Number.isFinite(t)}function i(t){return r(t)&&!Number.isFinite(t)}function o(t){return n(t)&&t>0}function s(t){return n(t)&&t>=0}function a(t){return"string"==typeof t}function u(t){return null==t}function c(t){return"object"==typeof t&&null!==t}function h(t){return Array.isArray(t)}function d(t){return h(t)&&0==t.length}function l(t){return h(t)&&t.length>0}function f(t){return h(t)&&t.every(r)}function m(t){return f(t)&&t.length>0}function g(t){return h(t)&&t.every(n)}function b(t){return h(t)&&t.every(i)}function p(t){return h(t)&&t.every(a)}function y(t){return p(t)&&t.length>0}return t.r(e),t.d(e,{isArray:()=>h,isEmptyArray:()=>d,isFiniteNumber:()=>n,isFiniteNumbersArray:()=>g,isNonEmptyArray:()=>l,isNonEmptyNumbersArray:()=>m,isNonEmptyStringsArray:()=>y,isNonFiniteNumber:()=>i,isNonFiniteNumbersArray:()=>b,isNonNegativeFiniteNumber:()=>s,isNonNullObject:()=>c,isNullish:()=>u,isNumber:()=>r,isNumbersArray:()=>f,isPositiveFiniteNumber:()=>o,isString:()=>a,isStringsArray:()=>p}),e})()}},e={};function r(n){var i=e[n];if(void 0!==i)return i.exports;var o=e[n]={exports:{}};return t[n].call(o.exports,o,o.exports,r),o.exports}r.d=(t,e)=>{for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var n={};return(()=>{"use strict";r.r(n),r.d(n,{Numbering:()=>m,NumberingLine:()=>M});var t,e=r(726),i=r(731),o=r(277),s=r(725),a=r(854),u=function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};class c{constructor(e){if(t.set(this,void 0),!(0,a.isNonNullObject)(e))throw new Error("Saved numberings must be non-null objects.");!function(t,e,r,n,i){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!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"===n?i.call(t,r):i?i.value=r:e.set(t,r)}(this,t,e,"f")}get id(){if((0,a.isString)(u(this,t,"f").id))return u(this,t,"f").id;if((0,a.isString)(u(this,t,"f").textId))return u(this,t,"f").textId;throw new Error("Unable to find the ID of the saved numbering.")}get ownerID(){if((0,a.isString)(u(this,t,"f").ownerID))return u(this,t,"f").ownerID;throw new Error("Unable to find the owner ID of the saved numbering.")}get displacement(){return u(this,t,"f").displacement}}t=new WeakMap;var h,d,l,f=function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};class m{static numbering(t,r){let n=document.createElementNS("http://www.w3.org/2000/svg","text");(0,e.assignUUID)(n),n.textContent=`${r}`;let i=new m(n,t);return i.setAttributes(m.defaultValues.attributes),i.displacement.magnitude=0,i}constructor(t,e){h.add(this),this.domNode=t,this.owner=e,d.set(this,void 0),this.centerPoint=new i.CenterPoint(t),function(t,e,r,n,i){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!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"===n?i.call(t,r):i?i.value=r:e.set(t,r)}(this,d,o.Vector.matching((0,s.displacement)(e.centerPoint,this.centerPoint)),"f"),e.centerPoint.addEventListener("move",()=>f(this,h,"m",l).call(this))}get id(){return this.domNode.id}hasAttribute(t){return this.domNode.hasAttribute(t)}getAttribute(t){return this.domNode.getAttribute(t)}setAttribute(t,e){this.domNode.setAttribute(t,e)}setAttributes(t){Object.entries(t).forEach(([t,e])=>this.setAttribute(t,e))}removeAttribute(t){this.domNode.removeAttribute(t)}get textContent(){return this.domNode.textContent}set textContent(t){this.domNode.textContent=t}get displacement(){const t=()=>f(this,d,"f").x,e=t=>{f(this,d,"f").x=t,f(this,h,"m",l).call(this)},r=()=>f(this,d,"f").y,n=t=>{f(this,d,"f").y=t,f(this,h,"m",l).call(this)},i=()=>f(this,d,"f").magnitude,o=t=>{f(this,d,"f").magnitude=t,f(this,h,"m",l).call(this)},s=()=>f(this,d,"f").direction,a=t=>{f(this,d,"f").direction=t,f(this,h,"m",l).call(this)};return{get x(){return t()},set x(t){e(t)},get y(){return r()},set y(t){n(t)},get magnitude(){return i()},set magnitude(t){o(t)},get direction(){return s()},set direction(t){a(t)}}}serialized(){return{id:this.id,ownerID:this.owner.id,displacement:{x:this.displacement.x,y:this.displacement.y}}}static deserialized(t,e){let r=new c(t),n=e.domNode.querySelector("#"+r.id);if(!n)throw new Error("Numbering DOM node not found.");if(!(n instanceof SVGTextElement))throw new Error("Numbering DOM node must be an SVG text element.");let i=e.bases.find(t=>t.id===r.ownerID);if(!i)throw new Error("Unable to find numbering owner.");let o=new m(n,i);return(0,s.isPoint)(r.displacement)&&(o.displacement.x=r.displacement.x,o.displacement.y=r.displacement.y),o}}d=new WeakMap,h=new WeakSet,l=function(){this.centerPoint.x=this.owner.centerPoint.x+f(this,d,"f").x,this.centerPoint.y=this.owner.centerPoint.y+f(this,d,"f").y},m.defaultValues={attributes:{"font-family":"Arial","font-size":"8","font-weight":"400",fill:"#808080"}};var g,b=r(645),p=function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};class y{constructor(t){if(g.set(this,void 0),!(0,a.isNonNullObject)(t))throw new Error("Saved numbering lines must be non-null objects.");!function(t,e,r,n,i){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!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"===n?i.call(t,r):i?i.value=r:e.set(t,r)}(this,g,t,"f")}get id(){if((0,a.isString)(p(this,g,"f").id))return p(this,g,"f").id;if((0,a.isString)(p(this,g,"f").lineId))return p(this,g,"f").lineId;throw new Error("Unable to find saved numbering line ID.")}get ownerID(){if((0,a.isString)(p(this,g,"f").ownerID))return p(this,g,"f").ownerID;if((0,a.isString)(p(this,g,"f").textId))return p(this,g,"f").textId;throw new Error("Unable to find saved numbering line owner ID.")}get basePadding(){return p(this,g,"f").basePadding}get numberingPadding(){return p(this,g,"f").numberingPadding}}g=new WeakMap;var w,v,x,P,S=function(t,e,r,n,i){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!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"===n?i.call(t,r):i?i.value=r:e.set(t,r),r},N=function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};class M{static connecting(t){let r=document.createElementNS("http://www.w3.org/2000/svg","line");(0,e.assignUUID)(r),r.setAttribute("x1",`${t.owner.centerPoint.x}`),r.setAttribute("y1",`${t.owner.centerPoint.y}`),r.setAttribute("x2",`${t.centerPoint.x}`),r.setAttribute("y2",`${t.centerPoint.y}`);let n=new M(r,t);return n.set(M.defaultValues),n}static unpadded(t){let e=M.connecting(t);return e.basePadding=0,e.numberingPadding=0,e}constructor(t,e){w.add(this),this.domNode=t,this.owner=e,v.set(this,void 0),x.set(this,void 0),S(this,v,(0,s.distance)(e.owner.centerPoint,this.point1),"f");let r=b.Box.matching(e.domNode.getBBox());S(this,x,(0,s.distance)(this.point2,r.peripheralPoint(e.displacement.direction+Math.PI)),"f"),e.centerPoint.addEventListener("move",()=>N(this,w,"m",P).call(this)),e.owner.centerPoint.addEventListener("move",()=>N(this,w,"m",P).call(this))}get id(){return this.domNode.id}hasAttribute(t){return this.domNode.hasAttribute(t)}getAttribute(t){return this.domNode.getAttribute(t)}setAttribute(t,e){this.domNode.setAttribute(t,e)}setAttributes(t){Object.entries(t).forEach(([t,e])=>this.setAttribute(t,e))}removeAttribute(t){this.domNode.removeAttribute(t)}get x1(){return this.domNode.x1.baseVal.value}get y1(){return this.domNode.y1.baseVal.value}get point1(){return{x:this.x1,y:this.y1}}get x2(){return this.domNode.x2.baseVal.value}get y2(){return this.domNode.y2.baseVal.value}get point2(){return{x:this.x2,y:this.y2}}get length(){return(0,s.distance)(this.point1,this.point2)}set length(t){let e=b.Box.matching(this.owner.domNode.getBBox());this.owner.displacement.magnitude=this.basePadding+t+this.numberingPadding+(0,s.distance)(this.owner.centerPoint,e.peripheralPoint(this.owner.displacement.direction+Math.PI))}get direction(){return(0,s.direction)(this.point1,this.point2)}set direction(t){let e=this.length;this.owner.displacement.direction=t,this.length=e}get basePadding(){return N(this,v,"f")}set basePadding(t){S(this,v,t,"f"),N(this,w,"m",P).call(this)}get numberingPadding(){return N(this,x,"f")}set numberingPadding(t){S(this,x,t,"f"),N(this,w,"m",P).call(this)}set(t){!t.attributes||this.setAttributes(t.attributes),!(0,a.isNumber)(t.basePadding)||(this.basePadding=t.basePadding),!(0,a.isNumber)(t.numberingPadding)||(this.numberingPadding=t.numberingPadding)}serialized(){return{id:this.id,ownerID:this.owner.id,basePadding:this.basePadding,numberingPadding:this.numberingPadding}}static deserialized(t,e){let r=new y(t),n=e.domNode.querySelector("#"+r.id);if(!n)throw new Error("Numbering line DOM node not found.");if(!(n instanceof SVGLineElement))throw new Error("Numbering line DOM node must be an SVG line element.");let i=e.numberings.find(t=>t.id===r.ownerID);if(!i)throw new Error("Numbering line owner not found.");let o=new M(n,i);return(0,a.isNumber)(r.basePadding)&&(o.basePadding=r.basePadding),(0,a.isNumber)(r.numberingPadding)&&(o.numberingPadding=r.numberingPadding),o}}v=new WeakMap,x=new WeakMap,w=new WeakSet,P=function(){let t=this.owner.displacement.direction;this.domNode.setAttribute("x1",`${this.owner.owner.centerPoint.x+N(this,v,"f")*Math.cos(t)}`),this.domNode.setAttribute("y1",`${this.owner.owner.centerPoint.y+N(this,v,"f")*Math.sin(t)}`);let e=b.Box.matching(this.owner.domNode.getBBox()).peripheralPoint(t+Math.PI);this.domNode.setAttribute("x2",`${e.x+N(this,x,"f")*Math.cos(t+Math.PI)}`),this.domNode.setAttribute("y2",`${e.y+N(this,x,"f")*Math.sin(t+Math.PI)}`)},M.defaultValues={attributes:{stroke:"#808080","stroke-width":"1","stroke-opacity":"1"},basePadding:5,numberingPadding:1}})(),n})());
|