@jbrowse/svgcanvas 5.0.7 → 5.0.16

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/package.json CHANGED
@@ -1,18 +1,16 @@
1
1
  {
2
2
  "name": "@jbrowse/svgcanvas",
3
- "version": "5.0.7",
3
+ "version": "5.0.16",
4
4
  "description": "Draw on SVG using Canvas's 2D Context API - ESM fork of svgcanvas",
5
5
  "license": "MIT",
6
6
  "type": "module",
7
- "main": "dist/index.js",
8
- "module": "dist/index.js",
9
- "types": "dist/index.d.ts",
10
7
  "exports": {
11
8
  ".": {
12
9
  "types": "./dist/index.d.ts",
13
10
  "default": "./dist/index.js"
14
11
  }
15
12
  },
13
+ "types": "dist/index.d.ts",
16
14
  "publishConfig": {
17
15
  "access": "public"
18
16
  },
@@ -22,12 +20,13 @@
22
20
  ],
23
21
  "repository": {
24
22
  "type": "git",
25
- "url": "https://github.com/GMOD/react-msaview.git",
23
+ "url": "https://github.com/GMOD/JBrowseMSA.git",
26
24
  "directory": "packages/svgcanvas"
27
25
  },
28
26
  "scripts": {
29
27
  "build": "tsc",
30
28
  "watch": "tsc --watch",
31
29
  "clean": "rimraf dist"
32
- }
30
+ },
31
+ "main": "dist/index.js"
33
32
  }
