@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.
Files changed (239) hide show
  1. package/agnostic/arrays/index.js +7 -7
  2. package/agnostic/arrays/random-pick/index.js +4 -4
  3. package/agnostic/colors/index.js +8 -8
  4. package/agnostic/css/index.js +13 -13
  5. package/agnostic/css/styles-set/index.js +4 -4
  6. package/agnostic/html/hyper-json/cast/index.js +2 -2
  7. package/agnostic/html/hyper-json/index.js +3 -3
  8. package/agnostic/html/hyper-json/smart-tags/coalesced/add/index.js +2 -2
  9. package/agnostic/html/hyper-json/smart-tags/coalesced/addclass/index.js +2 -2
  10. package/agnostic/html/hyper-json/smart-tags/coalesced/and/index.js +2 -2
  11. package/agnostic/html/hyper-json/smart-tags/coalesced/append/index.js +2 -2
  12. package/agnostic/html/hyper-json/smart-tags/coalesced/at/index.js +2 -2
  13. package/agnostic/html/hyper-json/smart-tags/coalesced/call/index.js +2 -2
  14. package/agnostic/html/hyper-json/smart-tags/coalesced/clone/index.js +2 -2
  15. package/agnostic/html/hyper-json/smart-tags/coalesced/deleteproperties/index.js +2 -2
  16. package/agnostic/html/hyper-json/smart-tags/coalesced/equals/index.js +2 -2
  17. package/agnostic/html/hyper-json/smart-tags/coalesced/getattribute/index.js +2 -2
  18. package/agnostic/html/hyper-json/smart-tags/coalesced/getproperties/index.js +2 -2
  19. package/agnostic/html/hyper-json/smart-tags/coalesced/getproperty/index.js +2 -2
  20. package/agnostic/html/hyper-json/smart-tags/coalesced/if/index.js +2 -2
  21. package/agnostic/html/hyper-json/smart-tags/coalesced/initialize/index.js +2 -2
  22. package/agnostic/html/hyper-json/smart-tags/coalesced/join/index.js +2 -2
  23. package/agnostic/html/hyper-json/smart-tags/coalesced/length/index.js +2 -2
  24. package/agnostic/html/hyper-json/smart-tags/coalesced/map/index.js +2 -2
  25. package/agnostic/html/hyper-json/smart-tags/coalesced/negate/index.js +2 -2
  26. package/agnostic/html/hyper-json/smart-tags/coalesced/notrailing/index.js +2 -2
  27. package/agnostic/html/hyper-json/smart-tags/coalesced/or/index.js +2 -2
  28. package/agnostic/html/hyper-json/smart-tags/coalesced/pickrandom/index.js +2 -2
  29. package/agnostic/html/hyper-json/smart-tags/coalesced/populate/index.js +2 -2
  30. package/agnostic/html/hyper-json/smart-tags/coalesced/print/index.js +2 -2
  31. package/agnostic/html/hyper-json/smart-tags/coalesced/push/index.js +2 -2
  32. package/agnostic/html/hyper-json/smart-tags/coalesced/pusheach/index.js +2 -2
  33. package/agnostic/html/hyper-json/smart-tags/coalesced/recordtoarray/index.js +2 -2
  34. package/agnostic/html/hyper-json/smart-tags/coalesced/removeattribute/index.js +2 -2
  35. package/agnostic/html/hyper-json/smart-tags/coalesced/removeclass/index.js +2 -2
  36. package/agnostic/html/hyper-json/smart-tags/coalesced/renameproperty/index.js +2 -2
  37. package/agnostic/html/hyper-json/smart-tags/coalesced/replace/index.js +2 -2
  38. package/agnostic/html/hyper-json/smart-tags/coalesced/select/index.js +2 -2
  39. package/agnostic/html/hyper-json/smart-tags/coalesced/set/index.js +2 -2
  40. package/agnostic/html/hyper-json/smart-tags/coalesced/setattribute/index.js +2 -2
  41. package/agnostic/html/hyper-json/smart-tags/coalesced/setproperty/index.js +2 -2
  42. package/agnostic/html/hyper-json/smart-tags/coalesced/sorton/index.js +2 -2
  43. package/agnostic/html/hyper-json/smart-tags/coalesced/split/index.js +2 -2
  44. package/agnostic/html/hyper-json/smart-tags/coalesced/spread/index.js +2 -2
  45. package/agnostic/html/hyper-json/smart-tags/coalesced/toarray/index.js +2 -2
  46. package/agnostic/html/hyper-json/smart-tags/coalesced/toboolean/index.js +2 -2
  47. package/agnostic/html/hyper-json/smart-tags/coalesced/toelement/index.js +2 -2
  48. package/agnostic/html/hyper-json/smart-tags/coalesced/toggleclass/index.js +2 -2
  49. package/agnostic/html/hyper-json/smart-tags/coalesced/tonodelist/index.js +2 -2
  50. package/agnostic/html/hyper-json/smart-tags/coalesced/tonull/index.js +2 -2
  51. package/agnostic/html/hyper-json/smart-tags/coalesced/tonumber/index.js +2 -2
  52. package/agnostic/html/hyper-json/smart-tags/coalesced/torecord/index.js +2 -2
  53. package/agnostic/html/hyper-json/smart-tags/coalesced/toref/index.js +2 -2
  54. package/agnostic/html/hyper-json/smart-tags/coalesced/tostring/index.js +2 -2
  55. package/agnostic/html/hyper-json/smart-tags/coalesced/totext/index.js +2 -2
  56. package/agnostic/html/hyper-json/smart-tags/coalesced/transformselected/index.js +2 -2
  57. package/agnostic/html/hyper-json/smart-tags/coalesced/trim/index.js +2 -2
  58. package/agnostic/html/hyper-json/smart-tags/isolated/boolean/index.js +2 -2
  59. package/agnostic/html/hyper-json/smart-tags/isolated/element/index.js +2 -2
  60. package/agnostic/html/hyper-json/smart-tags/isolated/get/index.js +2 -2
  61. package/agnostic/html/hyper-json/smart-tags/isolated/global/index.js +2 -2
  62. package/agnostic/html/hyper-json/smart-tags/isolated/guess/index.js +2 -2
  63. package/agnostic/html/hyper-json/smart-tags/isolated/nodelist/index.js +2 -2
  64. package/agnostic/html/hyper-json/smart-tags/isolated/number/index.js +2 -2
  65. package/agnostic/html/hyper-json/smart-tags/isolated/record/index.js +2 -2
  66. package/agnostic/html/hyper-json/smart-tags/isolated/ref/index.js +2 -2
  67. package/agnostic/html/hyper-json/smart-tags/isolated/string/index.js +2 -2
  68. package/agnostic/html/hyper-json/smart-tags/isolated/text/index.js +2 -2
  69. package/agnostic/html/hyper-json/tree/index.js +2 -2
  70. package/agnostic/html/hyper-json/utils/index.js +2 -2
  71. package/agnostic/html/index.js +14 -14
  72. package/agnostic/html/sanitize/index.js +4 -4
  73. package/agnostic/html/selector-to-element/index.js +4 -4
  74. package/agnostic/html/string-to-nodes/index.js +5 -5
  75. package/agnostic/misc/crossenv/index.js +2 -2
  76. package/agnostic/misc/index.js +27 -27
  77. package/agnostic/misc/logs/index.js +2 -2
  78. package/agnostic/misc/lorem-ipsum/index.js +11 -11
  79. package/agnostic/numbers/index.js +7 -7
  80. package/agnostic/objects/index.js +6 -6
  81. package/agnostic/optim/index.js +3 -3
  82. package/agnostic/strings/index.js +6 -6
  83. package/agnostic/time/index.js +3 -3
  84. package/chunks/chunk-236C4IHT.js +98 -0
  85. package/chunks/chunk-2HU2AWWJ.js +35 -0
  86. package/chunks/chunk-2KT7AKRW.js +17 -0
  87. package/chunks/chunk-3CZNTEF7.js +151 -0
  88. package/chunks/chunk-3UM5CZA5.js +18 -0
  89. package/chunks/chunk-4ARTWFW5.js +164 -0
  90. package/chunks/chunk-4PJWXOLA.js +16 -0
  91. package/chunks/chunk-4QHGUANF.js +19 -0
  92. package/chunks/chunk-65YZMVWZ.js +35 -0
  93. package/chunks/chunk-662SOZWA.js +19 -0
  94. package/chunks/chunk-6EIF24H5.js +35 -0
  95. package/chunks/chunk-6IZ5HUJJ.js +21 -0
  96. package/chunks/chunk-6Z6GDMOR.js +28 -0
  97. package/chunks/chunk-72NLUT3X.js +29 -0
  98. package/chunks/chunk-72U4TDEB.js +127 -0
  99. package/chunks/chunk-7OK5NZTY.js +18 -0
  100. package/chunks/chunk-7YW5HL6N.js +168 -0
  101. package/chunks/chunk-7Z7CKAOH.js +98 -0
  102. package/chunks/chunk-B4XUXE7E.js +18 -0
  103. package/chunks/chunk-BGZ5OVVN.js +20 -0
  104. package/chunks/chunk-BZHH4R64.js +20 -0
  105. package/chunks/chunk-C3ZKLONL.js +21 -0
  106. package/chunks/chunk-C4Q4PC53.js +63 -0
  107. package/chunks/chunk-C7SRAQMW.js +29 -0
  108. package/chunks/chunk-CHA42BGS.js +48 -0
  109. package/chunks/chunk-CM6AHRTS.js +16 -0
  110. package/chunks/chunk-CQEDNACN.js +28 -0
  111. package/chunks/chunk-D33KC6NN.js +18 -0
  112. package/chunks/chunk-D47ZPEUU.js +22 -0
  113. package/chunks/chunk-E3GK7YZ7.js +65 -0
  114. package/chunks/chunk-E4FJHD5R.js +67 -0
  115. package/chunks/chunk-E6HDM2M4.js +191 -0
  116. package/chunks/chunk-FCLAFRIW.js +177 -0
  117. package/chunks/chunk-FHHXI6WC.js +31 -0
  118. package/chunks/chunk-FRP47Y6H.js +2456 -0
  119. package/chunks/chunk-G2M3VECP.js +20 -0
  120. package/chunks/chunk-G3HAKMUB.js +79 -0
  121. package/chunks/chunk-GE7DNPF6.js +63 -0
  122. package/chunks/chunk-GGT2PUZH.js +21 -0
  123. package/chunks/chunk-GOTTGEXI.js +23 -0
  124. package/chunks/chunk-HALUZA2X.js +16 -0
  125. package/chunks/chunk-HFIE4SBE.js +16 -0
  126. package/chunks/chunk-IYV3EEYX.js +20 -0
  127. package/chunks/chunk-J35QFU6O.js +21 -0
  128. package/chunks/chunk-JQRLQUMJ.js +16 -0
  129. package/chunks/chunk-JR76DLSV.js +151 -0
  130. package/chunks/chunk-JX45LILQ.js +164 -0
  131. package/chunks/chunk-KL6EJPC3.js +35 -0
  132. package/chunks/chunk-KN23H4CI.js +20 -0
  133. package/chunks/chunk-LH6Z6NJY.js +191 -0
  134. package/chunks/chunk-LNSDOGTR.js +63 -0
  135. package/chunks/chunk-LSOHLSF5.js +32 -0
  136. package/chunks/chunk-MFK63FMI.js +31 -0
  137. package/chunks/chunk-MKHTR43Q.js +231 -0
  138. package/chunks/chunk-MTT7TVR3.js +127 -0
  139. package/chunks/chunk-MW3KNVTG.js +29 -0
  140. package/chunks/chunk-MXGGOCLX.js +56 -0
  141. package/chunks/chunk-NA7PT2KE.js +21 -0
  142. package/chunks/chunk-NAP2XNYN.js +23 -0
  143. package/chunks/chunk-NFIEXASV.js +164 -0
  144. package/chunks/chunk-P2H6PV4O.js +26 -0
  145. package/chunks/chunk-P5OGBBGM.js +37 -0
  146. package/chunks/chunk-PENYZ6S7.js +31 -0
  147. package/chunks/chunk-PSP2DKDH.js +151 -0
  148. package/chunks/chunk-Q2ZS3QNB.js +151 -0
  149. package/chunks/chunk-RCWLMVSZ.js +164 -0
  150. package/chunks/chunk-RDQJSWRC.js +127 -0
  151. package/chunks/chunk-SAFV7TBT.js +31 -0
  152. package/chunks/chunk-SJLH36CH.js +26 -0
  153. package/chunks/chunk-SLCGLOYM.js +37 -0
  154. package/chunks/chunk-SUWMOLXI.js +191 -0
  155. package/chunks/chunk-SY65O2JU.js +98 -0
  156. package/chunks/chunk-T2T5BYTW.js +18 -0
  157. package/chunks/chunk-T6IC7JVI.js +37 -0
  158. package/chunks/chunk-TP6V6CBV.js +177 -0
  159. package/chunks/chunk-U3L3X27Q.js +177 -0
  160. package/chunks/chunk-U5WEI3QA.js +18 -0
  161. package/chunks/chunk-U7R6TPHR.js +15 -0
  162. package/chunks/chunk-UERX6XGZ.js +21 -0
  163. package/chunks/chunk-UFKH5WD2.js +21 -0
  164. package/chunks/chunk-UNHNZAVP.js +18 -0
  165. package/chunks/chunk-UODICVLG.js +173 -0
  166. package/chunks/chunk-UUU6DWRQ.js +79 -0
  167. package/chunks/chunk-VDT6ODFV.js +20 -0
  168. package/chunks/chunk-VHPX7UA3.js +177 -0
  169. package/chunks/chunk-VQUF2TSY.js +191 -0
  170. package/chunks/chunk-VR5JHUKK.js +32 -0
  171. package/chunks/chunk-VSBRIQPH.js +48 -0
  172. package/chunks/chunk-W6JPRXQ4.js +16 -0
  173. package/chunks/chunk-WC2LQPQP.js +26 -0
  174. package/chunks/chunk-WH5V6GK7.js +56 -0
  175. package/chunks/chunk-WIJBRYJ6.js +20 -0
  176. package/chunks/chunk-WP7L5ZFP.js +173 -0
  177. package/chunks/chunk-WR64YJNW.js +20 -0
  178. package/chunks/chunk-WRRA3BN4.js +31 -0
  179. package/chunks/chunk-WTILPGGX.js +69 -0
  180. package/chunks/chunk-X244JGZD.js +69 -0
  181. package/chunks/chunk-X34YXAEL.js +31 -0
  182. package/chunks/chunk-X5HMM3LD.js +35 -0
  183. package/chunks/chunk-X6WCMUOP.js +18 -0
  184. package/chunks/chunk-XB3ZOIHH.js +2456 -0
  185. package/chunks/chunk-XJ23DJY4.js +173 -0
  186. package/chunks/chunk-XQMUFSLU.js +16 -0
  187. package/chunks/chunk-XTOAQTLP.js +98 -0
  188. package/chunks/chunk-Y7YEYHRZ.js +69 -0
  189. package/chunks/chunk-YCSC7QNV.js +30 -0
  190. package/chunks/chunk-YE67BQQN.js +4072 -0
  191. package/chunks/chunk-YEYXAV23.js +16 -0
  192. package/chunks/chunk-YLJBKSLO.js +56 -0
  193. package/chunks/chunk-YMRGCRQ4.js +48 -0
  194. package/chunks/chunk-Z2CU55CF.js +20 -0
  195. package/chunks/chunk-Z4PVE6SR.js +21 -0
  196. package/chunks/chunk-ZMMNN3QA.js +16 -0
  197. package/chunks/chunk-ZNPRJEP5.js +28 -0
  198. package/chunks/chunk-ZQ7ZC7TZ.js +56 -0
  199. package/chunks/chunk-ZVBMPJLH.js +48 -0
  200. package/node/@google-cloud/index.js +8 -8
  201. package/node/@google-cloud/storage/bucket/index.js +4 -4
  202. package/node/@google-cloud/storage/file/index.js +12 -12
  203. package/node/@google-cloud/storage/index.js +8 -8
  204. package/node/cloud-storage/index.js +7 -7
  205. package/node/cloud-storage/operations/download/index.js +3 -3
  206. package/node/cloud-storage/operations/index.js +7 -7
  207. package/node/cloud-storage/operations/upload/index.js +3 -3
  208. package/node/encryption/index.js +3 -3
  209. package/node/files/index.js +3 -3
  210. package/node/images/index.js +32 -32
  211. package/node/images/prepare/index.js +32 -32
  212. package/node/images/transform/_utils/color-schema/index.js +2 -2
  213. package/node/images/transform/_utils/positions/index.js +2 -2
  214. package/node/images/transform/blur/index.js +2 -2
  215. package/node/images/transform/brighten/index.js +2 -2
  216. package/node/images/transform/compose/index.js +4 -4
  217. package/node/images/transform/extend/index.js +3 -3
  218. package/node/images/transform/extract/index.js +2 -2
  219. package/node/images/transform/flatten/index.js +3 -3
  220. package/node/images/transform/flip/index.js +2 -2
  221. package/node/images/transform/flop/index.js +2 -2
  222. package/node/images/transform/frame/backgrounds/create-line-background/index.js +2 -2
  223. package/node/images/transform/frame/backgrounds/create-tile-background/index.js +2 -2
  224. package/node/images/transform/frame/index.js +6 -6
  225. package/node/images/transform/hue-rotate/index.js +2 -2
  226. package/node/images/transform/index.js +31 -31
  227. package/node/images/transform/lighten/index.js +2 -2
  228. package/node/images/transform/lineate-levels/index.js +2 -2
  229. package/node/images/transform/modulate/index.js +2 -2
  230. package/node/images/transform/normalize/index.js +2 -2
  231. package/node/images/transform/operations/_utils/frame/backgrounds/create-line-background/index.js +2 -2
  232. package/node/images/transform/operations/_utils/frame/backgrounds/create-tile-background/index.js +2 -2
  233. package/node/images/transform/operations/_utils/frame/create-color-palette/index.js +3 -3
  234. package/node/images/transform/operations/_utils/frame/index.js +7 -7
  235. package/node/images/transform/resize/index.js +3 -3
  236. package/node/images/transform/rotate/index.js +2 -2
  237. package/node/images/transform/saturate/index.js +2 -2
  238. package/node/images/transform/scale/index.js +3 -3
  239. package/package.json +11 -12
