@design-edito/tools 0.1.65 → 0.1.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.
- package/agnostic/arrays/index.js +7 -7
- package/agnostic/arrays/random-pick/index.js +4 -4
- package/agnostic/colors/index.js +8 -8
- package/agnostic/css/index.js +13 -13
- package/agnostic/css/styles-set/index.js +4 -4
- package/agnostic/html/hyper-json/cast/index.js +2 -2
- package/agnostic/html/hyper-json/index.js +3 -3
- package/agnostic/html/hyper-json/smart-tags/coalesced/add/index.js +2 -2
- package/agnostic/html/hyper-json/smart-tags/coalesced/addclass/index.js +2 -2
- package/agnostic/html/hyper-json/smart-tags/coalesced/and/index.js +2 -2
- package/agnostic/html/hyper-json/smart-tags/coalesced/append/index.js +2 -2
- package/agnostic/html/hyper-json/smart-tags/coalesced/at/index.js +2 -2
- package/agnostic/html/hyper-json/smart-tags/coalesced/call/index.js +2 -2
- package/agnostic/html/hyper-json/smart-tags/coalesced/clone/index.js +2 -2
- package/agnostic/html/hyper-json/smart-tags/coalesced/deleteproperties/index.js +2 -2
- package/agnostic/html/hyper-json/smart-tags/coalesced/equals/index.js +2 -2
- package/agnostic/html/hyper-json/smart-tags/coalesced/getattribute/index.js +2 -2
- package/agnostic/html/hyper-json/smart-tags/coalesced/getproperties/index.js +2 -2
- package/agnostic/html/hyper-json/smart-tags/coalesced/getproperty/index.js +2 -2
- package/agnostic/html/hyper-json/smart-tags/coalesced/if/index.js +2 -2
- package/agnostic/html/hyper-json/smart-tags/coalesced/initialize/index.js +2 -2
- package/agnostic/html/hyper-json/smart-tags/coalesced/join/index.js +2 -2
- package/agnostic/html/hyper-json/smart-tags/coalesced/length/index.js +2 -2
- package/agnostic/html/hyper-json/smart-tags/coalesced/map/index.js +2 -2
- package/agnostic/html/hyper-json/smart-tags/coalesced/negate/index.js +2 -2
- package/agnostic/html/hyper-json/smart-tags/coalesced/notrailing/index.js +2 -2
- package/agnostic/html/hyper-json/smart-tags/coalesced/or/index.js +2 -2
- package/agnostic/html/hyper-json/smart-tags/coalesced/pickrandom/index.js +2 -2
- package/agnostic/html/hyper-json/smart-tags/coalesced/populate/index.js +2 -2
- package/agnostic/html/hyper-json/smart-tags/coalesced/print/index.js +2 -2
- package/agnostic/html/hyper-json/smart-tags/coalesced/push/index.js +2 -2
- package/agnostic/html/hyper-json/smart-tags/coalesced/pusheach/index.js +2 -2
- package/agnostic/html/hyper-json/smart-tags/coalesced/recordtoarray/index.js +2 -2
- package/agnostic/html/hyper-json/smart-tags/coalesced/removeattribute/index.js +2 -2
- package/agnostic/html/hyper-json/smart-tags/coalesced/removeclass/index.js +2 -2
- package/agnostic/html/hyper-json/smart-tags/coalesced/renameproperty/index.js +2 -2
- package/agnostic/html/hyper-json/smart-tags/coalesced/replace/index.js +2 -2
- package/agnostic/html/hyper-json/smart-tags/coalesced/select/index.js +2 -2
- package/agnostic/html/hyper-json/smart-tags/coalesced/set/index.js +2 -2
- package/agnostic/html/hyper-json/smart-tags/coalesced/setattribute/index.js +2 -2
- package/agnostic/html/hyper-json/smart-tags/coalesced/setproperty/index.js +2 -2
- package/agnostic/html/hyper-json/smart-tags/coalesced/sorton/index.js +2 -2
- package/agnostic/html/hyper-json/smart-tags/coalesced/split/index.js +2 -2
- package/agnostic/html/hyper-json/smart-tags/coalesced/spread/index.js +2 -2
- package/agnostic/html/hyper-json/smart-tags/coalesced/toarray/index.js +2 -2
- package/agnostic/html/hyper-json/smart-tags/coalesced/toboolean/index.js +2 -2
- package/agnostic/html/hyper-json/smart-tags/coalesced/toelement/index.js +2 -2
- package/agnostic/html/hyper-json/smart-tags/coalesced/toggleclass/index.js +2 -2
- package/agnostic/html/hyper-json/smart-tags/coalesced/tonodelist/index.js +2 -2
- package/agnostic/html/hyper-json/smart-tags/coalesced/tonull/index.js +2 -2
- package/agnostic/html/hyper-json/smart-tags/coalesced/tonumber/index.js +2 -2
- package/agnostic/html/hyper-json/smart-tags/coalesced/torecord/index.js +2 -2
- package/agnostic/html/hyper-json/smart-tags/coalesced/toref/index.js +2 -2
- package/agnostic/html/hyper-json/smart-tags/coalesced/tostring/index.js +2 -2
- package/agnostic/html/hyper-json/smart-tags/coalesced/totext/index.js +2 -2
- package/agnostic/html/hyper-json/smart-tags/coalesced/transformselected/index.js +2 -2
- package/agnostic/html/hyper-json/smart-tags/coalesced/trim/index.js +2 -2
- package/agnostic/html/hyper-json/smart-tags/isolated/boolean/index.js +2 -2
- package/agnostic/html/hyper-json/smart-tags/isolated/element/index.js +2 -2
- package/agnostic/html/hyper-json/smart-tags/isolated/get/index.js +2 -2
- package/agnostic/html/hyper-json/smart-tags/isolated/global/index.js +2 -2
- package/agnostic/html/hyper-json/smart-tags/isolated/guess/index.js +2 -2
- package/agnostic/html/hyper-json/smart-tags/isolated/nodelist/index.js +2 -2
- package/agnostic/html/hyper-json/smart-tags/isolated/number/index.js +2 -2
- package/agnostic/html/hyper-json/smart-tags/isolated/record/index.js +2 -2
- package/agnostic/html/hyper-json/smart-tags/isolated/ref/index.js +2 -2
- package/agnostic/html/hyper-json/smart-tags/isolated/string/index.js +2 -2
- package/agnostic/html/hyper-json/smart-tags/isolated/text/index.js +2 -2
- package/agnostic/html/hyper-json/tree/index.js +2 -2
- package/agnostic/html/hyper-json/utils/index.js +2 -2
- package/agnostic/html/index.js +14 -14
- package/agnostic/html/sanitize/index.js +4 -4
- package/agnostic/html/selector-to-element/index.js +4 -4
- package/agnostic/html/string-to-nodes/index.js +5 -5
- package/agnostic/misc/crossenv/index.js +2 -2
- package/agnostic/misc/index.js +27 -27
- package/agnostic/misc/logs/index.js +2 -2
- package/agnostic/misc/lorem-ipsum/index.js +11 -11
- package/agnostic/numbers/index.js +7 -7
- package/agnostic/objects/index.js +6 -6
- package/agnostic/optim/index.js +3 -3
- package/agnostic/strings/index.js +6 -6
- package/agnostic/time/index.js +3 -3
- package/chunks/chunk-236C4IHT.js +98 -0
- package/chunks/chunk-2HU2AWWJ.js +35 -0
- package/chunks/chunk-2KT7AKRW.js +17 -0
- package/chunks/chunk-3CZNTEF7.js +151 -0
- package/chunks/chunk-3UM5CZA5.js +18 -0
- package/chunks/chunk-4ARTWFW5.js +164 -0
- package/chunks/chunk-4PJWXOLA.js +16 -0
- package/chunks/chunk-4QHGUANF.js +19 -0
- package/chunks/chunk-65YZMVWZ.js +35 -0
- package/chunks/chunk-662SOZWA.js +19 -0
- package/chunks/chunk-6EIF24H5.js +35 -0
- package/chunks/chunk-6IZ5HUJJ.js +21 -0
- package/chunks/chunk-6Z6GDMOR.js +28 -0
- package/chunks/chunk-72NLUT3X.js +29 -0
- package/chunks/chunk-72U4TDEB.js +127 -0
- package/chunks/chunk-7OK5NZTY.js +18 -0
- package/chunks/chunk-7YW5HL6N.js +168 -0
- package/chunks/chunk-7Z7CKAOH.js +98 -0
- package/chunks/chunk-B4XUXE7E.js +18 -0
- package/chunks/chunk-BGZ5OVVN.js +20 -0
- package/chunks/chunk-BZHH4R64.js +20 -0
- package/chunks/chunk-C3ZKLONL.js +21 -0
- package/chunks/chunk-C4Q4PC53.js +63 -0
- package/chunks/chunk-C7SRAQMW.js +29 -0
- package/chunks/chunk-CHA42BGS.js +48 -0
- package/chunks/chunk-CM6AHRTS.js +16 -0
- package/chunks/chunk-CQEDNACN.js +28 -0
- package/chunks/chunk-D33KC6NN.js +18 -0
- package/chunks/chunk-D47ZPEUU.js +22 -0
- package/chunks/chunk-E3GK7YZ7.js +65 -0
- package/chunks/chunk-E4FJHD5R.js +67 -0
- package/chunks/chunk-E6HDM2M4.js +191 -0
- package/chunks/chunk-FCLAFRIW.js +177 -0
- package/chunks/chunk-FHHXI6WC.js +31 -0
- package/chunks/chunk-FRP47Y6H.js +2456 -0
- package/chunks/chunk-G2M3VECP.js +20 -0
- package/chunks/chunk-G3HAKMUB.js +79 -0
- package/chunks/chunk-GE7DNPF6.js +63 -0
- package/chunks/chunk-GGT2PUZH.js +21 -0
- package/chunks/chunk-GOTTGEXI.js +23 -0
- package/chunks/chunk-HALUZA2X.js +16 -0
- package/chunks/chunk-HFIE4SBE.js +16 -0
- package/chunks/chunk-IYV3EEYX.js +20 -0
- package/chunks/chunk-J35QFU6O.js +21 -0
- package/chunks/chunk-JQRLQUMJ.js +16 -0
- package/chunks/chunk-JR76DLSV.js +151 -0
- package/chunks/chunk-JX45LILQ.js +164 -0
- package/chunks/chunk-KL6EJPC3.js +35 -0
- package/chunks/chunk-KN23H4CI.js +20 -0
- package/chunks/chunk-LH6Z6NJY.js +191 -0
- package/chunks/chunk-LNSDOGTR.js +63 -0
- package/chunks/chunk-LSOHLSF5.js +32 -0
- package/chunks/chunk-MFK63FMI.js +31 -0
- package/chunks/chunk-MKHTR43Q.js +231 -0
- package/chunks/chunk-MTT7TVR3.js +127 -0
- package/chunks/chunk-MW3KNVTG.js +29 -0
- package/chunks/chunk-MXGGOCLX.js +56 -0
- package/chunks/chunk-NA7PT2KE.js +21 -0
- package/chunks/chunk-NAP2XNYN.js +23 -0
- package/chunks/chunk-NFIEXASV.js +164 -0
- package/chunks/chunk-P2H6PV4O.js +26 -0
- package/chunks/chunk-P5OGBBGM.js +37 -0
- package/chunks/chunk-PENYZ6S7.js +31 -0
- package/chunks/chunk-PSP2DKDH.js +151 -0
- package/chunks/chunk-Q2ZS3QNB.js +151 -0
- package/chunks/chunk-RCWLMVSZ.js +164 -0
- package/chunks/chunk-RDQJSWRC.js +127 -0
- package/chunks/chunk-SAFV7TBT.js +31 -0
- package/chunks/chunk-SJLH36CH.js +26 -0
- package/chunks/chunk-SLCGLOYM.js +37 -0
- package/chunks/chunk-SUWMOLXI.js +191 -0
- package/chunks/chunk-SY65O2JU.js +98 -0
- package/chunks/chunk-T2T5BYTW.js +18 -0
- package/chunks/chunk-T6IC7JVI.js +37 -0
- package/chunks/chunk-TP6V6CBV.js +177 -0
- package/chunks/chunk-U3L3X27Q.js +177 -0
- package/chunks/chunk-U5WEI3QA.js +18 -0
- package/chunks/chunk-U7R6TPHR.js +15 -0
- package/chunks/chunk-UERX6XGZ.js +21 -0
- package/chunks/chunk-UFKH5WD2.js +21 -0
- package/chunks/chunk-UNHNZAVP.js +18 -0
- package/chunks/chunk-UODICVLG.js +173 -0
- package/chunks/chunk-UUU6DWRQ.js +79 -0
- package/chunks/chunk-VDT6ODFV.js +20 -0
- package/chunks/chunk-VHPX7UA3.js +177 -0
- package/chunks/chunk-VQUF2TSY.js +191 -0
- package/chunks/chunk-VR5JHUKK.js +32 -0
- package/chunks/chunk-VSBRIQPH.js +48 -0
- package/chunks/chunk-W6JPRXQ4.js +16 -0
- package/chunks/chunk-WC2LQPQP.js +26 -0
- package/chunks/chunk-WH5V6GK7.js +56 -0
- package/chunks/chunk-WIJBRYJ6.js +20 -0
- package/chunks/chunk-WP7L5ZFP.js +173 -0
- package/chunks/chunk-WR64YJNW.js +20 -0
- package/chunks/chunk-WRRA3BN4.js +31 -0
- package/chunks/chunk-WTILPGGX.js +69 -0
- package/chunks/chunk-X244JGZD.js +69 -0
- package/chunks/chunk-X34YXAEL.js +31 -0
- package/chunks/chunk-X5HMM3LD.js +35 -0
- package/chunks/chunk-X6WCMUOP.js +18 -0
- package/chunks/chunk-XB3ZOIHH.js +2456 -0
- package/chunks/chunk-XJ23DJY4.js +173 -0
- package/chunks/chunk-XQMUFSLU.js +16 -0
- package/chunks/chunk-XTOAQTLP.js +98 -0
- package/chunks/chunk-Y7YEYHRZ.js +69 -0
- package/chunks/chunk-YCSC7QNV.js +30 -0
- package/chunks/chunk-YE67BQQN.js +4072 -0
- package/chunks/chunk-YEYXAV23.js +16 -0
- package/chunks/chunk-YLJBKSLO.js +56 -0
- package/chunks/chunk-YMRGCRQ4.js +48 -0
- package/chunks/chunk-Z2CU55CF.js +20 -0
- package/chunks/chunk-Z4PVE6SR.js +21 -0
- package/chunks/chunk-ZMMNN3QA.js +16 -0
- package/chunks/chunk-ZNPRJEP5.js +28 -0
- package/chunks/chunk-ZQ7ZC7TZ.js +56 -0
- package/chunks/chunk-ZVBMPJLH.js +48 -0
- package/node/@google-cloud/index.js +8 -8
- package/node/@google-cloud/storage/bucket/index.js +4 -4
- package/node/@google-cloud/storage/file/index.js +12 -12
- package/node/@google-cloud/storage/index.js +8 -8
- package/node/cloud-storage/index.js +7 -7
- package/node/cloud-storage/operations/download/index.js +3 -3
- package/node/cloud-storage/operations/index.js +7 -7
- package/node/cloud-storage/operations/upload/index.js +3 -3
- package/node/encryption/index.js +3 -3
- package/node/files/index.js +3 -3
- package/node/images/index.js +32 -32
- package/node/images/prepare/index.js +32 -32
- package/node/images/transform/_utils/color-schema/index.js +2 -2
- package/node/images/transform/_utils/positions/index.js +2 -2
- package/node/images/transform/blur/index.js +2 -2
- package/node/images/transform/brighten/index.js +2 -2
- package/node/images/transform/compose/index.js +4 -4
- package/node/images/transform/extend/index.js +3 -3
- package/node/images/transform/extract/index.js +2 -2
- package/node/images/transform/flatten/index.js +3 -3
- package/node/images/transform/flip/index.js +2 -2
- package/node/images/transform/flop/index.js +2 -2
- package/node/images/transform/frame/backgrounds/create-line-background/index.js +2 -2
- package/node/images/transform/frame/backgrounds/create-tile-background/index.js +2 -2
- package/node/images/transform/frame/index.js +6 -6
- package/node/images/transform/hue-rotate/index.js +2 -2
- package/node/images/transform/index.js +31 -31
- package/node/images/transform/lighten/index.js +2 -2
- package/node/images/transform/lineate-levels/index.js +2 -2
- package/node/images/transform/modulate/index.js +2 -2
- package/node/images/transform/normalize/index.js +2 -2
- package/node/images/transform/operations/_utils/frame/backgrounds/create-line-background/index.js +2 -2
- package/node/images/transform/operations/_utils/frame/backgrounds/create-tile-background/index.js +2 -2
- package/node/images/transform/operations/_utils/frame/create-color-palette/index.js +3 -3
- package/node/images/transform/operations/_utils/frame/index.js +7 -7
- package/node/images/transform/resize/index.js +3 -3
- package/node/images/transform/rotate/index.js +2 -2
- package/node/images/transform/saturate/index.js +2 -2
- package/node/images/transform/scale/index.js +3 -3
- package/package.json +11 -12
@@ -0,0 +1,164 @@
|
|
1
|
+
import {
|
2
|
+
createColorPalette
|
3
|
+
} from "./chunk-XTOAQTLP.js";
|
4
|
+
import {
|
5
|
+
createLineBackground
|
6
|
+
} from "./chunk-GE7DNPF6.js";
|
7
|
+
import {
|
8
|
+
createTileBackground
|
9
|
+
} from "./chunk-MKHTR43Q.js";
|
10
|
+
import {
|
11
|
+
getRelativePxPositionsInWrapperFor
|
12
|
+
} from "./chunk-OCM3RLO6.js";
|
13
|
+
import {
|
14
|
+
clamp
|
15
|
+
} from "./chunk-OSAXBA7G.js";
|
16
|
+
|
17
|
+
// src/node/images/transform/operations/_utils/frame/index.ts
|
18
|
+
import sharp from "sharp";
|
19
|
+
async function frame(imageSharp, params) {
|
20
|
+
const imageMetadata = await imageSharp.metadata();
|
21
|
+
const imageDimensions = {
|
22
|
+
widthPx: imageMetadata.width ?? 0,
|
23
|
+
heightPx: imageMetadata.height ?? 0
|
24
|
+
};
|
25
|
+
const scaledImage = scaleImageToFrame(
|
26
|
+
imageSharp,
|
27
|
+
imageDimensions,
|
28
|
+
params.dimensions,
|
29
|
+
params.imageScale
|
30
|
+
);
|
31
|
+
imageSharp = scaledImage.sharpInstance;
|
32
|
+
imageDimensions.widthPx = scaledImage.widthPx;
|
33
|
+
imageDimensions.heightPx = scaledImage.heightPx;
|
34
|
+
const defaultBackgroundColorCreate = getDefaultBackgroundColor(params.background);
|
35
|
+
const imagePositions = getRelativePxPositionsInWrapperFor(imageDimensions, params.dimensions, params.positions);
|
36
|
+
const backgroundOverlays = await getBackgroundOverlays(
|
37
|
+
{
|
38
|
+
sharp: imageSharp,
|
39
|
+
dimensions: imageDimensions
|
40
|
+
},
|
41
|
+
params.background,
|
42
|
+
params.dimensions,
|
43
|
+
{
|
44
|
+
x: imagePositions.x,
|
45
|
+
y: imagePositions.y,
|
46
|
+
w: imageDimensions.widthPx,
|
47
|
+
h: imageDimensions.heightPx
|
48
|
+
}
|
49
|
+
);
|
50
|
+
const composition = [
|
51
|
+
...backgroundOverlays,
|
52
|
+
{
|
53
|
+
input: await imageSharp.toFormat("png").png({ quality: 100 }).toBuffer(),
|
54
|
+
/* Make sure we work with the best quality of our file */
|
55
|
+
left: imagePositions.x,
|
56
|
+
top: imagePositions.y
|
57
|
+
}
|
58
|
+
];
|
59
|
+
const frameSharpInstance = sharp({
|
60
|
+
create: {
|
61
|
+
background: defaultBackgroundColorCreate,
|
62
|
+
width: params.dimensions.widthPx,
|
63
|
+
height: params.dimensions.heightPx,
|
64
|
+
channels: 4
|
65
|
+
}
|
66
|
+
}).ensureAlpha(0).composite(composition).png({ quality: 100 });
|
67
|
+
return frameSharpInstance;
|
68
|
+
}
|
69
|
+
var scaleImageToFrame = (imageSharp, imageDimensions, frameDimensions, imageScale) => {
|
70
|
+
const scale = {
|
71
|
+
xRatio: 1,
|
72
|
+
yRatio: 1
|
73
|
+
};
|
74
|
+
const frameZoneDimensions = {
|
75
|
+
widthPx: frameDimensions.widthPx,
|
76
|
+
heightPx: frameDimensions.heightPx
|
77
|
+
};
|
78
|
+
if (imageScale) {
|
79
|
+
frameZoneDimensions.widthPx = frameDimensions.widthPx * (imageScale.xRatio || 1);
|
80
|
+
frameZoneDimensions.heightPx = frameDimensions.heightPx * (imageScale.yRatio || 1);
|
81
|
+
}
|
82
|
+
const containedRatiosPercents = getContainedRatios(
|
83
|
+
imageDimensions.widthPx,
|
84
|
+
imageDimensions.heightPx,
|
85
|
+
frameZoneDimensions.widthPx,
|
86
|
+
frameZoneDimensions.heightPx
|
87
|
+
);
|
88
|
+
if (imageScale || !imageScale && imageDimensions.widthPx < frameDimensions.widthPx && imageDimensions.heightPx < frameDimensions.heightPx) {
|
89
|
+
scale.xRatio = containedRatiosPercents.xPercent;
|
90
|
+
scale.yRatio = containedRatiosPercents.yPercent;
|
91
|
+
}
|
92
|
+
if (scale.xRatio !== 1 || scale.yRatio !== 1) {
|
93
|
+
imageDimensions.widthPx = clamp(Math.round(imageDimensions.widthPx * scale.xRatio), 0, frameDimensions.widthPx);
|
94
|
+
imageDimensions.heightPx = clamp(Math.round(imageDimensions.heightPx * scale.yRatio), 0, frameDimensions.heightPx);
|
95
|
+
imageSharp = imageSharp.resize({
|
96
|
+
width: imageDimensions.widthPx,
|
97
|
+
height: imageDimensions.heightPx,
|
98
|
+
fit: sharp.fit.inside,
|
99
|
+
position: "center",
|
100
|
+
fastShrinkOnLoad: false
|
101
|
+
});
|
102
|
+
}
|
103
|
+
return {
|
104
|
+
sharpInstance: imageSharp,
|
105
|
+
widthPx: imageDimensions.widthPx,
|
106
|
+
heightPx: imageDimensions.heightPx
|
107
|
+
};
|
108
|
+
};
|
109
|
+
var getDefaultBackgroundColor = (background) => {
|
110
|
+
if (background && (typeof background === "object" && "r" in background)) {
|
111
|
+
return {
|
112
|
+
r: background.r || 255,
|
113
|
+
g: background.g || 255,
|
114
|
+
b: background.b || 255,
|
115
|
+
alpha: background.alpha || 0
|
116
|
+
};
|
117
|
+
}
|
118
|
+
return { r: 255, g: 255, b: 255, alpha: 0 };
|
119
|
+
};
|
120
|
+
var getBackgroundOverlays = (imageInput, background, dimensions, imageCoordinates) => {
|
121
|
+
const backgroundOverlays = [];
|
122
|
+
return new Promise(async (resolve, reject) => {
|
123
|
+
if (!background || typeof background !== "object" || typeof background === "object" && !("type" in background)) {
|
124
|
+
resolve(backgroundOverlays);
|
125
|
+
return;
|
126
|
+
}
|
127
|
+
const imageBuffer = await imageInput.sharp.raw().toBuffer();
|
128
|
+
const nbImageChannels = (await imageInput.sharp.metadata()).channels || 3;
|
129
|
+
const colorPalette = createColorPalette(
|
130
|
+
{
|
131
|
+
buffer: imageBuffer,
|
132
|
+
nbChannels: nbImageChannels,
|
133
|
+
dimensions: imageInput.dimensions
|
134
|
+
},
|
135
|
+
background.colorPalette
|
136
|
+
);
|
137
|
+
switch (background.type) {
|
138
|
+
case "line":
|
139
|
+
return resolve(createLineBackground(background, dimensions, colorPalette));
|
140
|
+
case "tile":
|
141
|
+
return resolve(createTileBackground(background, dimensions, imageCoordinates, colorPalette));
|
142
|
+
default:
|
143
|
+
resolve(backgroundOverlays);
|
144
|
+
}
|
145
|
+
reject(new Error("Unknown background type"));
|
146
|
+
});
|
147
|
+
};
|
148
|
+
function getContainedRatios(widthPx, heightPx, wrapperWidthPx, wrapperHeightPx, withoutReduction) {
|
149
|
+
if (withoutReduction && widthPx <= wrapperWidthPx && heightPx <= wrapperHeightPx) {
|
150
|
+
return { xPercent: 100, yPercent: 100 };
|
151
|
+
}
|
152
|
+
const wrapperRatio = wrapperWidthPx / wrapperHeightPx;
|
153
|
+
const imgRatio = widthPx / heightPx;
|
154
|
+
const containRatio = clamp(imgRatio > wrapperRatio ? wrapperWidthPx / widthPx : wrapperHeightPx / heightPx, 0, 100);
|
155
|
+
return {
|
156
|
+
xPercent: containRatio,
|
157
|
+
yPercent: containRatio
|
158
|
+
};
|
159
|
+
}
|
160
|
+
|
161
|
+
export {
|
162
|
+
frame,
|
163
|
+
getContainedRatios
|
164
|
+
};
|
@@ -0,0 +1,16 @@
|
|
1
|
+
import {
|
2
|
+
esm_default
|
3
|
+
} from "./chunk-YE67BQQN.js";
|
4
|
+
import {
|
5
|
+
OperationNames
|
6
|
+
} from "./chunk-MOVLLUDL.js";
|
7
|
+
|
8
|
+
// src/node/images/transform/brighten/index.ts
|
9
|
+
var brightenSchema = esm_default.object({
|
10
|
+
name: esm_default.literal(OperationNames.Brighten),
|
11
|
+
params: esm_default.number().min(0)
|
12
|
+
});
|
13
|
+
|
14
|
+
export {
|
15
|
+
brightenSchema
|
16
|
+
};
|
@@ -0,0 +1,19 @@
|
|
1
|
+
import {
|
2
|
+
esm_default
|
3
|
+
} from "./chunk-YE67BQQN.js";
|
4
|
+
import {
|
5
|
+
OperationNames
|
6
|
+
} from "./chunk-MOVLLUDL.js";
|
7
|
+
|
8
|
+
// src/node/images/transform/normalize/index.ts
|
9
|
+
var normalizeSchema = esm_default.object({
|
10
|
+
name: esm_default.literal(OperationNames.Normalize),
|
11
|
+
params: esm_default.object({
|
12
|
+
lower: esm_default.number(),
|
13
|
+
upper: esm_default.number()
|
14
|
+
})
|
15
|
+
});
|
16
|
+
|
17
|
+
export {
|
18
|
+
normalizeSchema
|
19
|
+
};
|
@@ -0,0 +1,35 @@
|
|
1
|
+
import {
|
2
|
+
register
|
3
|
+
} from "./chunk-SJLH36CH.js";
|
4
|
+
|
5
|
+
// src/agnostic/html/selector-to-element/index.ts
|
6
|
+
function selectorToElement(selector, documentObj) {
|
7
|
+
const actualDocument = documentObj ?? window.document;
|
8
|
+
if (actualDocument === null) throw register.getError("no-window-document-on-runtime-please-provide" /* NO_DOCUMENT_PLEASE_PROVIDE */, "The optional second parameter expects a Document object");
|
9
|
+
const tagRegexp = /^[A-Za-z]+/;
|
10
|
+
const idRegexp = /#[A-Za-z]+[\w\-\:]*/;
|
11
|
+
const classRegexp = /\.[A-Za-z]+[\w\-]*/;
|
12
|
+
const attributeRegexp = /\[[A-Za-z]+[\w\-]*(="[\w\-]+")?\]/;
|
13
|
+
const matchedTags = selector.match(tagRegexp) ?? [];
|
14
|
+
const matchedIds = selector.match(idRegexp) ?? [];
|
15
|
+
const matchedClasses = selector.match(classRegexp) ?? [];
|
16
|
+
const matchedAttrs = selector.match(attributeRegexp) ?? [];
|
17
|
+
const tag = matchedTags[matchedTags.length - 1] ?? "div";
|
18
|
+
const id = matchedIds[matchedIds.length - 1] ?? null;
|
19
|
+
const classes = matchedClasses.map((matchedClass) => matchedClass.replace(/^\./, ""));
|
20
|
+
const attributes = matchedAttrs.map((matchedAttr) => matchedAttr.replace(/^\[/, "").replace(/\]$/, "").split("="));
|
21
|
+
const element = actualDocument.createElement(tag);
|
22
|
+
if (id !== null) {
|
23
|
+
element.id = id;
|
24
|
+
}
|
25
|
+
element.classList.add(...classes);
|
26
|
+
attributes.forEach(([name, value = ""]) => {
|
27
|
+
if (name === void 0) return;
|
28
|
+
element.setAttribute(name, value);
|
29
|
+
});
|
30
|
+
return element;
|
31
|
+
}
|
32
|
+
|
33
|
+
export {
|
34
|
+
selectorToElement
|
35
|
+
};
|
@@ -0,0 +1,19 @@
|
|
1
|
+
import {
|
2
|
+
OperationNames
|
3
|
+
} from "./chunk-MOVLLUDL.js";
|
4
|
+
import {
|
5
|
+
esm_default
|
6
|
+
} from "./chunk-YE67BQQN.js";
|
7
|
+
|
8
|
+
// src/node/images/transform/normalize/index.ts
|
9
|
+
var normalizeSchema = esm_default.object({
|
10
|
+
name: esm_default.literal(OperationNames.Normalize),
|
11
|
+
params: esm_default.object({
|
12
|
+
lower: esm_default.number(),
|
13
|
+
upper: esm_default.number()
|
14
|
+
})
|
15
|
+
});
|
16
|
+
|
17
|
+
export {
|
18
|
+
normalizeSchema
|
19
|
+
};
|
@@ -0,0 +1,35 @@
|
|
1
|
+
import {
|
2
|
+
OperationNames
|
3
|
+
} from "./chunk-MOVLLUDL.js";
|
4
|
+
import {
|
5
|
+
esm_default
|
6
|
+
} from "./chunk-YE67BQQN.js";
|
7
|
+
|
8
|
+
// src/node/images/transform/lineate-levels/index.ts
|
9
|
+
var lineateLevelsSchema = esm_default.object({
|
10
|
+
name: esm_default.literal(OperationNames.LineateLevels),
|
11
|
+
params: esm_default.object({
|
12
|
+
multiplier: esm_default.union([
|
13
|
+
esm_default.number(),
|
14
|
+
esm_default.tuple([
|
15
|
+
esm_default.number(),
|
16
|
+
esm_default.number(),
|
17
|
+
esm_default.number()
|
18
|
+
])
|
19
|
+
]),
|
20
|
+
offset: esm_default.optional(
|
21
|
+
esm_default.union([
|
22
|
+
esm_default.number(),
|
23
|
+
esm_default.tuple([
|
24
|
+
esm_default.number(),
|
25
|
+
esm_default.number(),
|
26
|
+
esm_default.number()
|
27
|
+
])
|
28
|
+
])
|
29
|
+
)
|
30
|
+
})
|
31
|
+
});
|
32
|
+
|
33
|
+
export {
|
34
|
+
lineateLevelsSchema
|
35
|
+
};
|
@@ -0,0 +1,21 @@
|
|
1
|
+
import {
|
2
|
+
OperationNames
|
3
|
+
} from "./chunk-MOVLLUDL.js";
|
4
|
+
import {
|
5
|
+
esm_default
|
6
|
+
} from "./chunk-YE67BQQN.js";
|
7
|
+
|
8
|
+
// src/node/images/transform/modulate/index.ts
|
9
|
+
var modulateSchema = esm_default.object({
|
10
|
+
name: esm_default.literal(OperationNames.Modulate),
|
11
|
+
params: esm_default.object({
|
12
|
+
lightness: esm_default.optional(esm_default.number().min(0)),
|
13
|
+
brightness: esm_default.optional(esm_default.number().min(0)),
|
14
|
+
saturation: esm_default.optional(esm_default.number().min(0)),
|
15
|
+
hue: esm_default.optional(esm_default.number().min(0))
|
16
|
+
})
|
17
|
+
});
|
18
|
+
|
19
|
+
export {
|
20
|
+
modulateSchema
|
21
|
+
};
|
@@ -0,0 +1,28 @@
|
|
1
|
+
import {
|
2
|
+
Sanitize
|
3
|
+
} from "./chunk-MTT7TVR3.js";
|
4
|
+
import {
|
5
|
+
register
|
6
|
+
} from "./chunk-WC2LQPQP.js";
|
7
|
+
|
8
|
+
// src/agnostic/html/string-to-nodes/index.ts
|
9
|
+
function stringToNodes(dirtyStr, options) {
|
10
|
+
const actualDocument = options?.documentObj ?? window.document;
|
11
|
+
if (actualDocument === null) throw register.getError("no-window-document-on-runtime-please-provide" /* NO_DOCUMENT_PLEASE_PROVIDE */, "See documentObj in the options object");
|
12
|
+
const sanitizeOptions = {
|
13
|
+
...options?.sanitize,
|
14
|
+
documentObj: options?.sanitize?.documentObj ?? options?.documentObj
|
15
|
+
};
|
16
|
+
const str = options?.sanitize !== void 0 ? Sanitize.sanitize(dirtyStr, sanitizeOptions) : dirtyStr;
|
17
|
+
const wrapperDiv = actualDocument.createElement("div");
|
18
|
+
wrapperDiv.innerHTML = str;
|
19
|
+
const nodes = Array.from(wrapperDiv.childNodes).filter((node) => {
|
20
|
+
const allowedNodeTypes = [Node.ELEMENT_NODE, Node.TEXT_NODE];
|
21
|
+
return allowedNodeTypes.includes(node.nodeType);
|
22
|
+
});
|
23
|
+
return nodes;
|
24
|
+
}
|
25
|
+
|
26
|
+
export {
|
27
|
+
stringToNodes
|
28
|
+
};
|
@@ -0,0 +1,29 @@
|
|
1
|
+
import {
|
2
|
+
register
|
3
|
+
} from "./chunk-SJLH36CH.js";
|
4
|
+
|
5
|
+
// src/agnostic/arrays/random-pick/index.ts
|
6
|
+
function randomPick(arr, exclude = []) {
|
7
|
+
const filteredArr = [...arr].filter((elt) => !exclude.includes(elt));
|
8
|
+
const length = filteredArr.length;
|
9
|
+
if (length === 0) throw register.getError("impossible-to-pick-in-array" /* IMPOSSIBLE_TO_PICK_IN_ARRAY */, arr);
|
10
|
+
const pos = Math.floor(Math.random() * length);
|
11
|
+
const found = filteredArr[pos];
|
12
|
+
return found;
|
13
|
+
}
|
14
|
+
function randomPickMany(howMuch, arr, exclude = []) {
|
15
|
+
const grindedArr = [...arr];
|
16
|
+
const pickedSelection = [];
|
17
|
+
for (let i = 0; i < howMuch; i++) {
|
18
|
+
const picked = randomPick(grindedArr, exclude);
|
19
|
+
const indexOfPicked = grindedArr.indexOf(picked);
|
20
|
+
grindedArr.splice(indexOfPicked, 1);
|
21
|
+
pickedSelection.push(picked);
|
22
|
+
}
|
23
|
+
return pickedSelection;
|
24
|
+
}
|
25
|
+
|
26
|
+
export {
|
27
|
+
randomPick,
|
28
|
+
randomPickMany
|
29
|
+
};
|
@@ -0,0 +1,127 @@
|
|
1
|
+
import {
|
2
|
+
register
|
3
|
+
} from "./chunk-SJLH36CH.js";
|
4
|
+
|
5
|
+
// src/agnostic/html/sanitize/index.ts
|
6
|
+
var Sanitize;
|
7
|
+
((Sanitize2) => {
|
8
|
+
Sanitize2.defaultOptions = { depth: 20 };
|
9
|
+
function sanitize(inputStr, options = Sanitize2.defaultOptions) {
|
10
|
+
const actualDocument = options.documentObj ?? window.document;
|
11
|
+
if (actualDocument === null) throw register.getError("no-window-document-on-runtime-please-provide" /* NO_DOCUMENT_PLEASE_PROVIDE */, "See documentObj in the options object");
|
12
|
+
const wrapperDiv = actualDocument.createElement("div");
|
13
|
+
const { inputFreeTransform } = options;
|
14
|
+
wrapperDiv.innerHTML = inputFreeTransform !== void 0 ? inputFreeTransform(inputStr) : inputStr;
|
15
|
+
const sanitizedWrapper = sanitizeElement(wrapperDiv, options);
|
16
|
+
const returned = sanitizedWrapper?.innerHTML;
|
17
|
+
return returned ?? "";
|
18
|
+
}
|
19
|
+
Sanitize2.sanitize = sanitize;
|
20
|
+
function sanitizeElement(element, options = Sanitize2.defaultOptions) {
|
21
|
+
const actualDocument = options.documentObj ?? window.document;
|
22
|
+
if (actualDocument === null) throw register.getError("no-window-document-on-runtime-please-provide" /* NO_DOCUMENT_PLEASE_PROVIDE */, "See documentObj in the options object");
|
23
|
+
const { tagName, attributes, childNodes } = element;
|
24
|
+
const {
|
25
|
+
allowedTags = [],
|
26
|
+
allowedAttributes = {},
|
27
|
+
forbiddenTags = [],
|
28
|
+
forbiddenAttributes = {},
|
29
|
+
depth = 20,
|
30
|
+
verbose = false
|
31
|
+
} = options;
|
32
|
+
if (depth <= 0) {
|
33
|
+
console.warn("Max depth reached");
|
34
|
+
return null;
|
35
|
+
}
|
36
|
+
const normalizedTagName = tagName.toLowerCase().trim();
|
37
|
+
const tagIsInForbidden = forbiddenTags.includes("*") || forbiddenTags.includes(normalizedTagName);
|
38
|
+
if (tagIsInForbidden) {
|
39
|
+
if (verbose === true) console.warn(tagName, "tag is forbidden");
|
40
|
+
return null;
|
41
|
+
}
|
42
|
+
const tagIsInAllowed = allowedTags.includes("*") || allowedTags.includes(normalizedTagName);
|
43
|
+
if (!tagIsInAllowed) {
|
44
|
+
if (verbose === true) console.warn(tagName, "tag is not allowed");
|
45
|
+
return null;
|
46
|
+
}
|
47
|
+
const returnedElement = actualDocument.createElement(tagName);
|
48
|
+
const returnedAttributes = Array.from(attributes).filter(({ name: attributeName, value: attributeValue }) => {
|
49
|
+
const allTagsForbiddenAttributes = forbiddenAttributes["*"] ?? [];
|
50
|
+
const thisTagForbiddenAttributes = forbiddenAttributes[normalizedTagName] ?? [];
|
51
|
+
const mergedForbiddenAttributes = [...allTagsForbiddenAttributes, ...thisTagForbiddenAttributes];
|
52
|
+
const isInForbidden = mergedForbiddenAttributes.some(({
|
53
|
+
attributeName: nameTester,
|
54
|
+
attributeValues: valTesters
|
55
|
+
}) => {
|
56
|
+
if (typeof nameTester === "string" && nameTester !== "*" && attributeName !== nameTester) return false;
|
57
|
+
if (typeof nameTester !== "string" && !nameTester.test(attributeName)) return false;
|
58
|
+
if (valTesters === void 0) {
|
59
|
+
if (verbose === true) console.warn(attributeName, "attribute on", tagName, "tag is forbidden");
|
60
|
+
return true;
|
61
|
+
}
|
62
|
+
if (valTesters.includes("*")) {
|
63
|
+
if (verbose === true) console.warn(attributeName, "attribute on", tagName, "tag is forbidden");
|
64
|
+
return true;
|
65
|
+
}
|
66
|
+
return valTesters.some((valTester) => {
|
67
|
+
if (typeof valTester === "string" && attributeValue === valTester) {
|
68
|
+
if (verbose === true) console.warn(attributeValue, "value for", attributeName, "attribute on", tagName, "tag is forbidden. Rule:", valTester);
|
69
|
+
return true;
|
70
|
+
}
|
71
|
+
if (typeof valTester !== "string" && valTester.test(attributeValue)) {
|
72
|
+
if (verbose === true) console.warn(attributeValue, "value for", attributeName, "attribute on", tagName, "tag is forbidden. Rule:", valTester);
|
73
|
+
return true;
|
74
|
+
}
|
75
|
+
return false;
|
76
|
+
});
|
77
|
+
});
|
78
|
+
if (isInForbidden) return false;
|
79
|
+
const allTagsAllowedAttributes = allowedAttributes["*"] ?? [];
|
80
|
+
const thisTagAllowedAttributes = allowedAttributes[normalizedTagName] ?? [];
|
81
|
+
const mergedAllowedAttributes = [...allTagsAllowedAttributes, ...thisTagAllowedAttributes];
|
82
|
+
let latestNotAllowedReason = [tagName, "has no allowed attributes"];
|
83
|
+
const isInAllowed = mergedAllowedAttributes.some(({
|
84
|
+
attributeName: nameTester,
|
85
|
+
attributeValues: valTesters
|
86
|
+
}) => {
|
87
|
+
if (typeof nameTester === "string" && nameTester !== "*" && attributeName !== nameTester) {
|
88
|
+
latestNotAllowedReason = [attributeName, "attribute on", tagName, "tag is not allowed"];
|
89
|
+
return false;
|
90
|
+
}
|
91
|
+
if (typeof nameTester !== "string" && !nameTester.test(attributeName)) {
|
92
|
+
latestNotAllowedReason = [attributeName, "attribute on", tagName, "tag is not allowed"];
|
93
|
+
return false;
|
94
|
+
}
|
95
|
+
if (valTesters === void 0) return true;
|
96
|
+
if (valTesters.includes("*")) return true;
|
97
|
+
return valTesters.some((valTester) => {
|
98
|
+
if (typeof valTester === "string" && attributeValue === valTester) return true;
|
99
|
+
if (typeof valTester !== "string" && valTester.test(attributeValue)) return true;
|
100
|
+
latestNotAllowedReason = [attributeValue, "value for", attributeName, "attribute on", tagName, "tag is not allowed"];
|
101
|
+
return false;
|
102
|
+
});
|
103
|
+
});
|
104
|
+
if (!isInAllowed) {
|
105
|
+
if (verbose === true) console.warn(...latestNotAllowedReason);
|
106
|
+
return false;
|
107
|
+
}
|
108
|
+
return true;
|
109
|
+
});
|
110
|
+
returnedAttributes.forEach(({ name, value }) => {
|
111
|
+
returnedElement.setAttribute(name, value);
|
112
|
+
});
|
113
|
+
const sanitizedChildNodes = Array.from(childNodes).map((node) => {
|
114
|
+
if (node.nodeType === Node.ELEMENT_NODE) return sanitizeElement(node, { ...options, depth: depth - 1 });
|
115
|
+
else if (node.nodeType === Node.TEXT_NODE) return node;
|
116
|
+
else if (options.keepComments === true && node.nodeType === Node.COMMENT_NODE) return node;
|
117
|
+
return null;
|
118
|
+
}).filter((elt) => elt !== null);
|
119
|
+
returnedElement.replaceChildren(...sanitizedChildNodes);
|
120
|
+
return returnedElement;
|
121
|
+
}
|
122
|
+
Sanitize2.sanitizeElement = sanitizeElement;
|
123
|
+
})(Sanitize || (Sanitize = {}));
|
124
|
+
|
125
|
+
export {
|
126
|
+
Sanitize
|
127
|
+
};
|
@@ -0,0 +1,18 @@
|
|
1
|
+
import {
|
2
|
+
esm_default
|
3
|
+
} from "./chunk-YE67BQQN.js";
|
4
|
+
import {
|
5
|
+
OperationNames
|
6
|
+
} from "./chunk-MOVLLUDL.js";
|
7
|
+
|
8
|
+
// src/node/images/transform/flip/index.ts
|
9
|
+
var flipSchema = esm_default.object({
|
10
|
+
name: esm_default.literal(OperationNames.Flip),
|
11
|
+
params: esm_default.object({
|
12
|
+
flip: esm_default.boolean().optional()
|
13
|
+
})
|
14
|
+
});
|
15
|
+
|
16
|
+
export {
|
17
|
+
flipSchema
|
18
|
+
};
|
@@ -0,0 +1,168 @@
|
|
1
|
+
import {
|
2
|
+
isFalsy
|
3
|
+
} from "./chunk-QXAJXTXV.js";
|
4
|
+
import {
|
5
|
+
isValidClassName
|
6
|
+
} from "./chunk-W5A2TON3.js";
|
7
|
+
|
8
|
+
// src/agnostic/css/bem/getNamesArr.ts
|
9
|
+
function getNamesArr(arg) {
|
10
|
+
const returned = [];
|
11
|
+
if (typeof arg === "string") {
|
12
|
+
arg.trim().split(/\s+/gm).forEach((name) => {
|
13
|
+
if (isValidClassName(name)) returned.push(name);
|
14
|
+
});
|
15
|
+
} else if (Array.isArray(arg)) {
|
16
|
+
arg.forEach((elt) => returned.push(...getNamesArr(elt)));
|
17
|
+
} else if (typeof arg === "object" && arg !== null) {
|
18
|
+
Object.entries(arg).forEach(([key, val]) => {
|
19
|
+
if (!isFalsy(val)) returned.push(...getNamesArr(key));
|
20
|
+
});
|
21
|
+
}
|
22
|
+
return returned;
|
23
|
+
}
|
24
|
+
var getNamesArr_default = getNamesArr;
|
25
|
+
|
26
|
+
// src/agnostic/css/bem/BEM.ts
|
27
|
+
var BEM = class _BEM {
|
28
|
+
constructor() {
|
29
|
+
this.findBlockByName = this.findBlockByName.bind(this);
|
30
|
+
this.addBlock = this.addBlock.bind(this);
|
31
|
+
this.addElement = this.addElement.bind(this);
|
32
|
+
this.addModifier = this.addModifier.bind(this);
|
33
|
+
this.copy = this.copy.bind(this);
|
34
|
+
this.block = this.block.bind(this);
|
35
|
+
this.element = this.element.bind(this);
|
36
|
+
this.modifier = this.modifier.bind(this);
|
37
|
+
this.blk = this.blk.bind(this);
|
38
|
+
this.elt = this.elt.bind(this);
|
39
|
+
this.mod = this.mod.bind(this);
|
40
|
+
this.cp = this.cp.bind(this);
|
41
|
+
this.addSingleBlock = this.addSingleBlock.bind(this);
|
42
|
+
this.addSingleElement = this.addSingleElement.bind(this);
|
43
|
+
this.addSingleModifier = this.addSingleModifier.bind(this);
|
44
|
+
this.setCurrentBlockByName = this.setCurrentBlockByName.bind(this);
|
45
|
+
this.createBlockByName = this.createBlockByName.bind(this);
|
46
|
+
this.getCurrentBlock = this.getCurrentBlock.bind(this);
|
47
|
+
}
|
48
|
+
addBlock(blockNameArg) {
|
49
|
+
const blocksNames = getNamesArr_default(blockNameArg);
|
50
|
+
blocksNames.forEach(this.addSingleBlock);
|
51
|
+
return this;
|
52
|
+
}
|
53
|
+
addElement(elementNameArg) {
|
54
|
+
const elementsNames = getNamesArr_default(elementNameArg);
|
55
|
+
elementsNames.forEach(this.addSingleElement);
|
56
|
+
return this;
|
57
|
+
}
|
58
|
+
addModifier(modifierNameArg) {
|
59
|
+
const currentBlock = this.getCurrentBlock();
|
60
|
+
if (currentBlock === void 0) return this;
|
61
|
+
const modifiersNames = getNamesArr_default(modifierNameArg);
|
62
|
+
modifiersNames.forEach(this.addSingleModifier);
|
63
|
+
return this;
|
64
|
+
}
|
65
|
+
copy() {
|
66
|
+
const copy = new _BEM();
|
67
|
+
this.blocks.forEach((block) => {
|
68
|
+
copy.addBlock(block.name);
|
69
|
+
block.modifiers.forEach(copy.addModifier);
|
70
|
+
});
|
71
|
+
return copy;
|
72
|
+
}
|
73
|
+
block(blockNameArg) {
|
74
|
+
return this.copy().addBlock(blockNameArg);
|
75
|
+
}
|
76
|
+
element(elementNameArg) {
|
77
|
+
return this.copy().addElement(elementNameArg);
|
78
|
+
}
|
79
|
+
modifier(modifierNameArg) {
|
80
|
+
return this.copy().addModifier(modifierNameArg);
|
81
|
+
}
|
82
|
+
blk(blockNameArg) {
|
83
|
+
return this.block(blockNameArg);
|
84
|
+
}
|
85
|
+
elt(elementNameArg) {
|
86
|
+
return this.element(elementNameArg);
|
87
|
+
}
|
88
|
+
mod(modifierNameArg) {
|
89
|
+
return this.modifier(modifierNameArg);
|
90
|
+
}
|
91
|
+
cp() {
|
92
|
+
return this.copy();
|
93
|
+
}
|
94
|
+
get value() {
|
95
|
+
return this.blocks.map((block) => {
|
96
|
+
return [block.name, ...block.modifiers.map((modifier) => {
|
97
|
+
return `${block.name}_${modifier}`;
|
98
|
+
})].join(" ");
|
99
|
+
}).join(" ");
|
100
|
+
}
|
101
|
+
get val() {
|
102
|
+
return this.value;
|
103
|
+
}
|
104
|
+
blocks = [];
|
105
|
+
findBlockByName(name) {
|
106
|
+
return this.blocks.find((block) => block.name === name);
|
107
|
+
}
|
108
|
+
addSingleBlock(blockName) {
|
109
|
+
if (this.findBlockByName(blockName) !== void 0) {
|
110
|
+
this.setCurrentBlockByName(blockName);
|
111
|
+
} else {
|
112
|
+
const block = this.createBlockByName(blockName);
|
113
|
+
this.blocks.push(block);
|
114
|
+
}
|
115
|
+
return this;
|
116
|
+
}
|
117
|
+
addSingleElement(elementName) {
|
118
|
+
const currentBlock = this.getCurrentBlock();
|
119
|
+
if (currentBlock === void 0) this.addBlock(elementName);
|
120
|
+
else {
|
121
|
+
currentBlock.name = currentBlock.name + "__" + elementName;
|
122
|
+
}
|
123
|
+
return this;
|
124
|
+
}
|
125
|
+
addSingleModifier(modifierName) {
|
126
|
+
const currentBlock = this.getCurrentBlock();
|
127
|
+
if (currentBlock !== void 0) {
|
128
|
+
currentBlock.modifiers.push(modifierName);
|
129
|
+
}
|
130
|
+
return this;
|
131
|
+
}
|
132
|
+
setCurrentBlockByName(blockName) {
|
133
|
+
const block = this.findBlockByName(blockName);
|
134
|
+
if (block !== void 0) {
|
135
|
+
const blockPos = this.blocks.indexOf(block);
|
136
|
+
this.blocks = [
|
137
|
+
...this.blocks.slice(0, blockPos),
|
138
|
+
...this.blocks.slice(blockPos + 1),
|
139
|
+
block
|
140
|
+
];
|
141
|
+
}
|
142
|
+
return this;
|
143
|
+
}
|
144
|
+
createBlockByName(blockName) {
|
145
|
+
return { name: blockName, modifiers: [] };
|
146
|
+
}
|
147
|
+
getCurrentBlock() {
|
148
|
+
return this.blocks.slice(-1)[0];
|
149
|
+
}
|
150
|
+
};
|
151
|
+
var BEM_default = BEM;
|
152
|
+
|
153
|
+
// src/agnostic/css/bem/index.ts
|
154
|
+
var Bem;
|
155
|
+
((Bem2) => {
|
156
|
+
Bem2.BEM = BEM_default;
|
157
|
+
function bem(blockNameArg) {
|
158
|
+
const bem2 = new BEM_default();
|
159
|
+
if (blockNameArg instanceof BEM_default) return blockNameArg.copy();
|
160
|
+
return bem2.addBlock(blockNameArg);
|
161
|
+
}
|
162
|
+
Bem2.bem = bem;
|
163
|
+
Bem2.getNamesArr = getNamesArr_default;
|
164
|
+
})(Bem || (Bem = {}));
|
165
|
+
|
166
|
+
export {
|
167
|
+
Bem
|
168
|
+
};
|