ag-psd 22.0.1 → 23.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.
package/dist/bundle.js CHANGED
@@ -694,12 +694,13 @@ addHandler('lmfx', function (target) { return target.effects !== undefined && ha
694
694
  if (version !== 0)
695
695
  throw new Error('Invalid lmfx version');
696
696
  var desc = (0, descriptor_1.readVersionAndDescriptor)(reader);
697
- // console.log(require('util').inspect(info, false, 99, true));
697
+ // console.log('READ', require('util').inspect(desc, false, 99, true));
698
698
  // discard if read in 'lrFX' or 'lfx2' section
699
699
  target.effects = (0, descriptor_1.parseEffects)(desc, !!reader.logMissingFeatures);
700
700
  (0, psdReader_1.skipBytes)(reader, left());
701
701
  }, function (writer, target, _, options) {
702
702
  var desc = (0, descriptor_1.serializeEffects)(target.effects, !!options.logMissingFeatures, true);
703
+ // console.log('WRITE', require('util').inspect(desc, false, 99, true));
703
704
  (0, psdWriter_1.writeUint32)(writer, 0); // version
704
705
  (0, descriptor_1.writeVersionAndDescriptor)(writer, '', 'null', desc);
705
706
  });
@@ -2431,130 +2432,170 @@ addHandler('Anno', function (target) { return target.annotations !== undefined;
2431
2432
  writer.view.setUint32(dataOffset - 4, writer.offset - dataOffset, false);
2432
2433
  }
2433
2434
  });