@@ -0,0 +1,164 @@
1
+ import {
2
+ createColorPalette
3
+ } from "./chunk-7Z7CKAOH.js";
4
+ import {
5
+ createLineBackground
6
+ } from "./chunk-LNSDOGTR.js";
7
+ import {
8
+ createTileBackground
9
+ } from "./chunk-CP454IJD.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,127 @@
1
+ import {
2
+ register
3
+ } from "./chunk-P2H6PV4O.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,31 @@
1
+ import {
2
+ randomPick,
3
+ randomPickMany
4
+ } from "./chunk-72NLUT3X.js";
5
+ import {
6
+ findDuplicates
7
+ } from "./chunk-YS6WMSWC.js";
8
+ import {
9
+ isArrayOf
10
+ } from "./chunk-6RGDWX4A.js";
11
+ import {
12
+ make
13
+ } from "./chunk-RLAZR3NL.js";
14
+ import {
15
+ shuffle
16
+ } from "./chunk-VJJIYJMY.js";
17
+
18
+ // src/agnostic/arrays/index.tsx
19
+ var Arrays;
20
+ ((Arrays2) => {
21
+ Arrays2.findDuplicates = findDuplicates;
22
+ Arrays2.isArrayOf = isArrayOf;
23
+ Arrays2.make = make;
24
+ Arrays2.randomPick = randomPick;
25
+ Arrays2.randomPickMany = randomPickMany;
26
+ Arrays2.shuffle = shuffle;
27
+ })(Arrays || (Arrays = {}));
28
+
29
+ export {
30
+ Arrays
31
+ };
@@ -0,0 +1,26 @@
1
+ import {
2
+ Crossenv
3
+ } from "./chunk-GGT2PUZH.js";
4
+ import {
5
+ Errors
6
+ } from "./chunk-WH6BPDAC.js";
7
+
8
+ // src/shared/errors/index.ts
9
+ var register = Errors.Register.from({
10
+ ["no-window-document-on-runtime" /* NO_DOCUMENT */]: {
11
+ message: `Runtime '${Crossenv.detectRuntime()}' does not provide a Document object, cannot complete.`,
12
+ detailsMaker: () => void 0
13
+ },
14
+ ["no-window-document-on-runtime-please-provide" /* NO_DOCUMENT_PLEASE_PROVIDE */]: {
15
+ message: `Please provide a Document object since none are found on runtime '${Crossenv.detectRuntime()}'`,
16
+ detailsMaker: (tips) => tips
17
+ },
18
+ ["impossible-to-pick-in-array" /* IMPOSSIBLE_TO_PICK_IN_ARRAY */]: {
19
+ message: "Impossible to pick",
20
+ detailsMaker: (array) => array.length === 0 ? "Array cannot be empty" : "Too many exclusions"
21
+ }
22
+ });
23
+
24
+ export {
25
+ register
26
+ };
@@ -0,0 +1,37 @@
1
+ import {
2
+ Cast,
3
+ Tree,
4
+ Utils
5
+ } from "./chunk-XB3ZOIHH.js";
6
+ import {
7
+ Types
8
+ } from "./chunk-XEQ2PBT2.js";
9
+ import {
10
+ SmartTags
11
+ } from "./chunk-UT2J62LH.js";
12
+ import {
13
+ Serialize
14
+ } from "./chunk-SXRWMH3U.js";
15
+ import {
16
+ Transformer
17
+ } from "./chunk-BKO7GLC2.js";
18
+ import {
19
+ Method
20
+ } from "./chunk-RW7VAKJW.js";
21
+
22
+ // src/agnostic/html/hyper-json/index.ts
23
+ var HyperJson;
24
+ ((HyperJson2) => {
25
+ HyperJson2.Cast = Cast;
26
+ HyperJson2.Method = Method;
27
+ HyperJson2.Serialize = Serialize;
28
+ HyperJson2.SmartTags = SmartTags;
29
+ HyperJson2.Transformer = Transformer;
30
+ HyperJson2.Tree = Tree;
31
+ HyperJson2.Types = Types;
32
+ HyperJson2.Utils = Utils;
33
+ })(HyperJson || (HyperJson = {}));
34
+
35
+ export {
36
+ HyperJson
37
+ };
@@ -0,0 +1,191 @@
1
+ import {
2
+ Arrays
3
+ } from "./chunk-SAFV7TBT.js";
4
+ import {
5
+ Random
6
+ } from "./chunk-S32K7POB.js";
7
+
8
+ // src/agnostic/misc/lorem-ipsum/index.ts
9
+ var LoremIpsum;
10
+ ((LoremIpsum2) => {
11
+ LoremIpsum2.words = [
12
+ "a",
13
+ "ac",
14
+ "accumsan",
15
+ "adipiscing",
16
+ "aenean",
17
+ "aliquam",
18
+ "aliquet",
19
+ "amet",
20
+ "ante",
21
+ "arcu",
22
+ "at",
23
+ "auctor",
24
+ "augue",
25
+ "bibendum",
26
+ "blandit",
27
+ "condimentum",
28
+ "consectetur",
29
+ "consequat",
30
+ "convallis",
31
+ "cras",
32
+ "curabitur",
33
+ "cursus",
34
+ "dapibus",
35
+ "diam",
36
+ "dictum",
37
+ "dictumst",
38
+ "dignissim",
39
+ "dolor",
40
+ "donec",
41
+ "dui",
42
+ "duis",
43
+ "efficitur",
44
+ "egestas",
45
+ "eget",
46
+ "eleifend",
47
+ "elementum",
48
+ "elit",
49
+ "enim",
50
+ "erat",
51
+ "eros",
52
+ "est",
53
+ "et",
54
+ "eu",
55
+ "euismod",
56
+ "ex",
57
+ "facilisis",
58
+ "faucibus",
59
+ "felis",
60
+ "feugiat",
61
+ "finibus",
62
+ "fringilla",
63
+ "fusce",
64
+ "gravida",
65
+ "habitasse",
66
+ "hac",
67
+ "hendrerit",
68
+ "iaculis",
69
+ "id",
70
+ "imperdiet",
71
+ "in",
72
+ "integer",
73
+ "interdum",
74
+ "ipsum",
75
+ "justo",
76
+ "lacinia",
77
+ "lacus",
78
+ "laoreet",
79
+ "lectus",
80
+ "leo",
81
+ "libero",
82
+ "ligula",
83
+ "lobortis",
84
+ "lorem",
85
+ "luctus",
86
+ "maecenas",
87
+ "magna",
88
+ "malesuada",
89
+ "massa",
90
+ "mattis",
91
+ "mauris",
92
+ "maximus",
93
+ "metus",
94
+ "mi",
95
+ "molestie",
96
+ "mollis",
97
+ "morbi",
98
+ "nam",
99
+ "nec",
100
+ "neque",
101
+ "nibh",
102
+ "nisi",
103
+ "nisl",
104
+ "non",
105
+ "nulla",
106
+ "nullam",
107
+ "nunc",
108
+ "odio",
109
+ "orci",
110
+ "ornare",
111
+ "pellentesque",
112
+ "pharetra",
113
+ "phasellus",
114
+ "placerat",
115
+ "platea",
116
+ "porta",
117
+ "porttitor",
118
+ "posuere",
119
+ "praesent",
120
+ "pulvinar",
121
+ "purus",
122
+ "quam",
123
+ "quis",
124
+ "quisque",
125
+ "risus",
126
+ "rutrum",
127
+ "sagittis",
128
+ "sapien",
129
+ "sed",
130
+ "sem",
131
+ "semper",
132
+ "sit",
133
+ "sodales",
134
+ "sollicitudin",
135
+ "suscipit",
136
+ "suspendisse",
137
+ "tellus",
138
+ "tempor",
139
+ "tempus",
140
+ "tincidunt",
141
+ "tortor",
142
+ "tristique",
143
+ "turpis",
144
+ "ultrices",
145
+ "ultricies",
146
+ "urna",
147
+ "ut",
148
+ "vehicula",
149
+ "vel",
150
+ "velit",
151
+ "venenatis",
152
+ "vestibulum",
153
+ "vitae",
154
+ "vivamus",
155
+ "viverra",
156
+ "volutpat",
157
+ "vulputate"
158
+ ];
159
+ LoremIpsum2.generateSentence = (wordCount) => {
160
+ const resultArr = [];
161
+ let currentWordCound = wordCount;
162
+ for (let i = 0; i < currentWordCound; i++) {
163
+ const picked = Arrays.randomPick(LoremIpsum2.words);
164
+ if (typeof picked === "string") resultArr.push(picked);
165
+ else {
166
+ currentWordCound += 1;
167
+ }
168
+ }
169
+ const [firstWord, ...otherWords] = resultArr;
170
+ if (firstWord === void 0) return "";
171
+ const capFirstLetter = firstWord?.charAt(0).toUpperCase();
172
+ const restOfFirstWord = firstWord?.slice(1);
173
+ const sentence = [
174
+ `${capFirstLetter}${restOfFirstWord}`,
175
+ ...otherWords
176
+ ].join(" ");
177
+ return `${sentence}.`;
178
+ };
179
+ LoremIpsum2.generateSentences = (sentencesCount, maxSentenceLength = 12, minSentenceLength = 4) => {
180
+ const sentences = [];
181
+ for (let i = 0; i < sentencesCount; i++) {
182
+ const length = Random.randomInt(maxSentenceLength, minSentenceLength) ?? 8;
183
+ sentences.push((0, LoremIpsum2.generateSentence)(length));
184
+ }
185
+ return sentences;
186
+ };
187
+ })(LoremIpsum || (LoremIpsum = {}));
188
+
189
+ export {
190
+ LoremIpsum
191
+ };
@@ -0,0 +1,98 @@
1
+ import {
2
+ extractColorsFromImage
3
+ } from "./chunk-ZRWVPWQC.js";
4
+ import {
5
+ clamp
6
+ } from "./chunk-OSAXBA7G.js";
7
+ import {
8
+ saturateColor
9
+ } from "./chunk-PXRLKO5Y.js";
10
+ import {
11
+ complementColor
12
+ } from "./chunk-2POD3TAX.js";
13
+ import {
14
+ lightenColor
15
+ } from "./chunk-3LAWRHHB.js";
16
+ import {
17
+ shuffle
18
+ } from "./chunk-VJJIYJMY.js";
19
+
20
+ // src/node/images/transform/operations/_utils/frame/create-color-palette/index.ts
21
+ function densifyPalette(RGBColors, types, ligthenIntensity, saturateIntensity) {
22
+ const densifiedPalette = [];
23
+ const complementaryRGBColors = RGBColors.map((color) => complementColor(color));
24
+ if (!types) {
25
+ return RGBColors;
26
+ }
27
+ if (types.includes("default")) {
28
+ densifiedPalette.push(...RGBColors);
29
+ }
30
+ if (types.includes("default-lighten")) {
31
+ densifiedPalette.push(...RGBColors.map((RGBColor) => lightenColor(RGBColor, ligthenIntensity || 0)));
32
+ }
33
+ if (types.includes("default-saturate")) {
34
+ densifiedPalette.push(...RGBColors.map((RGBColor) => saturateColor(RGBColor, saturateIntensity)));
35
+ }
36
+ if (types.includes("complementary")) {
37
+ densifiedPalette.push(...complementaryRGBColors);
38
+ }
39
+ if (types.includes("complementary-lighten")) {
40
+ densifiedPalette.push(...complementaryRGBColors.map((RGBColor) => lightenColor(RGBColor, ligthenIntensity || 0)));
41
+ }
42
+ if (types.includes("complementary-saturate")) {
43
+ densifiedPalette.push(...RGBColors.map((RGBColor) => saturateColor(RGBColor, saturateIntensity)));
44
+ }
45
+ return densifiedPalette;
46
+ }
47
+ function createColorPalette(image, createPalette) {
48
+ if (!createPalette) {
49
+ return [
50
+ [0, 0, 0],
51
+ [0, 0, 0],
52
+ [0, 0, 0],
53
+ [0, 0, 0],
54
+ [0, 0, 0]
55
+ ];
56
+ }
57
+ const colorPalette = [];
58
+ if ("extract" in createPalette && createPalette.extract) {
59
+ colorPalette.push(
60
+ ...extractColorsFromImage(
61
+ {
62
+ buffer: image.buffer,
63
+ dimensions: image.dimensions,
64
+ nbChannels: image.nbChannels
65
+ },
66
+ createPalette.extract.nbColor
67
+ )
68
+ );
69
+ }
70
+ if ("use" in createPalette && createPalette.use) {
71
+ colorPalette.push(...createPalette.use.RGBColors);
72
+ }
73
+ if ("densify" in createPalette && createPalette.densify) {
74
+ colorPalette.push(
75
+ ...densifyPalette(
76
+ colorPalette,
77
+ createPalette.densify.types,
78
+ createPalette.densify.ligthenIntensity,
79
+ createPalette.densify.saturateIntensity
80
+ )
81
+ );
82
+ }
83
+ if ("compose" in createPalette && createPalette.compose) {
84
+ if ("nbColor" in createPalette.compose) {
85
+ const maxNbColor = createPalette.compose.nbColor ? clamp(createPalette.compose.nbColor, 0, colorPalette.length) : colorPalette.length;
86
+ colorPalette.splice(0, maxNbColor);
87
+ }
88
+ if ("mix" in createPalette.compose) {
89
+ return shuffle(colorPalette);
90
+ }
91
+ }
92
+ return colorPalette;
93
+ }
94
+
95
+ export {
96
+ densifyPalette,
97
+ createColorPalette
98
+ };
@@ -0,0 +1,18 @@
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/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
+ };