ag-psd 19.0.0 → 20.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/README_PSD.md +6 -0
  3. package/TODO +5 -0
  4. package/dist/abr.js +4 -4
  5. package/dist/abr.js.map +1 -1
  6. package/dist/additionalInfo.d.ts +3 -3
  7. package/dist/additionalInfo.js +99 -10
  8. package/dist/additionalInfo.js.map +1 -1
  9. package/dist/bundle.js +408 -151
  10. package/dist/descriptor.js +21 -16
  11. package/dist/descriptor.js.map +1 -1
  12. package/dist/helpers.d.ts +2 -7
  13. package/dist/helpers.js +33 -10
  14. package/dist/helpers.js.map +1 -1
  15. package/dist/imageResources.js +37 -0
  16. package/dist/imageResources.js.map +1 -1
  17. package/dist/psd.d.ts +46 -3
  18. package/dist/psd.js +8 -1
  19. package/dist/psd.js.map +1 -1
  20. package/dist/psdReader.d.ts +11 -5
  21. package/dist/psdReader.js +179 -97
  22. package/dist/psdReader.js.map +1 -1
  23. package/dist/psdWriter.js +27 -13
  24. package/dist/psdWriter.js.map +1 -1
  25. package/dist-es/abr.js +4 -4
  26. package/dist-es/abr.js.map +1 -1
  27. package/dist-es/additionalInfo.d.ts +3 -3
  28. package/dist-es/additionalInfo.js +102 -13
  29. package/dist-es/additionalInfo.js.map +1 -1
  30. package/dist-es/descriptor.js +21 -16
  31. package/dist-es/descriptor.js.map +1 -1
  32. package/dist-es/helpers.d.ts +2 -7
  33. package/dist-es/helpers.js +31 -9
  34. package/dist-es/helpers.js.map +1 -1
  35. package/dist-es/imageResources.js +37 -0
  36. package/dist-es/imageResources.js.map +1 -1
  37. package/dist-es/psd.d.ts +46 -3
  38. package/dist-es/psd.js +7 -0
  39. package/dist-es/psd.js.map +1 -1
  40. package/dist-es/psdReader.d.ts +11 -5
  41. package/dist-es/psdReader.js +178 -99
  42. package/dist-es/psdReader.js.map +1 -1
  43. package/dist-es/psdWriter.js +28 -14
  44. package/dist-es/psdWriter.js.map +1 -1
  45. package/package.json +1 -1
  46. package/src/abr.ts +4 -4
  47. package/src/additionalInfo.ts +142 -49
  48. package/src/descriptor.ts +14 -9
  49. package/src/helpers.ts +35 -18
  50. package/src/imageResources.ts +53 -0
  51. package/src/psd.ts +41 -5
  52. package/src/psdReader.ts +170 -126
  53. package/src/psdWriter.ts +36 -23