2434
- addHandler('lnk2', function (target) { return !!target.linkedFiles && target.linkedFiles.length > 0; }, function (reader, target, left) {
2435
- var psd = target;
2436
- psd.linkedFiles = psd.linkedFiles || [];
2437
- while (left() > 8) {
2438
- var size = readLength64(reader); // size
2439
- var startOffset = reader.offset;
2440
- var type = (0, psdReader_1.readSignature)(reader);
2441
- // liFD - linked file data
2442
- // liFE - linked file external
2443
- // liFA - linked file alias
2444
- var version = (0, psdReader_1.readInt32)(reader);
2445
- var id = (0, psdReader_1.readPascalString)(reader, 1);
2446
- var name_3 = (0, psdReader_1.readUnicodeString)(reader);
2447
- var fileType = (0, psdReader_1.readSignature)(reader).trim(); // ' ' if empty
2448
- var fileCreator = (0, psdReader_1.readSignature)(reader).trim(); // ' ' or '\0\0\0\0' if empty
2449
- var dataSize = readLength64(reader);
2450
- var hasFileOpenDescriptor = (0, psdReader_1.readUint8)(reader);
2451
- var fileOpenDescriptor = hasFileOpenDescriptor ? (0, descriptor_1.readVersionAndDescriptor)(reader) : undefined;
2452
- var linkedFileDescriptor = type === 'liFE' ? (0, descriptor_1.readVersionAndDescriptor)(reader) : undefined;
2453
- var file = { id: id, name: name_3 };
2454
- if (fileType)
2455
- file.type = fileType;
2456
- if (fileCreator)
2457
- file.creator = fileCreator;
2458
- if (fileOpenDescriptor) {
2459
- file.descriptor = {
2460
- compInfo: {
2461
- compID: fileOpenDescriptor.compInfo.compID,
2462
- originalCompID: fileOpenDescriptor.compInfo.originalCompID,
2463
- }
2464
- };
2465
- }
2466
- if (type === 'liFE' && version > 3) {
2467
- var year = (0, psdReader_1.readInt32)(reader);
2468
- var month = (0, psdReader_1.readUint8)(reader);
2469
- var day = (0, psdReader_1.readUint8)(reader);
2470
- var hour = (0, psdReader_1.readUint8)(reader);
2471
- var minute = (0, psdReader_1.readUint8)(reader);
2472
- var seconds = (0, psdReader_1.readFloat64)(reader);
2473
- var wholeSeconds = Math.floor(seconds);
2474
- var ms = (seconds - wholeSeconds) * 1000;
2475
- file.time = (new Date(year, month, day, hour, minute, wholeSeconds, ms)).toISOString();
2476
- }
2477
- var fileSize = type === 'liFE' ? readLength64(reader) : 0;
2478
- if (type === 'liFA')
2479
- (0, psdReader_1.skipBytes)(reader, 8);
2480
- if (type === 'liFD')
2481
- file.data = (0, psdReader_1.readBytes)(reader, dataSize); // seems to be a typo in docs
2482
- if (version >= 5)
2483
- file.childDocumentID = (0, psdReader_1.readUnicodeString)(reader);
2484
- if (version >= 6)
2485
- file.assetModTime = (0, psdReader_1.readFloat64)(reader);
2486
- if (version >= 7)
2487
- file.assetLockedState = (0, psdReader_1.readUint8)(reader);
2488
- if (type === 'liFE' && version === 2)
2489
- file.data = (0, psdReader_1.readBytes)(reader, fileSize);
2490
- if (reader.skipLinkedFilesData)
2491
- file.data = undefined;
2492
- psd.linkedFiles.push(file);
2493
- linkedFileDescriptor;
2494
- while (size % 4)
2495
- size++;
2496
- reader.offset = startOffset + size;
2497
- }
2498
- (0, psdReader_1.skipBytes)(reader, left()); // ?
2499
- }, function (writer, target) {
2500
- var psd = target;
2501
- for (var _i = 0, _a = psd.linkedFiles; _i < _a.length; _i++) {
2502
- var file = _a[_i];
2503
- var version = 2;
2504
- if (file.assetLockedState != null)
2505
- version = 7;
2506
- else if (file.assetModTime != null)
2507
- version = 6;
2508
- else if (file.childDocumentID != null)
2509
- version = 5;
2510
- // TODO: else if (file.time != null) version = 3; (only for liFE)
2511
- (0, psdWriter_1.writeUint32)(writer, 0);
2512
- (0, psdWriter_1.writeUint32)(writer, 0); // size
2513
- var sizeOffset = writer.offset;
2514
- (0, psdWriter_1.writeSignature)(writer, file.data ? 'liFD' : 'liFA');
2515
- (0, psdWriter_1.writeInt32)(writer, version);
2516
- if (!file.id || typeof file.id !== 'string' || !/^[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}$/.test(file.id)) {
2517
- throw new Error('Linked file ID must be in a GUID format (example: 20953ddb-9391-11ec-b4f1-c15674f50bc4)');
2518
- }
2519
- (0, psdWriter_1.writePascalString)(writer, file.id, 1);
2520
- (0, psdWriter_1.writeUnicodeStringWithPadding)(writer, file.name || '');
2521
- (0, psdWriter_1.writeSignature)(writer, file.type ? "".concat(file.type, " ").substring(0, 4) : ' ');
2522
- (0, psdWriter_1.writeSignature)(writer, file.creator ? "".concat(file.creator, " ").substring(0, 4) : '\0\0\0\0');
2523
- writeLength64(writer, file.data ? file.data.byteLength : 0);
2524
- if (file.descriptor && file.descriptor.compInfo) {
2525
- var desc = {
2526
- compInfo: {
2527
- compID: file.descriptor.compInfo.compID,
2528
- originalCompID: file.descriptor.compInfo.originalCompID,
2529
- }
2530
- };
2531
- (0, psdWriter_1.writeUint8)(writer, 1);
2532
- (0, descriptor_1.writeVersionAndDescriptor)(writer, '', 'null', desc);
2533
- }
2534
- else {
2535
- (0, psdWriter_1.writeUint8)(writer, 0);
2435
+ function createLnkHandler(tag) {
2436
+ addHandler(tag, function (target) {
2437
+ var psd = target;
2438
+ if (!psd.linkedFiles || !psd.linkedFiles.length)
2439
+ return false;
2440
+ if (tag === 'lnkE' && !psd.linkedFiles.some(function (f) { return f.linkedFile; }))
2441
+ return false;
2442
+ return true;
2443
+ }, function (reader, target, left, _psd) {
2444
+ var psd = target;
2445
+ psd.linkedFiles = psd.linkedFiles || [];
2446
+ while (left() > 8) {
2447
+ var size = readLength64(reader);
2448
+ var startOffset = reader.offset;
2449
+ var type = (0, psdReader_1.readSignature)(reader);
2450
+ // liFD - linked file data
2451
+ // liFE - linked file external
2452
+ // liFA - linked file alias
2453
+ var version = (0, psdReader_1.readInt32)(reader);
2454
+ var id = (0, psdReader_1.readPascalString)(reader, 1);
2455
+ var name_3 = (0, psdReader_1.readUnicodeString)(reader);
2456
+ var fileType = (0, psdReader_1.readSignature)(reader).trim(); // ' ' if empty
2457
+ var fileCreator = (0, psdReader_1.readSignature)(reader).trim(); // ' ' or '\0\0\0\0' if empty
2458
+ var dataSize = readLength64(reader);
2459
+ var hasFileOpenDescriptor = (0, psdReader_1.readUint8)(reader);
2460
+ var fileOpenDescriptor = hasFileOpenDescriptor ? (0, descriptor_1.readVersionAndDescriptor)(reader) : undefined;
2461
+ var linkedFileDescriptor = type === 'liFE' ? (0, descriptor_1.readVersionAndDescriptor)(reader) : undefined;
2462
+ var file = { id: id, name: name_3 };
2463
+ if (fileType)
2464
+ file.type = fileType;
2465
+ if (fileCreator)
2466
+ file.creator = fileCreator;
2467
+ if (fileOpenDescriptor) {
2468
+ file.descriptor = {
2469
+ compInfo: {
2470
+ compID: fileOpenDescriptor.compInfo.compID,
2471
+ originalCompID: fileOpenDescriptor.compInfo.originalCompID,
2472
+ }
2473
+ };
2474
+ }
2475
+ if (type === 'liFE' && version > 3) {
2476
+ var year = (0, psdReader_1.readInt32)(reader);
2477
+ var month = (0, psdReader_1.readUint8)(reader);
2478
+ var day = (0, psdReader_1.readUint8)(reader);
2479
+ var hour = (0, psdReader_1.readUint8)(reader);
2480
+ var minute = (0, psdReader_1.readUint8)(reader);
2481
+ var seconds = (0, psdReader_1.readFloat64)(reader);
2482
+ var wholeSeconds = Math.floor(seconds);
2483
+ var ms = (seconds - wholeSeconds) * 1000;
2484
+ file.time = (new Date(Date.UTC(year, month, day, hour, minute, wholeSeconds, ms))).toISOString();
2485
+ }
2486
+ var fileSize = type === 'liFE' ? readLength64(reader) : 0;
2487
+ if (type === 'liFA')
2488
+ (0, psdReader_1.skipBytes)(reader, 8);
2489
+ if (type === 'liFD')
2490
+ file.data = (0, psdReader_1.readBytes)(reader, dataSize); // seems to be a typo in docs
2491
+ if (version >= 5)
2492
+ file.childDocumentID = (0, psdReader_1.readUnicodeString)(reader);
2493
+ if (version >= 6)
2494
+ file.assetModTime = (0, psdReader_1.readFloat64)(reader);
2495
+ if (version >= 7)
2496
+ file.assetLockedState = (0, psdReader_1.readUint8)(reader);
2497
+ if (type === 'liFE' && version === 2)
2498
+ file.data = (0, psdReader_1.readBytes)(reader, fileSize);
2499
+ if (reader.skipLinkedFilesData)
2500
+ file.data = undefined;
2501
+ if (tag === 'lnkE') {
2502
+ file.linkedFile = {
2503
+ fileSize: fileSize,
2504
+ name: (linkedFileDescriptor === null || linkedFileDescriptor === void 0 ? void 0 : linkedFileDescriptor['Nm ']) || '',
2505
+ fullPath: (linkedFileDescriptor === null || linkedFileDescriptor === void 0 ? void 0 : linkedFileDescriptor.fullPath) || '',
2506
+ originalPath: (linkedFileDescriptor === null || linkedFileDescriptor === void 0 ? void 0 : linkedFileDescriptor.originalPath) || '',
2507
+ relativePath: (linkedFileDescriptor === null || linkedFileDescriptor === void 0 ? void 0 : linkedFileDescriptor.relPath) || '',
2508
+ };
2509
+ }
2510
+ psd.linkedFiles.push(file);
2511
+ while (size % 4)
2512
+ size++;
2513
+ reader.offset = startOffset + size;
2536
2514
  }
2537
- if (file.data)
2538
- (0, psdWriter_1.writeBytes)(writer, file.data);
2539
- else
2515
+ (0, psdReader_1.skipBytes)(reader, left()); // ?
2516
+ }, function (writer, target) {
2517
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j;
2518
+ var psd = target;
2519
+ for (var _i = 0, _k = psd.linkedFiles; _i < _k.length; _i++) {
2520
+ var file = _k[_i];
2521
+ if ((tag === 'lnkE') !== !!file.linkedFile)
2522
+ continue;
2523
+ var version = 2;
2524
+ if (file.assetLockedState != null)
2525
+ version = 7;
2526
+ else if (file.assetModTime != null)
2527
+ version = 6;
2528
+ else if (file.childDocumentID != null)
2529
+ version = 5;
2530
+ else if (tag == 'lnkE')
2531
+ version = 3;
2540
2532
  writeLength64(writer, 0);
2541
- if (version >= 5)
2542
- (0, psdWriter_1.writeUnicodeStringWithPadding)(writer, file.childDocumentID || '');
2543
- if (version >= 6)
2544
- (0, psdWriter_1.writeFloat64)(writer, file.assetModTime || 0);
2545
- if (version >= 7)
2546
- (0, psdWriter_1.writeUint8)(writer, file.assetLockedState || 0);
2547
- var size = writer.offset - sizeOffset;
2548
- writer.view.setUint32(sizeOffset - 4, size, false); // write size
2549
- while (size % 4) {
2550
- size++;
2551
- (0, psdWriter_1.writeUint8)(writer, 0);
2533
+ var sizeOffset = writer.offset;
2534
+ (0, psdWriter_1.writeSignature)(writer, (tag === 'lnkE') ? 'liFE' : (file.data ? 'liFD' : 'liFA'));
2535
+ (0, psdWriter_1.writeInt32)(writer, version);
2536
+ if (!file.id || typeof file.id !== 'string' || !/^[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}$/.test(file.id)) {
2537
+ throw new Error('Linked file ID must be in a GUID format (example: 20953ddb-9391-11ec-b4f1-c15674f50bc4)');
2538
+ }
2539
+ (0, psdWriter_1.writePascalString)(writer, file.id, 1);
2540
+ (0, psdWriter_1.writeUnicodeStringWithPadding)(writer, file.name || '');
2541
+ (0, psdWriter_1.writeSignature)(writer, file.type ? "".concat(file.type, " ").substring(0, 4) : ' ');
2542
+ (0, psdWriter_1.writeSignature)(writer, file.creator ? "".concat(file.creator, " ").substring(0, 4) : '\0\0\0\0');
2543
+ writeLength64(writer, file.data ? file.data.byteLength : 0);
2544
+ if (file.descriptor && file.descriptor.compInfo) {
2545
+ var desc = {
2546
+ compInfo: {
2547
+ compID: file.descriptor.compInfo.compID,
2548
+ originalCompID: file.descriptor.compInfo.originalCompID,
2549
+ },
2550
+ };
2551
+ (0, psdWriter_1.writeUint8)(writer, 1);
2552
+ (0, descriptor_1.writeVersionAndDescriptor)(writer, '', 'null', desc);
2553
+ }
2554
+ else {
2555
+ (0, psdWriter_1.writeUint8)(writer, 0);
2556
+ }
2557
+ if (tag === 'lnkE') {
2558
+ var desc = {
2559
+ descVersion: 2,
2560
+ 'Nm ': (_b = (_a = file.linkedFile) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : '',
2561
+ fullPath: (_d = (_c = file.linkedFile) === null || _c === void 0 ? void 0 : _c.fullPath) !== null && _d !== void 0 ? _d : '',
2562
+ originalPath: (_f = (_e = file.linkedFile) === null || _e === void 0 ? void 0 : _e.originalPath) !== null && _f !== void 0 ? _f : '',
2563
+ relPath: (_h = (_g = file.linkedFile) === null || _g === void 0 ? void 0 : _g.relativePath) !== null && _h !== void 0 ? _h : '',
2564
+ };
2565
+ (0, descriptor_1.writeVersionAndDescriptor)(writer, '', 'ExternalFileLink', desc);
2566
+ var time = file.time ? new Date(file.time) : new Date();
2567
+ (0, psdWriter_1.writeInt32)(writer, time.getUTCFullYear());
2568
+ (0, psdWriter_1.writeUint8)(writer, time.getUTCMonth());
2569
+ (0, psdWriter_1.writeUint8)(writer, time.getUTCDate());
2570
+ (0, psdWriter_1.writeUint8)(writer, time.getUTCHours());
2571
+ (0, psdWriter_1.writeUint8)(writer, time.getUTCMinutes());
2572
+ (0, psdWriter_1.writeFloat64)(writer, time.getUTCSeconds() + time.getUTCMilliseconds() / 1000);
2573
+ }
2574
+ if (file.data) {
2575
+ (0, psdWriter_1.writeBytes)(writer, file.data);
2576
+ }
2577
+ else {
2578
+ writeLength64(writer, ((_j = file.linkedFile) === null || _j === void 0 ? void 0 : _j.fileSize) || 0);
2579
+ }
2580
+ if (version >= 5)
2581
+ (0, psdWriter_1.writeUnicodeStringWithPadding)(writer, file.childDocumentID || '');
2582
+ if (version >= 6)
2583
+ (0, psdWriter_1.writeFloat64)(writer, file.assetModTime || 0);
2584
+ if (version >= 7)
2585
+ (0, psdWriter_1.writeUint8)(writer, file.assetLockedState || 0);
2586
+ var size = writer.offset - sizeOffset;
2587
+ writer.view.setUint32(sizeOffset - 4, size, false); // write size
2588
+ while (size % 4) {
2589
+ size++;
2590
+ (0, psdWriter_1.writeUint8)(writer, 0);
2591
+ }
2552
2592
  }
2553
- }
2554
- });
2593
+ });
2594
+ }
2595
+ createLnkHandler('lnk2');
2596
+ createLnkHandler('lnkE');
2555
2597
  addHandlerAlias('lnkD', 'lnk2');
2556
2598
  addHandlerAlias('lnk3', 'lnk2');
2557
- addHandlerAlias('lnkE', 'lnk2');
2558
2599
  addHandler('pths', hasKey('pathList'), function (reader, target) {
2559
2600
  var desc = (0, descriptor_1.readVersionAndDescriptor)(reader, true);
2560
2601
  // console.log(require('util').inspect(desc, false, 99, true));
@@ -3712,7 +3753,7 @@ var typeToField = {
3712
3753
  'Txt ', 'printerName', 'Nm ', 'Idnt', 'blackAndWhitePresetFileName', 'LUT3DFileName',
3713
3754
  'presetFileName', 'curvesPresetFileName', 'mixerPresetFileName', 'placed', 'description', 'reason',
3714
3755
  'artboardPresetName', 'json', 'clipID', 'relPath', 'fullPath', 'mediaDescriptor', 'Msge',
3715
- 'altTag', 'url', 'cellText', 'preset', 'KnNm', 'FPth', 'comment',
3756
+ 'altTag', 'url', 'cellText', 'preset', 'KnNm', 'FPth', 'comment', 'originalPath',
3716
3757
  ],
3717
3758
  'tdta': [
3718
3759
  'EngineData', 'LUT3DFileData', 'indexArray', 'originalVertexArray', 'deformedVertexArray',
@@ -4416,7 +4457,7 @@ function serializeFxObject(stroke) {
4416
4457
  return FrFX;
4417
4458
  }
4418
4459
  function serializeEffects(e, log, multi) {
4419
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
4460
+ var _a, _b, _c;
4420
4461
  var info = multi ? {
4421
4462
  'Scl ': unitsPercentF((_a = e.scale) !== null && _a !== void 0 ? _a : 1),
4422
4463
  masterFXSwitch: !e.disabled,
@@ -4430,44 +4471,46 @@ function serializeEffects(e, log, multi) {
4430
4471
  if (e[key] && !Array.isArray(e[key]))
4431
4472
  throw new Error("".concat(key, " should be an array"));
4432
4473
  }
4433
- if (((_c = e.dropShadow) === null || _c === void 0 ? void 0 : _c[0]) && !multi)
4474
+ var useMulti = function (arr) { return !!arr && arr.length > 1 && multi; };
4475
+ var useSingle = function (arr) { return !!arr && arr.length >= 1 && (!multi || arr.length === 1); };
4476
+ if (useSingle(e.dropShadow))
4434
4477
  info.DrSh = serializeEffectObject(e.dropShadow[0], 'dropShadow', log);
4435
- if (((_d = e.dropShadow) === null || _d === void 0 ? void 0 : _d[0]) && multi)
4478
+ if (useMulti(e.dropShadow))
4436
4479
  info.dropShadowMulti = e.dropShadow.map(function (i) { return serializeEffectObject(i, 'dropShadow', log); });
4437
- if (((_e = e.innerShadow) === null || _e === void 0 ? void 0 : _e[0]) && !multi)
4480
+ if (useSingle(e.innerShadow))
4438
4481
  info.IrSh = serializeEffectObject(e.innerShadow[0], 'innerShadow', log);
4439
- if (((_f = e.innerShadow) === null || _f === void 0 ? void 0 : _f[0]) && multi)
4482
+ if (useMulti(e.innerShadow))
4440
4483
  info.innerShadowMulti = e.innerShadow.map(function (i) { return serializeEffectObject(i, 'innerShadow', log); });
4441
4484
  if (e.outerGlow)
4442
4485
  info.OrGl = serializeEffectObject(e.outerGlow, 'outerGlow', log);
4443
- if (((_g = e.solidFill) === null || _g === void 0 ? void 0 : _g[0]) && multi)
4486
+ if (useMulti(e.solidFill))
4444
4487
  info.solidFillMulti = e.solidFill.map(function (i) { return serializeEffectObject(i, 'solidFill', log); });
4445
- if (((_h = e.gradientOverlay) === null || _h === void 0 ? void 0 : _h[0]) && multi)
4488
+ if (useMulti(e.gradientOverlay))
4446
4489
  info.gradientFillMulti = e.gradientOverlay.map(function (i) { return serializeEffectObject(i, 'gradientOverlay', log); });
4447
- if (((_j = e.stroke) === null || _j === void 0 ? void 0 : _j[0]) && multi)
4490
+ if (useMulti(e.stroke))
4448
4491
  info.frameFXMulti = e.stroke.map(function (i) { return serializeFxObject(i); });
4449
4492
  if (e.innerGlow)
4450
4493
  info.IrGl = serializeEffectObject(e.innerGlow, 'innerGlow', log);
4451
4494
  if (e.bevel)
4452
4495
  info.ebbl = serializeEffectObject(e.bevel, 'bevel', log);
4453
- if (((_k = e.solidFill) === null || _k === void 0 ? void 0 : _k[0]) && !multi)
4496
+ if (useSingle(e.solidFill))
4454
4497
  info.SoFi = serializeEffectObject(e.solidFill[0], 'solidFill', log);
4455
4498
  if (e.patternOverlay)
4456
4499
  info.patternFill = serializeEffectObject(e.patternOverlay, 'patternOverlay', log);
4457
- if (((_l = e.gradientOverlay) === null || _l === void 0 ? void 0 : _l[0]) && !multi)
4500
+ if (useSingle(e.gradientOverlay))
4458
4501
  info.GrFl = serializeEffectObject(e.gradientOverlay[0], 'gradientOverlay', log);
4459
4502
  if (e.satin)
4460
4503
  info.ChFX = serializeEffectObject(e.satin, 'satin', log);
4461
- if (((_m = e.stroke) === null || _m === void 0 ? void 0 : _m[0]) && !multi)
4462
- info.FrFX = serializeFxObject((_o = e.stroke) === null || _o === void 0 ? void 0 : _o[0]);
4504
+ if (useSingle(e.stroke))
4505
+ info.FrFX = serializeFxObject((_c = e.stroke) === null || _c === void 0 ? void 0 : _c[0]);
4463
4506
  if (multi) {
4464
4507
  info.numModifyingFX = 0;
4465
- for (var _p = 0, _q = Object.keys(e); _p < _q.length; _p++) {
4466
- var key = _q[_p];
4508
+ for (var _d = 0, _e = Object.keys(e); _d < _e.length; _d++) {
4509
+ var key = _e[_d];
4467
4510
  var value = e[key];
4468
4511
  if (Array.isArray(value)) {
4469
- for (var _r = 0, value_1 = value; _r < value_1.length; _r++) {
4470
- var effect = value_1[_r];
4512
+ for (var _f = 0, value_1 = value; _f < value_1.length; _f++) {
4513
+ var effect = value_1[_f];
4471
4514
  if (effect.enabled)
4472
4515
  info.numModifyingFX++;
4473
4516
  }
@@ -9271,13 +9314,6 @@ function addChildren(layers, children) {
9271
9314
  sectionDivider: {
9272
9315
  type: 3 /* SectionDividerType.BoundingSectionDivider */,
9273
9316
  },
9274
- // TESTING
9275
- // nameSource: 'lset',
9276
- // id: [4, 0, 0, 8, 11, 0, 0, 0, 0, 14][layers.length] || 0,
9277
- // layerColor: 'none',
9278
- // timestamp: [1611346817.349021, 0, 0, 1611346817.349175, 1611346817.3491833, 0, 0, 0, 0, 1611346817.349832][layers.length] || 0,
9279
- // protected: {},
9280
- // referencePoint: { x: 0, y: 0 },
9281
9317
  });
9282
9318
  addChildren(layers, c.children);
9283
9319
  layers.push(__assign(__assign({}, c), { blendMode: c.blendMode === 'pass through' ? 'normal' : c.blendMode, sectionDivider: {
@@ -149,6 +149,12 @@ export interface WarpDescriptor {
149
149
  Left: DescriptorUnitsValue;
150
150
  Btom: DescriptorUnitsValue;
151
151
  Rght: DescriptorUnitsValue;
152
+ } | {
153
+ _classID: 'classFloatRect';
154
+ 'Top ': number;
155
+ Left: number;
156
+ Btom: number;
157
+ Rght: number;
152
158
  };
153
159
  uOrder: number;
154
160
  vOrder: number;
@@ -164,7 +164,7 @@ var typeToField = {
164
164
  'Txt ', 'printerName', 'Nm ', 'Idnt', 'blackAndWhitePresetFileName', 'LUT3DFileName',
165
165
  'presetFileName', 'curvesPresetFileName', 'mixerPresetFileName', 'placed', 'description', 'reason',
166
166
  'artboardPresetName', 'json', 'clipID', 'relPath', 'fullPath', 'mediaDescriptor', 'Msge',
167
- 'altTag', 'url', 'cellText', 'preset', 'KnNm', 'FPth', 'comment',
167
+ 'altTag', 'url', 'cellText', 'preset', 'KnNm', 'FPth', 'comment', 'originalPath',
168
168
  ],
169
169
  'tdta': [
170
170
  'EngineData', 'LUT3DFileData', 'indexArray', 'originalVertexArray', 'deformedVertexArray',
@@ -868,7 +868,7 @@ function serializeFxObject(stroke) {
868
868
  return FrFX;
869
869
  }
870
870
  function serializeEffects(e, log, multi) {
871
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
871
+ var _a, _b, _c;
872
872
  var info = multi ? {
873
873
  'Scl ': unitsPercentF((_a = e.scale) !== null && _a !== void 0 ? _a : 1),
874
874
  masterFXSwitch: !e.disabled,
@@ -882,44 +882,46 @@ function serializeEffects(e, log, multi) {
882
882
  if (e[key] && !Array.isArray(e[key]))
883
883
  throw new Error("".concat(key, " should be an array"));
884
884
  }
885
- if (((_c = e.dropShadow) === null || _c === void 0 ? void 0 : _c[0]) && !multi)
885
+ var useMulti = function (arr) { return !!arr && arr.length > 1 && multi; };
886
+ var useSingle = function (arr) { return !!arr && arr.length >= 1 && (!multi || arr.length === 1); };
887
+ if (useSingle(e.dropShadow))
886
888
  info.DrSh = serializeEffectObject(e.dropShadow[0], 'dropShadow', log);
887
- if (((_d = e.dropShadow) === null || _d === void 0 ? void 0 : _d[0]) && multi)
889
+ if (useMulti(e.dropShadow))
888
890
  info.dropShadowMulti = e.dropShadow.map(function (i) { return serializeEffectObject(i, 'dropShadow', log); });
889
- if (((_e = e.innerShadow) === null || _e === void 0 ? void 0 : _e[0]) && !multi)
891
+ if (useSingle(e.innerShadow))
890
892
  info.IrSh = serializeEffectObject(e.innerShadow[0], 'innerShadow', log);
891
- if (((_f = e.innerShadow) === null || _f === void 0 ? void 0 : _f[0]) && multi)
893
+ if (useMulti(e.innerShadow))
892
894
  info.innerShadowMulti = e.innerShadow.map(function (i) { return serializeEffectObject(i, 'innerShadow', log); });
893
895
  if (e.outerGlow)
894
896
  info.OrGl = serializeEffectObject(e.outerGlow, 'outerGlow', log);
895
- if (((_g = e.solidFill) === null || _g === void 0 ? void 0 : _g[0]) && multi)
897
+ if (useMulti(e.solidFill))
896
898
  info.solidFillMulti = e.solidFill.map(function (i) { return serializeEffectObject(i, 'solidFill', log); });
897
- if (((_h = e.gradientOverlay) === null || _h === void 0 ? void 0 : _h[0]) && multi)
899
+ if (useMulti(e.gradientOverlay))
898
900
  info.gradientFillMulti = e.gradientOverlay.map(function (i) { return serializeEffectObject(i, 'gradientOverlay', log); });
899
- if (((_j = e.stroke) === null || _j === void 0 ? void 0 : _j[0]) && multi)
901
+ if (useMulti(e.stroke))
900
902
  info.frameFXMulti = e.stroke.map(function (i) { return serializeFxObject(i); });
901
903
  if (e.innerGlow)
902
904
  info.IrGl = serializeEffectObject(e.innerGlow, 'innerGlow', log);
903
905
  if (e.bevel)
904
906
  info.ebbl = serializeEffectObject(e.bevel, 'bevel', log);
905
- if (((_k = e.solidFill) === null || _k === void 0 ? void 0 : _k[0]) && !multi)
907
+ if (useSingle(e.solidFill))
906
908
  info.SoFi = serializeEffectObject(e.solidFill[0], 'solidFill', log);
907
909
  if (e.patternOverlay)
908
910
  info.patternFill = serializeEffectObject(e.patternOverlay, 'patternOverlay', log);
909
- if (((_l = e.gradientOverlay) === null || _l === void 0 ? void 0 : _l[0]) && !multi)
911
+ if (useSingle(e.gradientOverlay))
910
912
  info.GrFl = serializeEffectObject(e.gradientOverlay[0], 'gradientOverlay', log);
911
913
  if (e.satin)
912
914
  info.ChFX = serializeEffectObject(e.satin, 'satin', log);
913
- if (((_m = e.stroke) === null || _m === void 0 ? void 0 : _m[0]) && !multi)
914
- info.FrFX = serializeFxObject((_o = e.stroke) === null || _o === void 0 ? void 0 : _o[0]);
915
+ if (useSingle(e.stroke))
916
+ info.FrFX = serializeFxObject((_c = e.stroke) === null || _c === void 0 ? void 0 : _c[0]);
915
917
  if (multi) {
916
918
  info.numModifyingFX = 0;
917
- for (var _p = 0, _q = Object.keys(e); _p < _q.length; _p++) {
918
- var key = _q[_p];
919
+ for (var _d = 0, _e = Object.keys(e); _d < _e.length; _d++) {
920
+ var key = _e[_d];
919
921
  var value = e[key];
920
922
  if (Array.isArray(value)) {
921
- for (var _r = 0, value_1 = value; _r < value_1.length; _r++) {
922
- var effect = value_1[_r];
923
+ for (var _f = 0, value_1 = value; _f < value_1.length; _f++) {
924
+ var effect = value_1[_f];
923
925
  if (effect.enabled)
924
926
  info.numModifyingFX++;
925
927
  }