ag-psd 30.2.0 → 31.0.1

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 (252) hide show
  1. package/.v8-cache/v24.13.1-x64-cf738c9d/01e5e61b +0 -0
  2. package/.v8-cache/v24.13.1-x64-cf738c9d/05135617 +0 -0
  3. package/.v8-cache/v24.13.1-x64-cf738c9d/06423db9 +0 -0
  4. package/.v8-cache/v24.13.1-x64-cf738c9d/06e765df +0 -0
  5. package/.v8-cache/v24.13.1-x64-cf738c9d/0930679d +0 -0
  6. package/.v8-cache/v24.13.1-x64-cf738c9d/09519a62 +0 -0
  7. package/.v8-cache/v24.13.1-x64-cf738c9d/0a6607b0 +0 -0
  8. package/.v8-cache/v24.13.1-x64-cf738c9d/0ad8fa6e +0 -0
  9. package/.v8-cache/v24.13.1-x64-cf738c9d/0d390e10 +0 -0
  10. package/.v8-cache/v24.13.1-x64-cf738c9d/0dfa7b16 +0 -0
  11. package/.v8-cache/v24.13.1-x64-cf738c9d/0e9e09db +0 -0
  12. package/.v8-cache/v24.13.1-x64-cf738c9d/1130885f +0 -0
  13. package/.v8-cache/v24.13.1-x64-cf738c9d/1222cb8c +0 -0
  14. package/.v8-cache/v24.13.1-x64-cf738c9d/15e2c039 +0 -0
  15. package/.v8-cache/v24.13.1-x64-cf738c9d/1a2d469d +0 -0
  16. package/.v8-cache/v24.13.1-x64-cf738c9d/1b300c82 +0 -0
  17. package/.v8-cache/v24.13.1-x64-cf738c9d/1bc3d370 +0 -0
  18. package/.v8-cache/v24.13.1-x64-cf738c9d/1e44e5af +0 -0
  19. package/.v8-cache/v24.13.1-x64-cf738c9d/1efa10a1 +0 -0
  20. package/.v8-cache/v24.13.1-x64-cf738c9d/1f6c8743 +0 -0
  21. package/.v8-cache/v24.13.1-x64-cf738c9d/20b27e40 +0 -0
  22. package/.v8-cache/v24.13.1-x64-cf738c9d/257c62ba +0 -0
  23. package/.v8-cache/v24.13.1-x64-cf738c9d/25d60154 +0 -0
  24. package/.v8-cache/v24.13.1-x64-cf738c9d/26f822f3 +0 -0
  25. package/.v8-cache/v24.13.1-x64-cf738c9d/2a1e2a8d +0 -0
  26. package/.v8-cache/v24.13.1-x64-cf738c9d/2b02fded +0 -0
  27. package/.v8-cache/v24.13.1-x64-cf738c9d/2c76dc0d +0 -0
  28. package/.v8-cache/v24.13.1-x64-cf738c9d/2deb286a +0 -0
  29. package/.v8-cache/v24.13.1-x64-cf738c9d/32018e44 +0 -0
  30. package/.v8-cache/v24.13.1-x64-cf738c9d/341402c3 +0 -0
  31. package/.v8-cache/v24.13.1-x64-cf738c9d/34e0fa2e +0 -0
  32. package/.v8-cache/v24.13.1-x64-cf738c9d/3bbf643e +0 -0
  33. package/.v8-cache/v24.13.1-x64-cf738c9d/3ceff89e +0 -0
  34. package/.v8-cache/v24.13.1-x64-cf738c9d/404f5cdc +0 -0
  35. package/.v8-cache/v24.13.1-x64-cf738c9d/4087aa2b +0 -0
  36. package/.v8-cache/v24.13.1-x64-cf738c9d/4376c1f9 +0 -0
  37. package/.v8-cache/v24.13.1-x64-cf738c9d/44903df4 +0 -0
  38. package/.v8-cache/v24.13.1-x64-cf738c9d/44d58dc8 +0 -0
  39. package/.v8-cache/v24.13.1-x64-cf738c9d/4511bacf +0 -0
  40. package/.v8-cache/v24.13.1-x64-cf738c9d/47da0ce8 +0 -0
  41. package/.v8-cache/v24.13.1-x64-cf738c9d/48cd54a9 +0 -0
  42. package/.v8-cache/v24.13.1-x64-cf738c9d/4d938476 +0 -0
  43. package/.v8-cache/v24.13.1-x64-cf738c9d/4ec6d390 +0 -0
  44. package/.v8-cache/v24.13.1-x64-cf738c9d/4f5702bd +0 -0
  45. package/.v8-cache/v24.13.1-x64-cf738c9d/514cc428 +0 -0
  46. package/.v8-cache/v24.13.1-x64-cf738c9d/557d3b42 +0 -0
  47. package/.v8-cache/v24.13.1-x64-cf738c9d/56abbff7 +0 -0
  48. package/.v8-cache/v24.13.1-x64-cf738c9d/57b540ee +0 -0
  49. package/.v8-cache/v24.13.1-x64-cf738c9d/5e20c081 +0 -0
  50. package/.v8-cache/v24.13.1-x64-cf738c9d/651c4ada +0 -0
  51. package/.v8-cache/v24.13.1-x64-cf738c9d/652a0d59 +0 -0
  52. package/.v8-cache/v24.13.1-x64-cf738c9d/6a0e89ee +0 -0
  53. package/.v8-cache/v24.13.1-x64-cf738c9d/6af33b91 +0 -0
  54. package/.v8-cache/v24.13.1-x64-cf738c9d/6c2562d2 +0 -0
  55. package/.v8-cache/v24.13.1-x64-cf738c9d/6dae0cfa +0 -0
  56. package/.v8-cache/v24.13.1-x64-cf738c9d/6e2529ce +0 -0
  57. package/.v8-cache/v24.13.1-x64-cf738c9d/71df9cb3 +0 -0
  58. package/.v8-cache/v24.13.1-x64-cf738c9d/72e1d543 +0 -0
  59. package/.v8-cache/v24.13.1-x64-cf738c9d/75519c80 +0 -0
  60. package/.v8-cache/v24.13.1-x64-cf738c9d/79bf115c +0 -0
  61. package/.v8-cache/v24.13.1-x64-cf738c9d/7a39347c +0 -0
  62. package/.v8-cache/v24.13.1-x64-cf738c9d/7b83e3d3 +0 -0
  63. package/.v8-cache/v24.13.1-x64-cf738c9d/7cd71bc5 +0 -0
  64. package/.v8-cache/v24.13.1-x64-cf738c9d/7da78512 +0 -0
  65. package/.v8-cache/v24.13.1-x64-cf738c9d/7ea06cea +0 -0
  66. package/.v8-cache/v24.13.1-x64-cf738c9d/82c3b573 +0 -0
  67. package/.v8-cache/v24.13.1-x64-cf738c9d/84c186e4 +0 -0
  68. package/.v8-cache/v24.13.1-x64-cf738c9d/8607bd36 +0 -0
  69. package/.v8-cache/v24.13.1-x64-cf738c9d/87372817 +0 -0
  70. package/.v8-cache/v24.13.1-x64-cf738c9d/87cf2209 +0 -0
  71. package/.v8-cache/v24.13.1-x64-cf738c9d/882aaa05 +0 -0
  72. package/.v8-cache/v24.13.1-x64-cf738c9d/8a4d3de8 +0 -0
  73. package/.v8-cache/v24.13.1-x64-cf738c9d/8e223473 +0 -0
  74. package/.v8-cache/v24.13.1-x64-cf738c9d/92b7aefd +0 -0
  75. package/.v8-cache/v24.13.1-x64-cf738c9d/932f0770 +0 -0
  76. package/.v8-cache/v24.13.1-x64-cf738c9d/937c03a1 +0 -0
  77. package/.v8-cache/v24.13.1-x64-cf738c9d/991e4758 +0 -0
  78. package/.v8-cache/v24.13.1-x64-cf738c9d/9af658fb +0 -0
  79. package/.v8-cache/v24.13.1-x64-cf738c9d/9ed80ba5 +0 -0
  80. package/.v8-cache/v24.13.1-x64-cf738c9d/9f0dc993 +0 -0
  81. package/.v8-cache/v24.13.1-x64-cf738c9d/a19c0c4f +0 -0
  82. package/.v8-cache/v24.13.1-x64-cf738c9d/a6409d95 +0 -0
  83. package/.v8-cache/v24.13.1-x64-cf738c9d/a7e80865 +0 -0
  84. package/.v8-cache/v24.13.1-x64-cf738c9d/ac9802c6 +0 -0
  85. package/.v8-cache/v24.13.1-x64-cf738c9d/acc36e66 +0 -0
  86. package/.v8-cache/v24.13.1-x64-cf738c9d/ad11e2dc +0 -0
  87. package/.v8-cache/v24.13.1-x64-cf738c9d/b0c8fcd8 +0 -0
  88. package/.v8-cache/v24.13.1-x64-cf738c9d/b1762958 +0 -0
  89. package/.v8-cache/v24.13.1-x64-cf738c9d/b3c2fab7 +0 -0
  90. package/.v8-cache/v24.13.1-x64-cf738c9d/b5b3329b +0 -0
  91. package/.v8-cache/v24.13.1-x64-cf738c9d/b806679e +0 -0
  92. package/.v8-cache/v24.13.1-x64-cf738c9d/bc1cdd48 +0 -0
  93. package/.v8-cache/v24.13.1-x64-cf738c9d/bc7ebd1d +0 -0
  94. package/.v8-cache/v24.13.1-x64-cf738c9d/c0b789d2 +0 -0
  95. package/.v8-cache/v24.13.1-x64-cf738c9d/c314aece +0 -0
  96. package/.v8-cache/v24.13.1-x64-cf738c9d/c399a5dc +0 -0
  97. package/.v8-cache/v24.13.1-x64-cf738c9d/c681cbc8 +0 -0
  98. package/.v8-cache/v24.13.1-x64-cf738c9d/c6834ffc +0 -0
  99. package/.v8-cache/v24.13.1-x64-cf738c9d/c6f12ed5 +0 -0
  100. package/.v8-cache/v24.13.1-x64-cf738c9d/cb0f0a3d +0 -0
  101. package/.v8-cache/v24.13.1-x64-cf738c9d/cbcb7c95 +0 -0
  102. package/.v8-cache/v24.13.1-x64-cf738c9d/cdd9107c +0 -0
  103. package/.v8-cache/v24.13.1-x64-cf738c9d/cdf2c4a3 +0 -0
  104. package/.v8-cache/v24.13.1-x64-cf738c9d/cfc49f4f +0 -0
  105. package/.v8-cache/v24.13.1-x64-cf738c9d/cff9434a +0 -0
  106. package/.v8-cache/v24.13.1-x64-cf738c9d/d02dd6f7 +0 -0
  107. package/.v8-cache/v24.13.1-x64-cf738c9d/d0507bf3 +0 -0
  108. package/.v8-cache/v24.13.1-x64-cf738c9d/d60fce19 +0 -0
  109. package/.v8-cache/v24.13.1-x64-cf738c9d/d733d619 +0 -0
  110. package/.v8-cache/v24.13.1-x64-cf738c9d/d75b7803 +0 -0
  111. package/.v8-cache/v24.13.1-x64-cf738c9d/dc86f000 +0 -0
  112. package/.v8-cache/v24.13.1-x64-cf738c9d/defa4f7f +0 -0
  113. package/.v8-cache/v24.13.1-x64-cf738c9d/e03e2acd +0 -0
  114. package/.v8-cache/v24.13.1-x64-cf738c9d/e0e3f52c +0 -0
  115. package/.v8-cache/v24.13.1-x64-cf738c9d/e158d332 +0 -0
  116. package/.v8-cache/v24.13.1-x64-cf738c9d/e6735171 +0 -0
  117. package/.v8-cache/v24.13.1-x64-cf738c9d/e6745c2b +0 -0
  118. package/.v8-cache/v24.13.1-x64-cf738c9d/e6b99945 +0 -0
  119. package/.v8-cache/v24.13.1-x64-cf738c9d/e6d8ceb8 +0 -0
  120. package/.v8-cache/v24.13.1-x64-cf738c9d/e7ffec37 +0 -0
  121. package/.v8-cache/v24.13.1-x64-cf738c9d/ea33b6de +0 -0
  122. package/.v8-cache/v24.13.1-x64-cf738c9d/eaafa3c4 +0 -0
  123. package/.v8-cache/v24.13.1-x64-cf738c9d/ebb50fca +0 -0
  124. package/.v8-cache/v24.13.1-x64-cf738c9d/ec805f2e +0 -0
  125. package/.v8-cache/v24.13.1-x64-cf738c9d/edaef8f1 +0 -0
  126. package/.v8-cache/v24.13.1-x64-cf738c9d/ee4401c8 +0 -0
  127. package/.v8-cache/v24.13.1-x64-cf738c9d/eeeebdfe +0 -0
  128. package/.v8-cache/v24.13.1-x64-cf738c9d/f3d51676 +0 -0
  129. package/.v8-cache/v24.13.1-x64-cf738c9d/f7b50a75 +0 -0
  130. package/.v8-cache/v24.13.1-x64-cf738c9d/fa58ca72 +0 -0
  131. package/.v8-cache/v24.13.1-x64-cf738c9d/fc97d72d +0 -0
  132. package/.v8-cache/v24.13.1-x64-cf738c9d/fd0a2987 +0 -0
  133. package/CHANGELOG.md +9 -0
  134. package/README.md +64 -0
  135. package/TODO.md +2 -0
  136. package/dist/abr.d.ts +196 -196
  137. package/dist/abr.js +364 -365
  138. package/dist/abr.js.map +1 -1
  139. package/dist/additionalInfo.d.ts +26 -26
  140. package/dist/additionalInfo.js +3478 -3478
  141. package/dist/additionalInfo.js.map +1 -1
  142. package/dist/ase.d.ts +32 -32
  143. package/dist/ase.js +81 -82
  144. package/dist/ase.js.map +1 -1
  145. package/dist/bundle.js +12380 -12259
  146. package/dist/csh.d.ts +10 -10
  147. package/dist/csh.js +35 -36
  148. package/dist/csh.js.map +1 -1
  149. package/dist/descriptor.d.ts +601 -601
  150. package/dist/descriptor.js +2003 -2003
  151. package/dist/descriptor.js.map +1 -1
  152. package/dist/effectsHelpers.d.ts +5 -5
  153. package/dist/effectsHelpers.js +286 -287
  154. package/dist/effectsHelpers.js.map +1 -1
  155. package/dist/engineData.d.ts +2 -2
  156. package/dist/engineData.js +334 -335
  157. package/dist/engineData.js.map +1 -1
  158. package/dist/engineData2.d.ts +2 -2
  159. package/dist/engineData2.js +409 -410
  160. package/dist/engineData2.js.map +1 -1
  161. package/dist/helpers.d.ts +74 -74
  162. package/dist/helpers.js +353 -342
  163. package/dist/helpers.js.map +1 -1
  164. package/dist/imageResources.d.ts +17 -17
  165. package/dist/imageResources.js +1040 -1040
  166. package/dist/imageResources.js.map +1 -1
  167. package/dist/index.d.ts +20 -22
  168. package/dist/index.js +61 -56
  169. package/dist/index.js.map +1 -1
  170. package/dist/initializeCanvas.d.ts +1 -1
  171. package/dist/initializeCanvas.js +9 -10
  172. package/dist/initializeCanvas.js.map +1 -1
  173. package/dist/jpeg.d.ts +1 -1
  174. package/dist/jpeg.js +1020 -1021
  175. package/dist/jpeg.js.map +1 -1
  176. package/dist/psd.d.ts +1877 -1873
  177. package/dist/psd.js +45 -45
  178. package/dist/psd.js.map +1 -1
  179. package/dist/psdReader.d.ts +52 -45
  180. package/dist/psdReader.js +1385 -1282
  181. package/dist/psdReader.js.map +1 -1
  182. package/dist/psdWriter.d.ts +34 -34
  183. package/dist/psdWriter.js +834 -824
  184. package/dist/psdWriter.js.map +1 -1
  185. package/dist/text.d.ts +179 -179
  186. package/dist/text.js +552 -553
  187. package/dist/text.js.map +1 -1
  188. package/dist/utf8.d.ts +4 -6
  189. package/dist/utf8.js +156 -157
  190. package/dist/utf8.js.map +1 -1
  191. package/dist-es/abr.d.ts +196 -196
  192. package/dist-es/abr.js +364 -361
  193. package/dist-es/abr.js.map +1 -1
  194. package/dist-es/additionalInfo.d.ts +26 -26
  195. package/dist-es/additionalInfo.js +3478 -3472
  196. package/dist-es/additionalInfo.js.map +1 -1
  197. package/dist-es/ase.d.ts +32 -32
  198. package/dist-es/ase.js +81 -78
  199. package/dist-es/ase.js.map +1 -1
  200. package/dist-es/csh.d.ts +10 -10
  201. package/dist-es/csh.js +35 -32
  202. package/dist-es/csh.js.map +1 -1
  203. package/dist-es/descriptor.d.ts +601 -601
  204. package/dist-es/descriptor.js +2003 -1970
  205. package/dist-es/descriptor.js.map +1 -1
  206. package/dist-es/effectsHelpers.d.ts +5 -5
  207. package/dist-es/effectsHelpers.js +286 -282
  208. package/dist-es/effectsHelpers.js.map +1 -1
  209. package/dist-es/engineData.d.ts +2 -2
  210. package/dist-es/engineData.js +334 -330
  211. package/dist-es/engineData.js.map +1 -1
  212. package/dist-es/engineData2.d.ts +2 -2
  213. package/dist-es/engineData2.js +409 -406
  214. package/dist-es/engineData2.js.map +1 -1
  215. package/dist-es/helpers.d.ts +74 -74
  216. package/dist-es/helpers.js +353 -324
  217. package/dist-es/helpers.js.map +1 -1
  218. package/dist-es/imageResources.d.ts +17 -17
  219. package/dist-es/imageResources.js +1040 -1037
  220. package/dist-es/imageResources.js.map +1 -1
  221. package/dist-es/index.d.ts +20 -22
  222. package/dist-es/index.js +61 -33
  223. package/dist-es/index.js.map +1 -1
  224. package/dist-es/initializeCanvas.d.ts +1 -1
  225. package/dist-es/initializeCanvas.js +9 -6
  226. package/dist-es/initializeCanvas.js.map +1 -1
  227. package/dist-es/jpeg.d.ts +1 -1
  228. package/dist-es/jpeg.js +1020 -1017
  229. package/dist-es/jpeg.js.map +1 -1
  230. package/dist-es/psd.d.ts +1877 -1873
  231. package/dist-es/psd.js +45 -42
  232. package/dist-es/psd.js.map +1 -1
  233. package/dist-es/psdReader.d.ts +52 -45
  234. package/dist-es/psdReader.js +1385 -1244
  235. package/dist-es/psdReader.js.map +1 -1
  236. package/dist-es/psdWriter.d.ts +34 -34
  237. package/dist-es/psdWriter.js +834 -794
  238. package/dist-es/psdWriter.js.map +1 -1
  239. package/dist-es/text.d.ts +179 -179
  240. package/dist-es/text.js +552 -548
  241. package/dist-es/text.js.map +1 -1
  242. package/dist-es/utf8.d.ts +4 -6
  243. package/dist-es/utf8.js +156 -150
  244. package/dist-es/utf8.js.map +1 -1
  245. package/package.json +4 -3
  246. package/src/helpers.ts +13 -3
  247. package/src/index.ts +4 -6
  248. package/src/psd.ts +4 -0
  249. package/src/psdReader.ts +136 -43
  250. package/src/psdWriter.ts +42 -23
  251. package/tsconfig-es6.json +2 -1
  252. package/tsconfig.json +1 -0
