@qr-styled/node 1.0.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/LICENSE +21 -0
- package/README.md +691 -0
- package/dist/cli/index.d.ts +29 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +126 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/QRGenerator.d.ts +53 -0
- package/dist/lib/QRGenerator.d.ts.map +1 -0
- package/dist/lib/QRGenerator.js +150 -0
- package/dist/lib/QRGenerator.js.map +1 -0
- package/dist/lib/QRGenerator.new-features.test.d.ts +2 -0
- package/dist/lib/QRGenerator.new-features.test.d.ts.map +1 -0
- package/dist/lib/QRGenerator.new-features.test.js +235 -0
- package/dist/lib/QRGenerator.new-features.test.js.map +1 -0
- package/dist/lib/QRGenerator.test.d.ts +2 -0
- package/dist/lib/QRGenerator.test.d.ts.map +1 -0
- package/dist/lib/QRGenerator.test.js +39 -0
- package/dist/lib/QRGenerator.test.js.map +1 -0
- package/dist/lib/renderers/BackgroundRenderer.d.ts +23 -0
- package/dist/lib/renderers/BackgroundRenderer.d.ts.map +1 -0
- package/dist/lib/renderers/BackgroundRenderer.js +48 -0
- package/dist/lib/renderers/BackgroundRenderer.js.map +1 -0
- package/dist/lib/renderers/GradientRenderer.d.ts +19 -0
- package/dist/lib/renderers/GradientRenderer.d.ts.map +1 -0
- package/dist/lib/renderers/GradientRenderer.js +44 -0
- package/dist/lib/renderers/GradientRenderer.js.map +1 -0
- package/dist/lib/renderers/LogoRenderer.d.ts +23 -0
- package/dist/lib/renderers/LogoRenderer.d.ts.map +1 -0
- package/dist/lib/renderers/LogoRenderer.js +72 -0
- package/dist/lib/renderers/LogoRenderer.js.map +1 -0
- package/dist/lib/renderers/ModuleRenderer.d.ts +45 -0
- package/dist/lib/renderers/ModuleRenderer.d.ts.map +1 -0
- package/dist/lib/renderers/ModuleRenderer.js +162 -0
- package/dist/lib/renderers/ModuleRenderer.js.map +1 -0
- package/dist/lib/renderers/SVGRenderer.d.ts +23 -0
- package/dist/lib/renderers/SVGRenderer.d.ts.map +1 -0
- package/dist/lib/renderers/SVGRenderer.js +74 -0
- package/dist/lib/renderers/SVGRenderer.js.map +1 -0
- package/dist/lib/utils/formatters.d.ts +26 -0
- package/dist/lib/utils/formatters.d.ts.map +1 -0
- package/dist/lib/utils/formatters.js +107 -0
- package/dist/lib/utils/formatters.js.map +1 -0
- package/dist/lib/utils/formatters.test.d.ts +2 -0
- package/dist/lib/utils/formatters.test.d.ts.map +1 -0
- package/dist/lib/utils/formatters.test.js +190 -0
- package/dist/lib/utils/formatters.test.js.map +1 -0
- package/dist/lib/utils/types.d.ts +120 -0
- package/dist/lib/utils/types.d.ts.map +1 -0
- package/dist/lib/utils/types.js +35 -0
- package/dist/lib/utils/types.js.map +1 -0
- package/dist/lib/utils/validators.d.ts +11 -0
- package/dist/lib/utils/validators.d.ts.map +1 -0
- package/dist/lib/utils/validators.js +127 -0
- package/dist/lib/utils/validators.js.map +1 -0
- package/dist/lib/utils/validators.test.d.ts +2 -0
- package/dist/lib/utils/validators.test.d.ts.map +1 -0
- package/dist/lib/utils/validators.test.js +62 -0
- package/dist/lib/utils/validators.test.js.map +1 -0
- package/package.json +87 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QRGenerator.new-features.test.js","sourceRoot":"","sources":["../../src/lib/QRGenerator.new-features.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QRGenerator.test.d.ts","sourceRoot":"","sources":["../../src/lib/QRGenerator.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { QRGenerator } from './QRGenerator.js';
|
|
3
|
+
import path from 'path';
|
|
4
|
+
describe('QRGenerator - Essential Tests', () => {
|
|
5
|
+
const testOutputDir = path.join(process.cwd(), 'test-output');
|
|
6
|
+
it('should create an instance with valid options', () => {
|
|
7
|
+
const options = {
|
|
8
|
+
url: 'https://example.com'
|
|
9
|
+
};
|
|
10
|
+
const generator = new QRGenerator(options);
|
|
11
|
+
expect(generator).toBeInstanceOf(QRGenerator);
|
|
12
|
+
});
|
|
13
|
+
it('should generate QR code to buffer', async () => {
|
|
14
|
+
const options = {
|
|
15
|
+
url: 'https://example.com'
|
|
16
|
+
};
|
|
17
|
+
const generator = new QRGenerator(options);
|
|
18
|
+
const buffer = await generator.generateToBuffer();
|
|
19
|
+
expect(buffer).toBeInstanceOf(Buffer);
|
|
20
|
+
expect(buffer.length).toBeGreaterThan(0);
|
|
21
|
+
});
|
|
22
|
+
it('should generate QR code to data URL', async () => {
|
|
23
|
+
const options = {
|
|
24
|
+
url: 'https://example.com'
|
|
25
|
+
};
|
|
26
|
+
const generator = new QRGenerator(options);
|
|
27
|
+
const dataURL = await generator.generateToDataURL();
|
|
28
|
+
expect(dataURL).toMatch(/^data:image\/png;base64,/);
|
|
29
|
+
expect(dataURL.length).toBeGreaterThan(100);
|
|
30
|
+
});
|
|
31
|
+
it('should throw error with invalid options', () => {
|
|
32
|
+
const options = {
|
|
33
|
+
url: 'https://example.com',
|
|
34
|
+
size: 50 // Too small
|
|
35
|
+
};
|
|
36
|
+
expect(() => new QRGenerator(options)).toThrow();
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
//# sourceMappingURL=QRGenerator.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QRGenerator.test.js","sourceRoot":"","sources":["../../src/lib/QRGenerator.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG/C,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,QAAQ,CAAC,+BAA+B,EAAE,GAAG,EAAE;IAC7C,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,CAAC,CAAC;IAE9D,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,OAAO,GAAc;YACzB,GAAG,EAAE,qBAAqB;SAC3B,CAAC;QAEF,MAAM,SAAS,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;QAC3C,MAAM,CAAC,SAAS,CAAC,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;QACjD,MAAM,OAAO,GAAc;YACzB,GAAG,EAAE,qBAAqB;SAC3B,CAAC;QAEF,MAAM,SAAS,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;QAC3C,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,gBAAgB,EAAE,CAAC;QAElD,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;QACnD,MAAM,OAAO,GAAc;YACzB,GAAG,EAAE,qBAAqB;SAC3B,CAAC;QAEF,MAAM,SAAS,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;QAC3C,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,iBAAiB,EAAE,CAAC;QAEpD,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;QACpD,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,OAAO,GAAc;YACzB,GAAG,EAAE,qBAAqB;YAC1B,IAAI,EAAE,EAAE,CAAC,YAAY;SACtB,CAAC;QAEF,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IACnD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { QROptions } from '../utils/types.js';
|
|
2
|
+
import type { CanvasRenderingContext2D } from 'canvas';
|
|
3
|
+
/**
|
|
4
|
+
* Handles background rendering for QR codes
|
|
5
|
+
*/
|
|
6
|
+
export declare class BackgroundRenderer {
|
|
7
|
+
private ctx;
|
|
8
|
+
private options;
|
|
9
|
+
constructor(ctx: CanvasRenderingContext2D, options: Required<QROptions>);
|
|
10
|
+
/**
|
|
11
|
+
* Renders background with rounded corners
|
|
12
|
+
*/
|
|
13
|
+
render(): void;
|
|
14
|
+
/**
|
|
15
|
+
* Applies clipping path for rounded corners
|
|
16
|
+
*/
|
|
17
|
+
applyClipping(): void;
|
|
18
|
+
/**
|
|
19
|
+
* Restores canvas context after clipping
|
|
20
|
+
*/
|
|
21
|
+
restoreClipping(): void;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=BackgroundRenderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BackgroundRenderer.d.ts","sourceRoot":"","sources":["../../../src/lib/renderers/BackgroundRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,QAAQ,CAAC;AAEvD;;GAEG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,GAAG,CAA2B;IACtC,OAAO,CAAC,OAAO,CAAsB;gBAEzB,GAAG,EAAE,wBAAwB,EAAE,OAAO,EAAE,QAAQ,CAAC,SAAS,CAAC;IAKvE;;OAEG;IACH,MAAM,IAAI,IAAI;IAed;;OAEG;IACH,aAAa,IAAI,IAAI;IAerB;;OAEG;IACH,eAAe,IAAI,IAAI;CAGxB"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Handles background rendering for QR codes
|
|
3
|
+
*/
|
|
4
|
+
export class BackgroundRenderer {
|
|
5
|
+
constructor(ctx, options) {
|
|
6
|
+
this.ctx = ctx;
|
|
7
|
+
this.options = options;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Renders background with rounded corners
|
|
11
|
+
*/
|
|
12
|
+
render() {
|
|
13
|
+
const { size, cornerRadius, backgroundColor } = this.options;
|
|
14
|
+
const ctx = this.ctx;
|
|
15
|
+
ctx.fillStyle = backgroundColor;
|
|
16
|
+
ctx.beginPath();
|
|
17
|
+
ctx.moveTo(cornerRadius, 0);
|
|
18
|
+
ctx.arcTo(size, 0, size, size, cornerRadius);
|
|
19
|
+
ctx.arcTo(size, size, 0, size, cornerRadius);
|
|
20
|
+
ctx.arcTo(0, size, 0, 0, cornerRadius);
|
|
21
|
+
ctx.arcTo(0, 0, size, 0, cornerRadius);
|
|
22
|
+
ctx.closePath();
|
|
23
|
+
ctx.fill();
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Applies clipping path for rounded corners
|
|
27
|
+
*/
|
|
28
|
+
applyClipping() {
|
|
29
|
+
const { size, cornerRadius } = this.options;
|
|
30
|
+
const ctx = this.ctx;
|
|
31
|
+
ctx.save();
|
|
32
|
+
ctx.beginPath();
|
|
33
|
+
ctx.moveTo(cornerRadius, 0);
|
|
34
|
+
ctx.arcTo(size, 0, size, size, cornerRadius);
|
|
35
|
+
ctx.arcTo(size, size, 0, size, cornerRadius);
|
|
36
|
+
ctx.arcTo(0, size, 0, 0, cornerRadius);
|
|
37
|
+
ctx.arcTo(0, 0, size, 0, cornerRadius);
|
|
38
|
+
ctx.closePath();
|
|
39
|
+
ctx.clip();
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Restores canvas context after clipping
|
|
43
|
+
*/
|
|
44
|
+
restoreClipping() {
|
|
45
|
+
this.ctx.restore();
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=BackgroundRenderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BackgroundRenderer.js","sourceRoot":"","sources":["../../../src/lib/renderers/BackgroundRenderer.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,OAAO,kBAAkB;IAI7B,YAAY,GAA6B,EAAE,OAA4B;QACrE,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QAErB,GAAG,CAAC,SAAS,GAAG,eAAe,CAAC;QAChC,GAAG,CAAC,SAAS,EAAE,CAAC;QAChB,GAAG,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;QAC5B,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;QAC7C,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;QAC7C,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC;QACvC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC;QACvC,GAAG,CAAC,SAAS,EAAE,CAAC;QAChB,GAAG,CAAC,IAAI,EAAE,CAAC;IACb,CAAC;IAED;;OAEG;IACH,aAAa;QACX,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QAErB,GAAG,CAAC,IAAI,EAAE,CAAC;QACX,GAAG,CAAC,SAAS,EAAE,CAAC;QAChB,GAAG,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;QAC5B,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;QAC7C,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;QAC7C,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC;QACvC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC;QACvC,GAAG,CAAC,SAAS,EAAE,CAAC;QAChB,GAAG,CAAC,IAAI,EAAE,CAAC;IACb,CAAC;IAED;;OAEG;IACH,eAAe;QACb,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IACrB,CAAC;CACF"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { QROptions } from '../utils/types.js';
|
|
2
|
+
import type { CanvasRenderingContext2D, CanvasGradient } from 'canvas';
|
|
3
|
+
/**
|
|
4
|
+
* Handles gradient creation for QR codes
|
|
5
|
+
*/
|
|
6
|
+
export declare class GradientRenderer {
|
|
7
|
+
private ctx;
|
|
8
|
+
private options;
|
|
9
|
+
constructor(ctx: CanvasRenderingContext2D, options: Required<QROptions>);
|
|
10
|
+
/**
|
|
11
|
+
* Creates a gradient fill style
|
|
12
|
+
*/
|
|
13
|
+
createGradient(): CanvasGradient;
|
|
14
|
+
/**
|
|
15
|
+
* Gets the appropriate fill style (gradient or solid color)
|
|
16
|
+
*/
|
|
17
|
+
getFillStyle(): string | CanvasGradient;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=GradientRenderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GradientRenderer.d.ts","sourceRoot":"","sources":["../../../src/lib/renderers/GradientRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,KAAK,EAAE,wBAAwB,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAEvE;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,GAAG,CAA2B;IACtC,OAAO,CAAC,OAAO,CAAsB;gBAEzB,GAAG,EAAE,wBAAwB,EAAE,OAAO,EAAE,QAAQ,CAAC,SAAS,CAAC;IAKvE;;OAEG;IACH,cAAc,IAAI,cAAc;IAgChC;;OAEG;IACH,YAAY,IAAI,MAAM,GAAG,cAAc;CAIxC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Handles gradient creation for QR codes
|
|
3
|
+
*/
|
|
4
|
+
export class GradientRenderer {
|
|
5
|
+
constructor(ctx, options) {
|
|
6
|
+
this.ctx = ctx;
|
|
7
|
+
this.options = options;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Creates a gradient fill style
|
|
11
|
+
*/
|
|
12
|
+
createGradient() {
|
|
13
|
+
const { size, gradientColors, gradientAngle } = this.options;
|
|
14
|
+
const ctx = this.ctx;
|
|
15
|
+
// Parse gradient colors
|
|
16
|
+
const colors = gradientColors.split(',').map(c => c.trim());
|
|
17
|
+
// Calculate angle in radians
|
|
18
|
+
const angleRad = (gradientAngle * Math.PI) / 180;
|
|
19
|
+
// Calculate gradient start and end points
|
|
20
|
+
const centerX = size / 2;
|
|
21
|
+
const centerY = size / 2;
|
|
22
|
+
const length = Math.sqrt(size * size + size * size) / 2;
|
|
23
|
+
const x0 = centerX - Math.cos(angleRad) * length;
|
|
24
|
+
const y0 = centerY - Math.sin(angleRad) * length;
|
|
25
|
+
const x1 = centerX + Math.cos(angleRad) * length;
|
|
26
|
+
const y1 = centerY + Math.sin(angleRad) * length;
|
|
27
|
+
// Create linear gradient
|
|
28
|
+
const gradient = ctx.createLinearGradient(x0, y0, x1, y1);
|
|
29
|
+
// Add color stops uniformly distributed
|
|
30
|
+
colors.forEach((color, index) => {
|
|
31
|
+
const stop = index / (colors.length - 1);
|
|
32
|
+
gradient.addColorStop(stop, color);
|
|
33
|
+
});
|
|
34
|
+
return gradient;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Gets the appropriate fill style (gradient or solid color)
|
|
38
|
+
*/
|
|
39
|
+
getFillStyle() {
|
|
40
|
+
const { gradient, foregroundColor } = this.options;
|
|
41
|
+
return gradient ? this.createGradient() : foregroundColor;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=GradientRenderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GradientRenderer.js","sourceRoot":"","sources":["../../../src/lib/renderers/GradientRenderer.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,OAAO,gBAAgB;IAI3B,YAAY,GAA6B,EAAE,OAA4B;QACrE,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QAErB,wBAAwB;QACxB,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAE5D,6BAA6B;QAC7B,MAAM,QAAQ,GAAG,CAAC,aAAa,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;QAEjD,0CAA0C;QAC1C,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC;QACzB,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC;QACzB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QAExD,MAAM,EAAE,GAAG,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC;QACjD,MAAM,EAAE,GAAG,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC;QACjD,MAAM,EAAE,GAAG,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC;QACjD,MAAM,EAAE,GAAG,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC;QAEjD,yBAAyB;QACzB,MAAM,QAAQ,GAAG,GAAG,CAAC,oBAAoB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAE1D,wCAAwC;QACxC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YAC9B,MAAM,IAAI,GAAG,KAAK,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACzC,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;OAEG;IACH,YAAY;QACV,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;QACnD,OAAO,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC;IAC5D,CAAC;CACF"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { CanvasRenderingContext2D } from 'canvas';
|
|
2
|
+
import { QROptions } from '../utils/types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Handles logo rendering on QR codes
|
|
5
|
+
*/
|
|
6
|
+
export declare class LogoRenderer {
|
|
7
|
+
private ctx;
|
|
8
|
+
private options;
|
|
9
|
+
constructor(ctx: CanvasRenderingContext2D, options: Required<QROptions>);
|
|
10
|
+
/**
|
|
11
|
+
* Renders logo with background
|
|
12
|
+
*/
|
|
13
|
+
render(logoPath: string): Promise<void>;
|
|
14
|
+
/**
|
|
15
|
+
* Draws logo background (circle or rounded square)
|
|
16
|
+
*/
|
|
17
|
+
private drawLogoBackground;
|
|
18
|
+
/**
|
|
19
|
+
* Draws logo with shadow effect
|
|
20
|
+
*/
|
|
21
|
+
private drawLogoWithShadow;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=LogoRenderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LogoRenderer.d.ts","sourceRoot":"","sources":["../../../src/lib/renderers/LogoRenderer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,QAAQ,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,GAAG,CAA2B;IACtC,OAAO,CAAC,OAAO,CAAsB;gBAEzB,GAAG,EAAE,wBAAwB,EAAE,OAAO,EAAE,QAAQ,CAAC,SAAS,CAAC;IAKvE;;OAEG;IACG,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB7C;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA0C1B;;OAEG;IACH,OAAO,CAAC,kBAAkB;CAuB3B"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { loadImage } from 'canvas';
|
|
2
|
+
/**
|
|
3
|
+
* Handles logo rendering on QR codes
|
|
4
|
+
*/
|
|
5
|
+
export class LogoRenderer {
|
|
6
|
+
constructor(ctx, options) {
|
|
7
|
+
this.ctx = ctx;
|
|
8
|
+
this.options = options;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Renders logo with background
|
|
12
|
+
*/
|
|
13
|
+
async render(logoPath) {
|
|
14
|
+
if (!logoPath)
|
|
15
|
+
return;
|
|
16
|
+
const img = await loadImage(logoPath);
|
|
17
|
+
const { size, logoPadding } = this.options;
|
|
18
|
+
const logoSize = size * 0.25;
|
|
19
|
+
const bgSize = logoSize + logoPadding;
|
|
20
|
+
const centerX = size / 2;
|
|
21
|
+
const centerY = size / 2;
|
|
22
|
+
// Draw logo background
|
|
23
|
+
this.drawLogoBackground(centerX, centerY, bgSize);
|
|
24
|
+
// Draw logo with shadow
|
|
25
|
+
this.drawLogoWithShadow(img, centerX, centerY, logoSize);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Draws logo background (circle or rounded square)
|
|
29
|
+
*/
|
|
30
|
+
drawLogoBackground(centerX, centerY, bgSize) {
|
|
31
|
+
const { logoShape, logoRadius, backgroundColor } = this.options;
|
|
32
|
+
const ctx = this.ctx;
|
|
33
|
+
ctx.fillStyle = backgroundColor;
|
|
34
|
+
if (logoShape === 'circle') {
|
|
35
|
+
ctx.beginPath();
|
|
36
|
+
ctx.arc(centerX, centerY, bgSize / 2, 0, Math.PI * 2);
|
|
37
|
+
ctx.fill();
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
// Rounded square
|
|
41
|
+
const squareX = centerX - bgSize / 2;
|
|
42
|
+
const squareY = centerY - bgSize / 2;
|
|
43
|
+
ctx.beginPath();
|
|
44
|
+
ctx.moveTo(squareX + logoRadius, squareY);
|
|
45
|
+
ctx.arcTo(squareX + bgSize, squareY, squareX + bgSize, squareY + bgSize, logoRadius);
|
|
46
|
+
ctx.arcTo(squareX + bgSize, squareY + bgSize, squareX, squareY + bgSize, logoRadius);
|
|
47
|
+
ctx.arcTo(squareX, squareY + bgSize, squareX, squareY, logoRadius);
|
|
48
|
+
ctx.arcTo(squareX, squareY, squareX + bgSize, squareY, logoRadius);
|
|
49
|
+
ctx.closePath();
|
|
50
|
+
ctx.fill();
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Draws logo with shadow effect
|
|
55
|
+
*/
|
|
56
|
+
drawLogoWithShadow(img, centerX, centerY, logoSize) {
|
|
57
|
+
const ctx = this.ctx;
|
|
58
|
+
// Apply shadow
|
|
59
|
+
ctx.shadowColor = 'rgba(0, 0, 0, 0.15)';
|
|
60
|
+
ctx.shadowBlur = 12;
|
|
61
|
+
ctx.shadowOffsetX = 0;
|
|
62
|
+
ctx.shadowOffsetY = 2;
|
|
63
|
+
// Draw logo
|
|
64
|
+
const logoX = centerX - logoSize / 2;
|
|
65
|
+
const logoY = centerY - logoSize / 2;
|
|
66
|
+
ctx.drawImage(img, logoX, logoY, logoSize, logoSize);
|
|
67
|
+
// Reset shadow
|
|
68
|
+
ctx.shadowColor = 'transparent';
|
|
69
|
+
ctx.shadowBlur = 0;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=LogoRenderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LogoRenderer.js","sourceRoot":"","sources":["../../../src/lib/renderers/LogoRenderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { QROptions } from '../utils/types.js';
|
|
2
|
+
import type { CanvasRenderingContext2D, CanvasGradient } from 'canvas';
|
|
3
|
+
interface QRModules {
|
|
4
|
+
size: number;
|
|
5
|
+
get(row: number, col: number): number;
|
|
6
|
+
}
|
|
7
|
+
interface RenderOptions extends Required<QROptions> {
|
|
8
|
+
moduleCount: number;
|
|
9
|
+
moduleSize: number;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Handles QR module rendering with rounded corners
|
|
13
|
+
*/
|
|
14
|
+
export declare class ModuleRenderer {
|
|
15
|
+
private ctx;
|
|
16
|
+
private modules;
|
|
17
|
+
private options;
|
|
18
|
+
constructor(ctx: CanvasRenderingContext2D, modules: QRModules, options: RenderOptions);
|
|
19
|
+
/**
|
|
20
|
+
* Checks if a module exists at given position
|
|
21
|
+
*/
|
|
22
|
+
private hasModule;
|
|
23
|
+
/**
|
|
24
|
+
* Checks if position is part of finder pattern (eye)
|
|
25
|
+
*/
|
|
26
|
+
private isPartOfEye;
|
|
27
|
+
/**
|
|
28
|
+
* Renders all QR modules
|
|
29
|
+
*/
|
|
30
|
+
render(fillStyle: string | CanvasGradient): void;
|
|
31
|
+
/**
|
|
32
|
+
* Renders modules with rounded corners
|
|
33
|
+
*/
|
|
34
|
+
private renderRoundedModules;
|
|
35
|
+
/**
|
|
36
|
+
* Draws a single module with selectively rounded corners
|
|
37
|
+
*/
|
|
38
|
+
private drawRoundedModule;
|
|
39
|
+
/**
|
|
40
|
+
* Renders simple square modules
|
|
41
|
+
*/
|
|
42
|
+
private renderSquareModules;
|
|
43
|
+
}
|
|
44
|
+
export {};
|
|
45
|
+
//# sourceMappingURL=ModuleRenderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ModuleRenderer.d.ts","sourceRoot":"","sources":["../../../src/lib/renderers/ModuleRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,KAAK,EAAE,wBAAwB,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAEvE,UAAU,SAAS;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;CACvC;AAED,UAAU,aAAc,SAAQ,QAAQ,CAAC,SAAS,CAAC;IACjD,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAgBD;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,GAAG,CAA2B;IACtC,OAAO,CAAC,OAAO,CAAY;IAC3B,OAAO,CAAC,OAAO,CAAgB;gBAG7B,GAAG,EAAE,wBAAwB,EAC7B,OAAO,EAAE,SAAS,EAClB,OAAO,EAAE,aAAa;IAOxB;;OAEG;IACH,OAAO,CAAC,SAAS;IAQjB;;OAEG;IACH,OAAO,CAAC,WAAW;IAWnB;;OAEG;IACH,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IAWhD;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA+D5B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA6EzB;;OAEG;IACH,OAAO,CAAC,mBAAmB;CAoB5B"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Handles QR module rendering with rounded corners
|
|
3
|
+
*/
|
|
4
|
+
export class ModuleRenderer {
|
|
5
|
+
constructor(ctx, modules, options) {
|
|
6
|
+
this.ctx = ctx;
|
|
7
|
+
this.modules = modules;
|
|
8
|
+
this.options = options;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Checks if a module exists at given position
|
|
12
|
+
*/
|
|
13
|
+
hasModule(row, col) {
|
|
14
|
+
const { moduleCount } = this.options;
|
|
15
|
+
if (row < 0 || row >= moduleCount || col < 0 || col >= moduleCount) {
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
return this.modules.get(row, col) === 1;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Checks if position is part of finder pattern (eye)
|
|
22
|
+
*/
|
|
23
|
+
isPartOfEye(row, col) {
|
|
24
|
+
const { moduleCount } = this.options;
|
|
25
|
+
// Top-left eye
|
|
26
|
+
if (row < 7 && col < 7)
|
|
27
|
+
return true;
|
|
28
|
+
// Top-right eye
|
|
29
|
+
if (row < 7 && col >= moduleCount - 7)
|
|
30
|
+
return true;
|
|
31
|
+
// Bottom-left eye
|
|
32
|
+
if (row >= moduleCount - 7 && col < 7)
|
|
33
|
+
return true;
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Renders all QR modules
|
|
38
|
+
*/
|
|
39
|
+
render(fillStyle) {
|
|
40
|
+
const { rounded } = this.options;
|
|
41
|
+
this.ctx.fillStyle = fillStyle;
|
|
42
|
+
if (rounded) {
|
|
43
|
+
this.renderRoundedModules();
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
this.renderSquareModules();
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Renders modules with rounded corners
|
|
51
|
+
*/
|
|
52
|
+
renderRoundedModules() {
|
|
53
|
+
const { moduleCount, moduleSize, padding, moduleRadius, eyeColor, eyeRadius } = this.options;
|
|
54
|
+
const ctx = this.ctx;
|
|
55
|
+
for (let row = 0; row < moduleCount; row++) {
|
|
56
|
+
for (let col = 0; col < moduleCount; col++) {
|
|
57
|
+
if (this.modules.get(row, col)) {
|
|
58
|
+
const x = padding + col * moduleSize;
|
|
59
|
+
const y = padding + row * moduleSize;
|
|
60
|
+
// Determine if this is part of an eye (finder pattern)
|
|
61
|
+
const isEye = this.isPartOfEye(row, col);
|
|
62
|
+
// Use eye-specific color if available
|
|
63
|
+
if (isEye && eyeColor) {
|
|
64
|
+
ctx.fillStyle = eyeColor;
|
|
65
|
+
}
|
|
66
|
+
// Use eye-specific radius if available, otherwise use moduleRadius
|
|
67
|
+
const cornerRadius = isEye && eyeRadius !== undefined && eyeRadius > 0
|
|
68
|
+
? moduleSize * eyeRadius
|
|
69
|
+
: moduleSize * moduleRadius;
|
|
70
|
+
// Check adjacent modules
|
|
71
|
+
const top = this.hasModule(row - 1, col);
|
|
72
|
+
const right = this.hasModule(row, col + 1);
|
|
73
|
+
const bottom = this.hasModule(row + 1, col);
|
|
74
|
+
const left = this.hasModule(row, col - 1);
|
|
75
|
+
// Determine which corners to round
|
|
76
|
+
const roundTL = !top && !left;
|
|
77
|
+
const roundTR = !top && !right;
|
|
78
|
+
const roundBR = !bottom && !right;
|
|
79
|
+
const roundBL = !bottom && !left;
|
|
80
|
+
// Small extension to eliminate gaps
|
|
81
|
+
const gap = 0.5;
|
|
82
|
+
const extendTop = top ? gap : 0;
|
|
83
|
+
const extendRight = right ? gap : 0;
|
|
84
|
+
const extendBottom = bottom ? gap : 0;
|
|
85
|
+
const extendLeft = left ? gap : 0;
|
|
86
|
+
this.drawRoundedModule(x, y, moduleSize, cornerRadius, { roundTL, roundTR, roundBR, roundBL }, { extendTop, extendRight, extendBottom, extendLeft });
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Draws a single module with selectively rounded corners
|
|
93
|
+
*/
|
|
94
|
+
drawRoundedModule(x, y, size, radius, corners, extensions) {
|
|
95
|
+
const ctx = this.ctx;
|
|
96
|
+
const { roundTL, roundTR, roundBR, roundBL } = corners;
|
|
97
|
+
const { extendTop, extendRight, extendBottom, extendLeft } = extensions;
|
|
98
|
+
ctx.beginPath();
|
|
99
|
+
// Top-left corner
|
|
100
|
+
if (roundTL) {
|
|
101
|
+
ctx.moveTo(x + radius - extendLeft, y - extendTop);
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
ctx.moveTo(x - extendLeft, y - extendTop);
|
|
105
|
+
}
|
|
106
|
+
// Top side and top-right corner
|
|
107
|
+
if (roundTR) {
|
|
108
|
+
ctx.lineTo(x + size - radius + extendRight, y - extendTop);
|
|
109
|
+
ctx.quadraticCurveTo(x + size + extendRight, y - extendTop, x + size + extendRight, y + radius - extendTop);
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
ctx.lineTo(x + size + extendRight, y - extendTop);
|
|
113
|
+
}
|
|
114
|
+
// Right side and bottom-right corner
|
|
115
|
+
if (roundBR) {
|
|
116
|
+
ctx.lineTo(x + size + extendRight, y + size - radius + extendBottom);
|
|
117
|
+
ctx.quadraticCurveTo(x + size + extendRight, y + size + extendBottom, x + size - radius + extendRight, y + size + extendBottom);
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
ctx.lineTo(x + size + extendRight, y + size + extendBottom);
|
|
121
|
+
}
|
|
122
|
+
// Bottom side and bottom-left corner
|
|
123
|
+
if (roundBL) {
|
|
124
|
+
ctx.lineTo(x + radius - extendLeft, y + size + extendBottom);
|
|
125
|
+
ctx.quadraticCurveTo(x - extendLeft, y + size + extendBottom, x - extendLeft, y + size - radius + extendBottom);
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
ctx.lineTo(x - extendLeft, y + size + extendBottom);
|
|
129
|
+
}
|
|
130
|
+
// Left side and close path
|
|
131
|
+
if (roundTL) {
|
|
132
|
+
ctx.lineTo(x - extendLeft, y + radius - extendTop);
|
|
133
|
+
ctx.quadraticCurveTo(x - extendLeft, y - extendTop, x + radius - extendLeft, y - extendTop);
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
ctx.lineTo(x - extendLeft, y - extendTop);
|
|
137
|
+
}
|
|
138
|
+
ctx.closePath();
|
|
139
|
+
ctx.fill();
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Renders simple square modules
|
|
143
|
+
*/
|
|
144
|
+
renderSquareModules() {
|
|
145
|
+
const { moduleCount, moduleSize, padding, eyeColor } = this.options;
|
|
146
|
+
const ctx = this.ctx;
|
|
147
|
+
for (let row = 0; row < moduleCount; row++) {
|
|
148
|
+
for (let col = 0; col < moduleCount; col++) {
|
|
149
|
+
if (this.modules.get(row, col)) {
|
|
150
|
+
const x = padding + col * moduleSize;
|
|
151
|
+
const y = padding + row * moduleSize;
|
|
152
|
+
// Use eye-specific color if this is part of an eye
|
|
153
|
+
if (this.isPartOfEye(row, col) && eyeColor) {
|
|
154
|
+
ctx.fillStyle = eyeColor;
|
|
155
|
+
}
|
|
156
|
+
ctx.fillRect(x, y, moduleSize, moduleSize);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
//# sourceMappingURL=ModuleRenderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ModuleRenderer.js","sourceRoot":"","sources":["../../../src/lib/renderers/ModuleRenderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { QROptions } from '../utils/types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Renderer for SVG output
|
|
4
|
+
*/
|
|
5
|
+
export declare class SVGRenderer {
|
|
6
|
+
private options;
|
|
7
|
+
private qrData;
|
|
8
|
+
private size;
|
|
9
|
+
constructor(qrData: any, options: Required<QROptions>, size: number);
|
|
10
|
+
/**
|
|
11
|
+
* Generates SVG string
|
|
12
|
+
*/
|
|
13
|
+
generate(): string;
|
|
14
|
+
/**
|
|
15
|
+
* Checks if module exists at position
|
|
16
|
+
*/
|
|
17
|
+
private hasModule;
|
|
18
|
+
/**
|
|
19
|
+
* Checks if position is part of finder pattern (eye)
|
|
20
|
+
*/
|
|
21
|
+
private isPartOfEye;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=SVGRenderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SVGRenderer.d.ts","sourceRoot":"","sources":["../../../src/lib/renderers/SVGRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,OAAO,CAAsB;IACrC,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,IAAI,CAAS;gBAET,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM;IAMnE;;OAEG;IACH,QAAQ,IAAI,MAAM;IAmDlB;;OAEG;IACH,OAAO,CAAC,SAAS;IAQjB;;OAEG;IACH,OAAO,CAAC,WAAW;CASpB"}
|