@tsparticles/shape-image 3.0.3 → 3.2.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/21.min.js +2 -0
- package/21.min.js.LICENSE.txt +1 -0
- package/618.min.js +2 -0
- package/618.min.js.LICENSE.txt +1 -0
- package/623.min.js +2 -0
- package/623.min.js.LICENSE.txt +1 -0
- package/browser/GifUtils/ByteStream.js +13 -9
- package/browser/GifUtils/Utils.js +113 -10
- package/browser/ImageDrawer.js +44 -109
- package/browser/ImagePreloader.js +3 -2
- package/browser/Utils.js +6 -23
- package/browser/index.js +12 -5
- package/cjs/GifUtils/ByteStream.js +13 -9
- package/cjs/GifUtils/Utils.js +139 -11
- package/cjs/ImageDrawer.js +67 -109
- package/cjs/ImagePreloader.js +3 -2
- package/cjs/Utils.js +7 -25
- package/cjs/index.js +36 -6
- package/dist_browser_GifUtils_Utils_js.js +50 -0
- package/dist_browser_ImageDrawer_js.js +30 -0
- package/dist_browser_ImagePreloader_js.js +40 -0
- package/esm/GifUtils/ByteStream.js +13 -9
- package/esm/GifUtils/Utils.js +113 -10
- package/esm/ImageDrawer.js +44 -109
- package/esm/ImagePreloader.js +3 -2
- package/esm/Utils.js +6 -23
- package/esm/index.js +12 -5
- package/package.json +2 -2
- package/report.html +3 -3
- package/tsparticles.shape.image.js +251 -862
- package/tsparticles.shape.image.min.js +1 -1
- package/tsparticles.shape.image.min.js.LICENSE.txt +1 -1
- package/types/GifUtils/Utils.d.ts +4 -0
- package/types/ImageDrawer.d.ts +3 -3
- package/types/ImagePreloader.d.ts +1 -1
- package/types/Utils.d.ts +0 -1
- package/umd/GifUtils/ByteStream.js +13 -9
- package/umd/GifUtils/Utils.js +140 -11
- package/umd/ImageDrawer.js +69 -110
- package/umd/ImagePreloader.js +3 -2
- package/umd/Utils.js +8 -26
- package/umd/index.js +38 -7
package/esm/Utils.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { errorPrefix, getLogger, getStyleFromHsl } from "@tsparticles/engine";
|
|
2
|
-
|
|
2
|
+
const stringStart = 0, defaultOpacity = 1;
|
|
3
3
|
const currentColorRegex = /(#(?:[0-9a-f]{2}){2,4}|(#[0-9a-f]{3})|(rgb|hsl)a?\((-?\d+%?[,\s]+){2,3}\s*[\d.]+%?\))|currentcolor/gi;
|
|
4
4
|
function replaceColorSvg(imageShape, color, opacity) {
|
|
5
5
|
const { svgData } = imageShape;
|
|
@@ -11,7 +11,7 @@ function replaceColorSvg(imageShape, color, opacity) {
|
|
|
11
11
|
return svgData.replace(currentColorRegex, () => colorStyle);
|
|
12
12
|
}
|
|
13
13
|
const preFillIndex = svgData.indexOf(">");
|
|
14
|
-
return `${svgData.substring(
|
|
14
|
+
return `${svgData.substring(stringStart, preFillIndex)} fill="${colorStyle}"${svgData.substring(preFillIndex)}`;
|
|
15
15
|
}
|
|
16
16
|
export async function loadImage(image) {
|
|
17
17
|
return new Promise((resolve) => {
|
|
@@ -32,24 +32,6 @@ export async function loadImage(image) {
|
|
|
32
32
|
img.src = image.source;
|
|
33
33
|
});
|
|
34
34
|
}
|
|
35
|
-
export async function loadGifImage(image) {
|
|
36
|
-
if (image.type !== "gif") {
|
|
37
|
-
await loadImage(image);
|
|
38
|
-
return;
|
|
39
|
-
}
|
|
40
|
-
image.loading = true;
|
|
41
|
-
try {
|
|
42
|
-
image.gifData = await decodeGIF(image.source);
|
|
43
|
-
image.gifLoopCount = getGIFLoopAmount(image.gifData) ?? 0;
|
|
44
|
-
if (image.gifLoopCount === 0) {
|
|
45
|
-
image.gifLoopCount = Infinity;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
catch {
|
|
49
|
-
image.error = true;
|
|
50
|
-
}
|
|
51
|
-
image.loading = false;
|
|
52
|
-
}
|
|
53
35
|
export async function downloadSvgImage(image) {
|
|
54
36
|
if (image.type !== "svg") {
|
|
55
37
|
await loadImage(image);
|
|
@@ -67,7 +49,7 @@ export async function downloadSvgImage(image) {
|
|
|
67
49
|
image.loading = false;
|
|
68
50
|
}
|
|
69
51
|
export function replaceImageColor(image, imageData, color, particle) {
|
|
70
|
-
const svgColoredData = replaceColorSvg(image, color, particle.opacity?.value ??
|
|
52
|
+
const svgColoredData = replaceColorSvg(image, color, particle.opacity?.value ?? defaultOpacity), imageRes = {
|
|
71
53
|
color,
|
|
72
54
|
gif: imageData.gif,
|
|
73
55
|
data: {
|
|
@@ -87,7 +69,7 @@ export function replaceImageColor(image, imageData, color, particle) {
|
|
|
87
69
|
resolve(imageRes);
|
|
88
70
|
domUrl.revokeObjectURL(url);
|
|
89
71
|
});
|
|
90
|
-
|
|
72
|
+
const errorHandler = async () => {
|
|
91
73
|
domUrl.revokeObjectURL(url);
|
|
92
74
|
const img2 = {
|
|
93
75
|
...image,
|
|
@@ -98,7 +80,8 @@ export function replaceImageColor(image, imageData, color, particle) {
|
|
|
98
80
|
imageRes.loaded = true;
|
|
99
81
|
imageRes.element = img2.element;
|
|
100
82
|
resolve(imageRes);
|
|
101
|
-
}
|
|
83
|
+
};
|
|
84
|
+
img.addEventListener("error", () => void errorHandler());
|
|
102
85
|
img.src = url;
|
|
103
86
|
});
|
|
104
87
|
}
|
package/esm/index.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { downloadSvgImage,
|
|
2
|
-
import { ImageDrawer } from "./ImageDrawer.js";
|
|
3
|
-
import { ImagePreloaderPlugin } from "./ImagePreloader.js";
|
|
1
|
+
import { downloadSvgImage, loadImage } from "./Utils.js";
|
|
4
2
|
import { errorPrefix } from "@tsparticles/engine";
|
|
3
|
+
const extLength = 3;
|
|
5
4
|
function addLoadImageToEngine(engine) {
|
|
6
5
|
if (engine.loadImage) {
|
|
7
6
|
return;
|
|
@@ -21,14 +20,21 @@ function addLoadImageToEngine(engine) {
|
|
|
21
20
|
gif: data.gif ?? false,
|
|
22
21
|
name: data.name ?? data.src,
|
|
23
22
|
source: data.src,
|
|
24
|
-
type: data.src.substring(data.src.length -
|
|
23
|
+
type: data.src.substring(data.src.length - extLength),
|
|
25
24
|
error: false,
|
|
26
25
|
loading: true,
|
|
27
26
|
replaceColor: data.replaceColor,
|
|
28
27
|
ratio: data.width && data.height ? data.width / data.height : undefined,
|
|
29
28
|
};
|
|
30
29
|
engine.images.push(image);
|
|
31
|
-
|
|
30
|
+
let imageFunc;
|
|
31
|
+
if (data.gif) {
|
|
32
|
+
const { loadGifImage } = await import("./GifUtils/Utils.js");
|
|
33
|
+
imageFunc = loadGifImage;
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
imageFunc = data.replaceColor ? downloadSvgImage : loadImage;
|
|
37
|
+
}
|
|
32
38
|
await imageFunc(image);
|
|
33
39
|
}
|
|
34
40
|
catch {
|
|
@@ -38,6 +44,7 @@ function addLoadImageToEngine(engine) {
|
|
|
38
44
|
}
|
|
39
45
|
export async function loadImageShape(engine, refresh = true) {
|
|
40
46
|
addLoadImageToEngine(engine);
|
|
47
|
+
const { ImagePreloaderPlugin } = await import("./ImagePreloader.js"), { ImageDrawer } = await import("./ImageDrawer.js");
|
|
41
48
|
const preloader = new ImagePreloaderPlugin(engine);
|
|
42
49
|
await engine.addPlugin(preloader, refresh);
|
|
43
50
|
await engine.addShape(["image", "images"], new ImageDrawer(engine), refresh);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tsparticles/shape-image",
|
|
3
|
-
"version": "3.0
|
|
3
|
+
"version": "3.2.0",
|
|
4
4
|
"description": "tsParticles image shape",
|
|
5
5
|
"homepage": "https://particles.js.org",
|
|
6
6
|
"repository": {
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
"./package.json": "./package.json"
|
|
60
60
|
},
|
|
61
61
|
"dependencies": {
|
|
62
|
-
"@tsparticles/engine": "^3.0
|
|
62
|
+
"@tsparticles/engine": "^3.2.0"
|
|
63
63
|
},
|
|
64
64
|
"publishConfig": {
|
|
65
65
|
"access": "public"
|
package/report.html
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
<head>
|
|
4
4
|
<meta charset="UTF-8"/>
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
|
6
|
-
<title>@tsparticles/shape-image [
|
|
6
|
+
<title>@tsparticles/shape-image [31 Jan 2024 at 02:09]</title>
|
|
7
7
|
<link rel="shortcut icon" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAABrVBMVEUAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+O1foceMD///+J0/qK1Pr7/v8Xdr/9///W8P4UdL7L7P0Scr2r4Pyj3vwad8D5/f/2/f+55f3E6f34+/2H0/ojfMKpzOd0rNgQcb3F3O/j9f7c8v6g3Pz0/P/w+v/q+P7n9v6T1/uQ1vuE0vqLut/y+v+Z2fvt+f+15Pzv9fuc2/vR7v2V2Pvd6/bg9P7I6/285/2y4/yp3/zp8vk8i8kqgMT7/P31+fyv4vxGkcz6/P6/6P3j7vfS5PNnpNUxhcbO7f7F6v3O4vHK3/DA2u631Ouy0eqXweKJud5wqthfoNMMbLvY8f73+v2dxeR8sNtTmdDx9/zX6PSjyeaCtd1YnNGX2PuQveCGt95Nls42h8dLlM3F4vBtAAAAM3RSTlMAAyOx0/sKBvik8opWGBMOAe3l1snDm2E9LSb06eHcu5JpHbarfHZCN9CBb08zzkdNS0kYaptYAAAFV0lEQVRYw92X51/aYBDHHS2O2qqttVbrqNq9m+TJIAYIShBkWwqIiCgoWvfeq7Z2/s29hyQNyUcR7LveGwVyXy6XH8/9rqxglLfUPLxVduUor3h0rfp2TYvpivk37929TkG037hffoX0+peVtZQc1589rigVUdXS/ABSAyEmGIO/1XfvldSK8vs3OqB6u3m0nxmIrvgB0dj7rr7Y9IbuF68hnfFaiHA/sxqm0wciIG43P60qKv9WXWc1RXGh/mFESFABTSBi0sNAKzqet17eCtOb3kZIDwxEEU0oAIJGYxNBDhBND29e0rtXXbcpuPmED9IhEAAQ/AXEaF8EPmnrrKsv0LvWR3fg5sWDNAFZOgAgaKvZDogHNU9MFwnnYROkc56RD5CjAbQX9Ow4g7upCsvYu55aSI/Nj0H1akgKQEUM94dwK65hYRmFU9MIcH/fqJYOZYcnuJSU/waKDgTOEVaVKhwrTRP5XzgSpAITYzom7UvkhFX5VutmxeNnWDjjswTKTyfgluNDGbUpWissXhF3s7mlSml+czWkg3D0l1nNjGNjz3myOQOa1KM/jOS6ebdbAVTCi4gljHSFrviza7tOgRWcS0MOUX9zdNgag5w7rRqA44Lzw0hr1WqES36dFliSJFlh2rXIae3FFcDDgKdxrUIDePr8jGcSClV1u7A9xeN0ModY/pHMxmR1EzRh8TJiwqsHmKW0l4FCEZI+jHio+JdPPE9qwQtTRxku2D8sIeRL2LnxWSllANCQGOIiqVHAz2ye2JR0DcH+HoxDkaADLjgxjKQ+AwCX/g0+DNgdG0ukYCONAe+dbc2IAc6fwt1ARoDSezNHxV2Cmzwv3O6lDMV55edBGwGK9n1+x2F8EDfAGCxug8MhpsMEcTEAWf3rx2vZhe/LAmtIn/6apE6PN0ULKgywD9mmdxbmFl3OvD5AS5fW5zLbv/YHmcsBTjf/afDz3MaZTVCfAP9z6/Bw6ycv8EUBWJIn9zYcoAWWlW9+OzO3vkTy8H+RANLmdrpOuYWdZYEXpo+TlCJrW5EARb7fF+bWdqf3hhyZI1nWJQHgznErZhbjoEsWqi8dQNoE294aldzFurwSABL2XXMf9+H1VQGke9exw5P/AnA5Pv5ngMul7LOvO922iwACu8WkCwLCafvM4CeWPxfA8lNHcWZSoi8EwMAIciKX2Z4SWCMAa3snCZ/G4EA8D6CMLNFsGQhkkz/gQNEBbPCbWsxGUpYVu3z8IyNAknwJkfPMEhLyrdi5RTyUVACkw4GSFRNWJNEW+fgPGwHD8/JxnRuLabN4CGNRkAE23na2+VmEAUmrYymSGjMAYqH84YUIyzgzs3XC7gNgH36Vcc4zKY9o9fgPBXUAiHHwVboBHGLiX6Zcjp1f2wu4tvzZKo0ecPnDtQYDQvJXaBeNzce45Fp28ZQLrEZVuFqgBwOalArKXnW1UzlnSusQKJqKYNuz4tOnI6sZG4zanpemv+7ySU2jbA9h6uhcgpfy6G2PahirDZ6zvq6zDduMVFTKvzw8wgyEdelwY9in3XkEPs3osJuwRQ4qTkfzifndg9Gfc4pdsu82+tTnHZTBa2EAMrqr2t43pguc8tNm7JQVQ2S0ukj2d22dhXYP0/veWtwKrCkNoNimAN5+Xr/oLrxswKbVJjteWrX7eR63o4j9q0GxnaBdWgGA5VStpanIjQmEhV0/nVt5VOFUvix6awJhPcAaTEShgrG+iGyvb5a0Ndb1YGHFPEwoqAinoaykaID1o1pdPNu7XsnCKQ3R+hwWIIhGvORcJUBYXe3Xa3vq/mF/N9V13ugufMkfXn+KHsRD0B8AAAAASUVORK5CYII=" type="image/x-icon" />
|
|
8
8
|
|
|
9
9
|
<script>
|
|
@@ -31,8 +31,8 @@
|
|
|
31
31
|
<body>
|
|
32
32
|
<div id="app"></div>
|
|
33
33
|
<script>
|
|
34
|
-
window.chartData = [
|
|
35
|
-
window.entrypoints = ["tsparticles.shape.image
|
|
34
|
+
window.chartData = [];
|
|
35
|
+
window.entrypoints = ["tsparticles.shape.image.min"];
|
|
36
36
|
window.defaultSizes = "parsed";
|
|
37
37
|
</script>
|
|
38
38
|
</body>
|