package/dist/helpers.js CHANGED
@@ -1,343 +1,354 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.initializeCanvas = exports.createImageData = exports.createCanvas = exports.createCanvasFromData = exports.writeDataZipWithoutPrediction = exports.writeDataRLE = exports.writeDataRaw = exports.decodeBitmap = exports.imageDataToCanvas = exports.resetImageData = exports.hasAlpha = exports.clamp = exports.offsetForChannel = exports.MaskParams = exports.LayerMaskFlags = exports.ColorSpace = exports.createEnum = exports.revMap = exports.largeAdditionalInfoKeys = exports.layerColors = exports.toBlendMode = exports.fromBlendMode = exports.RAW_IMAGE_DATA = exports.MOCK_HANDLERS = void 0;
4
- const pako_1 = require("pako");
5
- const jpeg_1 = require("./jpeg");
6
- exports.MOCK_HANDLERS = false;
7
- exports.RAW_IMAGE_DATA = false;
8
- exports.fromBlendMode = {};
9
- exports.toBlendMode = {
10
- 'pass': 'pass through',
11
- 'norm': 'normal',
12
- 'diss': 'dissolve',
13
- 'dark': 'darken',
14
- 'mul ': 'multiply',
15
- 'idiv': 'color burn',
16
- 'lbrn': 'linear burn',
17
- 'dkCl': 'darker color',
18
- 'lite': 'lighten',
19
- 'scrn': 'screen',
20
- 'div ': 'color dodge',
21
- 'lddg': 'linear dodge',
22
- 'lgCl': 'lighter color',
23
- 'over': 'overlay',
24
- 'sLit': 'soft light',
25
- 'hLit': 'hard light',
26
- 'vLit': 'vivid light',
27
- 'lLit': 'linear light',
28
- 'pLit': 'pin light',
29
- 'hMix': 'hard mix',
30
- 'diff': 'difference',
31
- 'smud': 'exclusion',
32
- 'fsub': 'subtract',
33
- 'fdiv': 'divide',
34
- 'hue ': 'hue',
35
- 'sat ': 'saturation',
36
- 'colr': 'color',
37
- 'lum ': 'luminosity',
38
- };
39
- Object.keys(exports.toBlendMode).forEach(key => exports.fromBlendMode[exports.toBlendMode[key]] = key);
40
- exports.layerColors = [
41
- 'none', 'red', 'orange', 'yellow', 'green', 'blue', 'violet', 'gray'
42
- ];
43
- exports.largeAdditionalInfoKeys = [
44
- // from documentation
45
- 'LMsk', 'Lr16', 'Lr32', 'Layr', 'Mt16', 'Mt32', 'Mtrn', 'Alph', 'FMsk', 'lnk2', 'FEid', 'FXid', 'PxSD',
46
- // from guessing
47
- 'cinf',
48
- ];
49
- function revMap(map) {
50
- const result = {};
51
- Object.keys(map).forEach(key => result[map[key]] = key);
52
- return result;
53
- }
54
- exports.revMap = revMap;
55
- function createEnum(prefix, def, map) {
56
- const rev = revMap(map);
57
- const decode = (val) => {
58
- const value = val.split('.')[1];
59
- if (value && !rev[value])
60
- throw new Error(`Unrecognized value for enum: '${val}'`);
61
- return rev[value] || def;
62
- };
63
- const encode = (val) => {
64
- if (val && !map[val])
65
- throw new Error(`Invalid value for enum: '${val}'`);
66
- return `${prefix}.${map[val] || map[def]}`;
67
- };
68
- return { decode, encode };
69
- }
70
- exports.createEnum = createEnum;
71
- var ColorSpace;
72
- (function (ColorSpace) {
73
- ColorSpace[ColorSpace["RGB"] = 0] = "RGB";
74
- ColorSpace[ColorSpace["HSB"] = 1] = "HSB";
75
- ColorSpace[ColorSpace["CMYK"] = 2] = "CMYK";
76
- ColorSpace[ColorSpace["Lab"] = 7] = "Lab";
77
- ColorSpace[ColorSpace["Grayscale"] = 8] = "Grayscale";
78
- })(ColorSpace = exports.ColorSpace || (exports.ColorSpace = {}));
79
- var LayerMaskFlags;
80
- (function (LayerMaskFlags) {
81
- LayerMaskFlags[LayerMaskFlags["PositionRelativeToLayer"] = 1] = "PositionRelativeToLayer";
82
- LayerMaskFlags[LayerMaskFlags["LayerMaskDisabled"] = 2] = "LayerMaskDisabled";
83
- LayerMaskFlags[LayerMaskFlags["InvertLayerMaskWhenBlending"] = 4] = "InvertLayerMaskWhenBlending";
84
- LayerMaskFlags[LayerMaskFlags["LayerMaskFromRenderingOtherData"] = 8] = "LayerMaskFromRenderingOtherData";
85
- LayerMaskFlags[LayerMaskFlags["MaskHasParametersAppliedToIt"] = 16] = "MaskHasParametersAppliedToIt";
86
- })(LayerMaskFlags = exports.LayerMaskFlags || (exports.LayerMaskFlags = {}));
87
- var MaskParams;
88
- (function (MaskParams) {
89
- MaskParams[MaskParams["UserMaskDensity"] = 1] = "UserMaskDensity";
90
- MaskParams[MaskParams["UserMaskFeather"] = 2] = "UserMaskFeather";
91
- MaskParams[MaskParams["VectorMaskDensity"] = 4] = "VectorMaskDensity";
92
- MaskParams[MaskParams["VectorMaskFeather"] = 8] = "VectorMaskFeather";
93
- })(MaskParams = exports.MaskParams || (exports.MaskParams = {}));
94
- function offsetForChannel(channelId, cmyk) {
95
- switch (channelId) {
96
- case 0 /* ChannelID.Color0 */: return 0;
97
- case 1 /* ChannelID.Color1 */: return 1;
98
- case 2 /* ChannelID.Color2 */: return 2;
99
- case 3 /* ChannelID.Color3 */: return cmyk ? 3 : channelId + 1;
100
- case -1 /* ChannelID.Transparency */: return cmyk ? 4 : 3;
101
- default: return channelId + 1;
102
- }
103
- }
104
- exports.offsetForChannel = offsetForChannel;
105
- function clamp(value, min, max) {
106
- return value < min ? min : (value > max ? max : value);
107
- }
108
- exports.clamp = clamp;
109
- function hasAlpha(data) {
110
- const size = data.width * data.height * 4;
111
- for (let i = 3; i < size; i += 4) {
112
- if (data.data[i] !== 255) {
113
- return true;
114
- }
115
- }
116
- return false;
117
- }
118
- exports.hasAlpha = hasAlpha;
119
- function resetImageData({ data }) {
120
- const alpha = (data instanceof Float32Array) ? 1.0 : ((data instanceof Uint16Array) ? 0xffff : 0xff);
121
- for (let p = 0, size = data.length | 0; p < size; p = (p + 4) | 0) {
122
- data[p + 0] = 0;
123
- data[p + 1] = 0;
124
- data[p + 2] = 0;
125
- data[p + 3] = alpha;
126
- }
127
- }
128
- exports.resetImageData = resetImageData;
129
- function imageDataToCanvas(pixelData) {
130
- const canvas = (0, exports.createCanvas)(pixelData.width, pixelData.height);
131
- let imageData;
132
- if (pixelData.data instanceof Uint8ClampedArray) {
133
- imageData = pixelData;
134
- }
135
- else {
136
- imageData = (0, exports.createImageData)(pixelData.width, pixelData.height);
137
- const src = pixelData.data;
138
- const dst = imageData.data;
139
- if (src instanceof Float32Array) {
140
- for (let i = 0, size = src.length; i < size; i += 4) {
141
- dst[i + 0] = Math.round(Math.pow(src[i + 0], 1.0 / 2.2) * 255);
142
- dst[i + 1] = Math.round(Math.pow(src[i + 1], 1.0 / 2.2) * 255);
143
- dst[i + 2] = Math.round(Math.pow(src[i + 2], 1.0 / 2.2) * 255);
144
- dst[i + 3] = Math.round(src[i + 3] * 255);
145
- }
146
- }
147
- else {
148
- const shift = (src instanceof Uint16Array) ? 8 : 0;
149
- for (let i = 0, size = src.length; i < size; i++) {
150
- dst[i] = src[i] >>> shift;
151
- }
152
- }
153
- }
154
- canvas.getContext('2d').putImageData(imageData, 0, 0);
155
- return canvas;
156
- }
157
- exports.imageDataToCanvas = imageDataToCanvas;
158
- function decodeBitmap(input, output, width, height) {
159
- if (!(input instanceof Uint8Array || input instanceof Uint8ClampedArray))
160
- throw new Error('Invalid bit depth');
161
- for (let y = 0, p = 0, o = 0; y < height; y++) {
162
- for (let x = 0; x < width;) {
163
- let b = input[o++];
164
- for (let i = 0; i < 8 && x < width; i++, x++, p += 4) {
165
- const v = b & 0x80 ? 0 : 255;
166
- b = b << 1;
167
- output[p + 0] = v;
168
- output[p + 1] = v;
169
- output[p + 2] = v;
170
- output[p + 3] = 255;
171
- }
172
- }
173
- }
174
- }
175
- exports.decodeBitmap = decodeBitmap;
176
- function writeDataRaw(data, offset, width, height) {
177
- if (!width || !height)
178
- return undefined;
179
- const array = new Uint8Array(width * height);
180
- for (let i = 0; i < array.length; i++) {
181
- array[i] = data.data[i * 4 + offset];
182
- }
183
- return array;
184
- }
185
- exports.writeDataRaw = writeDataRaw;
186
- function writeDataRLE(buffer, { data, width, height }, offsets, large) {
187
- if (!width || !height)
188
- return undefined;
189
- const stride = (4 * width) | 0;
190
- let ol = 0;
191
- let o = (offsets.length * (large ? 4 : 2) * height) | 0;
192
- for (const offset of offsets) {
193
- for (let y = 0, p = offset | 0; y < height; y++) {
194
- const strideStart = (y * stride) | 0;
195
- const strideEnd = (strideStart + stride) | 0;
196
- const lastIndex = (strideEnd + offset - 4) | 0;
197
- const lastIndex2 = (lastIndex - 4) | 0;
198
- const startOffset = o;
199
- for (p = (strideStart + offset) | 0; p < strideEnd; p = (p + 4) | 0) {
200
- if (p < lastIndex2) {
201
- let value1 = data[p];
202
- p = (p + 4) | 0;
203
- let value2 = data[p];
204
- p = (p + 4) | 0;
205
- let value3 = data[p];
206
- if (value1 === value2 && value1 === value3) {
207
- let count = 3;
208
- while (count < 128 && p < lastIndex && data[(p + 4) | 0] === value1) {
209
- count = (count + 1) | 0;
210
- p = (p + 4) | 0;
211
- }
212
- buffer[o++] = 1 - count;
213
- buffer[o++] = value1;
214
- }
215
- else {
216
- const countIndex = o;
217
- let writeLast = true;
218
- let count = 1;
219
- buffer[o++] = 0;
220
- buffer[o++] = value1;
221
- while (p < lastIndex && count < 128) {
222
- p = (p + 4) | 0;
223
- value1 = value2;
224
- value2 = value3;
225
- value3 = data[p];
226
- if (value1 === value2 && value1 === value3) {
227
- p = (p - 12) | 0;
228
- writeLast = false;
229
- break;
230
- }
231
- else {
232
- count++;
233
- buffer[o++] = value1;
234
- }
235
- }
236
- if (writeLast) {
237
- if (count < 127) {
238
- buffer[o++] = value2;
239
- buffer[o++] = value3;
240
- count += 2;
241
- }
242
- else if (count < 128) {
243
- buffer[o++] = value2;
244
- count++;
245
- p = (p - 4) | 0;
246
- }
247
- else {
248
- p = (p - 8) | 0;
249
- }
250
- }
251
- buffer[countIndex] = count - 1;
252
- }
253
- }
254
- else if (p === lastIndex) {
255
- buffer[o++] = 0;
256
- buffer[o++] = data[p];
257
- }
258
- else { // p === lastIndex2
259
- buffer[o++] = 1;
260
- buffer[o++] = data[p];
261
- p = (p + 4) | 0;
262
- buffer[o++] = data[p];
263
- }
264
- }
265
- const length = o - startOffset;
266
- if (large) {
267
- buffer[ol++] = (length >> 24) & 0xff;
268
- buffer[ol++] = (length >> 16) & 0xff;
269
- }
270
- buffer[ol++] = (length >> 8) & 0xff;
271
- buffer[ol++] = length & 0xff;
272
- }
273
- }
274
- return buffer.slice(0, o);
275
- }
276
- exports.writeDataRLE = writeDataRLE;
277
- function writeDataZipWithoutPrediction({ data, width, height }, offsets) {
278
- const size = width * height;
279
- const channel = new Uint8Array(size);
280
- const buffers = [];
281
- let totalLength = 0;
282
- for (const offset of offsets) {
283
- for (let i = 0, o = offset; i < size; i++, o += 4) {
284
- channel[i] = data[o];
285
- }
286
- const buffer = (0, pako_1.deflate)(channel);
287
- buffers.push(buffer);
288
- totalLength += buffer.byteLength;
289
- }
290
- if (buffers.length > 0) {
291
- const buffer = new Uint8Array(totalLength);
292
- let offset = 0;
293
- for (const b of buffers) {
294
- buffer.set(b, offset);
295
- offset += b.byteLength;
296
- }
297
- return buffer;
298
- }
299
- else {
300
- return buffers[0];
301
- }
302
- }
303
- exports.writeDataZipWithoutPrediction = writeDataZipWithoutPrediction;
304
- function createCanvasFromData(data) {
305
- const canvas = (0, exports.createCanvas)(100, 100);
306
- try {
307
- const context = canvas.getContext('2d');
308
- const imageData = (0, jpeg_1.decodeJpeg)(data, (w, h) => context.createImageData(w, h));
309
- canvas.width = imageData.width;
310
- canvas.height = imageData.height;
311
- context.putImageData(imageData, 0, 0);
312
- }
313
- catch (e) {
314
- console.error('JPEG decompression error', e.message);
315
- }
316
- return canvas;
317
- }
318
- exports.createCanvasFromData = createCanvasFromData;
319
- let createCanvas = () => {
320
- throw new Error('Canvas not initialized, use initializeCanvas method to set up createCanvas method');
321
- };
322
- exports.createCanvas = createCanvas;
323
- let tempCanvas = undefined;
324
- let createImageData = (width, height) => {
325
- if (!tempCanvas)
326
- tempCanvas = (0, exports.createCanvas)(1, 1);
327
- return tempCanvas.getContext('2d').createImageData(width, height);
328
- };
329
- exports.createImageData = createImageData;
330
- if (typeof document !== 'undefined') {
331
- exports.createCanvas = (width, height) => {
332
- const canvas = document.createElement('canvas');
333
- canvas.width = width;
334
- canvas.height = height;
335
- return canvas;
336
- };
337
- }
338
- function initializeCanvas(createCanvasMethod, createImageDataMethod) {
339
- exports.createCanvas = createCanvasMethod;
340
- exports.createImageData = createImageDataMethod || exports.createImageData;
341
- }
342
- exports.initializeCanvas = initializeCanvas;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createImageData = exports.createCanvas = exports.MaskParams = exports.LayerMaskFlags = exports.ColorSpace = exports.largeAdditionalInfoKeys = exports.layerColors = exports.toBlendMode = exports.fromBlendMode = exports.RAW_IMAGE_DATA = exports.MOCK_HANDLERS = void 0;
4
+ exports.revMap = revMap;
5
+ exports.createEnum = createEnum;
6
+ exports.offsetForChannel = offsetForChannel;
7
+ exports.clamp = clamp;
8
+ exports.hasAlpha = hasAlpha;
9
+ exports.resetImageData = resetImageData;
10
+ exports.imageDataToCanvas = imageDataToCanvas;
11
+ exports.decodeBitmap = decodeBitmap;
12
+ exports.writeDataRaw = writeDataRaw;
13
+ exports.writeDataRLE = writeDataRLE;
14
+ exports.writeDataZipWithoutPrediction = writeDataZipWithoutPrediction;
15
+ exports.createCanvasFromData = createCanvasFromData;
16
+ exports.initializeCanvas = initializeCanvas;
17
+ const pako_1 = require("pako");
18
+ const jpeg_1 = require("./jpeg");
19
+ exports.MOCK_HANDLERS = false;
20
+ exports.RAW_IMAGE_DATA = false;
21
+ exports.fromBlendMode = {};
22
+ exports.toBlendMode = {
23
+ 'pass': 'pass through',
24
+ 'norm': 'normal',
25
+ 'diss': 'dissolve',
26
+ 'dark': 'darken',
27
+ 'mul ': 'multiply',
28
+ 'idiv': 'color burn',
29
+ 'lbrn': 'linear burn',
30
+ 'dkCl': 'darker color',
31
+ 'lite': 'lighten',
32
+ 'scrn': 'screen',
33
+ 'div ': 'color dodge',
34
+ 'lddg': 'linear dodge',
35
+ 'lgCl': 'lighter color',
36
+ 'over': 'overlay',
37
+ 'sLit': 'soft light',
38
+ 'hLit': 'hard light',
39
+ 'vLit': 'vivid light',
40
+ 'lLit': 'linear light',
41
+ 'pLit': 'pin light',
42
+ 'hMix': 'hard mix',
43
+ 'diff': 'difference',
44
+ 'smud': 'exclusion',
45
+ 'fsub': 'subtract',
46
+ 'fdiv': 'divide',
47
+ 'hue ': 'hue',
48
+ 'sat ': 'saturation',
49
+ 'colr': 'color',
50
+ 'lum ': 'luminosity',
51
+ };
52
+ Object.keys(exports.toBlendMode).forEach(key => exports.fromBlendMode[exports.toBlendMode[key]] = key);
53
+ exports.layerColors = [
54
+ 'none', 'red', 'orange', 'yellow', 'green', 'blue', 'violet', 'gray'
55
+ ];
56
+ exports.largeAdditionalInfoKeys = [
57
+ // from documentation
58
+ 'LMsk', 'Lr16', 'Lr32', 'Layr', 'Mt16', 'Mt32', 'Mtrn', 'Alph', 'FMsk', 'lnk2', 'FEid', 'FXid', 'PxSD',
59
+ // from guessing
60
+ 'cinf',
61
+ ];
62
+ function revMap(map) {
63
+ const result = {};
64
+ Object.keys(map).forEach(key => result[map[key]] = key);
65
+ return result;
66
+ }
67
+ function createEnum(prefix, def, map) {
68
+ const rev = revMap(map);
69
+ const decode = (val) => {
70
+ const value = val.split('.')[1];
71
+ if (value && !rev[value]) {
72
+ // Photoshop 2026 writes the long-form enum value instead of the historical 4-char code
73
+ // (the map VALUE, e.g. 'BlnM.Nrml'). Two long-form shapes occur:
74
+ // - single-word modes use the map KEY verbatim: 'BlnM.normal'
75
+ // - multi-word modes use a camelCase id whose map key is space-separated:
76
+ // 'BlnM.colorBurn' -> 'color burn'; normalize camelCase before giving up.
77
+ if (Object.prototype.hasOwnProperty.call(map, value))
78
+ return value;
79
+ const spaced = value.replace(/([A-Z])/g, ' $1').toLowerCase();
80
+ if (Object.prototype.hasOwnProperty.call(map, spaced))
81
+ return spaced;
82
+ throw new Error(`Unrecognized value for enum: '${val}'`);
83
+ }
84
+ return rev[value] || def;
85
+ };
86
+ const encode = (val) => {
87
+ if (val && !map[val])
88
+ throw new Error(`Invalid value for enum: '${val}'`);
89
+ return `${prefix}.${map[val] || map[def]}`;
90
+ };
91
+ return { decode, encode };
92
+ }
93
+ var ColorSpace;
94
+ (function (ColorSpace) {
95
+ ColorSpace[ColorSpace["RGB"] = 0] = "RGB";
96
+ ColorSpace[ColorSpace["HSB"] = 1] = "HSB";
97
+ ColorSpace[ColorSpace["CMYK"] = 2] = "CMYK";
98
+ ColorSpace[ColorSpace["Lab"] = 7] = "Lab";
99
+ ColorSpace[ColorSpace["Grayscale"] = 8] = "Grayscale";
100
+ })(ColorSpace || (exports.ColorSpace = ColorSpace = {}));
101
+ var LayerMaskFlags;
102
+ (function (LayerMaskFlags) {
103
+ LayerMaskFlags[LayerMaskFlags["PositionRelativeToLayer"] = 1] = "PositionRelativeToLayer";
104
+ LayerMaskFlags[LayerMaskFlags["LayerMaskDisabled"] = 2] = "LayerMaskDisabled";
105
+ LayerMaskFlags[LayerMaskFlags["InvertLayerMaskWhenBlending"] = 4] = "InvertLayerMaskWhenBlending";
106
+ LayerMaskFlags[LayerMaskFlags["LayerMaskFromRenderingOtherData"] = 8] = "LayerMaskFromRenderingOtherData";
107
+ LayerMaskFlags[LayerMaskFlags["MaskHasParametersAppliedToIt"] = 16] = "MaskHasParametersAppliedToIt";
108
+ })(LayerMaskFlags || (exports.LayerMaskFlags = LayerMaskFlags = {}));
109
+ var MaskParams;
110
+ (function (MaskParams) {
111
+ MaskParams[MaskParams["UserMaskDensity"] = 1] = "UserMaskDensity";
112
+ MaskParams[MaskParams["UserMaskFeather"] = 2] = "UserMaskFeather";
113
+ MaskParams[MaskParams["VectorMaskDensity"] = 4] = "VectorMaskDensity";
114
+ MaskParams[MaskParams["VectorMaskFeather"] = 8] = "VectorMaskFeather";
115
+ })(MaskParams || (exports.MaskParams = MaskParams = {}));
116
+ function offsetForChannel(channelId, cmyk) {
117
+ switch (channelId) {
118
+ case 0 /* ChannelID.Color0 */: return 0;
119
+ case 1 /* ChannelID.Color1 */: return 1;
120
+ case 2 /* ChannelID.Color2 */: return 2;
121
+ case 3 /* ChannelID.Color3 */: return cmyk ? 3 : channelId + 1;
122
+ case -1 /* ChannelID.Transparency */: return cmyk ? 4 : 3;
123
+ default: return channelId + 1;
124
+ }
125
+ }
126
+ function clamp(value, min, max) {
127
+ return value < min ? min : (value > max ? max : value);
128
+ }
129
+ function hasAlpha(data) {
130
+ const size = data.width * data.height * 4;
131
+ for (let i = 3; i < size; i += 4) {
132
+ if (data.data[i] !== 255) {
133
+ return true;
134
+ }
135
+ }
136
+ return false;
137
+ }
138
+ function resetImageData({ data }) {
139
+ const alpha = (data instanceof Float32Array) ? 1.0 : ((data instanceof Uint16Array) ? 0xffff : 0xff);
140
+ for (let p = 0, size = data.length | 0; p < size; p = (p + 4) | 0) {
141
+ data[p + 0] = 0;
142
+ data[p + 1] = 0;
143
+ data[p + 2] = 0;
144
+ data[p + 3] = alpha;
145
+ }
146
+ }
147
+ function imageDataToCanvas(pixelData) {
148
+ const canvas = (0, exports.createCanvas)(pixelData.width, pixelData.height);
149
+ let imageData;
150
+ if (pixelData.data instanceof Uint8ClampedArray) {
151
+ imageData = pixelData;
152
+ }
153
+ else {
154
+ imageData = (0, exports.createImageData)(pixelData.width, pixelData.height);
155
+ const src = pixelData.data;
156
+ const dst = imageData.data;
157
+ if (src instanceof Float32Array) {
158
+ for (let i = 0, size = src.length; i < size; i += 4) {
159
+ dst[i + 0] = Math.round(Math.pow(src[i + 0], 1.0 / 2.2) * 255);
160
+ dst[i + 1] = Math.round(Math.pow(src[i + 1], 1.0 / 2.2) * 255);
161
+ dst[i + 2] = Math.round(Math.pow(src[i + 2], 1.0 / 2.2) * 255);
162
+ dst[i + 3] = Math.round(src[i + 3] * 255);
163
+ }
164
+ }
165
+ else {
166
+ const shift = (src instanceof Uint16Array) ? 8 : 0;
167
+ for (let i = 0, size = src.length; i < size; i++) {
168
+ dst[i] = src[i] >>> shift;
169
+ }
170
+ }
171
+ }
172
+ canvas.getContext('2d').putImageData(imageData, 0, 0);
173
+ return canvas;
174
+ }
175
+ function decodeBitmap(input, output, width, height) {
176
+ if (!(input instanceof Uint8Array || input instanceof Uint8ClampedArray))
177
+ throw new Error('Invalid bit depth');
178
+ for (let y = 0, p = 0, o = 0; y < height; y++) {
179
+ for (let x = 0; x < width;) {
180
+ let b = input[o++];
181
+ for (let i = 0; i < 8 && x < width; i++, x++, p += 4) {
182
+ const v = b & 0x80 ? 0 : 255;
183
+ b = b << 1;
184
+ output[p + 0] = v;
185
+ output[p + 1] = v;
186
+ output[p + 2] = v;
187
+ output[p + 3] = 255;
188
+ }
189
+ }
190
+ }
191
+ }
192
+ function writeDataRaw(data, offset, width, height) {
193
+ if (!width || !height)
194
+ return undefined;
195
+ const array = new Uint8Array(width * height);
196
+ for (let i = 0; i < array.length; i++) {
197
+ array[i] = data.data[i * 4 + offset];
198
+ }
199
+ return array;
200
+ }
201
+ function writeDataRLE(buffer, { data, width, height }, offsets, large) {
202
+ if (!width || !height)
203
+ return undefined;
204
+ const stride = (4 * width) | 0;
205
+ let ol = 0;
206
+ let o = (offsets.length * (large ? 4 : 2) * height) | 0;
207
+ for (const offset of offsets) {
208
+ for (let y = 0, p = offset | 0; y < height; y++) {
209
+ const strideStart = (y * stride) | 0;
210
+ const strideEnd = (strideStart + stride) | 0;
211
+ const lastIndex = (strideEnd + offset - 4) | 0;
212
+ const lastIndex2 = (lastIndex - 4) | 0;
213
+ const startOffset = o;
214
+ for (p = (strideStart + offset) | 0; p < strideEnd; p = (p + 4) | 0) {
215
+ if (p < lastIndex2) {
216
+ let value1 = data[p];
217
+ p = (p + 4) | 0;
218
+ let value2 = data[p];
219
+ p = (p + 4) | 0;
220
+ let value3 = data[p];
221
+ if (value1 === value2 && value1 === value3) {
222
+ let count = 3;
223
+ while (count < 128 && p < lastIndex && data[(p + 4) | 0] === value1) {
224
+ count = (count + 1) | 0;
225
+ p = (p + 4) | 0;
226
+ }
227
+ buffer[o++] = 1 - count;
228
+ buffer[o++] = value1;
229
+ }
230
+ else {
231
+ const countIndex = o;
232
+ let writeLast = true;
233
+ let count = 1;
234
+ buffer[o++] = 0;
235
+ buffer[o++] = value1;
236
+ while (p < lastIndex && count < 128) {
237
+ p = (p + 4) | 0;
238
+ value1 = value2;
239
+ value2 = value3;
240
+ value3 = data[p];
241
+ if (value1 === value2 && value1 === value3) {
242
+ p = (p - 12) | 0;
243
+ writeLast = false;
244
+ break;
245
+ }
246
+ else {
247
+ count++;
248
+ buffer[o++] = value1;
249
+ }
250
+ }
251
+ if (writeLast) {
252
+ if (count < 127) {
253
+ buffer[o++] = value2;
254
+ buffer[o++] = value3;
255
+ count += 2;
256
+ }
257
+ else if (count < 128) {
258
+ buffer[o++] = value2;
259
+ count++;
260
+ p = (p - 4) | 0;
261
+ }
262
+ else {
263
+ p = (p - 8) | 0;
264
+ }
265
+ }
266
+ buffer[countIndex] = count - 1;
267
+ }
268
+ }
269
+ else if (p === lastIndex) {
270
+ buffer[o++] = 0;
271
+ buffer[o++] = data[p];
272
+ }
273
+ else { // p === lastIndex2
274
+ buffer[o++] = 1;
275
+ buffer[o++] = data[p];
276
+ p = (p + 4) | 0;
277
+ buffer[o++] = data[p];
278
+ }
279
+ }
280
+ const length = o - startOffset;
281
+ if (large) {
282
+ buffer[ol++] = (length >> 24) & 0xff;
283
+ buffer[ol++] = (length >> 16) & 0xff;
284
+ }
285
+ buffer[ol++] = (length >> 8) & 0xff;
286
+ buffer[ol++] = length & 0xff;
287
+ }
288
+ }
289
+ return buffer.slice(0, o);
290
+ }
291
+ function writeDataZipWithoutPrediction({ data, width, height }, offsets) {
292
+ const size = width * height;
293
+ const channel = new Uint8Array(size);
294
+ const buffers = [];
295
+ let totalLength = 0;
296
+ for (const offset of offsets) {
297
+ for (let i = 0, o = offset; i < size; i++, o += 4) {
298
+ channel[i] = data[o];
299
+ }
300
+ const buffer = (0, pako_1.deflate)(channel);
301
+ buffers.push(buffer);
302
+ totalLength += buffer.byteLength;
303
+ }
304
+ if (buffers.length > 0) {
305
+ const buffer = new Uint8Array(totalLength);
306
+ let offset = 0;
307
+ for (const b of buffers) {
308
+ buffer.set(b, offset);
309
+ offset += b.byteLength;
310
+ }
311
+ return buffer;
312
+ }
313
+ else {
314
+ return buffers[0];
315
+ }
316
+ }
317
+ function createCanvasFromData(data) {
318
+ const canvas = (0, exports.createCanvas)(100, 100);
319
+ try {
320
+ const context = canvas.getContext('2d');
321
+ const imageData = (0, jpeg_1.decodeJpeg)(data, (w, h) => context.createImageData(w, h));
322
+ canvas.width = imageData.width;
323
+ canvas.height = imageData.height;
324
+ context.putImageData(imageData, 0, 0);
325
+ }
326
+ catch (e) {
327
+ console.error('JPEG decompression error', e.message);
328
+ }
329
+ return canvas;
330
+ }
331
+ let createCanvas = () => {
332
+ throw new Error('Canvas not initialized, use initializeCanvas method to set up createCanvas method');
333
+ };
334
+ exports.createCanvas = createCanvas;
335
+ let tempCanvas = undefined;
336
+ let createImageData = (width, height) => {
337
+ if (!tempCanvas)
338
+ tempCanvas = (0, exports.createCanvas)(1, 1);
339
+ return tempCanvas.getContext('2d').createImageData(width, height);
340
+ };
341
+ exports.createImageData = createImageData;
342
+ if (typeof document !== 'undefined') {
343
+ exports.createCanvas = (width, height) => {
344
+ const canvas = document.createElement('canvas');
345
+ canvas.width = width;
346
+ canvas.height = height;
347
+ return canvas;
348
+ };
349
+ }
350
+ function initializeCanvas(createCanvasMethod, createImageDataMethod) {
351
+ exports.createCanvas = createCanvasMethod;
352
+ exports.createImageData = createImageDataMethod || exports.createImageData;
353
+ }
343
354
  //# sourceMappingURL=helpers.js.map