svg-toolbox 1.1.0 → 1.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +17 -6
- package/es/applyDiffSvg.d.ts +1 -1
- package/es/applyDiffSvg.js +6 -8
- package/es/applyDiffSvg.js.map +1 -1
- package/es/applyRemoveNanCoordinates.d.ts +0 -7
- package/es/applyRemoveNanCoordinates.js +22 -5
- package/es/applyRemoveNanCoordinates.js.map +1 -1
- package/es/applySvg2Png.js +1 -2
- package/es/applySvg2Png.js.map +1 -1
- package/lib/applyDiffSvg.d.ts +1 -1
- package/lib/applyDiffSvg.js +6 -5
- package/lib/applyDiffSvg.js.map +1 -1
- package/lib/applyRemoveNanCoordinates.d.ts +0 -7
- package/lib/applyRemoveNanCoordinates.js +24 -7
- package/lib/applyRemoveNanCoordinates.js.map +1 -1
- package/lib/applySvg2Png.js +1 -2
- package/lib/applySvg2Png.js.map +1 -1
- package/package.json +6 -2
package/README.md
CHANGED
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
# svg-toolbox
|
|
2
2
|
This library provides some SVG-related tools
|
|
3
3
|
|
|
4
|
+
[](https://www.npmjs.com/package/svg-toolbox)
|
|
5
|
+
[](https://www.npmjs.com/package/svg-toolbox)
|
|
6
|
+
[](https://www.npmjs.com/package/svg-toolbox)
|
|
7
|
+
|
|
4
8
|
## Installation
|
|
5
9
|
```bash
|
|
6
10
|
npm install svg-toolbox
|
|
7
11
|
```
|
|
8
12
|
## Usage
|
|
9
|
-
```
|
|
13
|
+
```typescript
|
|
10
14
|
const { svg2png } = require('svg-toolbox')
|
|
11
15
|
|
|
12
16
|
...
|
|
@@ -14,18 +18,25 @@ svg2png(svgPath, pngSavePath, x)
|
|
|
14
18
|
...
|
|
15
19
|
```
|
|
16
20
|
|
|
17
|
-
```
|
|
21
|
+
```typescript
|
|
18
22
|
const { diffSvg } = require('svg-toolbox')
|
|
19
23
|
|
|
20
24
|
...
|
|
21
|
-
|
|
25
|
+
const {
|
|
26
|
+
diffPngBuffer,
|
|
27
|
+
numDiffPixels
|
|
28
|
+
}:Promise<{
|
|
29
|
+
diffPngBuffer: Buffer<ArrayBufferLike>
|
|
30
|
+
numDiffPixels: number
|
|
31
|
+
} | void> = await diffSvg(svgPath1, svgPath2, diffResultSavePath)
|
|
32
|
+
const diffPngBase64 = `data:image/png;base64,${diffPngBuffer.toString('base64')}`;
|
|
22
33
|
...
|
|
23
34
|
```
|
|
24
35
|
|
|
25
|
-
```
|
|
36
|
+
```typescript
|
|
26
37
|
const { removeEmptyCoordinates } = require('svg-toolbox')
|
|
27
38
|
|
|
28
39
|
...
|
|
29
|
-
const
|
|
40
|
+
const modifiedSvgContent: string = removeEmptyCoordinates(svgContent)
|
|
30
41
|
...
|
|
31
|
-
```
|
|
42
|
+
```
|
package/es/applyDiffSvg.d.ts
CHANGED
|
@@ -6,6 +6,6 @@
|
|
|
6
6
|
* @returns - The diff image buffer and the number of different pixels.
|
|
7
7
|
*/
|
|
8
8
|
export default function (pathA: string, pathB: string, diffFilePath: string): Promise<{
|
|
9
|
-
diffPngBuffer:
|
|
9
|
+
diffPngBuffer: Buffer<ArrayBufferLike>;
|
|
10
10
|
numDiffPixels: number;
|
|
11
11
|
} | void>;
|
package/es/applyDiffSvg.js
CHANGED
|
@@ -8,14 +8,10 @@
|
|
|
8
8
|
* @requires path - Path module
|
|
9
9
|
* @author pipi
|
|
10
10
|
*/
|
|
11
|
-
// @ts-ignore
|
|
12
11
|
import fs from 'fs';
|
|
13
12
|
import sharp from 'sharp';
|
|
14
|
-
// @ts-ignore
|
|
15
13
|
import pngjs from 'pngjs';
|
|
16
|
-
// @ts-ignore
|
|
17
14
|
import path from 'path';
|
|
18
|
-
// @ts-ignore
|
|
19
15
|
import pixelmatch from 'pixelmatch';
|
|
20
16
|
const PNG = pngjs.PNG;
|
|
21
17
|
/**
|
|
@@ -34,9 +30,6 @@ function validSuffix(filename) {
|
|
|
34
30
|
* @returns - The diff image buffer and the number of different pixels.
|
|
35
31
|
*/
|
|
36
32
|
export default async function (pathA, pathB, diffFilePath) {
|
|
37
|
-
// Import pixelmatch library
|
|
38
|
-
// @ts-ignore
|
|
39
|
-
// const pixelmatch = (await import('pixelmatch')).default;
|
|
40
33
|
// Read the PNG files as buffers
|
|
41
34
|
const pngA = await sharp(pathA).toBuffer();
|
|
42
35
|
const pngB = await sharp(pathB).toBuffer();
|
|
@@ -66,6 +59,11 @@ export default async function (pathA, pathB, diffFilePath) {
|
|
|
66
59
|
console.log(`\x1b[33mFile name: ${diffFileName} Number of different pixels: ${numDiffPixels}\x1b[0m`);
|
|
67
60
|
}
|
|
68
61
|
}
|
|
69
|
-
return {
|
|
62
|
+
return {
|
|
63
|
+
// The diff image buffer
|
|
64
|
+
diffPngBuffer,
|
|
65
|
+
// The number of different pixels
|
|
66
|
+
numDiffPixels
|
|
67
|
+
};
|
|
70
68
|
}
|
|
71
69
|
//# sourceMappingURL=applyDiffSvg.js.map
|
package/es/applyDiffSvg.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"applyDiffSvg.js","sourceRoot":"","sources":["../src/applyDiffSvg.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,
|
|
1
|
+
{"version":3,"file":"applyDiffSvg.js","sourceRoot":"","sources":["../src/applyDiffSvg.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,UAAU,MAAM,YAAY,CAAC;AAEpC,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;AAEtB;;;;GAIG;AACH,SAAS,WAAW,CAAC,QAAgB;IACnC,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;AACvC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,CAAC,KAAK,WAAW,KAAa,EAAE,KAAa,EAAE,YAAoB;IAC/E,gCAAgC;IAChC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC3C,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;IAE3C,yBAAyB;IACzB,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjC,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAE/B,6CAA6C;IAC7C,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IAExC,4DAA4D;IAC5D,MAAM,aAAa,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;IAErG,mCAAmC;IACnC,MAAM,aAAa,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAE3C,uDAAuD;IACvD,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QACjD,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,CAAC;YAC/B,OAAO,CAAC,KAAK,CAAC,oBAAoB,YAAY,2BAA2B,CAAC,CAAC;YAC3E,OAAO;QACT,CAAC;QACD,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;QAE9C,iBAAiB;QACjB,IAAI,aAAa,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,sBAAsB,YAAY,gCAAgC,aAAa,SAAS,CAAC,CAAC;QACxG,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,sBAAsB,YAAY,gCAAgC,aAAa,SAAS,CAAC,CAAC;QACxG,CAAC;IACH,CAAC;IAED,OAAO;QACL,wBAAwB;QACxB,aAAa;QACb,iCAAiC;QACjC,aAAa;KACd,CAAC;AACJ,CAAC"}
|
|
@@ -1,10 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @file applyRemoveNanCoordinates.js
|
|
3
|
-
* @description This module provides a function to parse and normalize the 'd' attribute of all path elements in an SVG content.
|
|
4
|
-
* @requires jsdom - JavaScript DOM library
|
|
5
|
-
* @module applyRemoveNanCoordinates
|
|
6
|
-
* @author pipi
|
|
7
|
-
*/
|
|
8
1
|
/**
|
|
9
2
|
* Parses and normalizes the 'd' attribute of all path elements in an SVG content.
|
|
10
3
|
* @param {*} svgContent
|
|
@@ -5,7 +5,6 @@
|
|
|
5
5
|
* @module applyRemoveNanCoordinates
|
|
6
6
|
* @author pipi
|
|
7
7
|
*/
|
|
8
|
-
// @ts-ignore
|
|
9
8
|
import { JSDOM } from 'jsdom';
|
|
10
9
|
/**
|
|
11
10
|
* Parses and normalizes the 'd' attribute of all path elements in an SVG content.
|
|
@@ -17,17 +16,35 @@ export default function (svgContent) {
|
|
|
17
16
|
const dom = new JSDOM(svgContent, {
|
|
18
17
|
contentType: 'image/svg+xml' // Set content type to SVG
|
|
19
18
|
});
|
|
19
|
+
// Get the document and SVG element
|
|
20
20
|
const document = dom.window.document;
|
|
21
|
+
// Get the SVG element
|
|
21
22
|
const svgElement = document.querySelector('svg');
|
|
23
|
+
// Check if an SVG element was found
|
|
24
|
+
if (!svgElement) {
|
|
25
|
+
throw new Error('No SVG element found in the provided content.');
|
|
26
|
+
}
|
|
22
27
|
const paths = svgElement.querySelectorAll('path');
|
|
23
28
|
// Iterate over each path element
|
|
24
29
|
Array.from(paths).forEach((path) => {
|
|
25
30
|
const d = path.getAttribute('d'); // Get the 'd' attribute
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
31
|
+
if (d === null) {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
// Split the 'd' attribute into commands and parameters
|
|
35
|
+
const commands = d
|
|
36
|
+
// Remove 'nan' and '-nan' values
|
|
37
|
+
.replace(/nan|-nan/g, ' ')
|
|
38
|
+
// Split the 'd' attribute into commands and parameters
|
|
39
|
+
.split(/(?=[MmLlHhVvCcSsQqTtAaZz])/).map((command) => {
|
|
40
|
+
// Split each command into type and parameters
|
|
41
|
+
const type = command[0];
|
|
42
|
+
// Split parameters by spaces or commas, filter out empty values, and convert to numbers
|
|
43
|
+
const params = command.slice(1).trim().split(/[\s,]+/).filter(Number);
|
|
29
44
|
return { type, params };
|
|
30
|
-
})
|
|
45
|
+
})
|
|
46
|
+
// Filter out commands with no parameters
|
|
47
|
+
.filter((command) => (command.type === 'Z' || command.params.length > 0));
|
|
31
48
|
// Reconstruct the 'd' attribute
|
|
32
49
|
const modifiedD = commands.map((command) => {
|
|
33
50
|
return command.type + command.params.join(' ');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"applyRemoveNanCoordinates.js","sourceRoot":"","sources":["../src/applyRemoveNanCoordinates.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"applyRemoveNanCoordinates.js","sourceRoot":"","sources":["../src/applyRemoveNanCoordinates.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAE9B;;;;GAIG;AACH,MAAM,CAAC,OAAO,WAAW,UAAkB;IACzC,oCAAoC;IACpC,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,UAAU,EAAE;QAChC,WAAW,EAAE,eAAe,CAAC,0BAA0B;KACxD,CAAC,CAAC;IACH,mCAAmC;IACnC,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;IACrC,sBAAsB;IACtB,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAEjD,oCAAoC;IACpC,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACnE,CAAC;IAED,MAAM,KAAK,GAAG,UAAU,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAClD,iCAAiC;IACjC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACjC,MAAM,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,wBAAwB;QAC1D,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;YACf,OAAO;QACT,CAAC;QACD,uDAAuD;QACvD,MAAM,QAAQ,GAAG,CAAC;YAChB,iCAAiC;aAChC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC;YAC1B,uDAAuD;aACtD,KAAK,CAAC,4BAA4B,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;YACnD,8CAA8C;YAC9C,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YACxB,wFAAwF;YACxF,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACtE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAC1B,CAAC,CAAC;YACF,yCAAyC;aACxC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,KAAK,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;QAC5E,gCAAgC;QAChC,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;YACzC,OAAO,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACZ,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,iCAAiC;IACtE,CAAC,CAAC,CAAC;IAEH,0BAA0B;IAC1B,MAAM,aAAa,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;IAClD,OAAO,aAAa,CAAC;AACvB,CAAC"}
|
package/es/applySvg2Png.js
CHANGED
|
@@ -6,9 +6,8 @@
|
|
|
6
6
|
* @requires fs - File system module
|
|
7
7
|
* @author pipi
|
|
8
8
|
*/
|
|
9
|
-
import sharp from 'sharp';
|
|
10
|
-
// @ts-ignore
|
|
11
9
|
import fs from 'fs';
|
|
10
|
+
import sharp from 'sharp';
|
|
12
11
|
/**
|
|
13
12
|
* Converts an SVG file to PNG format.
|
|
14
13
|
* @param {string} svgPath - The path to read the SVG file.
|
package/es/applySvg2Png.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"applySvg2Png.js","sourceRoot":"","sources":["../src/applySvg2Png.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"applySvg2Png.js","sourceRoot":"","sources":["../src/applySvg2Png.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,WAAW,OAAe,EAAE,OAAe,EAAE,IAAY,CAAC;IACtE,oBAAoB;IACpB,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;IACtC,MAAM,UAAU,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAEpD,2CAA2C;IAC3C,MAAM,YAAY,GAAG,mCAAmC,CAAC;IACzD,MAAM,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAEnD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,oBAAoB,IAAI,4BAA4B,CAAC,CAAC;QACpE,OAAO;IACT,CAAC;IAED,gDAAgD;IAChD,MAAM,CAAC,EAAE,AAAD,EAAG,AAAD,EAAG,SAAS,EAAE,UAAU,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAE/D,iEAAiE;IACjE,KAAK,CAAC,OAAO,CAAC;SACX,MAAM,CAAC,CAAC,GAAG,SAAS,EAAE,CAAC,GAAG,UAAU,CAAC;SACrC,GAAG,EAAE;SACL,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,GAAG,EAAE;QACT,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,8BAA8B,CAAC,CAAC;IACvE,CAAC,CAAC;SACD,KAAK,CAAC,KAAK,CAAC,EAAE;QACb,OAAO,CAAC,KAAK,CAAC,oBAAoB,IAAI,UAAU,EAAE,KAAK,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;AACP,CAAC"}
|
package/lib/applyDiffSvg.d.ts
CHANGED
|
@@ -6,6 +6,6 @@
|
|
|
6
6
|
* @returns - The diff image buffer and the number of different pixels.
|
|
7
7
|
*/
|
|
8
8
|
export default function (pathA: string, pathB: string, diffFilePath: string): Promise<{
|
|
9
|
-
diffPngBuffer:
|
|
9
|
+
diffPngBuffer: Buffer<ArrayBufferLike>;
|
|
10
10
|
numDiffPixels: number;
|
|
11
11
|
} | void>;
|
package/lib/applyDiffSvg.js
CHANGED
|
@@ -50,14 +50,10 @@ exports.default = default_1;
|
|
|
50
50
|
* @requires path - Path module
|
|
51
51
|
* @author pipi
|
|
52
52
|
*/
|
|
53
|
-
// @ts-ignore
|
|
54
53
|
var fs_1 = __importDefault(require("fs"));
|
|
55
54
|
var sharp_1 = __importDefault(require("sharp"));
|
|
56
|
-
// @ts-ignore
|
|
57
55
|
var pngjs_1 = __importDefault(require("pngjs"));
|
|
58
|
-
// @ts-ignore
|
|
59
56
|
var path_1 = __importDefault(require("path"));
|
|
60
|
-
// @ts-ignore
|
|
61
57
|
var pixelmatch_1 = __importDefault(require("pixelmatch"));
|
|
62
58
|
var PNG = pngjs_1.default.PNG;
|
|
63
59
|
/**
|
|
@@ -108,7 +104,12 @@ function default_1(pathA, pathB, diffFilePath) {
|
|
|
108
104
|
console.log("\u001B[33mFile name: ".concat(diffFileName, " Number of different pixels: ").concat(numDiffPixels, "\u001B[0m"));
|
|
109
105
|
}
|
|
110
106
|
}
|
|
111
|
-
return [2 /*return*/, {
|
|
107
|
+
return [2 /*return*/, {
|
|
108
|
+
// The diff image buffer
|
|
109
|
+
diffPngBuffer: diffPngBuffer,
|
|
110
|
+
// The number of different pixels
|
|
111
|
+
numDiffPixels: numDiffPixels
|
|
112
|
+
}];
|
|
112
113
|
}
|
|
113
114
|
});
|
|
114
115
|
});
|
package/lib/applyDiffSvg.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"applyDiffSvg.js","sourceRoot":"","sources":["../src/applyDiffSvg.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"applyDiffSvg.js","sourceRoot":"","sources":["../src/applyDiffSvg.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCA,4BA0CC;AA5ED;;;;;;;;;GASG;AACH,0CAAoB;AACpB,gDAA0B;AAC1B,gDAA0B;AAC1B,8CAAwB;AACxB,0DAAoC;AAEpC,IAAM,GAAG,GAAG,eAAK,CAAC,GAAG,CAAC;AAEtB;;;;GAIG;AACH,SAAS,WAAW,CAAC,QAAgB;IACnC,OAAO,cAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;AACvC,CAAC;AAED;;;;;;GAMG;AACH,mBAA+B,KAAa,EAAE,KAAa,EAAE,YAAoB;;;;;wBAElE,qBAAM,IAAA,eAAK,EAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,EAAA;;oBAApC,IAAI,GAAG,SAA6B;oBAC7B,qBAAM,IAAA,eAAK,EAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,EAAA;;oBAApC,IAAI,GAAG,SAA6B;oBAGpC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC3B,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACzB,KAAK,GAAa,IAAI,MAAjB,EAAE,MAAM,GAAK,IAAI,OAAT,CAAU;oBAGzB,IAAI,GAAG,IAAI,GAAG,CAAC,EAAE,KAAK,OAAA,EAAE,MAAM,QAAA,EAAE,CAAC,CAAC;oBAGlC,aAAa,GAAG,IAAA,oBAAU,EAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;oBAG/F,aAAa,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAE3C,uDAAuD;oBACvD,IAAI,YAAY,EAAE,CAAC;wBACX,YAAY,GAAG,cAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;wBACjD,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,CAAC;4BAC/B,OAAO,CAAC,KAAK,CAAC,2BAAoB,YAAY,8BAA2B,CAAC,CAAC;4BAC3E,sBAAO;wBACT,CAAC;wBACD,YAAE,CAAC,aAAa,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;wBAE9C,iBAAiB;wBACjB,IAAI,aAAa,KAAK,CAAC,EAAE,CAAC;4BACxB,OAAO,CAAC,GAAG,CAAC,+BAAsB,YAAY,0CAAgC,aAAa,cAAS,CAAC,CAAC;wBACxG,CAAC;6BAAM,CAAC;4BACN,OAAO,CAAC,GAAG,CAAC,+BAAsB,YAAY,0CAAgC,aAAa,cAAS,CAAC,CAAC;wBACxG,CAAC;oBACH,CAAC;oBAED,sBAAO;4BACL,wBAAwB;4BACxB,aAAa,eAAA;4BACb,iCAAiC;4BACjC,aAAa,eAAA;yBACd,EAAC;;;;CACH"}
|
|
@@ -1,10 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @file applyRemoveNanCoordinates.js
|
|
3
|
-
* @description This module provides a function to parse and normalize the 'd' attribute of all path elements in an SVG content.
|
|
4
|
-
* @requires jsdom - JavaScript DOM library
|
|
5
|
-
* @module applyRemoveNanCoordinates
|
|
6
|
-
* @author pipi
|
|
7
|
-
*/
|
|
8
1
|
/**
|
|
9
2
|
* Parses and normalizes the 'd' attribute of all path elements in an SVG content.
|
|
10
3
|
* @param {*} svgContent
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.default = default_1;
|
|
2
4
|
/**
|
|
3
5
|
* @file applyRemoveNanCoordinates.js
|
|
4
6
|
* @description This module provides a function to parse and normalize the 'd' attribute of all path elements in an SVG content.
|
|
@@ -6,9 +8,6 @@
|
|
|
6
8
|
* @module applyRemoveNanCoordinates
|
|
7
9
|
* @author pipi
|
|
8
10
|
*/
|
|
9
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
-
exports.default = default_1;
|
|
11
|
-
// @ts-ignore
|
|
12
11
|
var jsdom_1 = require("jsdom");
|
|
13
12
|
/**
|
|
14
13
|
* Parses and normalizes the 'd' attribute of all path elements in an SVG content.
|
|
@@ -20,17 +19,35 @@ function default_1(svgContent) {
|
|
|
20
19
|
var dom = new jsdom_1.JSDOM(svgContent, {
|
|
21
20
|
contentType: 'image/svg+xml' // Set content type to SVG
|
|
22
21
|
});
|
|
22
|
+
// Get the document and SVG element
|
|
23
23
|
var document = dom.window.document;
|
|
24
|
+
// Get the SVG element
|
|
24
25
|
var svgElement = document.querySelector('svg');
|
|
26
|
+
// Check if an SVG element was found
|
|
27
|
+
if (!svgElement) {
|
|
28
|
+
throw new Error('No SVG element found in the provided content.');
|
|
29
|
+
}
|
|
25
30
|
var paths = svgElement.querySelectorAll('path');
|
|
26
31
|
// Iterate over each path element
|
|
27
32
|
Array.from(paths).forEach(function (path) {
|
|
28
33
|
var d = path.getAttribute('d'); // Get the 'd' attribute
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
34
|
+
if (d === null) {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
// Split the 'd' attribute into commands and parameters
|
|
38
|
+
var commands = d
|
|
39
|
+
// Remove 'nan' and '-nan' values
|
|
40
|
+
.replace(/nan|-nan/g, ' ')
|
|
41
|
+
// Split the 'd' attribute into commands and parameters
|
|
42
|
+
.split(/(?=[MmLlHhVvCcSsQqTtAaZz])/).map(function (command) {
|
|
43
|
+
// Split each command into type and parameters
|
|
44
|
+
var type = command[0];
|
|
45
|
+
// Split parameters by spaces or commas, filter out empty values, and convert to numbers
|
|
46
|
+
var params = command.slice(1).trim().split(/[\s,]+/).filter(Number);
|
|
32
47
|
return { type: type, params: params };
|
|
33
|
-
})
|
|
48
|
+
})
|
|
49
|
+
// Filter out commands with no parameters
|
|
50
|
+
.filter(function (command) { return (command.type === 'Z' || command.params.length > 0); });
|
|
34
51
|
// Reconstruct the 'd' attribute
|
|
35
52
|
var modifiedD = commands.map(function (command) {
|
|
36
53
|
return command.type + command.params.join(' ');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"applyRemoveNanCoordinates.js","sourceRoot":"","sources":["../src/applyRemoveNanCoordinates.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"applyRemoveNanCoordinates.js","sourceRoot":"","sources":["../src/applyRemoveNanCoordinates.ts"],"names":[],"mappings":";;AAcA,4BA8CC;AA5DD;;;;;;GAMG;AACH,+BAA8B;AAE9B;;;;GAIG;AACH,mBAAyB,UAAkB;IACzC,oCAAoC;IACpC,IAAM,GAAG,GAAG,IAAI,aAAK,CAAC,UAAU,EAAE;QAChC,WAAW,EAAE,eAAe,CAAC,0BAA0B;KACxD,CAAC,CAAC;IACH,mCAAmC;IACnC,IAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;IACrC,sBAAsB;IACtB,IAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAEjD,oCAAoC;IACpC,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACnE,CAAC;IAED,IAAM,KAAK,GAAG,UAAU,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAClD,iCAAiC;IACjC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,UAAC,IAAI;QAC7B,IAAM,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,wBAAwB;QAC1D,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;YACf,OAAO;QACT,CAAC;QACD,uDAAuD;QACvD,IAAM,QAAQ,GAAG,CAAC;YAChB,iCAAiC;aAChC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC;YAC1B,uDAAuD;aACtD,KAAK,CAAC,4BAA4B,CAAC,CAAC,GAAG,CAAC,UAAC,OAAO;YAC/C,8CAA8C;YAC9C,IAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YACxB,wFAAwF;YACxF,IAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACtE,OAAO,EAAE,IAAI,MAAA,EAAE,MAAM,QAAA,EAAE,CAAC;QAC1B,CAAC,CAAC;YACF,yCAAyC;aACxC,MAAM,CAAC,UAAC,OAAO,IAAK,OAAA,CAAC,OAAO,CAAC,IAAI,KAAK,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,EAAnD,CAAmD,CAAC,CAAC;QAC5E,gCAAgC;QAChC,IAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,UAAC,OAAO;YACrC,OAAO,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACZ,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,iCAAiC;IACtE,CAAC,CAAC,CAAC;IAEH,0BAA0B;IAC1B,IAAM,aAAa,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;IAClD,OAAO,aAAa,CAAC;AACvB,CAAC"}
|
package/lib/applySvg2Png.js
CHANGED
|
@@ -12,9 +12,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
12
12
|
};
|
|
13
13
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
14
|
exports.default = default_1;
|
|
15
|
-
var sharp_1 = __importDefault(require("sharp"));
|
|
16
|
-
// @ts-ignore
|
|
17
15
|
var fs_1 = __importDefault(require("fs"));
|
|
16
|
+
var sharp_1 = __importDefault(require("sharp"));
|
|
18
17
|
/**
|
|
19
18
|
* Converts an SVG file to PNG format.
|
|
20
19
|
* @param {string} svgPath - The path to read the SVG file.
|
package/lib/applySvg2Png.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"applySvg2Png.js","sourceRoot":"","sources":["../src/applySvg2Png.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;;;
|
|
1
|
+
{"version":3,"file":"applySvg2Png.js","sourceRoot":"","sources":["../src/applySvg2Png.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;;;AAYH,4BA4BC;AAtCD,0CAAoB;AACpB,gDAA0B;AAE1B;;;;;;GAMG;AACH,mBAAyB,OAAe,EAAE,OAAe,EAAE,CAAa;IAAb,kBAAA,EAAA,KAAa;IACtE,oBAAoB;IACpB,IAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;IACtC,IAAM,UAAU,GAAG,YAAE,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAEpD,2CAA2C;IAC3C,IAAM,YAAY,GAAG,mCAAmC,CAAC;IACzD,IAAM,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAEnD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,2BAAoB,IAAI,+BAA4B,CAAC,CAAC;QACpE,OAAO;IACT,CAAC;IAED,gDAAgD;IAC1C,IAAA,KAAgC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,EAAjD,SAAS,QAAA,EAAE,UAAU,QAA4B,CAAC;IAE/D,iEAAiE;IACjE,IAAA,eAAK,EAAC,OAAO,CAAC;SACX,MAAM,CAAC,CAAC,GAAG,SAAS,EAAE,CAAC,GAAG,UAAU,CAAC;SACrC,GAAG,EAAE;SACL,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC;QACJ,OAAO,CAAC,GAAG,CAAC,8BAAqB,IAAI,mCAA8B,CAAC,CAAC;IACvE,CAAC,CAAC;SACD,KAAK,CAAC,UAAA,KAAK;QACV,OAAO,CAAC,KAAK,CAAC,2BAAoB,IAAI,aAAU,EAAE,KAAK,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;AACP,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "svg-toolbox",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.2",
|
|
4
4
|
"description": "This library provides some SVG-related tools",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"module": "es/index.js",
|
|
@@ -29,6 +29,10 @@
|
|
|
29
29
|
"sharp": "^0.33.5"
|
|
30
30
|
},
|
|
31
31
|
"devDependencies": {
|
|
32
|
+
"@types/jsdom": "^21.1.7",
|
|
33
|
+
"@types/node": "^22.10.7",
|
|
34
|
+
"@types/pixelmatch": "^5.2.6",
|
|
35
|
+
"@types/pngjs": "^6.0.5",
|
|
32
36
|
"typescript": "^5.7.3"
|
|
33
37
|
}
|
|
34
|
-
}
|
|
38
|
+
}
|