@pixerate/editor 0.174.1 → 0.176.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/{chunk-OVYQAYGH.cjs → chunk-UHMSMUHK.cjs} +75 -66
- package/dist/{chunk-BDIM6NVW.js → chunk-Y46OMERN.js} +10 -1
- package/dist/effects/fake.d.cts +1 -1
- package/dist/effects/fake.d.ts +1 -1
- package/dist/effects/index.cjs +36 -22
- package/dist/effects/index.js +19 -5
- package/dist/effects/types.d.cts +6 -0
- package/dist/effects/types.d.ts +6 -0
- package/dist/effects/ui.d.cts +0 -6
- package/dist/effects/ui.d.ts +0 -6
- package/dist/image-editor/controller.d.cts +28 -5
- package/dist/image-editor/controller.d.ts +28 -5
- package/dist/image-editor/effect-layers.d.cts +40 -0
- package/dist/image-editor/effect-layers.d.ts +40 -0
- package/dist/image-editor/index.cjs +931 -812
- package/dist/image-editor/index.d.cts +1 -0
- package/dist/image-editor/index.d.ts +1 -0
- package/dist/image-editor/index.js +152 -33
- package/dist/image-editor/layers/model.d.cts +15 -1
- package/dist/image-editor/layers/model.d.ts +15 -1
- package/dist/image-editor/layers/panel.d.cts +6 -2
- package/dist/image-editor/layers/panel.d.ts +6 -2
- package/dist/image-editor/provider-effect-tools.d.cts +2 -1
- package/dist/image-editor/provider-effect-tools.d.ts +2 -1
- package/dist/paint-editor/index.cjs +6 -6
- package/dist/paint-editor/index.js +1 -1
- package/dist/parameters/index.cjs +33 -1
- package/dist/parameters/index.d.cts +2 -0
- package/dist/parameters/index.d.ts +2 -0
- package/dist/parameters/index.js +32 -0
- package/dist/parameters/options.d.cts +7 -0
- package/dist/parameters/options.d.ts +7 -0
- package/dist/parameters/theme.d.cts +30 -0
- package/dist/parameters/theme.d.ts +30 -0
- package/package.json +1 -1
- package/skills/pixerate-image-editor/SKILL.md +2 -1
|
@@ -2385,6 +2385,7 @@ function removeAlpha(imageData) {
|
|
|
2385
2385
|
var TEXT_ALIGNS = ["left", "center", "right", "justify"];
|
|
2386
2386
|
|
|
2387
2387
|
// src/image-editor/layers/model.ts
|
|
2388
|
+
var MAX_EFFECT_ANIMATION_MS = 6e4;
|
|
2388
2389
|
var SHAPE_OPERATIONS = ["combine", "subtract", "intersect", "exclude"];
|
|
2389
2390
|
var LIVE_SHAPE_KINDS = ["rect", "ellipse", "polygon", "star", "line"];
|
|
2390
2391
|
var idCounter = 0;
|
|
@@ -5926,7 +5927,14 @@ function deserializeLayer(raw, ctx) {
|
|
|
5926
5927
|
const filters = readFilters(r.filters);
|
|
5927
5928
|
if (filters) layer.filters = filters;
|
|
5928
5929
|
const generator = readEffectRef(r.generator);
|
|
5929
|
-
if (generator)
|
|
5930
|
+
if (generator) {
|
|
5931
|
+
const duration = _optionalChain([r, 'access', _169 => _169.generator, 'access', _170 => _170.animate, 'optionalAccess', _171 => _171.duration]);
|
|
5932
|
+
layer.generator = {
|
|
5933
|
+
...generator,
|
|
5934
|
+
...typeof r.generator.time === "number" && r.generator.time > 0 ? { time: r.generator.time } : {},
|
|
5935
|
+
...typeof duration === "number" && Number.isFinite(duration) && duration > 0 ? { animate: { duration: Math.min(duration, MAX_EFFECT_ANIMATION_MS) } } : {}
|
|
5936
|
+
};
|
|
5937
|
+
}
|
|
5930
5938
|
return layer;
|
|
5931
5939
|
}
|
|
5932
5940
|
case "adjustment": {
|
|
@@ -5951,7 +5959,7 @@ function deserializeLayer(raw, ctx) {
|
|
|
5951
5959
|
return null;
|
|
5952
5960
|
}
|
|
5953
5961
|
const annotation = JSON.parse(JSON.stringify({ ...a, id: typeof a.id === "string" ? a.id : id }));
|
|
5954
|
-
const migrated = annotationLayerFor(annotation, { ..._nullishCoalesce(ctx.canvas, () => ( { width: 1, height: 1 })), shaper: _nullishCoalesce(_optionalChain([ctx, 'access',
|
|
5962
|
+
const migrated = annotationLayerFor(annotation, { ..._nullishCoalesce(ctx.canvas, () => ( { width: 1, height: 1 })), shaper: _nullishCoalesce(_optionalChain([ctx, 'access', _172 => _172.text, 'optionalAccess', _173 => _173.shaper]), () => ( null)), createCanvas: _optionalChain([ctx, 'access', _174 => _174.text, 'optionalAccess', _175 => _175.createCanvas]) });
|
|
5955
5963
|
if (migrated.type === "shape" || migrated.type === "type") {
|
|
5956
5964
|
const blend = base.blend === "normal" ? migrated.blend : base.blend;
|
|
5957
5965
|
return { ...migrated, ...base, blend, id, name: base.name };
|
|
@@ -6343,7 +6351,7 @@ function descriptor(classId, items = []) {
|
|
|
6343
6351
|
return { name: "", classId, items };
|
|
6344
6352
|
}
|
|
6345
6353
|
function descGet(d, key) {
|
|
6346
|
-
return _optionalChain([d, 'access',
|
|
6354
|
+
return _optionalChain([d, 'access', _176 => _176.items, 'access', _177 => _177.find, 'call', _178 => _178(([k]) => k === key), 'optionalAccess', _179 => _179[1]]);
|
|
6347
6355
|
}
|
|
6348
6356
|
function descNumber(d, key) {
|
|
6349
6357
|
const v = descGet(d, key);
|
|
@@ -6353,7 +6361,7 @@ function descNumber(d, key) {
|
|
|
6353
6361
|
}
|
|
6354
6362
|
function descBool(d, key) {
|
|
6355
6363
|
const v = descGet(d, key);
|
|
6356
|
-
return _optionalChain([v, 'optionalAccess',
|
|
6364
|
+
return _optionalChain([v, 'optionalAccess', _180 => _180.type]) === "bool" ? v.value : void 0;
|
|
6357
6365
|
}
|
|
6358
6366
|
function descObject(d, key) {
|
|
6359
6367
|
const v = descGet(d, key);
|
|
@@ -7074,7 +7082,7 @@ var enumV = (typeId, value) => ({ type: "enum", typeId, value });
|
|
|
7074
7082
|
var obj = (d) => ({ type: "Objc", value: d });
|
|
7075
7083
|
var enumOf = (d, key) => {
|
|
7076
7084
|
const v = descGet(d, key);
|
|
7077
|
-
return _optionalChain([v, 'optionalAccess',
|
|
7085
|
+
return _optionalChain([v, 'optionalAccess', _181 => _181.type]) === "enum" ? v.value : void 0;
|
|
7078
7086
|
};
|
|
7079
7087
|
function read(data) {
|
|
7080
7088
|
try {
|
|
@@ -7156,7 +7164,7 @@ function strokeFromVstk(data, dpi, notes) {
|
|
|
7156
7164
|
const miter = descNumber(d, "strokeStyleMiterLimit");
|
|
7157
7165
|
if (miter !== void 0 && miter !== 100) stroke.miterLimit = Math.max(1, Math.min(500, miter));
|
|
7158
7166
|
const dashes = descGet(d, "strokeStyleLineDashSet");
|
|
7159
|
-
if (_optionalChain([dashes, 'optionalAccess',
|
|
7167
|
+
if (_optionalChain([dashes, 'optionalAccess', _182 => _182.type]) === "VlLs") {
|
|
7160
7168
|
const list2 = dashes.items.map((v) => v.type === "UntF" || v.type === "doub" || v.type === "long" ? v.value : NaN).filter((v) => Number.isFinite(v) && v >= 0);
|
|
7161
7169
|
if (list2.length && list2.some((v) => v > 0)) stroke.dashes = list2;
|
|
7162
7170
|
}
|
|
@@ -7308,7 +7316,7 @@ function vogkBytes(components, dpi) {
|
|
|
7308
7316
|
["keyOriginLineArrowEnd", boolV(Boolean(live.endArrow))],
|
|
7309
7317
|
["keyOriginLineArrWdth", dbl(head ? head.width / w * 100 : 0)],
|
|
7310
7318
|
["keyOriginLineArrLngth", dbl(head ? head.length / w * 100 : 0)],
|
|
7311
|
-
["keyOriginLineArrConc", long2(_optionalChain([head, 'optionalAccess',
|
|
7319
|
+
["keyOriginLineArrConc", long2(_optionalChain([head, 'optionalAccess', _183 => _183.concavity]) ? head.concavity * 100 : 0)]
|
|
7312
7320
|
];
|
|
7313
7321
|
}
|
|
7314
7322
|
const m = live.transform;
|
|
@@ -7341,7 +7349,7 @@ function shapeSignature(layer) {
|
|
|
7341
7349
|
return JSON.stringify([layer.components, layer.fill, layer.stroke, _nullishCoalesce(layer.fillRule, () => ( "nonzero")), Boolean(layer.inverted)]);
|
|
7342
7350
|
}
|
|
7343
7351
|
function shapeFromBlocks(blocks, width, height, dpi, notes) {
|
|
7344
|
-
const block = (k) => _optionalChain([blocks, 'access',
|
|
7352
|
+
const block = (k) => _optionalChain([blocks, 'access', _184 => _184.find, 'call', _185 => _185((b) => b.key === k), 'optionalAccess', _186 => _186.data]);
|
|
7345
7353
|
const vector = _nullishCoalesce(block("vsms"), () => ( block("vmsk")));
|
|
7346
7354
|
const path = vector ? componentsFromVectorBlock(vector, width, height) : null;
|
|
7347
7355
|
if (!path) return null;
|
|
@@ -7396,18 +7404,18 @@ function sameExtent(sub, c) {
|
|
|
7396
7404
|
return a.every((v, i) => Math.abs(v - b[i]) < 1);
|
|
7397
7405
|
}
|
|
7398
7406
|
function shapeBlocks(layer, width, height, dpi, notes) {
|
|
7399
|
-
const kept = _optionalChain([layer, 'access',
|
|
7400
|
-
if (_optionalChain([kept, 'optionalAccess',
|
|
7407
|
+
const kept = _optionalChain([layer, 'access', _187 => _187.psd, 'optionalAccess', _188 => _188.blocks]);
|
|
7408
|
+
if (_optionalChain([kept, 'optionalAccess', _189 => _189.length]) && _optionalChain([layer, 'access', _190 => _190.psd, 'optionalAccess', _191 => _191.signature]) === shapeSignature(layer)) return kept.map((b) => ({ key: b.key, data: b.data }));
|
|
7401
7409
|
const out = [];
|
|
7402
7410
|
out.push({ key: "vsms", data: vectorBlockForComponents(layer.components, Boolean(layer.inverted), width, height) });
|
|
7403
7411
|
if (layer.fillRule === "evenodd" && layer.components.some((c) => c.subpaths.length > 1)) notes.add("Even-odd fill rules were written as nonzero (Photoshop fills shapes nonzero)");
|
|
7404
7412
|
const fill = _nullishCoalesce(layer.fill, () => ( { type: "color", color: "#000000" }));
|
|
7405
|
-
if (_optionalChain([layer, 'access',
|
|
7413
|
+
if (_optionalChain([layer, 'access', _192 => _192.fill, 'optionalAccess', _193 => _193.opacity]) !== void 0 && layer.fill.opacity < 1) notes.add("Shape fill opacity has no PSD equivalent and was written as 100 % (use the layer fill opacity)");
|
|
7406
7414
|
out.push({ key: "vscg", data: vscgBytes(fill) });
|
|
7407
7415
|
if (layer.stroke || !layer.fill) out.push({ key: "vstk", data: vstkBytes(layer.stroke, Boolean(layer.fill), dpi) });
|
|
7408
7416
|
const vogk = vogkBytes(layer.components, dpi);
|
|
7409
7417
|
if (vogk) out.push({ key: "vogk", data: vogk });
|
|
7410
|
-
if (layer.components.some((c) => _optionalChain([c, 'access',
|
|
7418
|
+
if (layer.components.some((c) => _optionalChain([c, 'access', _194 => _194.live, 'optionalAccess', _195 => _195.kind]) === "line" && (c.live.startArrow && c.live.endArrow && JSON.stringify(c.live.startArrow) !== JSON.stringify(c.live.endArrow) || false))) {
|
|
7411
7419
|
notes.add("Lines with different start and end arrowheads were written with one arrowhead size (Photoshop has one)");
|
|
7412
7420
|
}
|
|
7413
7421
|
return out;
|
|
@@ -7616,7 +7624,7 @@ var E = {
|
|
|
7616
7624
|
bool: (value) => ({ t: "bool", value })
|
|
7617
7625
|
};
|
|
7618
7626
|
function eGet(v, key) {
|
|
7619
|
-
return _optionalChain([v, 'optionalAccess',
|
|
7627
|
+
return _optionalChain([v, 'optionalAccess', _196 => _196.t]) === "dict" ? _optionalChain([v, 'access', _197 => _197.items, 'access', _198 => _198.find, 'call', _199 => _199(([k]) => k === key), 'optionalAccess', _200 => _200[1]]) : void 0;
|
|
7620
7628
|
}
|
|
7621
7629
|
function ePath(v, keys) {
|
|
7622
7630
|
return keys.reduce((at, k) => eGet(at, k), v);
|
|
@@ -7634,7 +7642,7 @@ function eStr(v) {
|
|
|
7634
7642
|
return v && (v.t === "string" || v.t === "name") ? v.value : void 0;
|
|
7635
7643
|
}
|
|
7636
7644
|
function eArray(v) {
|
|
7637
|
-
return _optionalChain([v, 'optionalAccess',
|
|
7645
|
+
return _optionalChain([v, 'optionalAccess', _201 => _201.t]) === "array" ? v.items : [];
|
|
7638
7646
|
}
|
|
7639
7647
|
function eSet(d, key, value) {
|
|
7640
7648
|
if (d.t !== "dict") return;
|
|
@@ -7736,7 +7744,7 @@ function fontFromPostScript(ps) {
|
|
|
7736
7744
|
}
|
|
7737
7745
|
family += suffix;
|
|
7738
7746
|
const s = style.toLowerCase();
|
|
7739
|
-
const weight = _nullishCoalesce(_optionalChain([WEIGHTS, 'access',
|
|
7747
|
+
const weight = _nullishCoalesce(_optionalChain([WEIGHTS, 'access', _202 => _202.find, 'call', _203 => _203(([re]) => re.test(s)), 'optionalAccess', _204 => _204[1]]), () => ( 400));
|
|
7740
7748
|
return { family: family || ps, weight, italic: /italic|oblique|it$/.test(s) };
|
|
7741
7749
|
}
|
|
7742
7750
|
var STYLE_NAMES = [
|
|
@@ -7761,7 +7769,7 @@ var hex2 = (v) => Math.round(Math.max(0, Math.min(1, v)) * 255).toString(16).pad
|
|
|
7761
7769
|
function merged(levels) {
|
|
7762
7770
|
const items = [];
|
|
7763
7771
|
for (const l of levels) {
|
|
7764
|
-
if (_optionalChain([l, 'optionalAccess',
|
|
7772
|
+
if (_optionalChain([l, 'optionalAccess', _205 => _205.t]) !== "dict") continue;
|
|
7765
7773
|
for (const [k, v] of l.items) if (!items.some(([o]) => o === k)) items.push([k, v]);
|
|
7766
7774
|
}
|
|
7767
7775
|
return E.dict(items);
|
|
@@ -7832,10 +7840,10 @@ function typeFromTySh(data, notes) {
|
|
|
7832
7840
|
const t = parseTySh(data);
|
|
7833
7841
|
if (!t) return null;
|
|
7834
7842
|
const txtV = descGet(t.text, "Txt ");
|
|
7835
|
-
const txt = _optionalChain([txtV, 'optionalAccess',
|
|
7843
|
+
const txt = _optionalChain([txtV, 'optionalAccess', _206 => _206.type]) === "TEXT" ? txtV.value.replace(/\0+$/, "") : void 0;
|
|
7836
7844
|
const ed = descGet(t.text, "EngineData");
|
|
7837
7845
|
let engine = null;
|
|
7838
|
-
if (_optionalChain([ed, 'optionalAccess',
|
|
7846
|
+
if (_optionalChain([ed, 'optionalAccess', _207 => _207.type]) === "tdta") {
|
|
7839
7847
|
try {
|
|
7840
7848
|
engine = parseEngineData(ed.data);
|
|
7841
7849
|
} catch (e18) {
|
|
@@ -7843,12 +7851,12 @@ function typeFromTySh(data, notes) {
|
|
|
7843
7851
|
}
|
|
7844
7852
|
}
|
|
7845
7853
|
const anti = descGet(t.text, "AntA");
|
|
7846
|
-
const antiAlias = !(_optionalChain([anti, 'optionalAccess',
|
|
7854
|
+
const antiAlias = !(_optionalChain([anti, 'optionalAccess', _208 => _208.type]) === "enum" && (anti.value === "Anno" || anti.value === "antiAliasNone"));
|
|
7847
7855
|
const ornt = descGet(t.text, "Ornt");
|
|
7848
|
-
if (_optionalChain([ornt, 'optionalAccess',
|
|
7856
|
+
if (_optionalChain([ornt, 'optionalAccess', _209 => _209.type]) === "enum" && ornt.value === "Vrtc") notes.add("vertical type is laid out horizontally");
|
|
7849
7857
|
if (t.warp) {
|
|
7850
7858
|
const style = descGet(t.warp, "warpStyle");
|
|
7851
|
-
if (_optionalChain([style, 'optionalAccess',
|
|
7859
|
+
if (_optionalChain([style, 'optionalAccess', _210 => _210.type]) === "enum" && style.value !== "warpNone") notes.add("warped text is drawn without its warp when edited");
|
|
7852
7860
|
}
|
|
7853
7861
|
const edText = _nullishCoalesce(eStr(ePath(_nullishCoalesce(engine, () => ( void 0)), ["EngineDict", "Editor", "Text"])), () => ( ""));
|
|
7854
7862
|
const text3 = (_nullishCoalesce(txt, () => ( edText.replace(/\r$/, "")))).replace(/\r\n?/g, "\n");
|
|
@@ -7897,7 +7905,7 @@ function typeFromTySh(data, notes) {
|
|
|
7897
7905
|
let at = 0;
|
|
7898
7906
|
runs = ssheets.map((sheet, i) => {
|
|
7899
7907
|
const own = named(styleSet, sheet);
|
|
7900
|
-
const paraDefault = _optionalChain([paraBases, 'access',
|
|
7908
|
+
const paraDefault = _optionalChain([paraBases, 'access', _211 => _211[paraAt(at)], 'optionalAccess', _212 => _212.charDefault]);
|
|
7901
7909
|
at += _nullishCoalesce(slens[i], () => ( 0));
|
|
7902
7910
|
const d = merged([eGet(sheet, "StyleSheetData"), eGet(own, "StyleSheetData"), eGet(paraDefault, "StyleSheetData"), eGet(normalStyle, "StyleSheetData")]);
|
|
7903
7911
|
return { length: _nullishCoalesce(slens[i], () => ( 0)), style: charStyle(d, fonts, notes) };
|
|
@@ -7976,8 +7984,8 @@ var fontEntry = (name) => E.dict([
|
|
|
7976
7984
|
["Synthetic", E.int(0)]
|
|
7977
7985
|
]);
|
|
7978
7986
|
function buildEngineData(layer, template) {
|
|
7979
|
-
const e = _optionalChain([template, 'optionalAccess',
|
|
7980
|
-
if (_optionalChain([eGet, 'call',
|
|
7987
|
+
const e = _optionalChain([template, 'optionalAccess', _213 => _213.t]) === "dict" ? eClone(template) : E.dict([["EngineDict", E.dict()], ["ResourceDict", E.dict()]]);
|
|
7988
|
+
if (_optionalChain([eGet, 'call', _214 => _214(e, "EngineDict"), 'optionalAccess', _215 => _215.t]) !== "dict") eSet(e, "EngineDict", E.dict());
|
|
7981
7989
|
const dict = eGet(e, "EngineDict");
|
|
7982
7990
|
const text3 = layer.text.replace(/\n/g, "\r");
|
|
7983
7991
|
const edText = `${text3}\r`;
|
|
@@ -8056,7 +8064,7 @@ function buildEngineData(layer, template) {
|
|
|
8056
8064
|
eSet(e, key, rd);
|
|
8057
8065
|
}
|
|
8058
8066
|
eSet(rd, "FontSet", fontSet);
|
|
8059
|
-
if (!eGet(rd, "StyleSheetSet")) eSet(rd, "StyleSheetSet", E.array([E.dict([["Name", E.str("Normal RGB")], ["StyleSheetData", styleSheetData(_nullishCoalesce(_optionalChain([runs, 'access',
|
|
8067
|
+
if (!eGet(rd, "StyleSheetSet")) eSet(rd, "StyleSheetSet", E.array([E.dict([["Name", E.str("Normal RGB")], ["StyleSheetData", styleSheetData(_nullishCoalesce(_optionalChain([runs, 'access', _216 => _216[0], 'optionalAccess', _217 => _217.style]), () => ( _chunkEGZM52EOcjs.DEFAULT_TEXT_STYLE)), 0)]])]));
|
|
8060
8068
|
if (!eGet(rd, "ParagraphSheetSet")) eSet(rd, "ParagraphSheetSet", E.array([E.dict([["Name", E.str("Normal RGB")], ["DefaultStyleSheet", E.int(0)], ["Properties", paragraphProperties({})]])]));
|
|
8061
8069
|
if (!eGet(rd, "TheNormalStyleSheet")) eSet(rd, "TheNormalStyleSheet", E.int(0));
|
|
8062
8070
|
if (!eGet(rd, "TheNormalParagraphSheet")) eSet(rd, "TheNormalParagraphSheet", E.int(0));
|
|
@@ -8077,12 +8085,12 @@ function inkBounds2(layer) {
|
|
|
8077
8085
|
return [Math.min(...pts.map((p) => p.x)), Math.min(...pts.map((p) => p.y)), Math.max(...pts.map((p) => p.x)), Math.max(...pts.map((p) => p.y))];
|
|
8078
8086
|
}
|
|
8079
8087
|
function tyShForLayer(layer) {
|
|
8080
|
-
const raw = _optionalChain([layer, 'access',
|
|
8081
|
-
if (raw && _optionalChain([layer, 'access',
|
|
8088
|
+
const raw = _optionalChain([layer, 'access', _218 => _218.psd, 'optionalAccess', _219 => _219.tySh]);
|
|
8089
|
+
if (raw && _optionalChain([layer, 'access', _220 => _220.psd, 'optionalAccess', _221 => _221.signature]) === typeSignature(layer)) return raw;
|
|
8082
8090
|
const old = raw ? parseTySh(raw) : null;
|
|
8083
8091
|
const oldEd = old ? descGet(old.text, "EngineData") : void 0;
|
|
8084
8092
|
let template = null;
|
|
8085
|
-
if (_optionalChain([oldEd, 'optionalAccess',
|
|
8093
|
+
if (_optionalChain([oldEd, 'optionalAccess', _222 => _222.type]) === "tdta") {
|
|
8086
8094
|
try {
|
|
8087
8095
|
template = parseEngineData(oldEd.data);
|
|
8088
8096
|
} catch (e19) {
|
|
@@ -8114,8 +8122,8 @@ function tyShForLayer(layer) {
|
|
|
8114
8122
|
set("boundingBox", rect("boundingBox"));
|
|
8115
8123
|
if (!descGet(text3, "TextIndex")) set("TextIndex", { type: "long", value: 0 });
|
|
8116
8124
|
set("EngineData", { type: "tdta", data: writeEngineData(engine) });
|
|
8117
|
-
const warpStyle = _optionalChain([old, 'optionalAccess',
|
|
8118
|
-
const warp = _optionalChain([old, 'optionalAccess',
|
|
8125
|
+
const warpStyle = _optionalChain([old, 'optionalAccess', _223 => _223.warp]) ? descGet(old.warp, "warpStyle") : void 0;
|
|
8126
|
+
const warp = _optionalChain([old, 'optionalAccess', _224 => _224.warp]) && _optionalChain([warpStyle, 'optionalAccess', _225 => _225.type]) === "enum" && warpStyle.value === "warpNone" ? old.warp : null;
|
|
8119
8127
|
return writeTySh({ transform: textMatrix(layer), text: text3, warp, tail: new Uint8Array(16) });
|
|
8120
8128
|
}
|
|
8121
8129
|
|
|
@@ -8315,15 +8323,15 @@ var textV = (value) => ({ type: "TEXT", value });
|
|
|
8315
8323
|
var obj2 = (d) => ({ type: "Objc", value: d });
|
|
8316
8324
|
var text = (d, key) => {
|
|
8317
8325
|
const v = descGet(d, key);
|
|
8318
|
-
return _optionalChain([v, 'optionalAccess',
|
|
8326
|
+
return _optionalChain([v, 'optionalAccess', _226 => _226.type]) === "TEXT" ? v.value : void 0;
|
|
8319
8327
|
};
|
|
8320
8328
|
var enumOf2 = (d, key) => {
|
|
8321
8329
|
const v = descGet(d, key);
|
|
8322
|
-
return _optionalChain([v, 'optionalAccess',
|
|
8330
|
+
return _optionalChain([v, 'optionalAccess', _227 => _227.type]) === "enum" ? v.value : void 0;
|
|
8323
8331
|
};
|
|
8324
8332
|
var numbers = (d, key) => {
|
|
8325
8333
|
const v = descGet(d, key);
|
|
8326
|
-
if (_optionalChain([v, 'optionalAccess',
|
|
8334
|
+
if (_optionalChain([v, 'optionalAccess', _228 => _228.type]) !== "VlLs") return null;
|
|
8327
8335
|
const out = [];
|
|
8328
8336
|
for (const it of v.items) {
|
|
8329
8337
|
if (it.type === "doub" || it.type === "UntF" || it.type === "long") out.push(it.value);
|
|
@@ -8518,8 +8526,8 @@ function filterMaskItem(placed, mask, area) {
|
|
|
8518
8526
|
const painted = _chunkCWM3CUUXcjs.contentBounds.call(void 0, mask.surface);
|
|
8519
8527
|
let b = _nullishCoalesce(painted, () => ( { x: 0, y: 0, width: 1, height: 1 }));
|
|
8520
8528
|
if (mask.defaultValue !== 255 && area) {
|
|
8521
|
-
const x0 = Math.min(area.x, _nullishCoalesce(_optionalChain([painted, 'optionalAccess',
|
|
8522
|
-
const y0 = Math.min(area.y, _nullishCoalesce(_optionalChain([painted, 'optionalAccess',
|
|
8529
|
+
const x0 = Math.min(area.x, _nullishCoalesce(_optionalChain([painted, 'optionalAccess', _229 => _229.x]), () => ( area.x)));
|
|
8530
|
+
const y0 = Math.min(area.y, _nullishCoalesce(_optionalChain([painted, 'optionalAccess', _230 => _230.y]), () => ( area.y)));
|
|
8523
8531
|
const x1 = Math.max(area.x + area.width, painted ? painted.x + painted.width : 0);
|
|
8524
8532
|
const y1 = Math.max(area.y + area.height, painted ? painted.y + painted.height : 0);
|
|
8525
8533
|
b = { x: x0, y: y0, width: x1 - x0, height: y1 - y0 };
|
|
@@ -8539,7 +8547,7 @@ function filterMaskItem(placed, mask, area) {
|
|
|
8539
8547
|
}
|
|
8540
8548
|
var warpStyleOf = (name) => {
|
|
8541
8549
|
if (!name.startsWith("warp")) return null;
|
|
8542
|
-
const s = _optionalChain([name, 'access',
|
|
8550
|
+
const s = _optionalChain([name, 'access', _231 => _231[4], 'optionalAccess', _232 => _232.toLowerCase, 'call', _233 => _233()]) + name.slice(5);
|
|
8543
8551
|
return _chunkEGZM52EOcjs.WARP_STYLES.includes(s) ? s : null;
|
|
8544
8552
|
};
|
|
8545
8553
|
function warpFromDescriptor(w, contents) {
|
|
@@ -8561,7 +8569,7 @@ function warpFromDescriptor(w, contents) {
|
|
|
8561
8569
|
if (!arr || arr.type !== "ObAr") return void 0;
|
|
8562
8570
|
const xs = descGet(arr.body, "Hrzn");
|
|
8563
8571
|
const ys = descGet(arr.body, "Vrtc");
|
|
8564
|
-
if (_optionalChain([xs, 'optionalAccess',
|
|
8572
|
+
if (_optionalChain([xs, 'optionalAccess', _234 => _234.type]) !== "UnFl" || _optionalChain([ys, 'optionalAccess', _235 => _235.type]) !== "UnFl" || xs.values.length !== 16 || ys.values.length !== 16) return void 0;
|
|
8565
8573
|
mesh = { us: [0, 1], vs: [0, 1], points: xs.values.map((x, i) => ({ x, y: ys.values[i] })) };
|
|
8566
8574
|
const px2 = mesh.points.map((p) => p.x);
|
|
8567
8575
|
const py = mesh.points.map((p) => p.y);
|
|
@@ -8728,13 +8736,13 @@ function blendOptions(f) {
|
|
|
8728
8736
|
function smartFiltersFromPsd(fx, newId, notes) {
|
|
8729
8737
|
const filters = [];
|
|
8730
8738
|
const list2 = descGet(fx, "filterFXList");
|
|
8731
|
-
for (const v of _optionalChain([list2, 'optionalAccess',
|
|
8739
|
+
for (const v of _optionalChain([list2, 'optionalAccess', _236 => _236.type]) === "VlLs" ? list2.items : []) {
|
|
8732
8740
|
if (v.type !== "Objc" && v.type !== "GlbO") continue;
|
|
8733
8741
|
const item = v.value;
|
|
8734
8742
|
const { blend, opacity } = blendOptionsOf(item);
|
|
8735
8743
|
const enabled = descBool(item, "enab") !== false;
|
|
8736
8744
|
const fltr = descObject(item, "Fltr");
|
|
8737
|
-
const radius = _optionalChain([fltr, 'optionalAccess',
|
|
8745
|
+
const radius = _optionalChain([fltr, 'optionalAccess', _237 => _237.classId]) === BOX_BLUR.classId ? descNumber(fltr, "Rds ") : void 0;
|
|
8738
8746
|
if (radius !== void 0 && radius >= 0 && radius <= 50) {
|
|
8739
8747
|
filters.push({ id: newId(), kind: "blur", enabled, radius, blend, opacity });
|
|
8740
8748
|
continue;
|
|
@@ -9087,7 +9095,7 @@ function readPsd(bytes) {
|
|
|
9087
9095
|
return { header, colorModeData, resources, layers, mergedAlpha, globalBlocks, imageCompression, imageData: r.rest() };
|
|
9088
9096
|
}
|
|
9089
9097
|
function layerBlock(rec, key) {
|
|
9090
|
-
return _optionalChain([rec, 'access',
|
|
9098
|
+
return _optionalChain([rec, 'access', _238 => _238.blocks, 'access', _239 => _239.find, 'call', _240 => _240((b) => b.key === key), 'optionalAccess', _241 => _241.data]);
|
|
9091
9099
|
}
|
|
9092
9100
|
function layerName(rec) {
|
|
9093
9101
|
const luni = layerBlock(rec, "luni");
|
|
@@ -9118,7 +9126,7 @@ function u8Block(rec, key) {
|
|
|
9118
9126
|
function layerTree(file) {
|
|
9119
9127
|
const stack = [[]];
|
|
9120
9128
|
file.layers.forEach((rec, index) => {
|
|
9121
|
-
const kind = _nullishCoalesce(_optionalChain([sectionDivider, 'call',
|
|
9129
|
+
const kind = _nullishCoalesce(_optionalChain([sectionDivider, 'call', _242 => _242(rec), 'optionalAccess', _243 => _243.kind]), () => ( SECTION_OTHER));
|
|
9122
9130
|
if (kind === SECTION_DIVIDER) {
|
|
9123
9131
|
stack.push([]);
|
|
9124
9132
|
} else if (kind === SECTION_OPEN || kind === SECTION_CLOSED) {
|
|
@@ -9136,7 +9144,7 @@ function layerTree(file) {
|
|
|
9136
9144
|
}
|
|
9137
9145
|
function channelRect(rec, id) {
|
|
9138
9146
|
if (id === CHANNEL_USER_MASK && rec.mask) return rec.mask.rect;
|
|
9139
|
-
if (id === CHANNEL_REAL_USER_MASK && rec.mask) return _nullishCoalesce(_optionalChain([rec, 'access',
|
|
9147
|
+
if (id === CHANNEL_REAL_USER_MASK && rec.mask) return _nullishCoalesce(_optionalChain([rec, 'access', _244 => _244.mask, 'access', _245 => _245.real, 'optionalAccess', _246 => _246.rect]), () => ( rec.mask.rect));
|
|
9140
9148
|
return rec.rect;
|
|
9141
9149
|
}
|
|
9142
9150
|
function decodeLayerChannel(file, rec, id) {
|
|
@@ -9154,7 +9162,7 @@ function decodeMergedImage(file) {
|
|
|
9154
9162
|
return decodePlanes(file.imageCompression, file.imageData, { planes: channels, width, height, depth, psb });
|
|
9155
9163
|
}
|
|
9156
9164
|
function resource(file, id) {
|
|
9157
|
-
return _optionalChain([file, 'access',
|
|
9165
|
+
return _optionalChain([file, 'access', _247 => _247.resources, 'access', _248 => _248.find, 'call', _249 => _249((r) => r.id === id), 'optionalAccess', _250 => _250.data]);
|
|
9158
9166
|
}
|
|
9159
9167
|
function resolution(file) {
|
|
9160
9168
|
const d = resource(file, 1005);
|
|
@@ -9938,7 +9946,7 @@ function importNode(ctx, node, depth) {
|
|
|
9938
9946
|
if (node.children) {
|
|
9939
9947
|
const props2 = baseProps(ctx, rec, name, notes);
|
|
9940
9948
|
const divider = sectionDivider(rec);
|
|
9941
|
-
const key = _nullishCoalesce(_optionalChain([divider, 'optionalAccess',
|
|
9949
|
+
const key = _nullishCoalesce(_optionalChain([divider, 'optionalAccess', _251 => _251.blendKey]), () => ( rec.blendKey));
|
|
9942
9950
|
const groupBlend = key === "pass" ? "pass-through" : _nullishCoalesce(PSD_BLEND_KEYS[key], () => ( "normal"));
|
|
9943
9951
|
const children = [];
|
|
9944
9952
|
for (const child of node.children) {
|
|
@@ -9948,7 +9956,7 @@ function importNode(ctx, node, depth) {
|
|
|
9948
9956
|
const group = { type: "group", id: ctx.newId(name), ...props2, blend: groupBlend, children };
|
|
9949
9957
|
const effects2 = recordEffects(ctx, rec, name, notes, true);
|
|
9950
9958
|
if (effects2) group.effects = effects2;
|
|
9951
|
-
if (_optionalChain([divider, 'optionalAccess',
|
|
9959
|
+
if (_optionalChain([divider, 'optionalAccess', _252 => _252.kind]) === SECTION_CLOSED) group.collapsed = true;
|
|
9952
9960
|
const mask2 = recordMask(ctx, rec, name);
|
|
9953
9961
|
if (mask2) group.mask = mask2;
|
|
9954
9962
|
entry.type = "group";
|
|
@@ -10171,7 +10179,7 @@ function importSmart(ctx, rec, name, notes, props) {
|
|
|
10171
10179
|
const file = ctx.linked.get(placed.idnt);
|
|
10172
10180
|
contents = {
|
|
10173
10181
|
id: placed.idnt || ctx.newId(`${name}-contents`),
|
|
10174
|
-
name: _optionalChain([file, 'optionalAccess',
|
|
10182
|
+
name: _optionalChain([file, 'optionalAccess', _253 => _253.name]) || `${name}.png`,
|
|
10175
10183
|
width,
|
|
10176
10184
|
height,
|
|
10177
10185
|
kind: "raster",
|
|
@@ -10328,7 +10336,7 @@ function psdToLayers(file, options = {}) {
|
|
|
10328
10336
|
if (mode !== "rgb" && header.depth > 8 && header.colorMode !== MODE_INDEXED && header.colorMode !== MODE_BITMAP) {
|
|
10329
10337
|
warn.extra.push(`The file is ${header.depth}-bit ${mode}; it was converted to ${header.depth}-bit RGB.`);
|
|
10330
10338
|
} else if (mode !== "rgb" || header.depth !== 8 && header.depth !== 16 && header.depth !== 32) {
|
|
10331
|
-
const how = header.colorMode === MODE_CMYK ? ` through ${_nullishCoalesce(_optionalChain([cmykProfile, 'optionalAccess',
|
|
10339
|
+
const how = header.colorMode === MODE_CMYK ? ` through ${_nullishCoalesce(_optionalChain([cmykProfile, 'optionalAccess', _254 => _254.name]), () => ( "its profile"))}` : "";
|
|
10332
10340
|
warn.extra.push(`The file is ${header.depth}-bit ${mode}; it was converted to 8-bit RGB${how}.`);
|
|
10333
10341
|
}
|
|
10334
10342
|
let layers = [];
|
|
@@ -10434,15 +10442,15 @@ var pct = (d, key, fallback) => num3(d, key, fallback * 100) / 100;
|
|
|
10434
10442
|
var bool = (d, key) => descBool(d, key) === true;
|
|
10435
10443
|
var enumOf3 = (d, key) => {
|
|
10436
10444
|
const v = descGet(d, key);
|
|
10437
|
-
return _optionalChain([v, 'optionalAccess',
|
|
10445
|
+
return _optionalChain([v, 'optionalAccess', _255 => _255.type]) === "enum" ? v.value : void 0;
|
|
10438
10446
|
};
|
|
10439
10447
|
var text2 = (d, key) => {
|
|
10440
10448
|
const v = d ? descGet(d, key) : void 0;
|
|
10441
|
-
return _optionalChain([v, 'optionalAccess',
|
|
10449
|
+
return _optionalChain([v, 'optionalAccess', _256 => _256.type]) === "TEXT" ? v.value : "";
|
|
10442
10450
|
};
|
|
10443
10451
|
var list = (d, key) => {
|
|
10444
10452
|
const v = descGet(d, key);
|
|
10445
|
-
if (_optionalChain([v, 'optionalAccess',
|
|
10453
|
+
if (_optionalChain([v, 'optionalAccess', _257 => _257.type]) !== "VlLs") return [];
|
|
10446
10454
|
return v.items.flatMap((it) => it.type === "Objc" || it.type === "GlbO" ? [it.value] : []);
|
|
10447
10455
|
};
|
|
10448
10456
|
var clamp3 = (v, lo, hi) => Number.isFinite(v) ? Math.min(hi, Math.max(lo, v)) : lo;
|
|
@@ -10512,8 +10520,8 @@ function contourOf(d, key) {
|
|
|
10512
10520
|
return { name, points };
|
|
10513
10521
|
}
|
|
10514
10522
|
function contourDesc(c) {
|
|
10515
|
-
const name = _nullishCoalesce(_optionalChain([c, 'optionalAccess',
|
|
10516
|
-
const points = _nullishCoalesce(_optionalChain([c, 'optionalAccess',
|
|
10523
|
+
const name = _nullishCoalesce(_optionalChain([c, 'optionalAccess', _258 => _258.name]), () => ( "Linear"));
|
|
10524
|
+
const points = _nullishCoalesce(_optionalChain([c, 'optionalAccess', _259 => _259.points]), () => ( [
|
|
10517
10525
|
{ input: 0, output: 0 },
|
|
10518
10526
|
{ input: 1, output: 1 }
|
|
10519
10527
|
]));
|
|
@@ -10548,7 +10556,7 @@ function gradientOf(d, notes) {
|
|
|
10548
10556
|
{ position: 0, color: "#000000" },
|
|
10549
10557
|
{ position: 1, color: "#ffffff" }
|
|
10550
10558
|
],
|
|
10551
|
-
style: _nullishCoalesce(_optionalChain([GRADIENT_STYLES, 'access',
|
|
10559
|
+
style: _nullishCoalesce(_optionalChain([GRADIENT_STYLES, 'access', _260 => _260.find, 'call', _261 => _261(([, id]) => id === enumOf3(d, "Type")), 'optionalAccess', _262 => _262[0]]), () => ( "linear")),
|
|
10552
10560
|
angle: clamp3(num3(d, "Angl", 90), -360, 360),
|
|
10553
10561
|
scale: clamp3(pct(d, "Scl ", 1), 0.1, 1.5),
|
|
10554
10562
|
reverse: bool(d, "Rvrs"),
|
|
@@ -10602,7 +10610,7 @@ function gradientItems(g) {
|
|
|
10602
10610
|
)
|
|
10603
10611
|
)
|
|
10604
10612
|
};
|
|
10605
|
-
const op = _optionalChain([g, 'access',
|
|
10613
|
+
const op = _optionalChain([g, 'access', _263 => _263.opacityStops, 'optionalAccess', _264 => _264.length]) ? g.opacityStops : g.stops.map((s) => ({ position: s.position, opacity: 1 }));
|
|
10606
10614
|
const trns = {
|
|
10607
10615
|
type: "VlLs",
|
|
10608
10616
|
items: op.map(
|
|
@@ -11099,9 +11107,9 @@ function prepareNestedLayers(layers) {
|
|
|
11099
11107
|
if (l.type === "annotation") continue;
|
|
11100
11108
|
let next = l;
|
|
11101
11109
|
if (l.type === "group") next = { ...l, children: prepareNestedLayers(l.children) };
|
|
11102
|
-
else if (l.type === "pixel" && (_optionalChain([l, 'access',
|
|
11110
|
+
else if (l.type === "pixel" && (_optionalChain([l, 'access', _265 => _265.filters, 'optionalAccess', _266 => _266.length]) || l.source === "document")) {
|
|
11103
11111
|
const p = { ...l };
|
|
11104
|
-
if (_optionalChain([l, 'access',
|
|
11112
|
+
if (_optionalChain([l, 'access', _267 => _267.filters, 'optionalAccess', _268 => _268.some, 'call', _269 => _269(isActiveFilter)])) {
|
|
11105
11113
|
const b = l.surface.bounds;
|
|
11106
11114
|
if (b) {
|
|
11107
11115
|
const r = { x: b.x + l.offset.x - 64, y: b.y + l.offset.y - 64, width: b.width + 128, height: b.height + 128 };
|
|
@@ -11118,7 +11126,7 @@ function prepareNestedLayers(layers) {
|
|
|
11118
11126
|
delete p.source;
|
|
11119
11127
|
next = p;
|
|
11120
11128
|
}
|
|
11121
|
-
if (_optionalChain([next, 'access',
|
|
11129
|
+
if (_optionalChain([next, 'access', _270 => _270.mask, 'optionalAccess', _271 => _271.source])) {
|
|
11122
11130
|
next = { ...next };
|
|
11123
11131
|
delete next.mask;
|
|
11124
11132
|
}
|
|
@@ -11224,7 +11232,7 @@ function exportPsd(input) {
|
|
|
11224
11232
|
return {
|
|
11225
11233
|
opacity: Math.round(Math.min(1, Math.max(0, layer.opacity)) * 255),
|
|
11226
11234
|
clipping: layer.clipped ? 1 : 0,
|
|
11227
|
-
flags: (layer.visible ? 0 : LAYER_FLAG_HIDDEN) | (_optionalChain([layer, 'access',
|
|
11235
|
+
flags: (layer.visible ? 0 : LAYER_FLAG_HIDDEN) | (_optionalChain([layer, 'access', _272 => _272.locks, 'optionalAccess', _273 => _273.transparency]) ? LAYER_FLAG_TRANSPARENCY_PROTECTED : 0),
|
|
11228
11236
|
legacyName: name,
|
|
11229
11237
|
blocks
|
|
11230
11238
|
};
|
|
@@ -11281,7 +11289,7 @@ function exportPsd(input) {
|
|
|
11281
11289
|
}
|
|
11282
11290
|
case "pixel": {
|
|
11283
11291
|
if (layer.source === "document") throw new PsdError(`Layer "${layer.name}" reads the document image; resolve its pixels before export.`);
|
|
11284
|
-
if (_optionalChain([layer, 'access',
|
|
11292
|
+
if (_optionalChain([layer, 'access', _274 => _274.filters, 'optionalAccess', _275 => _275.some, 'call', _276 => _276(isActiveFilter)])) throw new PsdError(`Layer "${layer.name}" has live filters; bake them before export.`);
|
|
11285
11293
|
const extra = [];
|
|
11286
11294
|
if (layer.fillOpacity !== void 0 && layer.fillOpacity < 1) {
|
|
11287
11295
|
extra.push({ key: "iOpa", data: Uint8Array.from([Math.round(Math.max(0, layer.fillOpacity) * 255), 0, 0, 0]) });
|
|
@@ -11313,7 +11321,7 @@ function exportPsd(input) {
|
|
|
11313
11321
|
if (c.linked) note("Linked smart objects were embedded (their preview is written as the contents)", layer.name);
|
|
11314
11322
|
linkedFiles.set(idnt, smartContentsFile(c));
|
|
11315
11323
|
}
|
|
11316
|
-
let placedId = _nullishCoalesce(_optionalChain([layer, 'access',
|
|
11324
|
+
let placedId = _nullishCoalesce(_optionalChain([layer, 'access', _277 => _277.psd, 'optionalAccess', _278 => _278.placed]), () => ( psdUuid(`${layer.id}:placed`)));
|
|
11317
11325
|
if (placedIds.has(placedId)) placedId = psdUuid(`${layer.id}:placed:${placedIds.size}`);
|
|
11318
11326
|
placedIds.add(placedId);
|
|
11319
11327
|
if (placedUnchanged(layer, idnt, placedId)) {
|
|
@@ -11323,12 +11331,12 @@ function exportPsd(input) {
|
|
|
11323
11331
|
const filterFX = layer.smartFilters ? filterFXDescriptor(layer.smartFilters, dropped) : void 0;
|
|
11324
11332
|
if (dropped.length) note("Develop smart filters have no Photoshop filter and were left out of the filter list (the layer\u2019s pixels still show them)", layer.name);
|
|
11325
11333
|
const raw = layer.psd && layer.psd.key !== "PlLd" ? parsePlaced(layer.psd.key, layer.psd.data) : null;
|
|
11326
|
-
const spec = { idnt, placed: placedId, placement: layer.placement, size: { width: c.width, height: c.height }, filterFX, template: _optionalChain([raw, 'optionalAccess',
|
|
11334
|
+
const spec = { idnt, placed: placedId, placement: layer.placement, size: { width: c.width, height: c.height }, filterFX, template: _optionalChain([raw, 'optionalAccess', _279 => _279.descriptor]) };
|
|
11327
11335
|
const wnotes = [];
|
|
11328
11336
|
extra.push({ key: "PlLd", data: plldBytes(spec) }, { key: "SoLd", data: soldBytes(spec, wnotes) });
|
|
11329
11337
|
for (const n2 of wnotes) note(`A smart object: ${n2}`, layer.name);
|
|
11330
11338
|
}
|
|
11331
|
-
const fm = _optionalChain([layer, 'access',
|
|
11339
|
+
const fm = _optionalChain([layer, 'access', _280 => _280.smartFilters, 'optionalAccess', _281 => _281.mask]);
|
|
11332
11340
|
if (fm && !fm.source) filterItems.push(filterMaskItem(placedId, fm, { x: 0, y: 0, width, height }));
|
|
11333
11341
|
const rec = { ...common2(layer, extra), rect: EMPTY_RECT, channels: [], blendKey: _nullishCoalesce(BLEND_TO_PSD[layer.blend], () => ( "norm")) };
|
|
11334
11342
|
const bounds = _chunkCWM3CUUXcjs.contentBounds.call(void 0, layer.surface);
|
|
@@ -11356,8 +11364,8 @@ function exportPsd(input) {
|
|
|
11356
11364
|
const losses = /* @__PURE__ */ new Set();
|
|
11357
11365
|
for (const b of shapeBlocks(layer, width, height, _nullishCoalesce(input.resolution, () => ( 72)), losses)) extra.push({ key: b.key, data: padEven(b.data) });
|
|
11358
11366
|
for (const n2 of losses) note(n2, layer.name);
|
|
11359
|
-
if (_optionalChain([layer, 'access',
|
|
11360
|
-
if (_optionalChain([layer, 'access',
|
|
11367
|
+
if (_optionalChain([layer, 'access', _282 => _282.fill, 'optionalAccess', _283 => _283.type]) === "pattern") patternIds2.add(layer.fill.patternId);
|
|
11368
|
+
if (_optionalChain([layer, 'access', _284 => _284.stroke, 'optionalAccess', _285 => _285.paint, 'access', _286 => _286.type]) === "pattern") patternIds2.add(layer.stroke.paint.patternId);
|
|
11361
11369
|
} else {
|
|
11362
11370
|
extra.push({ key: "TySh", data: padEven(tyShForLayer(layer)) });
|
|
11363
11371
|
}
|
|
@@ -11421,7 +11429,7 @@ function exportPsd(input) {
|
|
|
11421
11429
|
{ id: 1005, name: "", data: rw.result() },
|
|
11422
11430
|
{ id: 1057, name: "", data: version.result() }
|
|
11423
11431
|
];
|
|
11424
|
-
if (_optionalChain([input, 'access',
|
|
11432
|
+
if (_optionalChain([input, 'access', _287 => _287.iccProfile, 'optionalAccess', _288 => _288.length])) resources.push({ id: 1039, name: "", data: input.iccProfile });
|
|
11425
11433
|
if (input.globalLight) {
|
|
11426
11434
|
const i32 = (v) => {
|
|
11427
11435
|
const w = new PsdWriter();
|
|
@@ -11836,4 +11844,5 @@ function exportPsd(input) {
|
|
|
11836
11844
|
|
|
11837
11845
|
|
|
11838
11846
|
|
|
11839
|
-
exports.LEGACY_PROCESS_VERSION = LEGACY_PROCESS_VERSION; exports.LATEST_PROCESS_VERSION = LATEST_PROCESS_VERSION; exports.normalizeProcessVersion = normalizeProcessVersion; exports.srgbToLinear = srgbToLinear; exports.linearToSrgb = linearToSrgb; exports.LUMA_709 = LUMA_709; exports.IDENTITY_MATRIX3 = IDENTITY_MATRIX3; exports.mulMatrix3 = mulMatrix3; exports.applyMatrix3 = applyMatrix3; exports.invertMatrix3 = invertMatrix3; exports.D65 = D65; exports.bradfordAdaptation = bradfordAdaptation; exports.wbMatrix = wbMatrix; exports.linearSrgbToXy = linearSrgbToXy; exports.TINT_SCALE = TINT_SCALE; exports.MIN_KELVIN = MIN_KELVIN; exports.MAX_KELVIN = MAX_KELVIN; exports.xyToUv = xyToUv; exports.uvToXy = uvToXy; exports.tempTintToXy = tempTintToXy; exports.xyToTempTint = xyToTempTint; exports.AS_SHOT_KELVIN = AS_SHOT_KELVIN; exports.MIRED_PER_TEMPERATURE_UNIT = MIRED_PER_TEMPERATURE_UNIT; exports.temperatureToKelvin = temperatureToKelvin; exports.kelvinToTemperature = kelvinToTemperature; exports.whiteBalanceMatrix = whiteBalanceMatrix; exports.whiteBalanceFromSample = whiteBalanceFromSample; exports.TONE_LUT_SIZE = TONE_LUT_SIZE; exports.toneCurve = toneCurve; exports.buildToneLut = buildToneLut; exports.sampleToneLut = sampleToneLut; exports.normalizeAngle = normalizeAngle; exports.isQuarterTurnSwapped = isQuarterTurnSwapped; exports.getRotatedSize = getRotatedSize; exports.projectImagePoint = projectImagePoint; exports.unprojectCanvasPoint = unprojectCanvasPoint; exports.applyImageProjectionToContext = applyImageProjectionToContext; exports.projectImageRect = projectImageRect; exports.clampCropToImage = clampCropToImage; exports.getViewportProjection = getViewportProjection; exports.getViewportMetrics = getViewportMetrics; exports.canvasToImagePoint = canvasToImagePoint; exports.imageToCanvasPoint = imageToCanvasPoint; exports.mapCropHandle = mapCropHandle; exports.hitTestCrop = hitTestCrop; exports.getCropCursor = getCropCursor; exports.calculateCropDrag = calculateCropDrag; exports.getAnnotationBounds = getAnnotationBounds; exports.hitTestAnnotation = hitTestAnnotation; exports.SELECTION_MODES = SELECTION_MODES; exports.isSelectionMode = isSelectionMode; exports.parseSelectionMode = parseSelectionMode; exports.computeSelectionBounds = computeSelectionBounds; exports.createSelectionMask = createSelectionMask; exports.fullSelection = fullSelection; exports.isSelectionEmpty = isSelectionEmpty; exports.selectionValueAt = selectionValueAt; exports.coverageToByte = coverageToByte; exports.selectionFromCoverage = selectionFromCoverage; exports.selectionToCoverage = selectionToCoverage; exports.selectionArea = selectionArea; exports.combineSelections = combineSelections; exports.invertSelection = invertSelection; exports.resizeSelection = resizeSelection; exports.selectionFromPixels = selectionFromPixels; exports.selectionToPixels = selectionToPixels; exports.encodeSelectionRle = encodeSelectionRle; exports.decodeSelectionRle = decodeSelectionRle; exports.serializeSelection = serializeSelection; exports.deserializeSelection = deserializeSelection; exports.hashMaskContent = hashMaskContent; exports.EMPTY_DISTANCE = EMPTY_DISTANCE; exports.distanceTransform = distanceTransform; exports.expandCoverage = expandCoverage; exports.contractCoverage = contractCoverage; exports.borderCoverage = borderCoverage; exports.smoothCoverage = smoothCoverage; exports.featherCoverage = featherCoverage; exports.greyMorphology = greyMorphology; exports.shiftCoverage = shiftCoverage; exports.SELECTION_MODIFY_OPS = SELECTION_MODIFY_OPS; exports.modifySelection = modifySelection; exports.normalizeLayerMask = normalizeLayerMask; exports.layerMaskFromSelection = layerMaskFromSelection; exports.updateLayerMaskProps = updateLayerMaskProps; exports.decodeLayerMask = decodeLayerMask; exports.layerMaskKey = layerMaskKey; exports.layerMaskCoverage = layerMaskCoverage; exports.projectMaskCoverage = projectMaskCoverage; exports.buildLayerMaskPlanes = buildLayerMaskPlanes; exports.ADJUSTMENT_LUT_SIZE = ADJUSTMENT_LUT_SIZE; exports.sampleLut = sampleLut; exports.ADJUSTMENT_KINDS = ADJUSTMENT_KINDS; exports.isAdjustmentKind = isAdjustmentKind; exports.adjustmentKindLabel = adjustmentKindLabel; exports.HUE_RANGE_LABELS = HUE_RANGE_LABELS; exports.neutralHueRange = neutralHueRange; exports.identityCurve = identityCurve; exports.identityLevels = identityLevels; exports.defaultAdjustmentParams = defaultAdjustmentParams; exports.createAdjustmentLayer = createAdjustmentLayer; exports.normalizeAdjustmentLayer = normalizeAdjustmentLayer; exports.normalizeAdjustmentLayers = normalizeAdjustmentLayers; exports.curveLutFromLevels = curveLutFromLevels; exports.levelsValue = levelsValue; exports.rgbToHsl = rgbToHsl; exports.hslToRgb = hslToRgb; exports.hueRangeWeight = hueRangeWeight; exports.hueRangeTables = hueRangeTables; exports.hueSaturation = hueSaturation; exports.rangeLightness = rangeLightness; exports.VIBRANCE_GREY = VIBRANCE_GREY; exports.vibranceLinear = vibranceLinear; exports.vibrancePixel = vibrancePixel; exports.colorBalanceChannel = colorBalanceChannel; exports.blackWhiteGray = blackWhiteGray; exports.D50 = D50; exports.XYZ_D50_TO_SRGB = XYZ_D50_TO_SRGB; exports.photoFilterMatrix = photoFilterMatrix; exports.posterizeValue = posterizeValue; exports.rgbToGray = rgbToGray; exports.hexToRgb = hexToRgb; exports.toneLuts = toneLuts; exports.compileAdjustmentLayer = compileAdjustmentLayer; exports.activeAdjustmentLayers = activeAdjustmentLayers; exports.evaluateAdjustmentLayers = evaluateAdjustmentLayers; exports.applyAdjustmentLayers = applyAdjustmentLayers; exports.applyAdjustmentLayersFloat = applyAdjustmentLayersFloat; exports.adjustmentLayersKey = adjustmentLayersKey; exports.applyAdjustments = applyAdjustments; exports.applyLegacyAdjustments = applyLegacyAdjustments; exports.applyLegacyFloat = applyLegacyFloat; exports.applyProcess2Adjustments = applyProcess2Adjustments; exports.applyProcess2Float = applyProcess2Float; exports.applyBoxBlurFloat = applyBoxBlurFloat; exports.applyBoxBlur = applyBoxBlur; exports.applyDepthMask = applyDepthMask; exports.removeAlpha = removeAlpha; exports.TEXT_ALIGNS = TEXT_ALIGNS; exports.SHAPE_OPERATIONS = SHAPE_OPERATIONS; exports.LIVE_SHAPE_KINDS = LIVE_SHAPE_KINDS; exports.newLayerId = newLayerId; exports.pixelLayers = pixelLayers; exports.developFilter = developFilter; exports.blurFilter = blurFilter; exports.isActiveFilter = isActiveFilter; exports.isSpatialFilter = isSpatialFilter; exports.pixelLayerBounds = pixelLayerBounds; exports.layerTypeLabel = layerTypeLabel; exports.hasSurface = hasSurface; exports.isRenderedLayer = isRenderedLayer; exports.shapeLayers = shapeLayers; exports.smartObjectLayers = smartObjectLayers; exports.adjustmentNodeAsLayer = adjustmentNodeAsLayer; exports.depthMaskAlpha = depthMaskAlpha; exports.runLayerFilters = runLayerFilters; exports.runLayerFiltersFloat = runLayerFiltersFloat; exports.LayerCompositor = LayerCompositor; exports.compositeDeep = compositeDeep; exports.DEFAULT_ADJUSTMENTS_VALUES = DEFAULT_ADJUSTMENTS_VALUES; exports.DEFAULT_TRANSFORM_VALUES = DEFAULT_TRANSFORM_VALUES; exports.DEFAULT_DEPTH_MASK_VALUES = DEFAULT_DEPTH_MASK_VALUES; exports.flattenPath = flattenPath; exports.rasterizeCoverage = rasterizeCoverage; exports.LayerOperationError = LayerOperationError; exports.userErrorMessage = userErrorMessage; exports.isPaintableLayer = isPaintableLayer; exports.defaultActiveLayerId = defaultActiveLayerId; exports.activeLayerAfterRemoval = activeLayerAfterRemoval; exports.requireLayer = requireLayer; exports.requireUnlocked = requireUnlocked; exports.placeLayer = placeLayer; exports.removeLayer = removeLayer; exports.moveLayer = moveLayer; exports.withNewIds = withNewIds; exports.duplicateLayer = duplicateLayer; exports.setLayerProperties = setLayerProperties; exports.groupLayers = groupLayers; exports.ungroupLayer = ungroupLayer; exports.offsetLayer = offsetLayer; exports.setLayerMask = setLayerMask; exports.normalizeFilter = normalizeFilter; exports.addLayerFilter = addLayerFilter; exports.updateLayerFilter = updateLayerFilter; exports.removeLayerFilter = removeLayerFilter; exports.layerEffectsOf = layerEffectsOf; exports.setLayerEffects = setLayerEffects; exports.addLayerEffect = addLayerEffect; exports.updateLayerEffect = updateLayerEffect; exports.removeLayerEffect = removeLayerEffect; exports.setLayerEffectsEnabled = setLayerEffectsEnabled; exports.parseBlend = parseBlend; exports.unionRect = unionRect; exports.SHAPE_RENDER_MARGIN = SHAPE_RENDER_MARGIN; exports.DEFAULT_MITER_LIMIT = DEFAULT_MITER_LIMIT; exports.mapSubpaths = mapSubpaths; exports.liveShapeSubpaths = liveShapeSubpaths; exports.liveComponent = liveComponent; exports.componentPath = componentPath; exports.shapeOutline = shapeOutline; exports.shapeGeometryBounds = shapeGeometryBounds; exports.shapeRenderClip = shapeRenderClip; exports.renderShapeRect = renderShapeRect; exports.renderShape = renderShape; exports.rerenderShape = rerenderShape; exports.normalizeShapePaint = normalizeShapePaint; exports.normalizeShapeStroke = normalizeShapeStroke; exports.normalizeLiveShape = normalizeLiveShape; exports.normalizeSubpaths = normalizeSubpaths; exports.requireOperation = requireOperation; exports.requireShapeLayer = requireShapeLayer; exports.createShapeLayer = createShapeLayer; exports.defaultShapeName = defaultShapeName; exports.updateShapeLayer = updateShapeLayer; exports.transformShapeComponents = transformShapeComponents; exports.offsetShape = offsetShape; exports.mergeShapeComponents = mergeShapeComponents; exports.shapeAsPixelLayer = shapeAsPixelLayer; exports.shapeFromAnnotation = shapeFromAnnotation; exports.annotationBlend = annotationBlend; exports.annotationOfShape = annotationOfShape; exports.TEXT_RENDER_MARGIN = TEXT_RENDER_MARGIN; exports.textMatrix = textMatrix; exports.textOutlines = textOutlines; exports.renderText = renderText; exports.rerenderText = rerenderText; exports.TEXT_STYLE_FIELDS = TEXT_STYLE_FIELDS; exports.patchTextStyle = patchTextStyle; exports.PARAGRAPH_STYLE_FIELDS = PARAGRAPH_STYLE_FIELDS; exports.patchParagraphStyle = patchParagraphStyle; exports.textRange = textRange; exports.requireTypeLayer = requireTypeLayer; exports.normalizeText = normalizeText; exports.typeLayerName = typeLayerName; exports.createTypeLayer = createTypeLayer; exports.updateTypeLayer = updateTypeLayer; exports.replaceTextRange = replaceTextRange; exports.transformTypeLayer = transformTypeLayer; exports.typeFrame = typeFrame; exports.typeAsPixelLayer = typeAsPixelLayer; exports.toTextSpace = toTextSpace; exports.typeFromAnnotation = typeFromAnnotation; exports.annotationOfType = annotationOfType; exports.BACKGROUND_LAYER_ID = BACKGROUND_LAYER_ID; exports.BACKGROUND_LAYER_NAME = BACKGROUND_LAYER_NAME; exports.DEVELOP_FILTER_ID = DEVELOP_FILTER_ID; exports.BLUR_FILTER_ID = BLUR_FILTER_ID; exports.rasterMaskFromLegacy = rasterMaskFromLegacy; exports.hasResampledLegacyMask = hasResampledLegacyMask; exports.legacyMaskOf = legacyMaskOf; exports.isDefaultDepthMask = isDefaultDepthMask; exports.developFromAdjustments = developFromAdjustments; exports.annotationLayerName = annotationLayerName; exports.annotationLayerFor = annotationLayerFor; exports.annotationOfLayer = annotationOfLayer; exports.adjustmentNodeFromLegacy = adjustmentNodeFromLegacy; exports.backgroundLayer = backgroundLayer; exports.depthRasterMask = depthRasterMask; exports.layersFromLegacy = layersFromLegacy; exports.legacyAdjustmentLayer = legacyAdjustmentLayer; exports.developTarget = developTarget; exports.legacyView = legacyView; exports.isLegacyShape = isLegacyShape; exports.FREE_TRANSFORM_MODES = FREE_TRANSFORM_MODES; exports.TRANSFORM_ANCHORS = TRANSFORM_ANCHORS; exports.ANCHOR_FRACTION = ANCHOR_FRACTION; exports.isTransformAnchor = isTransformAnchor; exports.identityTransform = identityTransform; exports.cornersFromMatrix = cornersFromMatrix; exports.matrixFromCorners = matrixFromCorners; exports.transformHomography = transformHomography; exports.hasWarp = hasWarp; exports.isIdentityTransform = isIdentityTransform; exports.transformMap = transformMap; exports.transformedPoint = transformedPoint; exports.anchorPoint = anchorPoint; exports.transformedBox = transformedBox; exports.referencePoint = referencePoint; exports.matrixFromParams = matrixFromParams; exports.describeTransform = describeTransform; exports.applyParams = applyParams; exports.flipCorners = flipCorners; exports.boxPointOf = boxPointOf; exports.presetWarp = presetWarp; exports.isValidWarp = isValidWarp; exports.geometryHomography = geometryHomography; exports.SMART_RENDER_MARGIN = SMART_RENDER_MARGIN; exports.isSmartSurfaceIncomplete = isSmartSurfaceIncomplete; exports.newContentsId = newContentsId; exports.contentsBox = contentsBox; exports.placementGeometry = placementGeometry; exports.placementAt = placementAt; exports.isContentsDecoded = isContentsDecoded; exports.requireSmartObject = requireSmartObject; exports.contentsSurface = contentsSurface; exports.rasterContents = rasterContents; exports.documentContents = documentContents; exports.placeContents = placeContents; exports.activeSmartFilters = activeSmartFilters; exports.activeEffectSmartFilters = activeEffectSmartFilters; exports.filterMaskCoverage = filterMaskCoverage; exports.applySmartFilters = applySmartFilters; exports.renderSmartObject = renderSmartObject; exports.rerender = rerender; exports.normalizePlacement = normalizePlacement; exports.setSmartPlacement = setSmartPlacement; exports.offsetSmartObject = offsetSmartObject; exports.translateLayer = translateLayer; exports.convertToSmartObject = convertToSmartObject; exports.rasterizeSmartObject = rasterizeSmartObject; exports.copySmartObject = copySmartObject; exports.instancesOf = instancesOf; exports.replaceContents = replaceContents; exports.normalizeSmartFilter = normalizeSmartFilter; exports.addSmartFilter = addSmartFilter; exports.updateSmartFilter = updateSmartFilter; exports.removeSmartFilter = removeSmartFilter; exports.moveSmartFilter = moveSmartFilter; exports.setSmartFiltersEnabled = setSmartFiltersEnabled; exports.setSmartFilterMask = setSmartFilterMask; exports.withFilterMaskSurface = withFilterMaskSurface; exports.placementBounds = placementBounds; exports.LAYERED_SCHEMA_VERSION = LAYERED_SCHEMA_VERSION; exports.serializePatterns = serializePatterns; exports.deserializePatterns = deserializePatterns; exports.encodeSurface = encodeSurface; exports.encodeDeepSurface = encodeDeepSurface; exports.decodeDeepSurface = decodeDeepSurface; exports.serializeEffects = serializeEffects; exports.deserializeEffects = deserializeEffects; exports.serializeLayer = serializeLayer; exports.serializeContents = serializeContents; exports.serializeLayers = serializeLayers; exports.serializeLayersExternal = serializeLayersExternal; exports.resolveExternalAssets = resolveExternalAssets; exports.decodePngDataUrl = decodePngDataUrl; exports.deserializeLayer = deserializeLayer; exports.deserializeLayers = deserializeLayers; exports.PsdError = PsdError; exports.parseVersionedDescriptor = parseVersionedDescriptor; exports.versionedDescriptorBytes = versionedDescriptorBytes; exports.ADJUSTMENT_KEYS = ADJUSTMENT_KEYS; exports.SUPPORTED_ADJUSTMENT_KEYS = SUPPORTED_ADJUSTMENT_KEYS; exports.parseAdjustmentBlock = parseAdjustmentBlock; exports.writeAdjustmentBlock = writeAdjustmentBlock; exports.parseLfx2 = parseLfx2; exports.writeLfx2 = writeLfx2; exports.parseLrfx = parseLrfx; exports.decodePlanes = decodePlanes; exports.encodeRle = encodeRle; exports.BROWSER_IMAGE_TYPES = BROWSER_IMAGE_TYPES; exports.readPsd = readPsd; exports.layerName = layerName; exports.layerTree = layerTree; exports.decodeLayerChannel = decodeLayerChannel; exports.decodeMergedImage = decodeMergedImage; exports.writePsd = writePsd; exports.PATTERN_BLOCK_KEYS = PATTERN_BLOCK_KEYS; exports.parsePatternBlock = parsePatternBlock; exports.psdPatternToEffectPattern = psdPatternToEffectPattern; exports.writePatternBlock = writePatternBlock; exports.PSD_BLEND_KEYS = PSD_BLEND_KEYS; exports.psdToLayers = psdToLayers; exports.importPsd = importPsd; exports.smartContentsFile = smartContentsFile; exports.exportPsd = exportPsd;
|
|
11847
|
+
|
|
11848
|
+
exports.LEGACY_PROCESS_VERSION = LEGACY_PROCESS_VERSION; exports.LATEST_PROCESS_VERSION = LATEST_PROCESS_VERSION; exports.normalizeProcessVersion = normalizeProcessVersion; exports.srgbToLinear = srgbToLinear; exports.linearToSrgb = linearToSrgb; exports.LUMA_709 = LUMA_709; exports.IDENTITY_MATRIX3 = IDENTITY_MATRIX3; exports.mulMatrix3 = mulMatrix3; exports.applyMatrix3 = applyMatrix3; exports.invertMatrix3 = invertMatrix3; exports.D65 = D65; exports.bradfordAdaptation = bradfordAdaptation; exports.wbMatrix = wbMatrix; exports.linearSrgbToXy = linearSrgbToXy; exports.TINT_SCALE = TINT_SCALE; exports.MIN_KELVIN = MIN_KELVIN; exports.MAX_KELVIN = MAX_KELVIN; exports.xyToUv = xyToUv; exports.uvToXy = uvToXy; exports.tempTintToXy = tempTintToXy; exports.xyToTempTint = xyToTempTint; exports.AS_SHOT_KELVIN = AS_SHOT_KELVIN; exports.MIRED_PER_TEMPERATURE_UNIT = MIRED_PER_TEMPERATURE_UNIT; exports.temperatureToKelvin = temperatureToKelvin; exports.kelvinToTemperature = kelvinToTemperature; exports.whiteBalanceMatrix = whiteBalanceMatrix; exports.whiteBalanceFromSample = whiteBalanceFromSample; exports.TONE_LUT_SIZE = TONE_LUT_SIZE; exports.toneCurve = toneCurve; exports.buildToneLut = buildToneLut; exports.sampleToneLut = sampleToneLut; exports.normalizeAngle = normalizeAngle; exports.isQuarterTurnSwapped = isQuarterTurnSwapped; exports.getRotatedSize = getRotatedSize; exports.projectImagePoint = projectImagePoint; exports.unprojectCanvasPoint = unprojectCanvasPoint; exports.applyImageProjectionToContext = applyImageProjectionToContext; exports.projectImageRect = projectImageRect; exports.clampCropToImage = clampCropToImage; exports.getViewportProjection = getViewportProjection; exports.getViewportMetrics = getViewportMetrics; exports.canvasToImagePoint = canvasToImagePoint; exports.imageToCanvasPoint = imageToCanvasPoint; exports.mapCropHandle = mapCropHandle; exports.hitTestCrop = hitTestCrop; exports.getCropCursor = getCropCursor; exports.calculateCropDrag = calculateCropDrag; exports.getAnnotationBounds = getAnnotationBounds; exports.hitTestAnnotation = hitTestAnnotation; exports.SELECTION_MODES = SELECTION_MODES; exports.isSelectionMode = isSelectionMode; exports.parseSelectionMode = parseSelectionMode; exports.computeSelectionBounds = computeSelectionBounds; exports.createSelectionMask = createSelectionMask; exports.fullSelection = fullSelection; exports.isSelectionEmpty = isSelectionEmpty; exports.selectionValueAt = selectionValueAt; exports.coverageToByte = coverageToByte; exports.selectionFromCoverage = selectionFromCoverage; exports.selectionToCoverage = selectionToCoverage; exports.selectionArea = selectionArea; exports.combineSelections = combineSelections; exports.invertSelection = invertSelection; exports.resizeSelection = resizeSelection; exports.selectionFromPixels = selectionFromPixels; exports.selectionToPixels = selectionToPixels; exports.encodeSelectionRle = encodeSelectionRle; exports.decodeSelectionRle = decodeSelectionRle; exports.serializeSelection = serializeSelection; exports.deserializeSelection = deserializeSelection; exports.hashMaskContent = hashMaskContent; exports.EMPTY_DISTANCE = EMPTY_DISTANCE; exports.distanceTransform = distanceTransform; exports.expandCoverage = expandCoverage; exports.contractCoverage = contractCoverage; exports.borderCoverage = borderCoverage; exports.smoothCoverage = smoothCoverage; exports.featherCoverage = featherCoverage; exports.greyMorphology = greyMorphology; exports.shiftCoverage = shiftCoverage; exports.SELECTION_MODIFY_OPS = SELECTION_MODIFY_OPS; exports.modifySelection = modifySelection; exports.normalizeLayerMask = normalizeLayerMask; exports.layerMaskFromSelection = layerMaskFromSelection; exports.updateLayerMaskProps = updateLayerMaskProps; exports.decodeLayerMask = decodeLayerMask; exports.layerMaskKey = layerMaskKey; exports.layerMaskCoverage = layerMaskCoverage; exports.projectMaskCoverage = projectMaskCoverage; exports.buildLayerMaskPlanes = buildLayerMaskPlanes; exports.ADJUSTMENT_LUT_SIZE = ADJUSTMENT_LUT_SIZE; exports.sampleLut = sampleLut; exports.ADJUSTMENT_KINDS = ADJUSTMENT_KINDS; exports.isAdjustmentKind = isAdjustmentKind; exports.adjustmentKindLabel = adjustmentKindLabel; exports.HUE_RANGE_LABELS = HUE_RANGE_LABELS; exports.neutralHueRange = neutralHueRange; exports.identityCurve = identityCurve; exports.identityLevels = identityLevels; exports.defaultAdjustmentParams = defaultAdjustmentParams; exports.createAdjustmentLayer = createAdjustmentLayer; exports.normalizeAdjustmentLayer = normalizeAdjustmentLayer; exports.normalizeAdjustmentLayers = normalizeAdjustmentLayers; exports.curveLutFromLevels = curveLutFromLevels; exports.levelsValue = levelsValue; exports.rgbToHsl = rgbToHsl; exports.hslToRgb = hslToRgb; exports.hueRangeWeight = hueRangeWeight; exports.hueRangeTables = hueRangeTables; exports.hueSaturation = hueSaturation; exports.rangeLightness = rangeLightness; exports.VIBRANCE_GREY = VIBRANCE_GREY; exports.vibranceLinear = vibranceLinear; exports.vibrancePixel = vibrancePixel; exports.colorBalanceChannel = colorBalanceChannel; exports.blackWhiteGray = blackWhiteGray; exports.D50 = D50; exports.XYZ_D50_TO_SRGB = XYZ_D50_TO_SRGB; exports.photoFilterMatrix = photoFilterMatrix; exports.posterizeValue = posterizeValue; exports.rgbToGray = rgbToGray; exports.hexToRgb = hexToRgb; exports.toneLuts = toneLuts; exports.compileAdjustmentLayer = compileAdjustmentLayer; exports.activeAdjustmentLayers = activeAdjustmentLayers; exports.evaluateAdjustmentLayers = evaluateAdjustmentLayers; exports.applyAdjustmentLayers = applyAdjustmentLayers; exports.applyAdjustmentLayersFloat = applyAdjustmentLayersFloat; exports.adjustmentLayersKey = adjustmentLayersKey; exports.applyAdjustments = applyAdjustments; exports.applyLegacyAdjustments = applyLegacyAdjustments; exports.applyLegacyFloat = applyLegacyFloat; exports.applyProcess2Adjustments = applyProcess2Adjustments; exports.applyProcess2Float = applyProcess2Float; exports.applyBoxBlurFloat = applyBoxBlurFloat; exports.applyBoxBlur = applyBoxBlur; exports.applyDepthMask = applyDepthMask; exports.removeAlpha = removeAlpha; exports.TEXT_ALIGNS = TEXT_ALIGNS; exports.MAX_EFFECT_ANIMATION_MS = MAX_EFFECT_ANIMATION_MS; exports.SHAPE_OPERATIONS = SHAPE_OPERATIONS; exports.LIVE_SHAPE_KINDS = LIVE_SHAPE_KINDS; exports.newLayerId = newLayerId; exports.pixelLayers = pixelLayers; exports.developFilter = developFilter; exports.blurFilter = blurFilter; exports.isActiveFilter = isActiveFilter; exports.isSpatialFilter = isSpatialFilter; exports.pixelLayerBounds = pixelLayerBounds; exports.layerTypeLabel = layerTypeLabel; exports.hasSurface = hasSurface; exports.isRenderedLayer = isRenderedLayer; exports.shapeLayers = shapeLayers; exports.smartObjectLayers = smartObjectLayers; exports.adjustmentNodeAsLayer = adjustmentNodeAsLayer; exports.depthMaskAlpha = depthMaskAlpha; exports.runLayerFilters = runLayerFilters; exports.runLayerFiltersFloat = runLayerFiltersFloat; exports.LayerCompositor = LayerCompositor; exports.compositeDeep = compositeDeep; exports.DEFAULT_ADJUSTMENTS_VALUES = DEFAULT_ADJUSTMENTS_VALUES; exports.DEFAULT_TRANSFORM_VALUES = DEFAULT_TRANSFORM_VALUES; exports.DEFAULT_DEPTH_MASK_VALUES = DEFAULT_DEPTH_MASK_VALUES; exports.flattenPath = flattenPath; exports.rasterizeCoverage = rasterizeCoverage; exports.LayerOperationError = LayerOperationError; exports.userErrorMessage = userErrorMessage; exports.isPaintableLayer = isPaintableLayer; exports.defaultActiveLayerId = defaultActiveLayerId; exports.activeLayerAfterRemoval = activeLayerAfterRemoval; exports.requireLayer = requireLayer; exports.requireUnlocked = requireUnlocked; exports.placeLayer = placeLayer; exports.removeLayer = removeLayer; exports.moveLayer = moveLayer; exports.withNewIds = withNewIds; exports.duplicateLayer = duplicateLayer; exports.setLayerProperties = setLayerProperties; exports.groupLayers = groupLayers; exports.ungroupLayer = ungroupLayer; exports.offsetLayer = offsetLayer; exports.setLayerMask = setLayerMask; exports.normalizeFilter = normalizeFilter; exports.addLayerFilter = addLayerFilter; exports.updateLayerFilter = updateLayerFilter; exports.removeLayerFilter = removeLayerFilter; exports.layerEffectsOf = layerEffectsOf; exports.setLayerEffects = setLayerEffects; exports.addLayerEffect = addLayerEffect; exports.updateLayerEffect = updateLayerEffect; exports.removeLayerEffect = removeLayerEffect; exports.setLayerEffectsEnabled = setLayerEffectsEnabled; exports.parseBlend = parseBlend; exports.unionRect = unionRect; exports.SHAPE_RENDER_MARGIN = SHAPE_RENDER_MARGIN; exports.DEFAULT_MITER_LIMIT = DEFAULT_MITER_LIMIT; exports.mapSubpaths = mapSubpaths; exports.liveShapeSubpaths = liveShapeSubpaths; exports.liveComponent = liveComponent; exports.componentPath = componentPath; exports.shapeOutline = shapeOutline; exports.shapeGeometryBounds = shapeGeometryBounds; exports.shapeRenderClip = shapeRenderClip; exports.renderShapeRect = renderShapeRect; exports.renderShape = renderShape; exports.rerenderShape = rerenderShape; exports.normalizeShapePaint = normalizeShapePaint; exports.normalizeShapeStroke = normalizeShapeStroke; exports.normalizeLiveShape = normalizeLiveShape; exports.normalizeSubpaths = normalizeSubpaths; exports.requireOperation = requireOperation; exports.requireShapeLayer = requireShapeLayer; exports.createShapeLayer = createShapeLayer; exports.defaultShapeName = defaultShapeName; exports.updateShapeLayer = updateShapeLayer; exports.transformShapeComponents = transformShapeComponents; exports.offsetShape = offsetShape; exports.mergeShapeComponents = mergeShapeComponents; exports.shapeAsPixelLayer = shapeAsPixelLayer; exports.shapeFromAnnotation = shapeFromAnnotation; exports.annotationBlend = annotationBlend; exports.annotationOfShape = annotationOfShape; exports.TEXT_RENDER_MARGIN = TEXT_RENDER_MARGIN; exports.textMatrix = textMatrix; exports.textOutlines = textOutlines; exports.renderText = renderText; exports.rerenderText = rerenderText; exports.TEXT_STYLE_FIELDS = TEXT_STYLE_FIELDS; exports.patchTextStyle = patchTextStyle; exports.PARAGRAPH_STYLE_FIELDS = PARAGRAPH_STYLE_FIELDS; exports.patchParagraphStyle = patchParagraphStyle; exports.textRange = textRange; exports.requireTypeLayer = requireTypeLayer; exports.normalizeText = normalizeText; exports.typeLayerName = typeLayerName; exports.createTypeLayer = createTypeLayer; exports.updateTypeLayer = updateTypeLayer; exports.replaceTextRange = replaceTextRange; exports.transformTypeLayer = transformTypeLayer; exports.typeFrame = typeFrame; exports.typeAsPixelLayer = typeAsPixelLayer; exports.toTextSpace = toTextSpace; exports.typeFromAnnotation = typeFromAnnotation; exports.annotationOfType = annotationOfType; exports.BACKGROUND_LAYER_ID = BACKGROUND_LAYER_ID; exports.BACKGROUND_LAYER_NAME = BACKGROUND_LAYER_NAME; exports.DEVELOP_FILTER_ID = DEVELOP_FILTER_ID; exports.BLUR_FILTER_ID = BLUR_FILTER_ID; exports.rasterMaskFromLegacy = rasterMaskFromLegacy; exports.hasResampledLegacyMask = hasResampledLegacyMask; exports.legacyMaskOf = legacyMaskOf; exports.isDefaultDepthMask = isDefaultDepthMask; exports.developFromAdjustments = developFromAdjustments; exports.annotationLayerName = annotationLayerName; exports.annotationLayerFor = annotationLayerFor; exports.annotationOfLayer = annotationOfLayer; exports.adjustmentNodeFromLegacy = adjustmentNodeFromLegacy; exports.backgroundLayer = backgroundLayer; exports.depthRasterMask = depthRasterMask; exports.layersFromLegacy = layersFromLegacy; exports.legacyAdjustmentLayer = legacyAdjustmentLayer; exports.developTarget = developTarget; exports.legacyView = legacyView; exports.isLegacyShape = isLegacyShape; exports.FREE_TRANSFORM_MODES = FREE_TRANSFORM_MODES; exports.TRANSFORM_ANCHORS = TRANSFORM_ANCHORS; exports.ANCHOR_FRACTION = ANCHOR_FRACTION; exports.isTransformAnchor = isTransformAnchor; exports.identityTransform = identityTransform; exports.cornersFromMatrix = cornersFromMatrix; exports.matrixFromCorners = matrixFromCorners; exports.transformHomography = transformHomography; exports.hasWarp = hasWarp; exports.isIdentityTransform = isIdentityTransform; exports.transformMap = transformMap; exports.transformedPoint = transformedPoint; exports.anchorPoint = anchorPoint; exports.transformedBox = transformedBox; exports.referencePoint = referencePoint; exports.matrixFromParams = matrixFromParams; exports.describeTransform = describeTransform; exports.applyParams = applyParams; exports.flipCorners = flipCorners; exports.boxPointOf = boxPointOf; exports.presetWarp = presetWarp; exports.isValidWarp = isValidWarp; exports.geometryHomography = geometryHomography; exports.SMART_RENDER_MARGIN = SMART_RENDER_MARGIN; exports.isSmartSurfaceIncomplete = isSmartSurfaceIncomplete; exports.newContentsId = newContentsId; exports.contentsBox = contentsBox; exports.placementGeometry = placementGeometry; exports.placementAt = placementAt; exports.isContentsDecoded = isContentsDecoded; exports.requireSmartObject = requireSmartObject; exports.contentsSurface = contentsSurface; exports.rasterContents = rasterContents; exports.documentContents = documentContents; exports.placeContents = placeContents; exports.activeSmartFilters = activeSmartFilters; exports.activeEffectSmartFilters = activeEffectSmartFilters; exports.filterMaskCoverage = filterMaskCoverage; exports.applySmartFilters = applySmartFilters; exports.renderSmartObject = renderSmartObject; exports.rerender = rerender; exports.normalizePlacement = normalizePlacement; exports.setSmartPlacement = setSmartPlacement; exports.offsetSmartObject = offsetSmartObject; exports.translateLayer = translateLayer; exports.convertToSmartObject = convertToSmartObject; exports.rasterizeSmartObject = rasterizeSmartObject; exports.copySmartObject = copySmartObject; exports.instancesOf = instancesOf; exports.replaceContents = replaceContents; exports.normalizeSmartFilter = normalizeSmartFilter; exports.addSmartFilter = addSmartFilter; exports.updateSmartFilter = updateSmartFilter; exports.removeSmartFilter = removeSmartFilter; exports.moveSmartFilter = moveSmartFilter; exports.setSmartFiltersEnabled = setSmartFiltersEnabled; exports.setSmartFilterMask = setSmartFilterMask; exports.withFilterMaskSurface = withFilterMaskSurface; exports.placementBounds = placementBounds; exports.LAYERED_SCHEMA_VERSION = LAYERED_SCHEMA_VERSION; exports.serializePatterns = serializePatterns; exports.deserializePatterns = deserializePatterns; exports.encodeSurface = encodeSurface; exports.encodeDeepSurface = encodeDeepSurface; exports.decodeDeepSurface = decodeDeepSurface; exports.serializeEffects = serializeEffects; exports.deserializeEffects = deserializeEffects; exports.serializeLayer = serializeLayer; exports.serializeContents = serializeContents; exports.serializeLayers = serializeLayers; exports.serializeLayersExternal = serializeLayersExternal; exports.resolveExternalAssets = resolveExternalAssets; exports.decodePngDataUrl = decodePngDataUrl; exports.deserializeLayer = deserializeLayer; exports.deserializeLayers = deserializeLayers; exports.PsdError = PsdError; exports.parseVersionedDescriptor = parseVersionedDescriptor; exports.versionedDescriptorBytes = versionedDescriptorBytes; exports.ADJUSTMENT_KEYS = ADJUSTMENT_KEYS; exports.SUPPORTED_ADJUSTMENT_KEYS = SUPPORTED_ADJUSTMENT_KEYS; exports.parseAdjustmentBlock = parseAdjustmentBlock; exports.writeAdjustmentBlock = writeAdjustmentBlock; exports.parseLfx2 = parseLfx2; exports.writeLfx2 = writeLfx2; exports.parseLrfx = parseLrfx; exports.decodePlanes = decodePlanes; exports.encodeRle = encodeRle; exports.BROWSER_IMAGE_TYPES = BROWSER_IMAGE_TYPES; exports.readPsd = readPsd; exports.layerName = layerName; exports.layerTree = layerTree; exports.decodeLayerChannel = decodeLayerChannel; exports.decodeMergedImage = decodeMergedImage; exports.writePsd = writePsd; exports.PATTERN_BLOCK_KEYS = PATTERN_BLOCK_KEYS; exports.parsePatternBlock = parsePatternBlock; exports.psdPatternToEffectPattern = psdPatternToEffectPattern; exports.writePatternBlock = writePatternBlock; exports.PSD_BLEND_KEYS = PSD_BLEND_KEYS; exports.psdToLayers = psdToLayers; exports.importPsd = importPsd; exports.smartContentsFile = smartContentsFile; exports.exportPsd = exportPsd;
|
|
@@ -2385,6 +2385,7 @@ function removeAlpha(imageData) {
|
|
|
2385
2385
|
var TEXT_ALIGNS = ["left", "center", "right", "justify"];
|
|
2386
2386
|
|
|
2387
2387
|
// src/image-editor/layers/model.ts
|
|
2388
|
+
var MAX_EFFECT_ANIMATION_MS = 6e4;
|
|
2388
2389
|
var SHAPE_OPERATIONS = ["combine", "subtract", "intersect", "exclude"];
|
|
2389
2390
|
var LIVE_SHAPE_KINDS = ["rect", "ellipse", "polygon", "star", "line"];
|
|
2390
2391
|
var idCounter = 0;
|
|
@@ -5926,7 +5927,14 @@ function deserializeLayer(raw, ctx) {
|
|
|
5926
5927
|
const filters = readFilters(r.filters);
|
|
5927
5928
|
if (filters) layer.filters = filters;
|
|
5928
5929
|
const generator = readEffectRef(r.generator);
|
|
5929
|
-
if (generator)
|
|
5930
|
+
if (generator) {
|
|
5931
|
+
const duration = r.generator.animate?.duration;
|
|
5932
|
+
layer.generator = {
|
|
5933
|
+
...generator,
|
|
5934
|
+
...typeof r.generator.time === "number" && r.generator.time > 0 ? { time: r.generator.time } : {},
|
|
5935
|
+
...typeof duration === "number" && Number.isFinite(duration) && duration > 0 ? { animate: { duration: Math.min(duration, MAX_EFFECT_ANIMATION_MS) } } : {}
|
|
5936
|
+
};
|
|
5937
|
+
}
|
|
5930
5938
|
return layer;
|
|
5931
5939
|
}
|
|
5932
5940
|
case "adjustment": {
|
|
@@ -11609,6 +11617,7 @@ export {
|
|
|
11609
11617
|
applyDepthMask,
|
|
11610
11618
|
removeAlpha,
|
|
11611
11619
|
TEXT_ALIGNS,
|
|
11620
|
+
MAX_EFFECT_ANIMATION_MS,
|
|
11612
11621
|
SHAPE_OPERATIONS,
|
|
11613
11622
|
LIVE_SHAPE_KINDS,
|
|
11614
11623
|
newLayerId,
|