@@ -1,128 +0,0 @@
1
- /**
2
- * SVGCanvas v2.0.3
3
- * Draw on SVG using Canvas's 2D Context API.
4
- *
5
- * Licensed under the MIT license:
6
- * http://www.opensource.org/licenses/mit-license.php
7
- *
8
- * Original Authors: Kerry Liu, Zeno Zeng
9
- * Copyright (c) 2014 Gliffy Inc.
10
- * Copyright (c) 2021 Zeno Zeng
11
- *
12
- * Vendored and converted to ESM/TypeScript for pure ESM compatibility.
13
- */
14
- declare class CanvasGradient {
15
- __root: SVGElement;
16
- __ctx: Context;
17
- constructor(gradientNode: SVGElement, ctx: Context);
18
- addColorStop(offset: number, color: string): void;
19
- }
20
- interface ContextOptions {
21
- width?: number;
22
- height?: number;
23
- enableMirroring?: boolean;
24
- document?: Document;
25
- ctx?: CanvasRenderingContext2D;
26
- debug?: boolean;
27
- }
28
- export declare class Context {
29
- width: number;
30
- height: number;
31
- enableMirroring: boolean;
32
- canvas: Context;
33
- __document: Document;
34
- __ctx: CanvasRenderingContext2D;
35
- __canvas?: HTMLCanvasElement;
36
- __root: SVGSVGElement;
37
- __ids: Record<string, string>;
38
- __defs: SVGDefsElement;
39
- __currentElement: SVGElement;
40
- __styleStack: any[];
41
- __groupStack: SVGElement[];
42
- __currentDefaultPath: string;
43
- __currentPosition: {
44
- x?: number;
45
- y?: number;
46
- };
47
- __transformMatrix: DOMMatrix;
48
- __transformMatrixStack?: DOMMatrix[];
49
- __currentElementsToStyle?: {
50
- element: SVGElement;
51
- children: SVGElement[];
52
- };
53
- __options: ContextOptions;
54
- __id: string;
55
- __fontUnderline?: string;
56
- __fontHref?: string;
57
- strokeStyle: any;
58
- fillStyle: any;
59
- lineCap: any;
60
- lineJoin: any;
61
- miterLimit: any;
62
- lineWidth: any;
63
- globalAlpha: any;
64
- font: any;
65
- shadowColor: any;
66
- shadowOffsetX: any;
67
- shadowOffsetY: any;
68
- shadowBlur: any;
69
- textAlign: any;
70
- textBaseline: any;
71
- lineDash: any;
72
- constructor(o?: ContextOptions | number, height?: number);
73
- __createElement(elementName: string, properties?: Record<string, any>, resetFill?: boolean): SVGElement;
74
- __setDefaultStyles(): void;
75
- __applyStyleState(styleState: Record<string, any>): void;
76
- __getStyleState(): Record<string, any>;
77
- __applyTransformation(element: SVGElement, matrix?: DOMMatrix): void;
78
- __applyStyleToCurrentElement(type: string): void;
79
- __closestGroupOrSvg(node?: SVGElement): SVGElement;
80
- getSerializedSvg(fixNamedEntities?: boolean): string;
81
- getSvg(): SVGSVGElement;
82
- save(): void;
83
- restore(): void;
84
- beginPath(): void;
85
- __applyCurrentDefaultPath(): void;
86
- __addPathCommand(command: string): void;
87
- moveTo(x: number, y: number): void;
88
- closePath(): void;
89
- lineTo(x: number, y: number): void;
90
- bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number): void;
91
- quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void;
92
- stroke(): void;
93
- fill(): void;
94
- rect(x: number, y: number, width: number, height: number): void;
95
- __clearCanvas(): void;
96
- fillRect(x: number, y: number, width: number, height: number): void;
97
- strokeRect(x: number, y: number, width: number, height: number): void;
98
- clearRect(x: number, y: number, width: number, height: number): void;
99
- createLinearGradient(x1: number, y1: number, x2: number, y2: number): CanvasGradient;
100
- createRadialGradient(x0: number, y0: number, r0: number, x1: number, y1: number, r1: number): CanvasGradient;
101
- __applyText(text: string, x: number, y: number, action: string): void;
102
- fillText(text: string, x: number, y: number): void;
103
- strokeText(text: string, x: number, y: number): void;
104
- measureText(text: string): TextMetrics;
105
- arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, counterClockwise?: boolean): void;
106
- clip(): void;
107
- setLineDash(dashArray: number[]): void;
108
- setTransform(a: number | DOMMatrix, b?: number, c?: number, d?: number, e?: number, f?: number): void;
109
- getTransform(): DOMMatrix;
110
- resetTransform(): void;
111
- scale(x: number, y?: number): void;
112
- rotate(angle: number): void;
113
- translate(x: number, y: number): void;
114
- transform(a: number, b: number, c: number, d: number, e: number, f: number): void;
115
- __matrixTransform(x: number, y: number): DOMPoint;
116
- __getTransformScale(): {
117
- x: number;
118
- y: number;
119
- };
120
- __getTransformRotation(): number;
121
- drawFocusRing(): void;
122
- createImageData(): void;
123
- putImageData(): void;
124
- globalCompositeOperation(): void;
125
- drawImage(): void;
126
- createPattern(): null;
127
- }
128
- export {};
package/dist/src/index.js DELETED
@@ -1,786 +0,0 @@
1
- /**
2
- * SVGCanvas v2.0.3
3
- * Draw on SVG using Canvas's 2D Context API.
4
- *
5
- * Licensed under the MIT license:
6
- * http://www.opensource.org/licenses/mit-license.php
7
- *
8
- * Original Authors: Kerry Liu, Zeno Zeng
9
- * Copyright (c) 2014 Gliffy Inc.
10
- * Copyright (c) 2021 Zeno Zeng
11
- *
12
- * Vendored and converted to ESM/TypeScript for pure ESM compatibility.
13
- */
14
- /* eslint-disable @typescript-eslint/no-explicit-any */
15
- function toString(obj) {
16
- if (!obj) {
17
- return obj;
18
- }
19
- if (typeof obj === 'string') {
20
- return obj;
21
- }
22
- return obj + '';
23
- }
24
- function format(str, args) {
25
- const keys = Object.keys(args);
26
- for (const key of keys) {
27
- str = str.replace(new RegExp('\\{' + key + '\\}', 'gi'), args[key]);
28
- }
29
- return str;
30
- }
31
- function randomString(holder) {
32
- if (!holder) {
33
- throw new Error('cannot create a random attribute name for an undefined object');
34
- }
35
- const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz';
36
- let randomstring = '';
37
- do {
38
- randomstring = '';
39
- for (let i = 0; i < 12; i++) {
40
- randomstring += chars[Math.floor(Math.random() * chars.length)];
41
- }
42
- } while (holder[randomstring]);
43
- return randomstring;
44
- }
45
- function createNamedToNumberedLookup(items, radix = 10) {
46
- const lookup = {};
47
- const parts = items.split(',');
48
- for (let i = 0; i < parts.length; i += 2) {
49
- const entity = '&' + parts[i + 1] + ';';
50
- const base10 = parseInt(parts[i], radix);
51
- lookup[entity] = '&#' + base10 + ';';
52
- }
53
- lookup['\\xa0'] = '&#160;';
54
- return lookup;
55
- }
56
- function getTextAnchor(textAlign) {
57
- const mapping = {
58
- left: 'start',
59
- right: 'end',
60
- center: 'middle',
61
- start: 'start',
62
- end: 'end',
63
- };
64
- return mapping[textAlign] || mapping.start;
65
- }
66
- function getDominantBaseline(textBaseline) {
67
- const mapping = {
68
- alphabetic: 'alphabetic',
69
- hanging: 'hanging',
70
- top: 'text-before-edge',
71
- bottom: 'text-after-edge',
72
- middle: 'central',
73
- };
74
- return mapping[textBaseline] || mapping.alphabetic;
75
- }
76
- const namedEntities = createNamedToNumberedLookup('50,nbsp,51,iexcl,52,cent,53,pound,54,curren,55,yen,56,brvbar,57,sect,58,uml,59,copy,' +
77
- '5a,ordf,5b,laquo,5c,not,5d,shy,5e,reg,5f,macr,5g,deg,5h,plusmn,5i,sup2,5j,sup3,5k,acute,' +
78
- '5l,micro,5m,para,5n,middot,5o,cedil,5p,sup1,5q,ordm,5r,raquo,5s,frac14,5t,frac12,5u,frac34,' +
79
- '5v,iquest,60,Agrave,61,Aacute,62,Acirc,63,Atilde,64,Auml,65,Aring,66,AElig,67,Ccedil,' +
80
- '68,Egrave,69,Eacute,6a,Ecirc,6b,Euml,6c,Igrave,6d,Iacute,6e,Icirc,6f,Iuml,6g,ETH,6h,Ntilde,' +
81
- '6i,Ograve,6j,Oacute,6k,Ocirc,6l,Otilde,6m,Ouml,6n,times,6o,Oslash,6p,Ugrave,6q,Uacute,' +
82
- '6r,Ucirc,6s,Uuml,6t,Yacute,6u,THORN,6v,szlig,70,agrave,71,aacute,72,acirc,73,atilde,74,auml,' +
83
- '75,aring,76,aelig,77,ccedil,78,egrave,79,eacute,7a,ecirc,7b,euml,7c,igrave,7d,iacute,7e,icirc,' +
84
- '7f,iuml,7g,eth,7h,ntilde,7i,ograve,7j,oacute,7k,ocirc,7l,otilde,7m,ouml,7n,divide,7o,oslash,' +
85
- '7p,ugrave,7q,uacute,7r,ucirc,7s,uuml,7t,yacute,7u,thorn,7v,yuml,ci,fnof,sh,Alpha,si,Beta,' +
86
- 'sj,Gamma,sk,Delta,sl,Epsilon,sm,Zeta,sn,Eta,so,Theta,sp,Iota,sq,Kappa,sr,Lambda,ss,Mu,' +
87
- 'st,Nu,su,Xi,sv,Omicron,t0,Pi,t1,Rho,t3,Sigma,t4,Tau,t5,Upsilon,t6,Phi,t7,Chi,t8,Psi,' +
88
- 't9,Omega,th,alpha,ti,beta,tj,gamma,tk,delta,tl,epsilon,tm,zeta,tn,eta,to,theta,tp,iota,' +
89
- 'tq,kappa,tr,lambda,ts,mu,tt,nu,tu,xi,tv,omicron,u0,pi,u1,rho,u2,sigmaf,u3,sigma,u4,tau,' +
90
- 'u5,upsilon,u6,phi,u7,chi,u8,psi,u9,omega,uh,thetasym,ui,upsih,um,piv,812,bull,816,hellip,' +
91
- '81i,prime,81j,Prime,81u,oline,824,frasl,88o,weierp,88h,image,88s,real,892,trade,89l,alefsym,' +
92
- '8cg,larr,8ch,uarr,8ci,rarr,8cj,darr,8ck,harr,8dl,crarr,8eg,lArr,8eh,uArr,8ei,rArr,8ej,dArr,' +
93
- '8ek,hArr,8g0,forall,8g2,part,8g3,exist,8g5,empty,8g7,nabla,8g8,isin,8g9,notin,8gb,ni,8gf,prod,' +
94
- '8gh,sum,8gi,minus,8gn,lowast,8gq,radic,8gt,prop,8gu,infin,8h0,ang,8h7,and,8h8,or,8h9,cap,8ha,cup,' +
95
- '8hb,int,8hk,there4,8hs,sim,8i5,cong,8i8,asymp,8j0,ne,8j1,equiv,8j4,le,8j5,ge,8k2,sub,8k3,sup,8k4,' +
96
- 'nsub,8k6,sube,8k7,supe,8kl,oplus,8kn,otimes,8l5,perp,8m5,sdot,8o8,lceil,8o9,rceil,8oa,lfloor,8ob,' +
97
- 'rfloor,8p9,lang,8pa,rang,9ea,loz,9j0,spades,9j3,clubs,9j5,hearts,9j6,diams,ai,OElig,aj,oelig,b0,' +
98
- 'Scaron,b1,scaron,bo,Yuml,m6,circ,ms,tilde,802,ensp,803,emsp,809,thinsp,80c,zwnj,80d,zwj,80e,lrm,' +
99
- '80f,rlm,80j,ndash,80k,mdash,80o,lsquo,80p,rsquo,80q,sbquo,80s,ldquo,80t,rdquo,80u,bdquo,810,dagger,' +
100
- '811,Dagger,81g,permil,81p,lsaquo,81q,rsaquo,85c,euro', 32);
101
- const STYLES = {
102
- strokeStyle: {
103
- svgAttr: 'stroke',
104
- canvas: '#000000',
105
- svg: 'none',
106
- apply: 'stroke',
107
- },
108
- fillStyle: {
109
- svgAttr: 'fill',
110
- canvas: '#000000',
111
- svg: null,
112
- apply: 'fill',
113
- },
114
- lineCap: {
115
- svgAttr: 'stroke-linecap',
116
- canvas: 'butt',
117
- svg: 'butt',
118
- apply: 'stroke',
119
- },
120
- lineJoin: {
121
- svgAttr: 'stroke-linejoin',
122
- canvas: 'miter',
123
- svg: 'miter',
124
- apply: 'stroke',
125
- },
126
- miterLimit: {
127
- svgAttr: 'stroke-miterlimit',
128
- canvas: 10,
129
- svg: 4,
130
- apply: 'stroke',
131
- },
132
- lineWidth: {
133
- svgAttr: 'stroke-width',
134
- canvas: 1,
135
- svg: 1,
136
- apply: 'stroke',
137
- },
138
- globalAlpha: {
139
- svgAttr: 'opacity',
140
- canvas: 1,
141
- svg: 1,
142
- apply: 'fill stroke',
143
- },
144
- font: {
145
- canvas: '10px sans-serif',
146
- },
147
- shadowColor: {
148
- canvas: '#000000',
149
- },
150
- shadowOffsetX: {
151
- canvas: 0,
152
- },
153
- shadowOffsetY: {
154
- canvas: 0,
155
- },
156
- shadowBlur: {
157
- canvas: 0,
158
- },
159
- textAlign: {
160
- canvas: 'start',
161
- },
162
- textBaseline: {
163
- canvas: 'alphabetic',
164
- },
165
- lineDash: {
166
- svgAttr: 'stroke-dasharray',
167
- canvas: [],
168
- svg: null,
169
- apply: 'stroke',
170
- },
171
- };
172
- class CanvasGradient {
173
- __root;
174
- __ctx;
175
- constructor(gradientNode, ctx) {
176
- this.__root = gradientNode;
177
- this.__ctx = ctx;
178
- }
179
- addColorStop(offset, color) {
180
- const stop = this.__ctx.__createElement('stop');
181
- stop.setAttribute('offset', String(offset));
182
- if (toString(color).includes('rgba')) {
183
- const regex = /rgba\(\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\s*,\s*(\d?\.?\d*)\s*\)/gi;
184
- const matches = regex.exec(color);
185
- if (matches) {
186
- stop.setAttribute('stop-color', format('rgb({r},{g},{b})', {
187
- r: matches[1],
188
- g: matches[2],
189
- b: matches[3],
190
- }));
191
- stop.setAttribute('stop-opacity', matches[4]);
192
- }
193
- }
194
- else {
195
- stop.setAttribute('stop-color', toString(color));
196
- }
197
- this.__root.appendChild(stop);
198
- }
199
- }
200
- class CanvasPattern {
201
- __root;
202
- __ctx;
203
- constructor(pattern, ctx) {
204
- this.__root = pattern;
205
- this.__ctx = ctx;
206
- }
207
- }
208
- export class Context {
209
- width;
210
- height;
211
- enableMirroring;
212
- canvas;
213
- __document;
214
- __ctx;
215
- __canvas;
216
- __root;
217
- __ids;
218
- __defs;
219
- __currentElement;
220
- __styleStack;
221
- __groupStack;
222
- __currentDefaultPath;
223
- __currentPosition;
224
- __transformMatrix;
225
- __transformMatrixStack;
226
- __currentElementsToStyle;
227
- __options;
228
- __id;
229
- __fontUnderline;
230
- __fontHref;
231
- // Style properties
232
- strokeStyle;
233
- fillStyle;
234
- lineCap;
235
- lineJoin;
236
- miterLimit;
237
- lineWidth;
238
- globalAlpha;
239
- font;
240
- shadowColor;
241
- shadowOffsetX;
242
- shadowOffsetY;
243
- shadowBlur;
244
- textAlign;
245
- textBaseline;
246
- lineDash;
247
- constructor(o, height) {
248
- const defaultOptions = { width: 500, height: 500, enableMirroring: false };
249
- let options;
250
- if (typeof o === 'number' && height !== undefined) {
251
- options = { ...defaultOptions, width: o, height };
252
- }
253
- else if (!o) {
254
- options = defaultOptions;
255
- }
256
- else if (typeof o === 'object') {
257
- options = o;
258
- }
259
- else {
260
- options = defaultOptions;
261
- }
262
- this.width = options.width || defaultOptions.width;
263
- this.height = options.height || defaultOptions.height;
264
- this.enableMirroring =
265
- options.enableMirroring !== undefined
266
- ? options.enableMirroring
267
- : defaultOptions.enableMirroring;
268
- this.canvas = this;
269
- this.__document = options.document || document;
270
- if (options.ctx) {
271
- this.__ctx = options.ctx;
272
- }
273
- else {
274
- this.__canvas = this.__document.createElement('canvas');
275
- this.__ctx = this.__canvas.getContext('2d');
276
- }
277
- this.__setDefaultStyles();
278
- this.__styleStack = [this.__getStyleState()];
279
- this.__groupStack = [];
280
- this.__root = this.__document.createElementNS('http://www.w3.org/2000/svg', 'svg');
281
- this.__root.setAttribute('version', '1.1');
282
- this.__root.setAttribute('xmlns', 'http://www.w3.org/2000/svg');
283
- this.__root.setAttributeNS('http://www.w3.org/2000/xmlns/', 'xmlns:xlink', 'http://www.w3.org/1999/xlink');
284
- this.__root.setAttribute('width', String(this.width));
285
- this.__root.setAttribute('height', String(this.height));
286
- this.__ids = {};
287
- this.__defs = this.__document.createElementNS('http://www.w3.org/2000/svg', 'defs');
288
- this.__root.appendChild(this.__defs);
289
- this.__currentElement = this.__document.createElementNS('http://www.w3.org/2000/svg', 'g');
290
- this.__root.appendChild(this.__currentElement);
291
- this.__currentDefaultPath = '';
292
- this.__currentPosition = {};
293
- this.__transformMatrix = new DOMMatrix();
294
- this.resetTransform();
295
- this.__options = options;
296
- this.__id = Math.random().toString(16).substring(2, 8);
297
- }
298
- __createElement(elementName, properties = {}, resetFill) {
299
- const element = this.__document.createElementNS('http://www.w3.org/2000/svg', elementName);
300
- if (resetFill) {
301
- element.setAttribute('fill', 'none');
302
- element.setAttribute('stroke', 'none');
303
- }
304
- for (const key of Object.keys(properties)) {
305
- element.setAttribute(key, properties[key]);
306
- }
307
- return element;
308
- }
309
- __setDefaultStyles() {
310
- for (const key of Object.keys(STYLES)) {
311
- ;
312
- this[key] = STYLES[key].canvas;
313
- }
314
- }
315
- __applyStyleState(styleState) {
316
- for (const key of Object.keys(styleState)) {
317
- ;
318
- this[key] = styleState[key];
319
- }
320
- }
321
- __getStyleState() {
322
- const styleState = {};
323
- for (const key of Object.keys(STYLES)) {
324
- styleState[key] = this[key];
325
- }
326
- return styleState;
327
- }
328
- __applyTransformation(element, matrix) {
329
- const { a, b, c, d, e, f } = matrix || this.getTransform();
330
- element.setAttribute('transform', `matrix(${a} ${b} ${c} ${d} ${e} ${f})`);
331
- }
332
- __applyStyleToCurrentElement(type) {
333
- let currentElement = this.__currentElement;
334
- const currentStyleGroup = this.__currentElementsToStyle;
335
- if (currentStyleGroup) {
336
- currentElement.setAttribute(type, '');
337
- currentElement = currentStyleGroup.element;
338
- for (const node of currentStyleGroup.children) {
339
- node.setAttribute(type, '');
340
- }
341
- }
342
- const keys = Object.keys(STYLES);
343
- for (const key of keys) {
344
- const style = STYLES[key];
345
- const value = this[key];
346
- if (style.apply) {
347
- if (value instanceof CanvasPattern) {
348
- if (value.__ctx) {
349
- for (const node of Array.from(value.__ctx.__defs.childNodes)) {
350
- const id = node.getAttribute('id');
351
- if (id) {
352
- this.__ids[id] = id;
353
- this.__defs.appendChild(node);
354
- }
355
- }
356
- }
357
- currentElement.setAttribute(style.apply, format('url(#{id})', { id: value.__root.getAttribute('id') }));
358
- }
359
- else if (value instanceof CanvasGradient) {
360
- currentElement.setAttribute(style.apply, format('url(#{id})', { id: value.__root.getAttribute('id') }));
361
- }
362
- else if (style.apply.includes(type) && style.svg !== value) {
363
- if ((style.svgAttr === 'stroke' || style.svgAttr === 'fill') &&
364
- value &&
365
- value.includes('rgba')) {
366
- const regex = /rgba\(\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\s*,\s*(\d?\.?\d*)\s*\)/gi;
367
- const matches = regex.exec(value);
368
- if (matches) {
369
- currentElement.setAttribute(style.svgAttr, format('rgb({r},{g},{b})', {
370
- r: matches[1],
371
- g: matches[2],
372
- b: matches[3],
373
- }));
374
- let opacity = Number(matches[4]);
375
- const globalAlpha = this.globalAlpha;
376
- if (globalAlpha != null) {
377
- opacity *= globalAlpha;
378
- }
379
- currentElement.setAttribute(style.svgAttr + '-opacity', String(opacity));
380
- }
381
- }
382
- else {
383
- let attr = style.svgAttr;
384
- let val = value;
385
- if (key === 'globalAlpha') {
386
- attr = type + '-' + style.svgAttr;
387
- if (currentElement.getAttribute(attr)) {
388
- continue;
389
- }
390
- }
391
- else if (key === 'lineWidth') {
392
- const scale = this.__getTransformScale();
393
- val = value * Math.max(scale.x, scale.y);
394
- }
395
- currentElement.setAttribute(attr, val);
396
- }
397
- }
398
- }
399
- }
400
- }
401
- __closestGroupOrSvg(node) {
402
- node = node || this.__currentElement;
403
- if (node.nodeName === 'g' || node.nodeName === 'svg') {
404
- return node;
405
- }
406
- return this.__closestGroupOrSvg(node.parentNode);
407
- }
408
- getSerializedSvg(fixNamedEntities) {
409
- let serialized = new XMLSerializer().serializeToString(this.__root);
410
- const xmlns = /xmlns="http:\/\/www\.w3\.org\/2000\/svg".+xmlns="http:\/\/www\.w3\.org\/2000\/svg/gi;
411
- if (xmlns.test(serialized)) {
412
- serialized = serialized.replace('xmlns="http://www.w3.org/2000/svg', 'xmlns:xlink="http://www.w3.org/1999/xlink');
413
- }
414
- if (fixNamedEntities) {
415
- for (const key of Object.keys(namedEntities)) {
416
- const regexp = new RegExp(key, 'gi');
417
- if (regexp.test(serialized)) {
418
- serialized = serialized.replace(regexp, namedEntities[key]);
419
- }
420
- }
421
- }
422
- return serialized;
423
- }
424
- getSvg() {
425
- return this.__root;
426
- }
427
- save() {
428
- const group = this.__createElement('g');
429
- const parent = this.__closestGroupOrSvg();
430
- this.__groupStack.push(parent);
431
- parent.appendChild(group);
432
- this.__currentElement = group;
433
- const style = this.__getStyleState();
434
- this.__styleStack.push(style);
435
- if (!this.__transformMatrixStack) {
436
- this.__transformMatrixStack = [];
437
- }
438
- this.__transformMatrixStack.push(this.getTransform());
439
- }
440
- restore() {
441
- this.__currentElement = this.__groupStack.pop();
442
- this.__currentElementsToStyle = undefined;
443
- if (!this.__currentElement) {
444
- this.__currentElement = this.__root.childNodes[1];
445
- }
446
- const state = this.__styleStack.pop();
447
- this.__applyStyleState(state);
448
- if (this.__transformMatrixStack && this.__transformMatrixStack.length > 0) {
449
- this.setTransform(this.__transformMatrixStack.pop());
450
- }
451
- }
452
- beginPath() {
453
- this.__currentDefaultPath = '';
454
- this.__currentPosition = {};
455
- const path = this.__createElement('path', {}, true);
456
- const parent = this.__closestGroupOrSvg();
457
- parent.appendChild(path);
458
- this.__currentElement = path;
459
- }
460
- __applyCurrentDefaultPath() {
461
- const currentElement = this.__currentElement;
462
- if (currentElement.nodeName === 'path') {
463
- currentElement.setAttribute('d', this.__currentDefaultPath);
464
- }
465
- }
466
- __addPathCommand(command) {
467
- this.__currentDefaultPath += ' ';
468
- this.__currentDefaultPath += command;
469
- }
470
- moveTo(x, y) {
471
- if (this.__currentElement.nodeName !== 'path') {
472
- this.beginPath();
473
- }
474
- this.__currentPosition = { x, y };
475
- this.__addPathCommand(format('M {x} {y}', {
476
- x: this.__matrixTransform(x, y).x,
477
- y: this.__matrixTransform(x, y).y,
478
- }));
479
- }
480
- closePath() {
481
- if (this.__currentDefaultPath) {
482
- this.__addPathCommand('Z');
483
- }
484
- }
485
- lineTo(x, y) {
486
- this.__currentPosition = { x, y };
487
- if (this.__currentDefaultPath.includes('M')) {
488
- this.__addPathCommand(format('L {x} {y}', {
489
- x: this.__matrixTransform(x, y).x,
490
- y: this.__matrixTransform(x, y).y,
491
- }));
492
- }
493
- else {
494
- this.__addPathCommand(format('M {x} {y}', {
495
- x: this.__matrixTransform(x, y).x,
496
- y: this.__matrixTransform(x, y).y,
497
- }));
498
- }
499
- }
500
- bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y) {
501
- this.__currentPosition = { x, y };
502
- this.__addPathCommand(format('C {cp1x} {cp1y} {cp2x} {cp2y} {x} {y}', {
503
- cp1x: this.__matrixTransform(cp1x, cp1y).x,
504
- cp1y: this.__matrixTransform(cp1x, cp1y).y,
505
- cp2x: this.__matrixTransform(cp2x, cp2y).x,
506
- cp2y: this.__matrixTransform(cp2x, cp2y).y,
507
- x: this.__matrixTransform(x, y).x,
508
- y: this.__matrixTransform(x, y).y,
509
- }));
510
- }
511
- quadraticCurveTo(cpx, cpy, x, y) {
512
- this.__currentPosition = { x, y };
513
- this.__addPathCommand(format('Q {cpx} {cpy} {x} {y}', {
514
- cpx: this.__matrixTransform(cpx, cpy).x,
515
- cpy: this.__matrixTransform(cpx, cpy).y,
516
- x: this.__matrixTransform(x, y).x,
517
- y: this.__matrixTransform(x, y).y,
518
- }));
519
- }
520
- stroke() {
521
- if (this.__currentElement.nodeName === 'path') {
522
- this.__currentElement.setAttribute('paint-order', 'fill stroke markers');
523
- }
524
- this.__applyCurrentDefaultPath();
525
- this.__applyStyleToCurrentElement('stroke');
526
- }
527
- fill() {
528
- if (this.__currentElement.nodeName === 'path') {
529
- this.__currentElement.setAttribute('paint-order', 'stroke fill markers');
530
- }
531
- this.__applyCurrentDefaultPath();
532
- this.__applyStyleToCurrentElement('fill');
533
- }
534
- rect(x, y, width, height) {
535
- if (this.__currentElement.nodeName !== 'path') {
536
- this.beginPath();
537
- }
538
- this.moveTo(x, y);
539
- this.lineTo(x + width, y);
540
- this.lineTo(x + width, y + height);
541
- this.lineTo(x, y + height);
542
- this.lineTo(x, y);
543
- this.closePath();
544
- }
545
- __clearCanvas() {
546
- const rootGroup = this.__root.childNodes[1];
547
- this.__root.removeChild(rootGroup);
548
- this.__currentElement = this.__document.createElementNS('http://www.w3.org/2000/svg', 'g');
549
- this.__root.appendChild(this.__currentElement);
550
- this.__groupStack = [];
551
- }
552
- fillRect(x, y, width, height) {
553
- const { a, b, c, d, e, f } = this.getTransform();
554
- if (JSON.stringify([a, b, c, d, e, f]) === JSON.stringify([1, 0, 0, 1, 0, 0])) {
555
- if (x === 0 &&
556
- y === 0 &&
557
- width === this.width &&
558
- height === this.height) {
559
- this.__clearCanvas();
560
- }
561
- }
562
- const rect = this.__createElement('rect', { x, y, width, height }, true);
563
- const parent = this.__closestGroupOrSvg();
564
- parent.appendChild(rect);
565
- this.__currentElement = rect;
566
- this.__applyTransformation(rect);
567
- this.__applyStyleToCurrentElement('fill');
568
- }
569
- strokeRect(x, y, width, height) {
570
- const rect = this.__createElement('rect', { x, y, width, height }, true);
571
- const parent = this.__closestGroupOrSvg();
572
- parent.appendChild(rect);
573
- this.__currentElement = rect;
574
- this.__applyTransformation(rect);
575
- this.__applyStyleToCurrentElement('stroke');
576
- }
577
- clearRect(x, y, width, height) {
578
- const { a, b, c, d, e, f } = this.getTransform();
579
- if (JSON.stringify([a, b, c, d, e, f]) === JSON.stringify([1, 0, 0, 1, 0, 0])) {
580
- if (x === 0 &&
581
- y === 0 &&
582
- width === this.width &&
583
- height === this.height) {
584
- this.__clearCanvas();
585
- return;
586
- }
587
- }
588
- const rect = this.__createElement('rect', { x, y, width, height, fill: '#FFFFFF' }, true);
589
- this.__applyTransformation(rect);
590
- const parent = this.__closestGroupOrSvg();
591
- parent.appendChild(rect);
592
- }
593
- createLinearGradient(x1, y1, x2, y2) {
594
- const grad = this.__createElement('linearGradient', {
595
- id: randomString(this.__ids),
596
- x1: x1 + 'px',
597
- x2: x2 + 'px',
598
- y1: y1 + 'px',
599
- y2: y2 + 'px',
600
- gradientUnits: 'userSpaceOnUse',
601
- });
602
- this.__defs.appendChild(grad);
603
- return new CanvasGradient(grad, this);
604
- }
605
- createRadialGradient(x0, y0, r0, x1, y1, r1) {
606
- const grad = this.__createElement('radialGradient', {
607
- id: randomString(this.__ids),
608
- cx: x1 + 'px',
609
- cy: y1 + 'px',
610
- r: r1 + 'px',
611
- fx: x0 + 'px',
612
- fy: y0 + 'px',
613
- gradientUnits: 'userSpaceOnUse',
614
- });
615
- this.__defs.appendChild(grad);
616
- return new CanvasGradient(grad, this);
617
- }
618
- __applyText(text, x, y, action) {
619
- const el = document.createElement('span');
620
- el.setAttribute('style', 'font:' + this.font);
621
- const style = el.style;
622
- const parent = this.__closestGroupOrSvg();
623
- const textElement = this.__createElement('text', {
624
- 'font-family': style.fontFamily,
625
- 'font-size': style.fontSize,
626
- 'font-style': style.fontStyle,
627
- 'font-weight': style.fontWeight,
628
- 'text-decoration': this.__fontUnderline,
629
- x: x,
630
- y: y,
631
- 'text-anchor': getTextAnchor(this.textAlign),
632
- 'dominant-baseline': getDominantBaseline(this.textBaseline),
633
- }, true);
634
- textElement.appendChild(this.__document.createTextNode(text));
635
- this.__currentElement = textElement;
636
- this.__applyTransformation(textElement);
637
- this.__applyStyleToCurrentElement(action);
638
- let finalElement = textElement;
639
- if (this.__fontHref) {
640
- const a = this.__createElement('a');
641
- a.setAttributeNS('http://www.w3.org/1999/xlink', 'xlink:href', this.__fontHref);
642
- a.appendChild(textElement);
643
- finalElement = a;
644
- }
645
- parent.appendChild(finalElement);
646
- }
647
- fillText(text, x, y) {
648
- this.__applyText(text, x, y, 'fill');
649
- }
650
- strokeText(text, x, y) {
651
- this.__applyText(text, x, y, 'stroke');
652
- }
653
- measureText(text) {
654
- this.__ctx.font = this.font;
655
- return this.__ctx.measureText(text);
656
- }
657
- arc(x, y, radius, startAngle, endAngle, counterClockwise) {
658
- if (startAngle === endAngle) {
659
- return;
660
- }
661
- startAngle = startAngle % (2 * Math.PI);
662
- endAngle = endAngle % (2 * Math.PI);
663
- if (startAngle === endAngle) {
664
- endAngle =
665
- (endAngle + 2 * Math.PI - 0.001 * (counterClockwise ? -1 : 1)) %
666
- (2 * Math.PI);
667
- }
668
- const endX = x + radius * Math.cos(endAngle);
669
- const endY = y + radius * Math.sin(endAngle);
670
- const startX = x + radius * Math.cos(startAngle);
671
- const startY = y + radius * Math.sin(startAngle);
672
- const sweepFlag = counterClockwise ? 0 : 1;
673
- let largeArcFlag = 0;
674
- let diff = endAngle - startAngle;
675
- if (diff < 0) {
676
- diff += 2 * Math.PI;
677
- }
678
- if (counterClockwise) {
679
- largeArcFlag = diff > Math.PI ? 0 : 1;
680
- }
681
- else {
682
- largeArcFlag = diff > Math.PI ? 1 : 0;
683
- }
684
- const scaleX = Math.hypot(this.__transformMatrix.a, this.__transformMatrix.b);
685
- const scaleY = Math.hypot(this.__transformMatrix.c, this.__transformMatrix.d);
686
- this.lineTo(startX, startY);
687
- this.__addPathCommand(format('A {rx} {ry} {xAxisRotation} {largeArcFlag} {sweepFlag} {endX} {endY}', {
688
- rx: radius * scaleX,
689
- ry: radius * scaleY,
690
- xAxisRotation: 0,
691
- largeArcFlag,
692
- sweepFlag,
693
- endX: this.__matrixTransform(endX, endY).x,
694
- endY: this.__matrixTransform(endX, endY).y,
695
- }));
696
- this.__currentPosition = { x: endX, y: endY };
697
- }
698
- clip() {
699
- const group = this.__closestGroupOrSvg();
700
- const clipPath = this.__createElement('clipPath');
701
- const id = randomString(this.__ids);
702
- const newGroup = this.__createElement('g');
703
- this.__applyCurrentDefaultPath();
704
- group.removeChild(this.__currentElement);
705
- clipPath.setAttribute('id', id);
706
- clipPath.appendChild(this.__currentElement);
707
- this.__defs.appendChild(clipPath);
708
- group.setAttribute('clip-path', format('url(#{id})', { id }));
709
- group.appendChild(newGroup);
710
- this.__currentElement = newGroup;
711
- }
712
- setLineDash(dashArray) {
713
- if (dashArray && dashArray.length > 0) {
714
- this.lineDash = dashArray.join(',');
715
- }
716
- else {
717
- this.lineDash = null;
718
- }
719
- }
720
- setTransform(a, b, c, d, e, f) {
721
- if (a instanceof DOMMatrix) {
722
- this.__transformMatrix = new DOMMatrix([a.a, a.b, a.c, a.d, a.e, a.f]);
723
- }
724
- else {
725
- this.__transformMatrix = new DOMMatrix([a, b, c, d, e, f]);
726
- }
727
- }
728
- getTransform() {
729
- const { a, b, c, d, e, f } = this.__transformMatrix;
730
- return new DOMMatrix([a, b, c, d, e, f]);
731
- }
732
- resetTransform() {
733
- this.setTransform(1, 0, 0, 1, 0, 0);
734
- }
735
- scale(x, y) {
736
- if (y === undefined) {
737
- y = x;
738
- }
739
- if (isNaN(x) || isNaN(y) || !isFinite(x) || !isFinite(y)) {
740
- return;
741
- }
742
- const matrix = this.getTransform().scale(x, y);
743
- this.setTransform(matrix);
744
- }
745
- rotate(angle) {
746
- const matrix = this.getTransform().multiply(new DOMMatrix([
747
- Math.cos(angle),
748
- Math.sin(angle),
749
- -Math.sin(angle),
750
- Math.cos(angle),
751
- 0,
752
- 0,
753
- ]));
754
- this.setTransform(matrix);
755
- }
756
- translate(x, y) {
757
- const matrix = this.getTransform().translate(x, y);
758
- this.setTransform(matrix);
759
- }
760
- transform(a, b, c, d, e, f) {
761
- const matrix = this.getTransform().multiply(new DOMMatrix([a, b, c, d, e, f]));
762
- this.setTransform(matrix);
763
- }
764
- __matrixTransform(x, y) {
765
- return new DOMPoint(x, y).matrixTransform(this.__transformMatrix);
766
- }
767
- __getTransformScale() {
768
- return {
769
- x: Math.hypot(this.__transformMatrix.a, this.__transformMatrix.b),
770
- y: Math.hypot(this.__transformMatrix.c, this.__transformMatrix.d),
771
- };
772
- }
773
- __getTransformRotation() {
774
- return Math.atan2(this.__transformMatrix.b, this.__transformMatrix.a);
775
- }
776
- // Stubs for unimplemented methods
777
- drawFocusRing() { }
778
- createImageData() { }
779
- putImageData() { }
780
- globalCompositeOperation() { }
781
- drawImage() { }
782
- createPattern() {
783
- return null;
784
- }
785
- }
786
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}