@harbour-enterprises/superdoc 1.0.0-alpha.67 → 1.0.0-alpha.68

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.
@@ -1,518 +0,0 @@
1
- var ARG_LENGTH = {
2
- a: 7,
3
- c: 6,
4
- h: 1,
5
- l: 2,
6
- m: 2,
7
- q: 4,
8
- s: 4,
9
- t: 2,
10
- v: 1,
11
- z: 0
12
- };
13
- var SEGMENT_PATTERN = /([astvzqmhlc])([^astvzqmhlc]*)/gi;
14
- var NUMBER = /-?[0-9]*\.?[0-9]+(?:e[-+]?\d+)?/gi;
15
- function parseValues(args) {
16
- const numbers = args.match(NUMBER);
17
- return numbers ? numbers.map(Number) : [];
18
- }
19
- function parsePath(path) {
20
- const data = [];
21
- const p = String(path).trim();
22
- if (p[0] !== "M" && p[0] !== "m") {
23
- return data;
24
- }
25
- p.replace(SEGMENT_PATTERN, (_, command, args) => {
26
- const theArgs = parseValues(args);
27
- let type = command.toLowerCase();
28
- let theCommand = command;
29
- if (type === "m" && theArgs.length > 2) {
30
- data.push([theCommand, ...theArgs.splice(0, 2)]);
31
- type = "l";
32
- theCommand = theCommand === "m" ? "l" : "L";
33
- }
34
- if (theArgs.length < ARG_LENGTH[type]) {
35
- return "";
36
- }
37
- data.push([theCommand, ...theArgs.splice(0, ARG_LENGTH[type])]);
38
- while (theArgs.length >= ARG_LENGTH[type] && theArgs.length && ARG_LENGTH[type]) {
39
- data.push([theCommand, ...theArgs.splice(0, ARG_LENGTH[type])]);
40
- }
41
- return "";
42
- });
43
- return data;
44
- }
45
- function rotatePoint(point, angle) {
46
- const nx = point.x * Math.cos(angle) - point.y * Math.sin(angle);
47
- const ny = point.y * Math.cos(angle) + point.x * Math.sin(angle);
48
- point.x = nx;
49
- point.y = ny;
50
- }
51
- function translatePoint(point, dx, dy) {
52
- point.x += dx;
53
- point.y += dy;
54
- }
55
- function scalePoint(point, s) {
56
- point.x *= s;
57
- point.y *= s;
58
- }
59
- var Path2D = class _Path2D {
60
- constructor(path) {
61
- this.commands = [];
62
- if (path && path instanceof _Path2D) {
63
- this.commands.push(...path.commands);
64
- } else if (path) {
65
- this.commands = parsePath(path);
66
- }
67
- }
68
- addPath(path) {
69
- if (path && path instanceof _Path2D) {
70
- this.commands.push(...path.commands);
71
- }
72
- }
73
- moveTo(x, y) {
74
- this.commands.push(["M", x, y]);
75
- }
76
- lineTo(x, y) {
77
- this.commands.push(["L", x, y]);
78
- }
79
- arc(x, y, r, start, end, ccw) {
80
- this.commands.push(["AC", x, y, r, start, end, !!ccw]);
81
- }
82
- arcTo(x1, y1, x2, y2, r) {
83
- this.commands.push(["AT", x1, y1, x2, y2, r]);
84
- }
85
- ellipse(x, y, rx, ry, angle, start, end, ccw) {
86
- this.commands.push(["E", x, y, rx, ry, angle, start, end, !!ccw]);
87
- }
88
- closePath() {
89
- this.commands.push(["Z"]);
90
- }
91
- bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y) {
92
- this.commands.push(["C", cp1x, cp1y, cp2x, cp2y, x, y]);
93
- }
94
- quadraticCurveTo(cpx, cpy, x, y) {
95
- this.commands.push(["Q", cpx, cpy, x, y]);
96
- }
97
- rect(x, y, width, height) {
98
- this.commands.push(["R", x, y, width, height]);
99
- }
100
- roundRect(x, y, width, height, radii) {
101
- if (typeof radii === "undefined") {
102
- this.commands.push(["RR", x, y, width, height, 0]);
103
- } else {
104
- this.commands.push(["RR", x, y, width, height, radii]);
105
- }
106
- }
107
- };
108
- function buildPath(ctx, commands) {
109
- let x = 0;
110
- let y = 0;
111
- let endAngle;
112
- let startAngle;
113
- let largeArcFlag;
114
- let sweepFlag;
115
- let endPoint;
116
- let midPoint;
117
- let angle;
118
- let lambda;
119
- let t1;
120
- let t2;
121
- let x1;
122
- let y1;
123
- let r;
124
- let rx;
125
- let ry;
126
- let w;
127
- let h;
128
- let pathType;
129
- let centerPoint;
130
- let ccw;
131
- let radii;
132
- let cpx = null;
133
- let cpy = null;
134
- let qcpx = null;
135
- let qcpy = null;
136
- let startPoint = null;
137
- let currentPoint = null;
138
- ctx.beginPath();
139
- for (let i = 0; i < commands.length; ++i) {
140
- pathType = commands[i][0];
141
- if (pathType !== "S" && pathType !== "s" && pathType !== "C" && pathType !== "c") {
142
- cpx = null;
143
- cpy = null;
144
- }
145
- if (pathType !== "T" && pathType !== "t" && pathType !== "Q" && pathType !== "q") {
146
- qcpx = null;
147
- qcpy = null;
148
- }
149
- let c;
150
- switch (pathType) {
151
- case "m":
152
- case "M":
153
- c = commands[i];
154
- if (pathType === "m") {
155
- x += c[1];
156
- y += c[2];
157
- } else {
158
- x = c[1];
159
- y = c[2];
160
- }
161
- if (pathType === "M" || !startPoint) {
162
- startPoint = { x, y };
163
- }
164
- ctx.moveTo(x, y);
165
- break;
166
- case "l":
167
- c = commands[i];
168
- x += c[1];
169
- y += c[2];
170
- ctx.lineTo(x, y);
171
- break;
172
- case "L":
173
- c = commands[i];
174
- x = c[1];
175
- y = c[2];
176
- ctx.lineTo(x, y);
177
- break;
178
- case "H":
179
- c = commands[i];
180
- x = c[1];
181
- ctx.lineTo(x, y);
182
- break;
183
- case "h":
184
- c = commands[i];
185
- x += c[1];
186
- ctx.lineTo(x, y);
187
- break;
188
- case "V":
189
- c = commands[i];
190
- y = c[1];
191
- ctx.lineTo(x, y);
192
- break;
193
- case "v":
194
- c = commands[i];
195
- y += c[1];
196
- ctx.lineTo(x, y);
197
- break;
198
- case "a":
199
- case "A":
200
- c = commands[i];
201
- if (currentPoint === null) {
202
- throw new Error("This should never happen");
203
- }
204
- if (pathType === "a") {
205
- x += c[6];
206
- y += c[7];
207
- } else {
208
- x = c[6];
209
- y = c[7];
210
- }
211
- rx = c[1];
212
- ry = c[2];
213
- angle = c[3] * Math.PI / 180;
214
- largeArcFlag = !!c[4];
215
- sweepFlag = !!c[5];
216
- endPoint = { x, y };
217
- midPoint = {
218
- x: (currentPoint.x - endPoint.x) / 2,
219
- y: (currentPoint.y - endPoint.y) / 2
220
- };
221
- rotatePoint(midPoint, -angle);
222
- lambda = midPoint.x * midPoint.x / (rx * rx) + midPoint.y * midPoint.y / (ry * ry);
223
- if (lambda > 1) {
224
- lambda = Math.sqrt(lambda);
225
- rx *= lambda;
226
- ry *= lambda;
227
- }
228
- centerPoint = {
229
- x: rx * midPoint.y / ry,
230
- y: -(ry * midPoint.x) / rx
231
- };
232
- t1 = rx * rx * ry * ry;
233
- t2 = rx * rx * midPoint.y * midPoint.y + ry * ry * midPoint.x * midPoint.x;
234
- if (sweepFlag !== largeArcFlag) {
235
- scalePoint(centerPoint, Math.sqrt((t1 - t2) / t2) || 0);
236
- } else {
237
- scalePoint(centerPoint, -Math.sqrt((t1 - t2) / t2) || 0);
238
- }
239
- startAngle = Math.atan2((midPoint.y - centerPoint.y) / ry, (midPoint.x - centerPoint.x) / rx);
240
- endAngle = Math.atan2(-(midPoint.y + centerPoint.y) / ry, -(midPoint.x + centerPoint.x) / rx);
241
- rotatePoint(centerPoint, angle);
242
- translatePoint(centerPoint, (endPoint.x + currentPoint.x) / 2, (endPoint.y + currentPoint.y) / 2);
243
- ctx.save();
244
- ctx.translate(centerPoint.x, centerPoint.y);
245
- ctx.rotate(angle);
246
- ctx.scale(rx, ry);
247
- ctx.arc(0, 0, 1, startAngle, endAngle, !sweepFlag);
248
- ctx.restore();
249
- break;
250
- case "C":
251
- c = commands[i];
252
- cpx = c[3];
253
- cpy = c[4];
254
- x = c[5];
255
- y = c[6];
256
- ctx.bezierCurveTo(c[1], c[2], cpx, cpy, x, y);
257
- break;
258
- case "c":
259
- c = commands[i];
260
- ctx.bezierCurveTo(c[1] + x, c[2] + y, c[3] + x, c[4] + y, c[5] + x, c[6] + y);
261
- cpx = c[3] + x;
262
- cpy = c[4] + y;
263
- x += c[5];
264
- y += c[6];
265
- break;
266
- case "S":
267
- c = commands[i];
268
- if (cpx === null || cpy === null) {
269
- cpx = x;
270
- cpy = y;
271
- }
272
- ctx.bezierCurveTo(2 * x - cpx, 2 * y - cpy, c[1], c[2], c[3], c[4]);
273
- cpx = c[1];
274
- cpy = c[2];
275
- x = c[3];
276
- y = c[4];
277
- break;
278
- case "s":
279
- c = commands[i];
280
- if (cpx === null || cpy === null) {
281
- cpx = x;
282
- cpy = y;
283
- }
284
- ctx.bezierCurveTo(2 * x - cpx, 2 * y - cpy, c[1] + x, c[2] + y, c[3] + x, c[4] + y);
285
- cpx = c[1] + x;
286
- cpy = c[2] + y;
287
- x += c[3];
288
- y += c[4];
289
- break;
290
- case "Q":
291
- c = commands[i];
292
- qcpx = c[1];
293
- qcpy = c[2];
294
- x = c[3];
295
- y = c[4];
296
- ctx.quadraticCurveTo(qcpx, qcpy, x, y);
297
- break;
298
- case "q":
299
- c = commands[i];
300
- qcpx = c[1] + x;
301
- qcpy = c[2] + y;
302
- x += c[3];
303
- y += c[4];
304
- ctx.quadraticCurveTo(qcpx, qcpy, x, y);
305
- break;
306
- case "T":
307
- c = commands[i];
308
- if (qcpx === null || qcpy === null) {
309
- qcpx = x;
310
- qcpy = y;
311
- }
312
- qcpx = 2 * x - qcpx;
313
- qcpy = 2 * y - qcpy;
314
- x = c[1];
315
- y = c[2];
316
- ctx.quadraticCurveTo(qcpx, qcpy, x, y);
317
- break;
318
- case "t":
319
- c = commands[i];
320
- if (qcpx === null || qcpy === null) {
321
- qcpx = x;
322
- qcpy = y;
323
- }
324
- qcpx = 2 * x - qcpx;
325
- qcpy = 2 * y - qcpy;
326
- x += c[1];
327
- y += c[2];
328
- ctx.quadraticCurveTo(qcpx, qcpy, x, y);
329
- break;
330
- case "z":
331
- case "Z":
332
- if (startPoint) {
333
- x = startPoint.x;
334
- y = startPoint.y;
335
- }
336
- startPoint = null;
337
- ctx.closePath();
338
- break;
339
- case "AC":
340
- c = commands[i];
341
- x = c[1];
342
- y = c[2];
343
- r = c[3];
344
- startAngle = c[4];
345
- endAngle = c[5];
346
- ccw = c[6];
347
- ctx.arc(x, y, r, startAngle, endAngle, ccw);
348
- break;
349
- case "AT":
350
- c = commands[i];
351
- x1 = c[1];
352
- y1 = c[2];
353
- x = c[3];
354
- y = c[4];
355
- r = c[5];
356
- ctx.arcTo(x1, y1, x, y, r);
357
- break;
358
- case "E":
359
- c = commands[i];
360
- x = c[1];
361
- y = c[2];
362
- rx = c[3];
363
- ry = c[4];
364
- angle = c[5];
365
- startAngle = c[6];
366
- endAngle = c[7];
367
- ccw = c[8];
368
- ctx.save();
369
- ctx.translate(x, y);
370
- ctx.rotate(angle);
371
- ctx.scale(rx, ry);
372
- ctx.arc(0, 0, 1, startAngle, endAngle, ccw);
373
- ctx.restore();
374
- break;
375
- case "R":
376
- c = commands[i];
377
- x = c[1];
378
- y = c[2];
379
- w = c[3];
380
- h = c[4];
381
- startPoint = { x, y };
382
- ctx.rect(x, y, w, h);
383
- break;
384
- case "RR":
385
- c = commands[i];
386
- x = c[1];
387
- y = c[2];
388
- w = c[3];
389
- h = c[4];
390
- radii = c[5];
391
- startPoint = { x, y };
392
- ctx.roundRect(x, y, w, h, radii);
393
- break;
394
- default:
395
- throw new Error(`Invalid path command: ${pathType}`);
396
- }
397
- if (!currentPoint) {
398
- currentPoint = { x, y };
399
- } else {
400
- currentPoint.x = x;
401
- currentPoint.y = y;
402
- }
403
- }
404
- }
405
- function roundRect(x, y, width, height, radii = 0) {
406
- if (typeof radii === "number") {
407
- radii = [radii];
408
- }
409
- if (Array.isArray(radii)) {
410
- if (radii.length === 0 || radii.length > 4) {
411
- throw new RangeError(
412
- `Failed to execute 'roundRect' on '${this.constructor.name}': ${radii.length} radii provided. Between one and four radii are necessary.`
413
- );
414
- }
415
- radii.forEach((v) => {
416
- if (v < 0) {
417
- throw new RangeError(
418
- `Failed to execute 'roundRect' on '${this.constructor.name}': Radius value ${v} is negative.`
419
- );
420
- }
421
- });
422
- } else {
423
- return;
424
- }
425
- if (radii.length === 1 && radii[0] === 0) {
426
- this.rect(x, y, width, height);
427
- return;
428
- }
429
- const minRadius = Math.min(width, height) / 2;
430
- const tl = Math.min(minRadius, radii[0]);
431
- let tr = tl;
432
- let br = tl;
433
- let bl = tl;
434
- if (radii.length === 2) {
435
- tr = Math.min(minRadius, radii[1]);
436
- bl = tr;
437
- }
438
- if (radii.length === 3) {
439
- tr = Math.min(minRadius, radii[1]);
440
- bl = tr;
441
- br = Math.min(minRadius, radii[2]);
442
- }
443
- if (radii.length === 4) {
444
- tr = Math.min(minRadius, radii[1]);
445
- br = Math.min(minRadius, radii[2]);
446
- bl = Math.min(minRadius, radii[3]);
447
- }
448
- this.moveTo(x, y + height - bl);
449
- this.arcTo(x, y, x + tl, y, tl);
450
- this.arcTo(x + width, y, x + width, y + tr, tr);
451
- this.arcTo(x + width, y + height, x + width - br, y + height, br);
452
- this.arcTo(x, y + height, x, y + height - bl, bl);
453
- this.moveTo(x, y);
454
- }
455
- function applyPath2DToCanvasRenderingContext(CanvasRenderingContext2D) {
456
- if (!CanvasRenderingContext2D) return;
457
- const cClip = CanvasRenderingContext2D.prototype.clip;
458
- const cFill = CanvasRenderingContext2D.prototype.fill;
459
- const cStroke = CanvasRenderingContext2D.prototype.stroke;
460
- const cIsPointInPath = CanvasRenderingContext2D.prototype.isPointInPath;
461
- CanvasRenderingContext2D.prototype.clip = function clip(...args) {
462
- if (args[0] instanceof Path2D) {
463
- const path = args[0];
464
- const fillRule2 = args[1] || "nonzero";
465
- buildPath(this, path.commands);
466
- return cClip.apply(this, [fillRule2]);
467
- }
468
- const fillRule = args[0] || "nonzero";
469
- return cClip.apply(this, [fillRule]);
470
- };
471
- CanvasRenderingContext2D.prototype.fill = function fill(...args) {
472
- if (args[0] instanceof Path2D) {
473
- const path = args[0];
474
- const fillRule2 = args[1] || "nonzero";
475
- buildPath(this, path.commands);
476
- return cFill.apply(this, [fillRule2]);
477
- }
478
- const fillRule = args[0] || "nonzero";
479
- return cFill.apply(this, [fillRule]);
480
- };
481
- CanvasRenderingContext2D.prototype.stroke = function stroke(path) {
482
- if (path) {
483
- buildPath(this, path.commands);
484
- }
485
- cStroke.apply(this);
486
- };
487
- CanvasRenderingContext2D.prototype.isPointInPath = function isPointInPath(...args) {
488
- if (args[0] instanceof Path2D) {
489
- const path = args[0];
490
- const x = args[1];
491
- const y = args[2];
492
- const fillRule = args[3] || "nonzero";
493
- buildPath(this, path.commands);
494
- return cIsPointInPath.apply(this, [x, y, fillRule]);
495
- }
496
- return cIsPointInPath.apply(this, args);
497
- };
498
- }
499
- function applyRoundRectToCanvasRenderingContext2D(CanvasRenderingContext2D) {
500
- if (CanvasRenderingContext2D && !CanvasRenderingContext2D.prototype.roundRect) {
501
- CanvasRenderingContext2D.prototype.roundRect = roundRect;
502
- }
503
- }
504
- function applyRoundRectToPath2D(P2D) {
505
- if (P2D && !P2D.prototype.roundRect) {
506
- P2D.prototype.roundRect = roundRect;
507
- }
508
- }
509
- export {
510
- Path2D,
511
- applyPath2DToCanvasRenderingContext,
512
- applyRoundRectToCanvasRenderingContext2D,
513
- applyRoundRectToPath2D,
514
- buildPath,
515
- parsePath,
516
- roundRect
517
- };
518
- //# sourceMappingURL=index-DgQ1Fc0x.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-DgQ1Fc0x.js","sources":["../../../node_modules/path2d/dist/index.js"],"sourcesContent":["// src/parse-path.ts\nvar ARG_LENGTH = {\n a: 7,\n c: 6,\n h: 1,\n l: 2,\n m: 2,\n q: 4,\n s: 4,\n t: 2,\n v: 1,\n z: 0\n};\nvar SEGMENT_PATTERN = /([astvzqmhlc])([^astvzqmhlc]*)/gi;\nvar NUMBER = /-?[0-9]*\\.?[0-9]+(?:e[-+]?\\d+)?/gi;\nfunction parseValues(args) {\n const numbers = args.match(NUMBER);\n return numbers ? numbers.map(Number) : [];\n}\nfunction parsePath(path) {\n const data = [];\n const p = String(path).trim();\n if (p[0] !== \"M\" && p[0] !== \"m\") {\n return data;\n }\n p.replace(SEGMENT_PATTERN, (_, command, args) => {\n const theArgs = parseValues(args);\n let type = command.toLowerCase();\n let theCommand = command;\n if (type === \"m\" && theArgs.length > 2) {\n data.push([theCommand, ...theArgs.splice(0, 2)]);\n type = \"l\";\n theCommand = theCommand === \"m\" ? \"l\" : \"L\";\n }\n if (theArgs.length < ARG_LENGTH[type]) {\n return \"\";\n }\n data.push([theCommand, ...theArgs.splice(0, ARG_LENGTH[type])]);\n while (theArgs.length >= ARG_LENGTH[type] && theArgs.length && ARG_LENGTH[type]) {\n data.push([theCommand, ...theArgs.splice(0, ARG_LENGTH[type])]);\n }\n return \"\";\n });\n return data;\n}\n\n// src/path2d.ts\nfunction rotatePoint(point, angle) {\n const nx = point.x * Math.cos(angle) - point.y * Math.sin(angle);\n const ny = point.y * Math.cos(angle) + point.x * Math.sin(angle);\n point.x = nx;\n point.y = ny;\n}\nfunction translatePoint(point, dx, dy) {\n point.x += dx;\n point.y += dy;\n}\nfunction scalePoint(point, s) {\n point.x *= s;\n point.y *= s;\n}\nvar Path2D = class _Path2D {\n constructor(path) {\n this.commands = [];\n if (path && path instanceof _Path2D) {\n this.commands.push(...path.commands);\n } else if (path) {\n this.commands = parsePath(path);\n }\n }\n addPath(path) {\n if (path && path instanceof _Path2D) {\n this.commands.push(...path.commands);\n }\n }\n moveTo(x, y) {\n this.commands.push([\"M\", x, y]);\n }\n lineTo(x, y) {\n this.commands.push([\"L\", x, y]);\n }\n arc(x, y, r, start, end, ccw) {\n this.commands.push([\"AC\", x, y, r, start, end, !!ccw]);\n }\n arcTo(x1, y1, x2, y2, r) {\n this.commands.push([\"AT\", x1, y1, x2, y2, r]);\n }\n ellipse(x, y, rx, ry, angle, start, end, ccw) {\n this.commands.push([\"E\", x, y, rx, ry, angle, start, end, !!ccw]);\n }\n closePath() {\n this.commands.push([\"Z\"]);\n }\n bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y) {\n this.commands.push([\"C\", cp1x, cp1y, cp2x, cp2y, x, y]);\n }\n quadraticCurveTo(cpx, cpy, x, y) {\n this.commands.push([\"Q\", cpx, cpy, x, y]);\n }\n rect(x, y, width, height) {\n this.commands.push([\"R\", x, y, width, height]);\n }\n roundRect(x, y, width, height, radii) {\n if (typeof radii === \"undefined\") {\n this.commands.push([\"RR\", x, y, width, height, 0]);\n } else {\n this.commands.push([\"RR\", x, y, width, height, radii]);\n }\n }\n};\nfunction buildPath(ctx, commands) {\n let x = 0;\n let y = 0;\n let endAngle;\n let startAngle;\n let largeArcFlag;\n let sweepFlag;\n let endPoint;\n let midPoint;\n let angle;\n let lambda;\n let t1;\n let t2;\n let x1;\n let y1;\n let r;\n let rx;\n let ry;\n let w;\n let h;\n let pathType;\n let centerPoint;\n let ccw;\n let radii;\n let cpx = null;\n let cpy = null;\n let qcpx = null;\n let qcpy = null;\n let startPoint = null;\n let currentPoint = null;\n ctx.beginPath();\n for (let i = 0; i < commands.length; ++i) {\n pathType = commands[i][0];\n if (pathType !== \"S\" && pathType !== \"s\" && pathType !== \"C\" && pathType !== \"c\") {\n cpx = null;\n cpy = null;\n }\n if (pathType !== \"T\" && pathType !== \"t\" && pathType !== \"Q\" && pathType !== \"q\") {\n qcpx = null;\n qcpy = null;\n }\n let c;\n switch (pathType) {\n case \"m\":\n case \"M\":\n c = commands[i];\n if (pathType === \"m\") {\n x += c[1];\n y += c[2];\n } else {\n x = c[1];\n y = c[2];\n }\n if (pathType === \"M\" || !startPoint) {\n startPoint = { x, y };\n }\n ctx.moveTo(x, y);\n break;\n case \"l\":\n c = commands[i];\n x += c[1];\n y += c[2];\n ctx.lineTo(x, y);\n break;\n case \"L\":\n c = commands[i];\n x = c[1];\n y = c[2];\n ctx.lineTo(x, y);\n break;\n case \"H\":\n c = commands[i];\n x = c[1];\n ctx.lineTo(x, y);\n break;\n case \"h\":\n c = commands[i];\n x += c[1];\n ctx.lineTo(x, y);\n break;\n case \"V\":\n c = commands[i];\n y = c[1];\n ctx.lineTo(x, y);\n break;\n case \"v\":\n c = commands[i];\n y += c[1];\n ctx.lineTo(x, y);\n break;\n case \"a\":\n case \"A\":\n c = commands[i];\n if (currentPoint === null) {\n throw new Error(\"This should never happen\");\n }\n if (pathType === \"a\") {\n x += c[6];\n y += c[7];\n } else {\n x = c[6];\n y = c[7];\n }\n rx = c[1];\n ry = c[2];\n angle = c[3] * Math.PI / 180;\n largeArcFlag = !!c[4];\n sweepFlag = !!c[5];\n endPoint = { x, y };\n midPoint = {\n x: (currentPoint.x - endPoint.x) / 2,\n y: (currentPoint.y - endPoint.y) / 2\n };\n rotatePoint(midPoint, -angle);\n lambda = midPoint.x * midPoint.x / (rx * rx) + midPoint.y * midPoint.y / (ry * ry);\n if (lambda > 1) {\n lambda = Math.sqrt(lambda);\n rx *= lambda;\n ry *= lambda;\n }\n centerPoint = {\n x: rx * midPoint.y / ry,\n y: -(ry * midPoint.x) / rx\n };\n t1 = rx * rx * ry * ry;\n t2 = rx * rx * midPoint.y * midPoint.y + ry * ry * midPoint.x * midPoint.x;\n if (sweepFlag !== largeArcFlag) {\n scalePoint(centerPoint, Math.sqrt((t1 - t2) / t2) || 0);\n } else {\n scalePoint(centerPoint, -Math.sqrt((t1 - t2) / t2) || 0);\n }\n startAngle = Math.atan2((midPoint.y - centerPoint.y) / ry, (midPoint.x - centerPoint.x) / rx);\n endAngle = Math.atan2(-(midPoint.y + centerPoint.y) / ry, -(midPoint.x + centerPoint.x) / rx);\n rotatePoint(centerPoint, angle);\n translatePoint(centerPoint, (endPoint.x + currentPoint.x) / 2, (endPoint.y + currentPoint.y) / 2);\n ctx.save();\n ctx.translate(centerPoint.x, centerPoint.y);\n ctx.rotate(angle);\n ctx.scale(rx, ry);\n ctx.arc(0, 0, 1, startAngle, endAngle, !sweepFlag);\n ctx.restore();\n break;\n case \"C\":\n c = commands[i];\n cpx = c[3];\n cpy = c[4];\n x = c[5];\n y = c[6];\n ctx.bezierCurveTo(c[1], c[2], cpx, cpy, x, y);\n break;\n case \"c\":\n c = commands[i];\n ctx.bezierCurveTo(c[1] + x, c[2] + y, c[3] + x, c[4] + y, c[5] + x, c[6] + y);\n cpx = c[3] + x;\n cpy = c[4] + y;\n x += c[5];\n y += c[6];\n break;\n case \"S\":\n c = commands[i];\n if (cpx === null || cpy === null) {\n cpx = x;\n cpy = y;\n }\n ctx.bezierCurveTo(2 * x - cpx, 2 * y - cpy, c[1], c[2], c[3], c[4]);\n cpx = c[1];\n cpy = c[2];\n x = c[3];\n y = c[4];\n break;\n case \"s\":\n c = commands[i];\n if (cpx === null || cpy === null) {\n cpx = x;\n cpy = y;\n }\n ctx.bezierCurveTo(2 * x - cpx, 2 * y - cpy, c[1] + x, c[2] + y, c[3] + x, c[4] + y);\n cpx = c[1] + x;\n cpy = c[2] + y;\n x += c[3];\n y += c[4];\n break;\n case \"Q\":\n c = commands[i];\n qcpx = c[1];\n qcpy = c[2];\n x = c[3];\n y = c[4];\n ctx.quadraticCurveTo(qcpx, qcpy, x, y);\n break;\n case \"q\":\n c = commands[i];\n qcpx = c[1] + x;\n qcpy = c[2] + y;\n x += c[3];\n y += c[4];\n ctx.quadraticCurveTo(qcpx, qcpy, x, y);\n break;\n case \"T\":\n c = commands[i];\n if (qcpx === null || qcpy === null) {\n qcpx = x;\n qcpy = y;\n }\n qcpx = 2 * x - qcpx;\n qcpy = 2 * y - qcpy;\n x = c[1];\n y = c[2];\n ctx.quadraticCurveTo(qcpx, qcpy, x, y);\n break;\n case \"t\":\n c = commands[i];\n if (qcpx === null || qcpy === null) {\n qcpx = x;\n qcpy = y;\n }\n qcpx = 2 * x - qcpx;\n qcpy = 2 * y - qcpy;\n x += c[1];\n y += c[2];\n ctx.quadraticCurveTo(qcpx, qcpy, x, y);\n break;\n case \"z\":\n case \"Z\":\n if (startPoint) {\n x = startPoint.x;\n y = startPoint.y;\n }\n startPoint = null;\n ctx.closePath();\n break;\n case \"AC\":\n c = commands[i];\n x = c[1];\n y = c[2];\n r = c[3];\n startAngle = c[4];\n endAngle = c[5];\n ccw = c[6];\n ctx.arc(x, y, r, startAngle, endAngle, ccw);\n break;\n case \"AT\":\n c = commands[i];\n x1 = c[1];\n y1 = c[2];\n x = c[3];\n y = c[4];\n r = c[5];\n ctx.arcTo(x1, y1, x, y, r);\n break;\n case \"E\":\n c = commands[i];\n x = c[1];\n y = c[2];\n rx = c[3];\n ry = c[4];\n angle = c[5];\n startAngle = c[6];\n endAngle = c[7];\n ccw = c[8];\n ctx.save();\n ctx.translate(x, y);\n ctx.rotate(angle);\n ctx.scale(rx, ry);\n ctx.arc(0, 0, 1, startAngle, endAngle, ccw);\n ctx.restore();\n break;\n case \"R\":\n c = commands[i];\n x = c[1];\n y = c[2];\n w = c[3];\n h = c[4];\n startPoint = { x, y };\n ctx.rect(x, y, w, h);\n break;\n case \"RR\":\n c = commands[i];\n x = c[1];\n y = c[2];\n w = c[3];\n h = c[4];\n radii = c[5];\n startPoint = { x, y };\n ctx.roundRect(x, y, w, h, radii);\n break;\n default:\n throw new Error(`Invalid path command: ${pathType}`);\n }\n if (!currentPoint) {\n currentPoint = { x, y };\n } else {\n currentPoint.x = x;\n currentPoint.y = y;\n }\n }\n}\n\n// src/round-rect.ts\nfunction roundRect(x, y, width, height, radii = 0) {\n if (typeof radii === \"number\") {\n radii = [radii];\n }\n if (Array.isArray(radii)) {\n if (radii.length === 0 || radii.length > 4) {\n throw new RangeError(\n `Failed to execute 'roundRect' on '${this.constructor.name}': ${radii.length} radii provided. Between one and four radii are necessary.`\n );\n }\n radii.forEach((v) => {\n if (v < 0) {\n throw new RangeError(\n `Failed to execute 'roundRect' on '${this.constructor.name}': Radius value ${v} is negative.`\n );\n }\n });\n } else {\n return;\n }\n if (radii.length === 1 && radii[0] === 0) {\n this.rect(x, y, width, height);\n return;\n }\n const minRadius = Math.min(width, height) / 2;\n const tl = Math.min(minRadius, radii[0]);\n let tr = tl;\n let br = tl;\n let bl = tl;\n if (radii.length === 2) {\n tr = Math.min(minRadius, radii[1]);\n bl = tr;\n }\n if (radii.length === 3) {\n tr = Math.min(minRadius, radii[1]);\n bl = tr;\n br = Math.min(minRadius, radii[2]);\n }\n if (radii.length === 4) {\n tr = Math.min(minRadius, radii[1]);\n br = Math.min(minRadius, radii[2]);\n bl = Math.min(minRadius, radii[3]);\n }\n this.moveTo(x, y + height - bl);\n this.arcTo(x, y, x + tl, y, tl);\n this.arcTo(x + width, y, x + width, y + tr, tr);\n this.arcTo(x + width, y + height, x + width - br, y + height, br);\n this.arcTo(x, y + height, x, y + height - bl, bl);\n this.moveTo(x, y);\n}\n\n// src/apply.ts\nfunction applyPath2DToCanvasRenderingContext(CanvasRenderingContext2D) {\n if (!CanvasRenderingContext2D) return;\n const cClip = CanvasRenderingContext2D.prototype.clip;\n const cFill = CanvasRenderingContext2D.prototype.fill;\n const cStroke = CanvasRenderingContext2D.prototype.stroke;\n const cIsPointInPath = CanvasRenderingContext2D.prototype.isPointInPath;\n CanvasRenderingContext2D.prototype.clip = function clip(...args) {\n if (args[0] instanceof Path2D) {\n const path = args[0];\n const fillRule2 = args[1] || \"nonzero\";\n buildPath(this, path.commands);\n return cClip.apply(this, [fillRule2]);\n }\n const fillRule = args[0] || \"nonzero\";\n return cClip.apply(this, [fillRule]);\n };\n CanvasRenderingContext2D.prototype.fill = function fill(...args) {\n if (args[0] instanceof Path2D) {\n const path = args[0];\n const fillRule2 = args[1] || \"nonzero\";\n buildPath(this, path.commands);\n return cFill.apply(this, [fillRule2]);\n }\n const fillRule = args[0] || \"nonzero\";\n return cFill.apply(this, [fillRule]);\n };\n CanvasRenderingContext2D.prototype.stroke = function stroke(path) {\n if (path) {\n buildPath(this, path.commands);\n }\n cStroke.apply(this);\n };\n CanvasRenderingContext2D.prototype.isPointInPath = function isPointInPath(...args) {\n if (args[0] instanceof Path2D) {\n const path = args[0];\n const x = args[1];\n const y = args[2];\n const fillRule = args[3] || \"nonzero\";\n buildPath(this, path.commands);\n return cIsPointInPath.apply(this, [x, y, fillRule]);\n }\n return cIsPointInPath.apply(this, args);\n };\n}\nfunction applyRoundRectToCanvasRenderingContext2D(CanvasRenderingContext2D) {\n if (CanvasRenderingContext2D && !CanvasRenderingContext2D.prototype.roundRect) {\n CanvasRenderingContext2D.prototype.roundRect = roundRect;\n }\n}\nfunction applyRoundRectToPath2D(P2D) {\n if (P2D && !P2D.prototype.roundRect) {\n P2D.prototype.roundRect = roundRect;\n }\n}\nexport {\n Path2D,\n applyPath2DToCanvasRenderingContext,\n applyRoundRectToCanvasRenderingContext2D,\n applyRoundRectToPath2D,\n buildPath,\n parsePath,\n roundRect\n};\n"],"names":[],"mappings":"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","x_google_ignoreList":[0]}