@design-edito/tools 0.1.63 → 0.1.64

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 (132) hide show
  1. package/agnostic/arrays/index.js +4 -4
  2. package/agnostic/css/index.js +6 -6
  3. package/agnostic/html/hyper-json/cast/index.js +3 -3
  4. package/agnostic/html/hyper-json/index.js +4 -4
  5. package/agnostic/html/hyper-json/smart-tags/coalesced/add/index.js +3 -3
  6. package/agnostic/html/hyper-json/smart-tags/coalesced/addclass/index.js +3 -3
  7. package/agnostic/html/hyper-json/smart-tags/coalesced/and/index.js +3 -3
  8. package/agnostic/html/hyper-json/smart-tags/coalesced/append/index.js +3 -3
  9. package/agnostic/html/hyper-json/smart-tags/coalesced/at/index.js +3 -3
  10. package/agnostic/html/hyper-json/smart-tags/coalesced/call/index.js +3 -3
  11. package/agnostic/html/hyper-json/smart-tags/coalesced/clone/index.js +3 -3
  12. package/agnostic/html/hyper-json/smart-tags/coalesced/deleteproperties/index.js +3 -3
  13. package/agnostic/html/hyper-json/smart-tags/coalesced/equals/index.js +3 -3
  14. package/agnostic/html/hyper-json/smart-tags/coalesced/getattribute/index.js +3 -3
  15. package/agnostic/html/hyper-json/smart-tags/coalesced/getproperties/index.js +3 -3
  16. package/agnostic/html/hyper-json/smart-tags/coalesced/getproperty/index.js +3 -3
  17. package/agnostic/html/hyper-json/smart-tags/coalesced/if/index.js +3 -3
  18. package/agnostic/html/hyper-json/smart-tags/coalesced/initialize/index.js +3 -3
  19. package/agnostic/html/hyper-json/smart-tags/coalesced/join/index.js +3 -3
  20. package/agnostic/html/hyper-json/smart-tags/coalesced/length/index.js +3 -3
  21. package/agnostic/html/hyper-json/smart-tags/coalesced/map/index.js +3 -3
  22. package/agnostic/html/hyper-json/smart-tags/coalesced/negate/index.js +3 -3
  23. package/agnostic/html/hyper-json/smart-tags/coalesced/notrailing/index.js +3 -3
  24. package/agnostic/html/hyper-json/smart-tags/coalesced/or/index.js +3 -3
  25. package/agnostic/html/hyper-json/smart-tags/coalesced/pickrandom/index.js +3 -3
  26. package/agnostic/html/hyper-json/smart-tags/coalesced/populate/index.js +3 -3
  27. package/agnostic/html/hyper-json/smart-tags/coalesced/print/index.js +3 -3
  28. package/agnostic/html/hyper-json/smart-tags/coalesced/push/index.js +3 -3
  29. package/agnostic/html/hyper-json/smart-tags/coalesced/pusheach/index.js +3 -3
  30. package/agnostic/html/hyper-json/smart-tags/coalesced/recordtoarray/index.js +3 -3
  31. package/agnostic/html/hyper-json/smart-tags/coalesced/removeattribute/index.js +3 -3
  32. package/agnostic/html/hyper-json/smart-tags/coalesced/removeclass/index.js +3 -3
  33. package/agnostic/html/hyper-json/smart-tags/coalesced/renameproperty/index.js +3 -3
  34. package/agnostic/html/hyper-json/smart-tags/coalesced/replace/index.js +3 -3
  35. package/agnostic/html/hyper-json/smart-tags/coalesced/select/index.js +3 -3
  36. package/agnostic/html/hyper-json/smart-tags/coalesced/set/index.js +3 -3
  37. package/agnostic/html/hyper-json/smart-tags/coalesced/setattribute/index.js +3 -3
  38. package/agnostic/html/hyper-json/smart-tags/coalesced/setproperty/index.js +3 -3
  39. package/agnostic/html/hyper-json/smart-tags/coalesced/sorton/index.js +3 -3
  40. package/agnostic/html/hyper-json/smart-tags/coalesced/split/index.js +3 -3
  41. package/agnostic/html/hyper-json/smart-tags/coalesced/spread/index.js +3 -3
  42. package/agnostic/html/hyper-json/smart-tags/coalesced/toarray/index.js +3 -3
  43. package/agnostic/html/hyper-json/smart-tags/coalesced/toboolean/index.js +3 -3
  44. package/agnostic/html/hyper-json/smart-tags/coalesced/toelement/index.js +3 -3
  45. package/agnostic/html/hyper-json/smart-tags/coalesced/toggleclass/index.js +3 -3
  46. package/agnostic/html/hyper-json/smart-tags/coalesced/tonodelist/index.js +3 -3
  47. package/agnostic/html/hyper-json/smart-tags/coalesced/tonull/index.js +3 -3
  48. package/agnostic/html/hyper-json/smart-tags/coalesced/tonumber/index.js +3 -3
  49. package/agnostic/html/hyper-json/smart-tags/coalesced/torecord/index.js +3 -3
  50. package/agnostic/html/hyper-json/smart-tags/coalesced/toref/index.js +3 -3
  51. package/agnostic/html/hyper-json/smart-tags/coalesced/tostring/index.js +3 -3
  52. package/agnostic/html/hyper-json/smart-tags/coalesced/totext/index.js +3 -3
  53. package/agnostic/html/hyper-json/smart-tags/coalesced/transformselected/index.js +3 -3
  54. package/agnostic/html/hyper-json/smart-tags/coalesced/trim/index.js +3 -3
  55. package/agnostic/html/hyper-json/smart-tags/isolated/boolean/index.js +3 -3
  56. package/agnostic/html/hyper-json/smart-tags/isolated/element/index.js +3 -3
  57. package/agnostic/html/hyper-json/smart-tags/isolated/get/index.js +3 -3
  58. package/agnostic/html/hyper-json/smart-tags/isolated/global/index.js +3 -3
  59. package/agnostic/html/hyper-json/smart-tags/isolated/guess/index.js +3 -3
  60. package/agnostic/html/hyper-json/smart-tags/isolated/nodelist/index.js +3 -3
  61. package/agnostic/html/hyper-json/smart-tags/isolated/number/index.js +3 -3
  62. package/agnostic/html/hyper-json/smart-tags/isolated/record/index.js +3 -3
  63. package/agnostic/html/hyper-json/smart-tags/isolated/ref/index.js +3 -3
  64. package/agnostic/html/hyper-json/smart-tags/isolated/string/index.js +3 -3
  65. package/agnostic/html/hyper-json/smart-tags/isolated/text/index.js +3 -3
  66. package/agnostic/html/hyper-json/tree/index.js +3 -3
  67. package/agnostic/html/hyper-json/utils/index.js +3 -3
  68. package/agnostic/html/index.js +7 -7
  69. package/agnostic/misc/index.js +26 -26
  70. package/agnostic/misc/logs/index.js +2 -2
  71. package/agnostic/misc/lorem-ipsum/index.js +8 -8
  72. package/agnostic/numbers/index.js +3 -3
  73. package/agnostic/objects/index.js +14 -14
  74. package/agnostic/optim/index.js +3 -3
  75. package/agnostic/strings/index.js +12 -12
  76. package/agnostic/time/index.js +3 -3
  77. package/chunks/chunk-46HTGOCE.js +56 -0
  78. package/chunks/chunk-55MT7BMY.js +16 -0
  79. package/chunks/chunk-5J7H5WYC.js +82 -0
  80. package/chunks/chunk-5JAITHS2.js +48 -0
  81. package/chunks/chunk-7SS2R4B6.js +82 -0
  82. package/chunks/chunk-D5E2CIDK.js +20 -0
  83. package/chunks/chunk-ECWDSMDZ.js +20 -0
  84. package/chunks/chunk-JLXITDAV.js +48 -0
  85. package/chunks/chunk-JYYW4KOZ.js +72 -0
  86. package/chunks/chunk-LVBXPZUO.js +104 -0
  87. package/chunks/chunk-NOBTN4IW.js +4471 -0
  88. package/chunks/chunk-OSCBZIZF.js +28 -0
  89. package/chunks/chunk-OXV3LVNK.js +191 -0
  90. package/chunks/chunk-R6F2MFZZ.js +173 -0
  91. package/chunks/chunk-TC7A4P5S.js +34 -0
  92. package/chunks/chunk-VLHSIIPO.js +20 -0
  93. package/chunks/chunk-WO2R3QFK.js +20 -0
  94. package/chunks/chunk-X4XXZ44B.js +37 -0
  95. package/chunks/chunk-YSDPTGYO.js +31 -0
  96. package/chunks/chunk-YUJJEKYY.js +144 -0
  97. package/chunks/chunk-YZYA7LFK.js +20 -0
  98. package/node/@aws-s3/index.js +3 -3
  99. package/node/@aws-s3/storage/file/index.js +4 -4
  100. package/node/@aws-s3/storage/index.js +3 -3
  101. package/node/@design-edito/index.js +2 -2
  102. package/node/@design-edito/thumbnails/colors/index.d.ts +7 -4
  103. package/node/@design-edito/thumbnails/colors/index.js +7 -3
  104. package/node/@design-edito/thumbnails/index.js +4 -4
  105. package/node/@google-cloud/index.js +11 -11
  106. package/node/@google-cloud/storage/file/index.js +18 -18
  107. package/node/@google-cloud/storage/file/revoke-signed-urls/index.js +2 -2
  108. package/node/@google-cloud/storage/index.js +13 -13
  109. package/node/cloud-storage/index.js +13 -13
  110. package/node/cloud-storage/operations/download/index.js +3 -3
  111. package/node/cloud-storage/operations/index.js +11 -11
  112. package/node/cloud-storage/operations/upload/index.js +3 -3
  113. package/node/files/index.js +4 -4
  114. package/node/ftps/file/index.js +4 -4
  115. package/node/ftps/index.js +2 -2
  116. package/node/images/index.js +9 -5
  117. package/node/images/prepare/index.js +9 -5
  118. package/node/images/transform/index.d.ts +4 -205
  119. package/node/images/transform/index.js +8 -6
  120. package/node/images/transform/operations/area-composition/area-line-composition/index.d.ts +19 -0
  121. package/node/images/transform/operations/area-composition/area-line-composition/index.js +14 -0
  122. package/node/images/transform/operations/area-composition/area-tile-composition/index.d.ts +30 -0
  123. package/node/images/transform/operations/area-composition/area-tile-composition/index.js +15 -0
  124. package/node/images/transform/operations/area-composition/index.d.ts +31 -0
  125. package/node/images/transform/operations/area-composition/index.js +15 -0
  126. package/node/images/transform/operations/index.d.ts +207 -0
  127. package/node/images/transform/operations/index.js +21 -0
  128. package/node/images/transform/operations/inner-resize/index.d.ts +25 -0
  129. package/node/images/transform/operations/inner-resize/index.js +13 -0
  130. package/node/sftp/file/index.js +4 -4
  131. package/node/sftp/index.js +2 -2
  132. package/package.json +1 -1