@@ -12,9 +12,9 @@ var __assign = (this && this.__assign) || function () {
12
12
  import { fromByteArray, toByteArray } from 'base64-js';
13
13
  import { readEffects, writeEffects } from './effectsHelpers';
14
14
  import { clamp, createEnum, layerColors, MOCK_HANDLERS } from './helpers';
15
- import { readSignature, readUnicodeString, skipBytes, readUint32, readUint8, readFloat64, readUint16, readBytes, readInt16, checkSignature, readFloat32, readFixedPointPath32, readSection, readColor, readInt32, readPascalString, readUnicodeStringWithLength, readAsciiString, readPattern, } from './psdReader';
16
- import { writeZeros, writeSignature, writeBytes, writeUint32, writeUint16, writeFloat64, writeUint8, writeInt16, writeFloat32, writeFixedPointPath32, writeUnicodeString, writeSection, writeUnicodeStringWithPadding, writeColor, writePascalString, writeInt32, } from './psdWriter';
17
- import { Annt, BlnM, parsePercent, parseUnits, parseUnitsOrNumber, strokeStyleLineAlignment, strokeStyleLineCapType, strokeStyleLineJoinType, textGridding, unitsPercent, unitsValue, warpStyle, writeVersionAndDescriptor, readVersionAndDescriptor, Ornt, horzVrtcToXY, xyToHorzVrtc, serializeEffects, parseEffects, parseColor, serializeColor, serializeVectorContent, parseVectorContent, parseTrackList, serializeTrackList, BlrM, BlrQ, SmBQ, SmBM, DspM, UndA, Cnvr, RplS, SphM, Wvtp, ZZTy, Dstr, Chnl, MztT, Lns, blurType, DfsM, ExtT, ExtR, FlCl, CntE, WndM, Drct, IntE, IntC, FlMd, unitsPercentF, frac, ClrS, descBoundsToBounds, boundsToDescBounds, } from './descriptor';
15
+ import { readSignature, readUnicodeString, skipBytes, readUint32, readUint8, readFloat64, readUint16, readBytes, readInt16, checkSignature, readFloat32, readFixedPointPath32, readSection, readColor, readInt32, readPascalString, readUnicodeStringWithLength, readAsciiString, readPattern, readLayerInfo } from './psdReader';
16
+ import { writeZeros, writeSignature, writeBytes, writeUint32, writeUint16, writeFloat64, writeUint8, writeInt16, writeFloat32, writeFixedPointPath32, writeUnicodeString, writeSection, writeUnicodeStringWithPadding, writeColor, writePascalString, writeInt32 } from './psdWriter';
17
+ import { Annt, BlnM, parsePercent, parseUnits, parseUnitsOrNumber, strokeStyleLineAlignment, strokeStyleLineCapType, strokeStyleLineJoinType, textGridding, unitsPercent, unitsValue, warpStyle, writeVersionAndDescriptor, readVersionAndDescriptor, Ornt, horzVrtcToXY, xyToHorzVrtc, serializeEffects, parseEffects, parseColor, serializeColor, serializeVectorContent, parseVectorContent, parseTrackList, serializeTrackList, BlrM, BlrQ, SmBQ, SmBM, DspM, UndA, Cnvr, RplS, SphM, Wvtp, ZZTy, Dstr, Chnl, MztT, Lns, blurType, DfsM, ExtT, ExtR, FlCl, CntE, WndM, Drct, IntE, IntC, FlMd, unitsPercentF, frac, ClrS, descBoundsToBounds, boundsToDescBounds } from './descriptor';
18
18
  import { serializeEngineData, parseEngineData } from './engineData';
19
19
  import { encodeEngineData, decodeEngineData } from './text';
20
20
  var fromAtoZ = 'abcdefghijklmnopqrstuvwxyz';
@@ -49,9 +49,11 @@ addHandler('TySh', hasKey('text'), function (reader, target, leftBytes) {
49
49
  if (readInt16(reader) !== 50)
50
50
  throw new Error("Invalid TySh text version");
51
51
  var text = readVersionAndDescriptor(reader);
52
+ // console.log(require('util').inspect(text, false, 99, false), 'utf8');
52
53
  if (readInt16(reader) !== 1)
53
54
  throw new Error("Invalid TySh warp version");
54
55
  var warp = readVersionAndDescriptor(reader);
56
+ // console.log(require('util').inspect(warp, false, 99, false), 'utf8');
55
57
  target.text = {
56
58
  transform: transform,
57
59
  left: readFloat32(reader),
@@ -78,6 +80,7 @@ addHandler('TySh', hasKey('text'), function (reader, target, leftBytes) {
78
80
  if (text.EngineData) {
79
81
  var engineData = parseEngineData(text.EngineData);
80
82
  var textData = decodeEngineData(engineData);
83
+ // console.log(require('util').inspect(engineData, false, 99, false), 'utf8');
81
84
  // require('fs').writeFileSync(`layer-${target.name}.txt`, require('util').inspect(engineData, false, 99, false), 'utf8');
82
85
  // const before = parseEngineData(text.EngineData);
83
86
  // const after = encodeEngineData(engineData);
@@ -493,7 +496,7 @@ addHandler('lclr', hasKey('layerColor'), function (reader, target) {
493
496
  writeZeros(writer, 6);
494
497
  });
495
498
  addHandler('shmd', function (target) { return target.timestamp !== undefined || target.animationFrames !== undefined ||
496
- target.animationFrameFlags !== undefined || target.timeline !== undefined; }, function (reader, target, left, _, options) {
499
+ target.animationFrameFlags !== undefined || target.timeline !== undefined || target.comps !== undefined; }, function (reader, target, left, _, options) {
497
500
  var count = readUint32(reader);
498
501
  var _loop_1 = function (i) {
499
502
  checkSignature(reader, '8BIM');
@@ -557,8 +560,28 @@ addHandler('shmd', function (target) { return target.timestamp !== undefined ||
557
560
  target.timeline = timeline;
558
561
  // console.log('tmln:result', target.name, target.id, require('util').inspect(timeline, false, 99, true));
559
562
  }
563
+ else if (key === 'cmls') {
564
+ var desc = readVersionAndDescriptor(reader);
565
+ // console.log('cmls', require('util').inspect(desc, false, 99, true));
566
+ target.comps = {
567
+ settings: [],
568
+ };
569
+ if (desc.origFXRefPoint)
570
+ target.comps.originalEffectsReferencePoint = { x: desc.origFXRefPoint.Hrzn, y: desc.origFXRefPoint.Vrtc };
571
+ for (var _i = 0, _a = desc.layerSettings; _i < _a.length; _i++) {
572
+ var item = _a[_i];
573
+ target.comps.settings.push({ compList: item.compList });
574
+ var t = target.comps.settings[target.comps.settings.length - 1];
575
+ if ('enab' in item)
576
+ t.enabled = item.enab;
577
+ if (item.Ofst)
578
+ t.offset = { x: item.Ofst.Hrzn, y: item.Ofst.Vrtc };
579
+ if (item.FXRefPoint)
580
+ t.effectsReferencePoint = { x: item.FXRefPoint.Hrzn, y: item.FXRefPoint.Vrtc };
581
+ }
582
+ }
560
583
  else {
561
- options.logDevFeatures && console.log('Unhandled "shmd" section key', key);
584
+ options.logMissingFeatures && console.log('Unhandled "shmd" section key', key);
562
585
  }
563
586
  skipBytes(reader, left());
564
587
  });
@@ -568,7 +591,7 @@ addHandler('shmd', function (target) { return target.timestamp !== undefined ||
568
591
  }
569
592
  skipBytes(reader, left());
570
593
  }, function (writer, target, _, options) {
571
- var animationFrames = target.animationFrames, animationFrameFlags = target.animationFrameFlags, timestamp = target.timestamp, timeline = target.timeline;
594
+ var animationFrames = target.animationFrames, animationFrameFlags = target.animationFrameFlags, timestamp = target.timestamp, timeline = target.timeline, comps = target.comps;
572
595
  var count = 0;
573
596
  if (animationFrames)
574
597
  count++;
@@ -578,6 +601,8 @@ addHandler('shmd', function (target) { return target.timestamp !== undefined ||
578
601
  count++;
579
602
  if (timestamp !== undefined)
580
603
  count++;
604
+ if (comps)
605
+ count++;
581
606
  writeUint32(writer, count);
582
607
  if (animationFrames) {
583
608
  writeSignature(writer, '8BIM');
@@ -643,7 +668,7 @@ addHandler('shmd', function (target) { return target.timestamp !== undefined ||
643
668
  if (timeline.tracks) {
644
669
  desc.trackList = serializeTrackList(timeline.tracks);
645
670
  }
646
- var id = options.layerToId.get(target) || target.id || 0;
671
+ var id = options.layerToId.get(target) || target.id;
647
672
  if (!id)
648
673
  throw new Error('You need to provide layer.id value whan writing document with animations');
649
674
  desc.LyrI = id;
@@ -663,6 +688,37 @@ addHandler('shmd', function (target) { return target.timestamp !== undefined ||
663
688
  writeVersionAndDescriptor(writer, '', 'metadata', desc);
664
689
  }, true);
665
690
  }
691
+ if (comps) {
692
+ writeSignature(writer, '8BIM');
693
+ writeSignature(writer, 'cmls');
694
+ writeUint8(writer, 0); // copy (always false)
695
+ writeZeros(writer, 3);
696
+ writeSection(writer, 2, function () {
697
+ var id = options.layerToId.get(target) || target.id;
698
+ if (!id)
699
+ throw new Error('You need to provide layer.id value whan writing document with layer comps');
700
+ var desc = {};
701
+ if (comps.originalEffectsReferencePoint) {
702
+ desc.origFXRefPoint = { Hrzn: comps.originalEffectsReferencePoint.x, Vrtc: comps.originalEffectsReferencePoint.y };
703
+ }
704
+ desc.LyrI = id;
705
+ desc.layerSettings = [];
706
+ for (var _i = 0, _a = comps.settings; _i < _a.length; _i++) {
707
+ var item = _a[_i];
708
+ var t = {};
709
+ if (item.enabled !== undefined)
710
+ t.enab = item.enabled;
711
+ if (item.offset)
712
+ t.Ofst = { Hrzn: item.offset.x, Vrtc: item.offset.y };
713
+ if (item.effectsReferencePoint)
714
+ t.FXRefPoint = { Hrzn: item.effectsReferencePoint.x, Vrtc: item.effectsReferencePoint.y };
715
+ t.compList = item.compList;
716
+ desc.layerSettings.push(t);
717
+ }
718
+ // console.log('cmls', require('util').inspect(desc, false, 99, true));
719
+ writeVersionAndDescriptor(writer, '', 'null', desc);
720
+ }, true);
721
+ }
666
722
  });
667
723
  addHandler('vstk', hasKey('vectorStroke'), function (reader, target, left) {
668
724
  var desc = readVersionAndDescriptor(reader);
@@ -1839,6 +1895,38 @@ addHandler('fxrp', hasKey('referencePoint'), function (reader, target) {
1839
1895
  writeFloat64(writer, target.referencePoint.x);
1840
1896
  writeFloat64(writer, target.referencePoint.y);
1841
1897
  });
1898
+ addHandler('Lr16', function () { return false; }, function (reader, _target, _left, psd, options) {
1899
+ readLayerInfo(reader, psd, options);
1900
+ }, function (_writer, _target) {
1901
+ });
1902
+ addHandler('LMsk', hasKey('userMask'), function (reader, target) {
1903
+ target.userMask = {
1904
+ colorSpace: readColor(reader),
1905
+ opacity: readUint16(reader) / 0xff,
1906
+ };
1907
+ var flag = readUint8(reader);
1908
+ if (flag !== 128)
1909
+ throw new Error('Invalid flag value');
1910
+ skipBytes(reader, 1);
1911
+ }, function (writer, target) {
1912
+ var userMask = target.userMask;
1913
+ writeColor(writer, userMask.colorSpace);
1914
+ writeUint16(writer, clamp(userMask.opacity, 0, 1) * 0xff);
1915
+ writeUint8(writer, 128);
1916
+ writeZeros(writer, 1);
1917
+ });
1918
+ if (MOCK_HANDLERS) {
1919
+ addHandler('vowv', // appears with Lr16 section ?
1920
+ function (// appears with Lr16 section ?
1921
+ _) { return false; }, function (reader, target, left) {
1922
+ var value = readUint32(reader); // 2 ????
1923
+ reader;
1924
+ target;
1925
+ console.log('vowv', { value: value }, left());
1926
+ }, function (_writer, _target) {
1927
+ // TODO: write
1928
+ });
1929
+ }
1842
1930
  if (MOCK_HANDLERS) {
1843
1931
  addHandler('Patt', function (target) { return target._Patt !== undefined; }, function (reader, target, left) {
1844
1932
  // console.log('additional info: Patt');
@@ -2131,15 +2219,16 @@ addHandlerAlias('lnkD', 'lnk2');
2131
2219
  addHandlerAlias('lnk3', 'lnk2');
2132
2220
  addHandlerAlias('lnkE', 'lnk2');
2133
2221
  addHandler('pths', hasKey('pathList'), function (reader, target) {
2134
- var descriptor = readVersionAndDescriptor(reader);
2135
- target.pathList = []; // TODO: read paths (find example with non-empty list)
2136
- descriptor;
2137
- // console.log('pths', descriptor); // TODO: remove this
2222
+ var desc = readVersionAndDescriptor(reader, true);
2223
+ // console.log(require('util').inspect(desc, false, 99, true));
2224
+ // if (options.throwForMissingFeatures && desc?.pathList?.length) throw new Error('non-empty pathList in `pths`');
2225
+ desc;
2226
+ target.pathList = []; // TODO: read paths
2138
2227
  }, function (writer, _target) {
2139
- var descriptor = {
2228
+ var desc = {
2140
2229
  pathList: [], // TODO: write paths
2141
2230
  };
2142
- writeVersionAndDescriptor(writer, '', 'pathsDataClass', descriptor);
2231
+ writeVersionAndDescriptor(writer, '', 'pathsDataClass', desc);
2143
2232
  });
2144
2233
  addHandler('lyvr', hasKey('version'), function (reader, target) { return target.version = readUint32(reader); }, function (writer, target) { return writeUint32(writer, target.version); });
2145
2234
  function adjustmentType(type) {