@@ -0,0 +1,16 @@
1
+ import {
2
+ file_exports
3
+ } from "./chunk-D5E2CIDK.js";
4
+ import {
5
+ __export
6
+ } from "./chunk-WSFCRVEQ.js";
7
+
8
+ // src/node/@aws-s3/storage/index.ts
9
+ var storage_exports = {};
10
+ __export(storage_exports, {
11
+ File: () => file_exports
12
+ });
13
+
14
+ export {
15
+ storage_exports
16
+ };
@@ -0,0 +1,82 @@
1
+ import {
2
+ thumbnails_exports
3
+ } from "./chunk-OSCBZIZF.js";
4
+
5
+ // src/node/images/transform/operations/inner-resize/index.ts
6
+ import sharp from "sharp";
7
+ async function innerResize(imageSharp, params) {
8
+ const imageMetadata = await imageSharp.metadata();
9
+ const inputDimensions = {
10
+ width: imageMetadata.width || 0,
11
+ height: imageMetadata.height || 0
12
+ };
13
+ const outputDimensions = params.outputDimensions ? params.outputDimensions : {
14
+ width: inputDimensions.width,
15
+ height: inputDimensions.height
16
+ };
17
+ const ratio = (params.innerRatio || 100) / 100;
18
+ const innerDimensions = {
19
+ width: Math.floor(outputDimensions.width * ratio),
20
+ height: Math.floor(outputDimensions.height * ratio)
21
+ };
22
+ const innerContainedDimensions = thumbnails_exports.Layout.getContainedDimensions(innerDimensions.width, innerDimensions.height, outputDimensions.width, outputDimensions.height, true);
23
+ const innerPositions = getInnerPositions(params.innerGravity || "center", { w: innerDimensions.width, h: innerDimensions.height }, innerContainedDimensions, { w: outputDimensions.width, h: outputDimensions.height });
24
+ const background = { r: 255, g: 255, b: 255, alpha: 0 };
25
+ const resizedSharp = imageSharp.toFormat("png").resize({
26
+ width: innerDimensions.width,
27
+ height: innerDimensions.height,
28
+ fit: sharp.fit.contain,
29
+ background
30
+ });
31
+ const composedSharp = sharp({
32
+ create: {
33
+ background,
34
+ width: outputDimensions.width,
35
+ height: outputDimensions.height,
36
+ channels: 4
37
+ }
38
+ }).ensureAlpha(0).composite([
39
+ {
40
+ input: await resizedSharp.toFormat("png").toBuffer(),
41
+ left: Math.floor(innerPositions.x),
42
+ top: Math.floor(innerPositions.y)
43
+ }
44
+ ]).toFormat("png");
45
+ return {
46
+ sharp: composedSharp,
47
+ transformation: {
48
+ width: innerContainedDimensions.w,
49
+ height: innerContainedDimensions.h,
50
+ x: Math.ceil(innerPositions.x),
51
+ y: Math.ceil(innerPositions.y)
52
+ }
53
+ };
54
+ }
55
+ function getInnerPositions(innerGravity, innerDimensions, innerContainedDimensions, outerDimension) {
56
+ switch (innerGravity) {
57
+ case "top-left":
58
+ return thumbnails_exports.Layout.alignTopLeft(innerDimensions, innerContainedDimensions, outerDimension);
59
+ case "top-center":
60
+ return thumbnails_exports.Layout.alignTopCenter(innerDimensions, innerContainedDimensions, outerDimension);
61
+ case "top-right":
62
+ return thumbnails_exports.Layout.alignTopRight(innerDimensions, innerContainedDimensions, outerDimension);
63
+ case "left-center":
64
+ return thumbnails_exports.Layout.alignLeftCenter(innerDimensions, innerContainedDimensions, outerDimension);
65
+ case "center":
66
+ return thumbnails_exports.Layout.alignCenter(innerDimensions, innerContainedDimensions, outerDimension);
67
+ case "right-center":
68
+ return thumbnails_exports.Layout.alignRightCenter(innerDimensions, innerContainedDimensions, outerDimension);
69
+ case "bottom-left":
70
+ return thumbnails_exports.Layout.alignBottomLeft(innerDimensions, innerContainedDimensions, outerDimension);
71
+ case "bottom-center":
72
+ return thumbnails_exports.Layout.alignBottomCenter(innerDimensions, innerContainedDimensions, outerDimension);
73
+ case "bottom-right":
74
+ return thumbnails_exports.Layout.alignBottomRight(innerDimensions, innerDimensions, outerDimension);
75
+ default:
76
+ return { x: 0, y: 0 };
77
+ }
78
+ }
79
+
80
+ export {
81
+ innerResize
82
+ };
@@ -0,0 +1,48 @@
1
+ import {
2
+ upload
3
+ } from "./chunk-KH5JTC2N.js";
4
+ import {
5
+ upload as upload4
6
+ } from "./chunk-AZLVQV5A.js";
7
+ import {
8
+ upload as upload2
9
+ } from "./chunk-N5QAGJXV.js";
10
+ import {
11
+ upload as upload3
12
+ } from "./chunk-AIESW26U.js";
13
+ import {
14
+ s3IdentifierData
15
+ } from "./chunk-CMWR77VW.js";
16
+ import {
17
+ Outcome
18
+ } from "./chunk-JMU5PDBD.js";
19
+ import {
20
+ __export
21
+ } from "./chunk-WSFCRVEQ.js";
22
+
23
+ // src/node/cloud-storage/operations/upload/index.ts
24
+ var upload_exports = {};
25
+ __export(upload_exports, {
26
+ upload: () => upload5
27
+ });
28
+ import { Bucket } from "@google-cloud/storage";
29
+ import { S3 } from "aws-sdk";
30
+ import { Client as FtpClient } from "basic-ftp";
31
+ import SftpClient from "ssh2-sftp-client";
32
+ async function upload5(fileReadable, targetPath, endpointType, endpointIdentifier, client) {
33
+ if (endpointType === "gcs-bucket" /* GCS */ && client instanceof Bucket) return await upload(fileReadable, targetPath, client);
34
+ if (endpointType === "s3-bucket" /* S3 */ && client instanceof S3) {
35
+ const { bucketName } = s3IdentifierData(endpointIdentifier);
36
+ if (bucketName === null) return Outcome.makeFailure("Invalid S3 bucket name");
37
+ return await upload2(fileReadable, targetPath, bucketName, client);
38
+ }
39
+ if (endpointType === "ftp" /* FTP */ && client instanceof FtpClient) return await upload3(fileReadable, targetPath, client);
40
+ if (endpointType === "ftps" /* FTPS */ && client instanceof FtpClient) return await upload3(fileReadable, targetPath, client);
41
+ if (endpointType === "sftp" /* SFTP */ && client instanceof SftpClient) return await upload4(fileReadable, targetPath, client);
42
+ return Outcome.makeFailure("Invalid endpoint or client type");
43
+ }
44
+
45
+ export {
46
+ upload5 as upload,
47
+ upload_exports
48
+ };
@@ -0,0 +1,82 @@
1
+ import {
2
+ thumbnails_exports
3
+ } from "./chunk-OSCBZIZF.js";
4
+
5
+ // src/node/images/transform/operations/area-composition/area-tile-composition/index.ts
6
+ import sharp from "sharp";
7
+ function getCreateSharpShape(dimensions, background) {
8
+ return {
9
+ width: Math.round(dimensions.w),
10
+ height: Math.round(dimensions.h),
11
+ channels: 4,
12
+ background: { r: background[0], g: background[1], b: background[2], alpha: 1 }
13
+ };
14
+ }
15
+ function getSharpTilesInputs(tiles, palette) {
16
+ let usedColorsIndexes = [];
17
+ const paletteLength = palette.length;
18
+ const getUnusedColorIndex = () => {
19
+ const paletteIndex = thumbnails_exports.Common.randomInt(paletteLength);
20
+ resetUnusedColorIndexesIfNeeded();
21
+ if (usedColorsIndexes.includes(paletteIndex)) {
22
+ return getUnusedColorIndex();
23
+ }
24
+ usedColorsIndexes.push(paletteIndex);
25
+ return paletteIndex;
26
+ };
27
+ const resetUnusedColorIndexesIfNeeded = () => {
28
+ if (usedColorsIndexes.length !== paletteLength) {
29
+ return;
30
+ }
31
+ usedColorsIndexes = [];
32
+ };
33
+ return tiles.map((tile) => {
34
+ const paletteIndex = getUnusedColorIndex();
35
+ const color = palette[paletteIndex];
36
+ if (!color) {
37
+ return;
38
+ }
39
+ return {
40
+ top: Math.round(tile.y),
41
+ left: Math.round(tile.x),
42
+ input: sharp(
43
+ {
44
+ create: getCreateSharpShape(tile, color)
45
+ }
46
+ )
47
+ };
48
+ }).filter((sharpShape) => sharpShape !== void 0);
49
+ }
50
+ async function areaTileCompose(inputSharp, composition, options) {
51
+ const shapesLayout = thumbnails_exports.Layout.packAreasAndTiles(
52
+ options.innerTransformation,
53
+ options.outputDimensions,
54
+ composition.params.coverage,
55
+ { A: composition.params.densityA, B: composition.params.densityB },
56
+ { X: composition.params.xEasing, Y: composition.params.yEasing }
57
+ );
58
+ const sharpShapes = getSharpTilesInputs(shapesLayout, options.palette);
59
+ const sharpShapesForComposite = [];
60
+ for await (const sharpShape of sharpShapes) {
61
+ ;
62
+ sharpShapesForComposite.push({
63
+ input: await sharpShape.input.toFormat("png").toBuffer(),
64
+ left: sharpShape.left,
65
+ top: sharpShape.top
66
+ });
67
+ }
68
+ return [
69
+ {
70
+ input: await inputSharp.png({ quality: 100 }).toBuffer(),
71
+ /* Converting to png to handle alpha */
72
+ left: 0,
73
+ top: 0
74
+ },
75
+ ...sharpShapesForComposite
76
+ ];
77
+ }
78
+
79
+ export {
80
+ getSharpTilesInputs,
81
+ areaTileCompose
82
+ };
@@ -0,0 +1,20 @@
1
+ import {
2
+ upload_exports
3
+ } from "./chunk-N5QAGJXV.js";
4
+ import {
5
+ download_exports
6
+ } from "./chunk-7N7BJA6C.js";
7
+ import {
8
+ __export
9
+ } from "./chunk-WSFCRVEQ.js";
10
+
11
+ // src/node/@aws-s3/storage/file/index.ts
12
+ var file_exports = {};
13
+ __export(file_exports, {
14
+ Download: () => download_exports,
15
+ Upload: () => upload_exports
16
+ });
17
+
18
+ export {
19
+ file_exports
20
+ };
@@ -0,0 +1,20 @@
1
+ import {
2
+ upload_exports
3
+ } from "./chunk-5JAITHS2.js";
4
+ import {
5
+ download_exports
6
+ } from "./chunk-JLXITDAV.js";
7
+ import {
8
+ __export
9
+ } from "./chunk-WSFCRVEQ.js";
10
+
11
+ // src/node/cloud-storage/operations/index.ts
12
+ var operations_exports = {};
13
+ __export(operations_exports, {
14
+ Download: () => download_exports,
15
+ Upload: () => upload_exports
16
+ });
17
+
18
+ export {
19
+ operations_exports
20
+ };
@@ -0,0 +1,48 @@
1
+ import {
2
+ download
3
+ } from "./chunk-6WVNJVBE.js";
4
+ import {
5
+ download as download4
6
+ } from "./chunk-OD33BN4K.js";
7
+ import {
8
+ download as download2
9
+ } from "./chunk-7N7BJA6C.js";
10
+ import {
11
+ download as download3
12
+ } from "./chunk-UJN2WZGO.js";
13
+ import {
14
+ s3IdentifierData
15
+ } from "./chunk-CMWR77VW.js";
16
+ import {
17
+ Outcome
18
+ } from "./chunk-JMU5PDBD.js";
19
+ import {
20
+ __export
21
+ } from "./chunk-WSFCRVEQ.js";
22
+
23
+ // src/node/cloud-storage/operations/download/index.ts
24
+ var download_exports = {};
25
+ __export(download_exports, {
26
+ download: () => download5
27
+ });
28
+ import { Bucket } from "@google-cloud/storage";
29
+ import { S3 } from "aws-sdk";
30
+ import { Client as FtpClient } from "basic-ftp";
31
+ import SftpClient from "ssh2-sftp-client";
32
+ async function download5(targetPath, endpointType, endpointIdentifier, client) {
33
+ if (endpointType === "gcs-bucket" /* GCS */ && client instanceof Bucket) return await download(targetPath, client);
34
+ if (endpointType === "s3-bucket" /* S3 */ && client instanceof S3) {
35
+ const { bucketName } = s3IdentifierData(endpointIdentifier);
36
+ if (bucketName === null) return Outcome.makeFailure("Invalid S3 bucket name");
37
+ return await download2(targetPath, bucketName, client);
38
+ }
39
+ if (endpointType === "ftp" /* FTP */ && client instanceof FtpClient) return await download3(targetPath, client);
40
+ if (endpointType === "ftps" /* FTPS */ && client instanceof FtpClient) return await download3(targetPath, client);
41
+ if (endpointType === "sftp" /* SFTP */ && client instanceof SftpClient) return await download4(targetPath, client);
42
+ return Outcome.makeFailure("Invalid endpoint or client type");
43
+ }
44
+
45
+ export {
46
+ download5 as download,
47
+ download_exports
48
+ };
@@ -0,0 +1,72 @@
1
+ import {
2
+ colors_exports
3
+ } from "./chunk-YUJJEKYY.js";
4
+
5
+ // src/node/images/transform/operations/area-composition/area-line-composition/index.ts
6
+ var DEFAULT_COMPOSITION_LINE_PARAMS = {
7
+ nbLines: 3,
8
+ colors: {
9
+ base: "first",
10
+ primary: [],
11
+ secondary: []
12
+ }
13
+ };
14
+ async function areaLineCompose(inputSharp, composition, options) {
15
+ const lineDimensions = {
16
+ w: options.outputDimensions.w,
17
+ h: Math.round(options.outputDimensions.h / composition.params.nbLines)
18
+ };
19
+ const sharpShapes = [];
20
+ const maxPaletteLength = options.palette.length;
21
+ const baseColorIndex = composition.params.colors.base === "first" ? 0 : composition.params.colors.base === "last" ? options.palette.length - 1 : composition.params.colors.base;
22
+ for (let i = 0; i < composition.params.nbLines; i++) {
23
+ const indexPalette = Math.min(Math.max(0, baseColorIndex), maxPaletteLength);
24
+ const primaryColor = getTransformedColor(options.palette[indexPalette], composition.params.colors.primary);
25
+ const secondaryColor = getTransformedColor(options.palette[indexPalette], composition.params.colors.secondary);
26
+ const outputColor = i % 2 === 0 ? primaryColor : secondaryColor;
27
+ const top = Math.min(lineDimensions.h * i, options.outputDimensions.h);
28
+ sharpShapes.push({
29
+ input: {
30
+ create: {
31
+ width: lineDimensions.w,
32
+ height: i === composition.params.nbLines - 1 ? options.outputDimensions.h - top : lineDimensions.h,
33
+ channels: 4,
34
+ background: { r: outputColor[0], g: outputColor[1], b: outputColor[2], alpha: 1 }
35
+ }
36
+ },
37
+ left: 0,
38
+ top
39
+ });
40
+ }
41
+ return [
42
+ ...sharpShapes,
43
+ {
44
+ input: await inputSharp.png({ quality: 100 }).toBuffer(),
45
+ /* Converting to png to handle alpha */
46
+ left: 0,
47
+ top: 0
48
+ }
49
+ ];
50
+ }
51
+ function getTransformedColor(color, transformation) {
52
+ let transformedColor = color;
53
+ transformation.forEach((transformation2) => {
54
+ transformedColor = transformColor(transformedColor, transformation2);
55
+ });
56
+ return transformedColor;
57
+ }
58
+ function transformColor(color, transformation) {
59
+ switch (transformation.type) {
60
+ case "saturate":
61
+ return transformation.intensityMode === "add" ? colors_exports.saturateColor(color, transformation.intensity) : colors_exports.setColorSaturation(color, transformation.intensity);
62
+ case "lighten":
63
+ return transformation.intensityMode === "add" ? colors_exports.lightenColor(color, transformation.intensity) : colors_exports.setColorLuminance(color, transformation.intensity);
64
+ case "complement":
65
+ return colors_exports.complementColor(color);
66
+ }
67
+ }
68
+
69
+ export {
70
+ DEFAULT_COMPOSITION_LINE_PARAMS,
71
+ areaLineCompose
72
+ };
@@ -0,0 +1,104 @@
1
+ import {
2
+ exportZipBuffer,
3
+ prepareExport
4
+ } from "./chunk-5RGHYFQH.js";
5
+ import {
6
+ transformImage
7
+ } from "./chunk-TC7A4P5S.js";
8
+ import {
9
+ thumbnails_exports
10
+ } from "./chunk-OSCBZIZF.js";
11
+ import {
12
+ __export
13
+ } from "./chunk-WSFCRVEQ.js";
14
+
15
+ // src/node/images/prepare/index.ts
16
+ var prepare_exports = {};
17
+ __export(prepare_exports, {
18
+ MAX_NB_OUTPUTS: () => MAX_NB_OUTPUTS,
19
+ OUTPUT_ZIP_FOLDER: () => OUTPUT_ZIP_FOLDER,
20
+ prepareImage: () => prepareImage
21
+ });
22
+ import sharp from "sharp";
23
+ var MAX_NB_OUTPUTS = 50;
24
+ var OUTPUT_ZIP_FOLDER = "./output-zips";
25
+ async function prepareImage(imageBuffer, customOptions) {
26
+ const sharpImage = sharp(imageBuffer);
27
+ const sharpImageMetadata = await sharpImage.metadata();
28
+ const imageBufferMetadata = {
29
+ width: sharpImageMetadata.width || 0,
30
+ height: sharpImageMetadata.height || 0,
31
+ format: sharpImageMetadata.format || "png"
32
+ };
33
+ const outputDimensions = {
34
+ widths: customOptions?.widths && customOptions?.widths.length ? customOptions?.widths : [imageBufferMetadata.width],
35
+ heights: customOptions?.heights && customOptions?.heights.length ? customOptions?.heights : [imageBufferMetadata.height]
36
+ };
37
+ const options = getOptions(imageBufferMetadata, customOptions);
38
+ const nbOutputs = options.qualities.length * (options.ratios.length + 1) * (options.widths.length + 1) * (options.heights.length + 1);
39
+ if (nbOutputs > MAX_NB_OUTPUTS) {
40
+ throw Error("Nb output exceeds supported max nb output");
41
+ }
42
+ const transformedBuffer = await transformImage(imageBuffer, options.inputOperations, {
43
+ width: thumbnails_exports.Common.getArrayMax(outputDimensions.widths) || 0,
44
+ height: thumbnails_exports.Common.getArrayMax(outputDimensions.heights) || 0
45
+ });
46
+ const exportsBuffers = [{
47
+ buffer: imageBuffer,
48
+ name: generateFileName({
49
+ ...imageBufferMetadata,
50
+ quality: 100,
51
+ suffix: "original",
52
+ preffix: options.name
53
+ })
54
+ }];
55
+ for await (const width of options.widths) {
56
+ for await (const height of options.heights) {
57
+ for await (const quality of options.qualities) {
58
+ for await (const format of options.formats) {
59
+ const exportBuffer = await prepareExport(transformedBuffer, {
60
+ format,
61
+ quality,
62
+ width,
63
+ height
64
+ });
65
+ exportsBuffers.push({
66
+ buffer: exportBuffer,
67
+ name: generateFileName({ width, height, quality, format, preffix: options.name })
68
+ });
69
+ }
70
+ }
71
+ }
72
+ }
73
+ const zipBuffer = exportZipBuffer(exportsBuffers, generateZipName(options.name));
74
+ return zipBuffer;
75
+ }
76
+ function getOptions(imageBufferMetadata, options) {
77
+ return {
78
+ center: [0.5, 0.5],
79
+ qualities: [100],
80
+ inputOperations: [],
81
+ ...options,
82
+ name: options?.name || "",
83
+ formats: [imageBufferMetadata.format, ...options?.formats ? options.formats : []],
84
+ ratios: [...options?.ratios ? options.ratios : []],
85
+ widths: [imageBufferMetadata.width, ...options?.widths ? options.widths : []],
86
+ heights: [imageBufferMetadata.height, ...options?.heights ? options.heights : []]
87
+ };
88
+ }
89
+ function generateZipName(name) {
90
+ const date = /* @__PURE__ */ new Date();
91
+ return `${name || ""}_image-exports_${date.toLocaleDateString()}_${date.toLocaleTimeString()}_${date.getTime()}`.replace(/\/|:/g, "-").replace(/ /g, "").trim();
92
+ }
93
+ function generateFileName({ width, height, quality, format, suffix, preffix }) {
94
+ const _preffix = preffix ? `${preffix}_` : "image-formats_";
95
+ const _suffix = `${suffix ? `_${suffix}` : ""}.${format}`;
96
+ return `${_preffix}${width}x${height}_Q${quality}${_suffix}`;
97
+ }
98
+
99
+ export {
100
+ MAX_NB_OUTPUTS,
101
+ OUTPUT_ZIP_FOLDER,
102
+ prepareImage,
103
+ prepare_exports
104
+ };