@pixerate/editor 0.115.0 → 0.116.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/THIRD_PARTY_NOTICES.md +3 -0
- package/dist/animation-editor/index.cjs +54 -54
- package/dist/animation-editor/index.d.cts +2 -2
- package/dist/animation-editor/index.d.ts +2 -2
- package/dist/animation-editor/index.js +2 -2
- package/dist/{chunk-DFQEX3AM.cjs → chunk-2UT4GXYA.cjs} +133 -8
- package/dist/chunk-2UT4GXYA.cjs.map +1 -0
- package/dist/{chunk-VXR7XWMF.js → chunk-7LNZAWSJ.js} +437 -41
- package/dist/chunk-7LNZAWSJ.js.map +1 -0
- package/dist/{chunk-LKCYANMW.js → chunk-ARQ7PQ6Q.js} +129 -4
- package/dist/chunk-ARQ7PQ6Q.js.map +1 -0
- package/dist/chunk-COAMRKVI.cjs +159 -0
- package/dist/chunk-COAMRKVI.cjs.map +1 -0
- package/dist/{chunk-C6C5PDKU.js → chunk-D53KSJUV.js} +3 -322
- package/dist/chunk-D53KSJUV.js.map +1 -0
- package/dist/chunk-D53VQGEJ.js +3262 -0
- package/dist/chunk-D53VQGEJ.js.map +1 -0
- package/dist/chunk-EJVDBITD.cjs +501 -0
- package/dist/chunk-EJVDBITD.cjs.map +1 -0
- package/dist/{chunk-LPLCWZTM.cjs → chunk-FODKPD44.cjs} +555 -159
- package/dist/chunk-FODKPD44.cjs.map +1 -0
- package/dist/chunk-HOCPSFGA.cjs +3262 -0
- package/dist/chunk-HOCPSFGA.cjs.map +1 -0
- package/dist/chunk-IPFRWILU.js +1908 -0
- package/dist/chunk-IPFRWILU.js.map +1 -0
- package/dist/{chunk-FV5AXTSF.cjs → chunk-JSSBHMMU.cjs} +36 -188
- package/dist/chunk-JSSBHMMU.cjs.map +1 -0
- package/dist/chunk-LF4WOZXZ.js +159 -0
- package/dist/chunk-LF4WOZXZ.js.map +1 -0
- package/dist/{chunk-26PGXHY7.cjs → chunk-M7O4BJRH.cjs} +36 -36
- package/dist/{chunk-26PGXHY7.cjs.map → chunk-M7O4BJRH.cjs.map} +1 -1
- package/dist/chunk-N3467VD6.js +501 -0
- package/dist/chunk-N3467VD6.js.map +1 -0
- package/dist/{chunk-ST7E3NEE.cjs → chunk-PAOWHJ5O.cjs} +18 -337
- package/dist/chunk-PAOWHJ5O.cjs.map +1 -0
- package/dist/{chunk-XICA4PVO.js → chunk-SEBYNBHW.js} +10 -10
- package/dist/chunk-SMJGE7HM.cjs +1908 -0
- package/dist/chunk-SMJGE7HM.cjs.map +1 -0
- package/dist/{chunk-MMVHBKMM.js → chunk-T2P5TIZ6.js} +2 -2
- package/dist/{chunk-FGW5OWJ4.js → chunk-VJUML33I.js} +4 -156
- package/dist/chunk-VJUML33I.js.map +1 -0
- package/dist/{chunk-I7FQBWMQ.cjs → chunk-ZYZGEILO.cjs} +239 -239
- package/dist/{chunk-I7FQBWMQ.cjs.map → chunk-ZYZGEILO.cjs.map} +1 -1
- package/dist/export/index.cjs +4 -2
- package/dist/export/index.cjs.map +1 -1
- package/dist/export/index.js +5 -3
- package/dist/{export-BJE8T0YA.d.cts → export-BXxSGBCq.d.cts} +2 -2
- package/dist/{export-Con3UKkm.d.ts → export-Dm44YUvS.d.ts} +2 -2
- package/dist/export-Dv0-ZVrV.d.cts +501 -0
- package/dist/export-Dv0-ZVrV.d.ts +501 -0
- package/dist/{retouch-Do6tBs2H.d.ts → flow-BMtHAmg4.d.ts} +561 -2
- package/dist/{retouch-Bxkuc0KH.d.cts → flow-COCB42TP.d.cts} +561 -2
- package/dist/image-editor/index.cjs +957 -795
- package/dist/image-editor/index.cjs.map +1 -1
- package/dist/image-editor/index.d.cts +6 -6
- package/dist/image-editor/index.d.ts +6 -6
- package/dist/image-editor/index.js +180 -18
- package/dist/image-editor/index.js.map +1 -1
- package/dist/index.cjs +4 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +5 -3
- package/dist/index.js.map +1 -1
- package/dist/kernel-wasm-WYCGNZR4.js +10 -0
- package/dist/kernel-wasm-WYCGNZR4.js.map +1 -0
- package/dist/kernel-wasm-YPVAEMVN.cjs +10 -0
- package/dist/kernel-wasm-YPVAEMVN.cjs.map +1 -0
- package/dist/paint/index.cjs +165 -3
- package/dist/paint/index.cjs.map +1 -1
- package/dist/paint/index.d.cts +225 -3
- package/dist/paint/index.d.ts +225 -3
- package/dist/paint/index.js +166 -4
- package/dist/paint-editor/index.cjs +4690 -845
- package/dist/paint-editor/index.cjs.map +1 -1
- package/dist/paint-editor/index.d.cts +1525 -277
- package/dist/paint-editor/index.d.ts +1525 -277
- package/dist/paint-editor/index.js +4560 -715
- package/dist/paint-editor/index.js.map +1 -1
- package/dist/raster/index.cjs +4 -3
- package/dist/raster/index.cjs.map +1 -1
- package/dist/raster/index.js +10 -9
- package/dist/{svg-BnRj0q8i.d.cts → svg-CVdFc80-.d.cts} +2 -2
- package/dist/{svg-CmmBFfGT.d.ts → svg-DlEuhwoX.d.ts} +2 -2
- package/dist/{types-1SUQKDAw.d.ts → types-CDLGhAZp.d.ts} +40 -2
- package/dist/{types-yINF17Ta.d.cts → types-Tfly4Aya.d.cts} +40 -2
- package/dist/vector/index.cjs +1897 -975
- package/dist/vector/index.cjs.map +1 -1
- package/dist/vector/index.d.cts +292 -32
- package/dist/vector/index.d.ts +292 -32
- package/dist/vector/index.js +928 -6
- package/dist/vector/index.js.map +1 -1
- package/dist/video-editor/index.cjs +502 -2165
- package/dist/video-editor/index.cjs.map +1 -1
- package/dist/video-editor/index.d.cts +3 -501
- package/dist/video-editor/index.d.ts +3 -501
- package/dist/video-editor/index.js +151 -1814
- package/dist/video-editor/index.js.map +1 -1
- package/package.json +1 -1
- package/skills/pixerate-image-editor/references/photoshop-files.md +7 -3
- package/skills/pixerate-vector/SKILL.md +3 -0
- package/dist/chunk-C6C5PDKU.js.map +0 -1
- package/dist/chunk-DFQEX3AM.cjs.map +0 -1
- package/dist/chunk-FGW5OWJ4.js.map +0 -1
- package/dist/chunk-FV5AXTSF.cjs.map +0 -1
- package/dist/chunk-GX332W2C.js +0 -181
- package/dist/chunk-GX332W2C.js.map +0 -1
- package/dist/chunk-LKCYANMW.js.map +0 -1
- package/dist/chunk-LPLCWZTM.cjs.map +0 -1
- package/dist/chunk-MUUXNRU4.cjs +0 -181
- package/dist/chunk-MUUXNRU4.cjs.map +0 -1
- package/dist/chunk-ST7E3NEE.cjs.map +0 -1
- package/dist/chunk-TCKIXI46.cjs +0 -1136
- package/dist/chunk-TCKIXI46.cjs.map +0 -1
- package/dist/chunk-UBIXVXPR.js +0 -1136
- package/dist/chunk-UBIXVXPR.js.map +0 -1
- package/dist/chunk-VXR7XWMF.js.map +0 -1
- /package/dist/{chunk-XICA4PVO.js.map → chunk-SEBYNBHW.js.map} +0 -0
- /package/dist/{chunk-MMVHBKMM.js.map → chunk-T2P5TIZ6.js.map} +0 -0
|
@@ -38,13 +38,13 @@
|
|
|
38
38
|
|
|
39
39
|
|
|
40
40
|
|
|
41
|
+
var _chunkPAOWHJ5Ocjs = require('./chunk-PAOWHJ5O.cjs');
|
|
41
42
|
|
|
42
43
|
|
|
43
44
|
|
|
44
45
|
|
|
45
46
|
|
|
46
47
|
|
|
47
|
-
var _chunkST7E3NEEcjs = require('./chunk-ST7E3NEE.cjs');
|
|
48
48
|
|
|
49
49
|
|
|
50
50
|
|
|
@@ -54,7 +54,7 @@ var _chunkST7E3NEEcjs = require('./chunk-ST7E3NEE.cjs');
|
|
|
54
54
|
|
|
55
55
|
|
|
56
56
|
|
|
57
|
-
var
|
|
57
|
+
var _chunkEJVDBITDcjs = require('./chunk-EJVDBITD.cjs');
|
|
58
58
|
|
|
59
59
|
|
|
60
60
|
|
|
@@ -118,7 +118,7 @@ var _chunk643B2HKCcjs = require('./chunk-643B2HKC.cjs');
|
|
|
118
118
|
|
|
119
119
|
|
|
120
120
|
|
|
121
|
-
var
|
|
121
|
+
var _chunkFODKPD44cjs = require('./chunk-FODKPD44.cjs');
|
|
122
122
|
|
|
123
123
|
|
|
124
124
|
|
|
@@ -1137,7 +1137,7 @@ function smoothCoverage(m, w, h, r) {
|
|
|
1137
1137
|
return src;
|
|
1138
1138
|
}
|
|
1139
1139
|
function featherCoverage(m, w, h, radius) {
|
|
1140
|
-
const out =
|
|
1140
|
+
const out = _chunkPAOWHJ5Ocjs.gaussianBlur.call(void 0, m, w, h, Number.isFinite(radius) ? Math.max(0, radius) : 0, "zero");
|
|
1141
1141
|
for (let i = 0; i < out.length; i++) if (Math.abs(out[i]) < 1e-7) out[i] = 0;
|
|
1142
1142
|
return out;
|
|
1143
1143
|
}
|
|
@@ -1285,7 +1285,7 @@ function layerMaskCoverage(mask) {
|
|
|
1285
1285
|
let v = new Float32Array(sel.data.length);
|
|
1286
1286
|
for (let i = 0; i < v.length; i++) v[i] = sel.data[i] / 255;
|
|
1287
1287
|
const feather = _nullishCoalesce(mask.feather, () => ( 0));
|
|
1288
|
-
if (feather > 0) v =
|
|
1288
|
+
if (feather > 0) v = _chunkPAOWHJ5Ocjs.gaussianBlur.call(void 0, v, mask.width, mask.height, feather, "clamp");
|
|
1289
1289
|
const density = _nullishCoalesce(mask.density, () => ( 1));
|
|
1290
1290
|
if (density !== 1) for (let i = 0; i < v.length; i++) v[i] = 1 - density * (1 - v[i]);
|
|
1291
1291
|
return v;
|
|
@@ -1528,7 +1528,7 @@ function normalizeAdjustmentLayers(raw) {
|
|
|
1528
1528
|
return out;
|
|
1529
1529
|
}
|
|
1530
1530
|
function curveLutFromLevels(points) {
|
|
1531
|
-
return
|
|
1531
|
+
return _chunkPAOWHJ5Ocjs.curveLut.call(void 0, points.map((p) => ({ input: p.input / 255, output: p.output / 255 })));
|
|
1532
1532
|
}
|
|
1533
1533
|
var toUnitLevels = (c) => ({
|
|
1534
1534
|
inBlack: c.inBlack / 255,
|
|
@@ -2282,7 +2282,7 @@ function newLayerId(prefix = "layer") {
|
|
|
2282
2282
|
return `${prefix}_${Date.now().toString(36)}_${(++idCounter).toString(36)}`;
|
|
2283
2283
|
}
|
|
2284
2284
|
function pixelLayers(layers) {
|
|
2285
|
-
return
|
|
2285
|
+
return _chunkPAOWHJ5Ocjs.flattenLayers.call(void 0, layers).filter((l) => l.type === "pixel");
|
|
2286
2286
|
}
|
|
2287
2287
|
function developFilter(layer) {
|
|
2288
2288
|
return _optionalChain([layer, 'access', _10 => _10.filters, 'optionalAccess', _11 => _11.find, 'call', _12 => _12((f) => f.kind === "develop")]);
|
|
@@ -2313,10 +2313,10 @@ function isRenderedLayer(layer) {
|
|
|
2313
2313
|
return layer.type === "smart" || layer.type === "shape" || layer.type === "type";
|
|
2314
2314
|
}
|
|
2315
2315
|
function shapeLayers(layers) {
|
|
2316
|
-
return
|
|
2316
|
+
return _chunkPAOWHJ5Ocjs.flattenLayers.call(void 0, layers).filter((l) => l.type === "shape");
|
|
2317
2317
|
}
|
|
2318
2318
|
function smartObjectLayers(layers) {
|
|
2319
|
-
return
|
|
2319
|
+
return _chunkPAOWHJ5Ocjs.flattenLayers.call(void 0, layers).filter((l) => l.type === "smart");
|
|
2320
2320
|
}
|
|
2321
2321
|
|
|
2322
2322
|
// src/image-editor/layers/compositor.ts
|
|
@@ -2422,13 +2422,13 @@ var PHOTO_PROFILE = {
|
|
|
2422
2422
|
return v;
|
|
2423
2423
|
}
|
|
2424
2424
|
};
|
|
2425
|
-
var LayerCompositor = class extends
|
|
2425
|
+
var LayerCompositor = class extends _chunkPAOWHJ5Ocjs.RasterCompositor {
|
|
2426
2426
|
constructor(options = {}) {
|
|
2427
2427
|
super(PHOTO_PROFILE, options);
|
|
2428
2428
|
}
|
|
2429
2429
|
};
|
|
2430
2430
|
function compositeDeep(layers, rect, sources, depth) {
|
|
2431
|
-
const deep = new (0,
|
|
2431
|
+
const deep = new (0, _chunkPAOWHJ5Ocjs.DeepCompositor)(new LayerCompositor(), PHOTO_PROFILE, {
|
|
2432
2432
|
applyFilterRunDeep: (run, acc, _r, masks) => applyAdjustmentLayersFloat(acc, run.map(adjustmentNodeAsLayer), masks)
|
|
2433
2433
|
}, depth);
|
|
2434
2434
|
return deep.composite(layers, rect, sources);
|
|
@@ -2974,47 +2974,47 @@ var fail = (message) => {
|
|
|
2974
2974
|
throw new LayerOperationError(message);
|
|
2975
2975
|
};
|
|
2976
2976
|
function requireLayer(layers, id) {
|
|
2977
|
-
const loc =
|
|
2977
|
+
const loc = _chunkPAOWHJ5Ocjs.findLayer.call(void 0, layers, id);
|
|
2978
2978
|
if (!loc) {
|
|
2979
|
-
const ids =
|
|
2979
|
+
const ids = _chunkPAOWHJ5Ocjs.flattenLayers.call(void 0, layers).map((l) => l.id);
|
|
2980
2980
|
fail(`Unknown layer "${id}". ${ids.length ? `Layers: ${ids.join(", ")}.` : "The document has no layers."} Call list_layers for ids.`);
|
|
2981
2981
|
}
|
|
2982
2982
|
return loc;
|
|
2983
2983
|
}
|
|
2984
2984
|
function requireUnlocked(layer, what, action) {
|
|
2985
|
-
if (
|
|
2986
|
-
if (what !== "all" &&
|
|
2985
|
+
if (_chunkPAOWHJ5Ocjs.isLayerLocked.call(void 0, layer, "all")) fail(`Layer "${layer.name || layer.id}" is locked (all); unlock it before you ${action}.`);
|
|
2986
|
+
if (what !== "all" && _chunkPAOWHJ5Ocjs.isLayerLocked.call(void 0, layer, what)) fail(`Layer "${layer.name || layer.id}" has its ${what} locked; unlock it before you ${action}.`);
|
|
2987
2987
|
}
|
|
2988
2988
|
function placeLayer(layers, layer, placement = {}, defaultIndex) {
|
|
2989
2989
|
const given = [placement.aboveId, placement.belowId, placement.parentId].filter((v) => v !== void 0).length;
|
|
2990
2990
|
if (given > 1) fail("Give only one of aboveId, belowId and parentId.");
|
|
2991
2991
|
if (placement.aboveId || placement.belowId) {
|
|
2992
2992
|
const ref = requireLayer(layers, _nullishCoalesce(placement.aboveId, () => ( placement.belowId)));
|
|
2993
|
-
return
|
|
2993
|
+
return _chunkPAOWHJ5Ocjs.insertLayer.call(void 0, layers, layer, _nullishCoalesce(_optionalChain([ref, 'access', _21 => _21.parent, 'optionalAccess', _22 => _22.id]), () => ( null)), ref.index + (placement.aboveId ? 1 : 0));
|
|
2994
2994
|
}
|
|
2995
2995
|
if (placement.parentId) {
|
|
2996
2996
|
const ref = requireLayer(layers, placement.parentId);
|
|
2997
2997
|
if (ref.layer.type !== "group") fail(`Layer "${placement.parentId}" is not a group; parentId must be a group id.`);
|
|
2998
|
-
return
|
|
2998
|
+
return _chunkPAOWHJ5Ocjs.insertLayer.call(void 0, layers, layer, ref.layer.id, placement.index);
|
|
2999
2999
|
}
|
|
3000
|
-
return
|
|
3000
|
+
return _chunkPAOWHJ5Ocjs.insertLayer.call(void 0, layers, layer, null, _nullishCoalesce(placement.index, () => ( defaultIndex)));
|
|
3001
3001
|
}
|
|
3002
3002
|
function removeLayer(layers, id) {
|
|
3003
3003
|
const loc = requireLayer(layers, id);
|
|
3004
3004
|
requireUnlocked(loc.layer, "all", "delete it");
|
|
3005
|
-
return
|
|
3005
|
+
return _chunkPAOWHJ5Ocjs.mapLayer.call(void 0, layers, id, () => null);
|
|
3006
3006
|
}
|
|
3007
3007
|
function moveLayer(layers, id, placement) {
|
|
3008
3008
|
const loc = requireLayer(layers, id);
|
|
3009
3009
|
requireUnlocked(loc.layer, "all", "move it");
|
|
3010
3010
|
const target = _nullishCoalesce(_nullishCoalesce(placement.aboveId, () => ( placement.belowId)), () => ( placement.parentId));
|
|
3011
3011
|
if (target === id) fail("A layer cannot be placed relative to itself.");
|
|
3012
|
-
if (target && loc.layer.type === "group" &&
|
|
3012
|
+
if (target && loc.layer.type === "group" && _chunkPAOWHJ5Ocjs.flattenLayers.call(void 0, loc.layer.children).some((l) => l.id === target)) {
|
|
3013
3013
|
fail(`Group "${id}" cannot be moved into its own child "${target}".`);
|
|
3014
3014
|
}
|
|
3015
3015
|
if (target) requireLayer(layers, target);
|
|
3016
3016
|
if (!target && placement.index === void 0) fail("Give aboveId, belowId, parentId or index.");
|
|
3017
|
-
const without =
|
|
3017
|
+
const without = _chunkPAOWHJ5Ocjs.mapLayer.call(void 0, layers, id, () => null);
|
|
3018
3018
|
return placeLayer(without, loc.layer, placement);
|
|
3019
3019
|
}
|
|
3020
3020
|
function withNewIds(layer) {
|
|
@@ -3033,7 +3033,7 @@ function duplicateLayer(layers, id, name) {
|
|
|
3033
3033
|
const copy = withNewIds(loc.layer);
|
|
3034
3034
|
copy.name = _nullishCoalesce(name, () => ( `${loc.layer.name || "Layer"} copy`));
|
|
3035
3035
|
delete copy.locks;
|
|
3036
|
-
return { layers:
|
|
3036
|
+
return { layers: _chunkPAOWHJ5Ocjs.insertLayer.call(void 0, layers, copy, _nullishCoalesce(_optionalChain([loc, 'access', _25 => _25.parent, 'optionalAccess', _26 => _26.id]), () => ( null)), loc.index + 1), id: copy.id };
|
|
3037
3037
|
}
|
|
3038
3038
|
function setLayerProperties(layers, id, props) {
|
|
3039
3039
|
const loc = requireLayer(layers, id);
|
|
@@ -3080,7 +3080,7 @@ function setLayerProperties(layers, id, props) {
|
|
|
3080
3080
|
if (props.collapsed) g.collapsed = true;
|
|
3081
3081
|
else delete g.collapsed;
|
|
3082
3082
|
}
|
|
3083
|
-
return
|
|
3083
|
+
return _chunkPAOWHJ5Ocjs.mapLayer.call(void 0, layers, id, () => next);
|
|
3084
3084
|
}
|
|
3085
3085
|
function groupLayers(layers, ids, name = "Group") {
|
|
3086
3086
|
if (!ids.length) fail("Give at least one layer id to group.");
|
|
@@ -3109,17 +3109,17 @@ function groupLayers(layers, ids, name = "Group") {
|
|
|
3109
3109
|
group.children[0] = c;
|
|
3110
3110
|
}
|
|
3111
3111
|
let out = layers;
|
|
3112
|
-
for (const l of ordered) out =
|
|
3113
|
-
return { layers:
|
|
3112
|
+
for (const l of ordered) out = _chunkPAOWHJ5Ocjs.mapLayer.call(void 0, out, l.layer.id, () => null);
|
|
3113
|
+
return { layers: _chunkPAOWHJ5Ocjs.insertLayer.call(void 0, out, group, parent, top - below), id: group.id };
|
|
3114
3114
|
}
|
|
3115
3115
|
function ungroupLayer(layers, id) {
|
|
3116
3116
|
const loc = requireLayer(layers, id);
|
|
3117
3117
|
if (loc.layer.type !== "group") fail(`Layer "${id}" is not a group.`);
|
|
3118
3118
|
requireUnlocked(loc.layer, "all", "ungroup it");
|
|
3119
3119
|
const group = loc.layer;
|
|
3120
|
-
let out =
|
|
3120
|
+
let out = _chunkPAOWHJ5Ocjs.mapLayer.call(void 0, layers, id, () => null);
|
|
3121
3121
|
group.children.forEach((c, i) => {
|
|
3122
|
-
out =
|
|
3122
|
+
out = _chunkPAOWHJ5Ocjs.insertLayer.call(void 0, out, c, _nullishCoalesce(_optionalChain([loc, 'access', _35 => _35.parent, 'optionalAccess', _36 => _36.id]), () => ( null)), loc.index + i);
|
|
3123
3123
|
});
|
|
3124
3124
|
return { layers: out, ids: group.children.map((c) => c.id) };
|
|
3125
3125
|
}
|
|
@@ -3134,12 +3134,12 @@ function offsetLayer(layers, id, offset) {
|
|
|
3134
3134
|
if (mask && mask.linked === false && !mask.source) {
|
|
3135
3135
|
next.mask = { ...mask, surface: _chunkTFOPHZ3Ucjs.translateSurface.call(void 0, mask.surface, layer.offset.x - next.offset.x, layer.offset.y - next.offset.y) };
|
|
3136
3136
|
}
|
|
3137
|
-
return
|
|
3137
|
+
return _chunkPAOWHJ5Ocjs.mapLayer.call(void 0, layers, id, () => next);
|
|
3138
3138
|
}
|
|
3139
3139
|
function setLayerMask(layers, id, mask) {
|
|
3140
3140
|
const loc = requireLayer(layers, id);
|
|
3141
3141
|
requireUnlocked(loc.layer, "all", "change its mask");
|
|
3142
|
-
return
|
|
3142
|
+
return _chunkPAOWHJ5Ocjs.mapLayer.call(void 0, layers, id, (l) => {
|
|
3143
3143
|
const next = { ...l };
|
|
3144
3144
|
if (mask) next.mask = mask;
|
|
3145
3145
|
else delete next.mask;
|
|
@@ -3178,7 +3178,7 @@ function requirePixelLayer(layers, id) {
|
|
|
3178
3178
|
function addLayerFilter(layers, id, filter) {
|
|
3179
3179
|
const layer = requirePixelLayer(layers, id);
|
|
3180
3180
|
if (_optionalChain([layer, 'access', _37 => _37.filters, 'optionalAccess', _38 => _38.some, 'call', _39 => _39((f) => f.kind === filter.kind)])) fail(`Layer "${id}" already has a ${filter.kind} filter; change it with update_layer_filter.`);
|
|
3181
|
-
return
|
|
3181
|
+
return _chunkPAOWHJ5Ocjs.mapLayer.call(void 0, layers, id, () => ({ ...layer, filters: [..._nullishCoalesce(layer.filters, () => ( [])), filter] }));
|
|
3182
3182
|
}
|
|
3183
3183
|
function updateLayerFilter(layers, id, filterId, changes) {
|
|
3184
3184
|
const layer = requirePixelLayer(layers, id);
|
|
@@ -3189,7 +3189,7 @@ function updateLayerFilter(layers, id, filterId, changes) {
|
|
|
3189
3189
|
const merged2 = normalizeFilter({ ...current, ...changes, kind: current.kind }, current.id);
|
|
3190
3190
|
const filters = [...layer.filters];
|
|
3191
3191
|
filters[i] = merged2;
|
|
3192
|
-
return
|
|
3192
|
+
return _chunkPAOWHJ5Ocjs.mapLayer.call(void 0, layers, id, () => ({ ...layer, filters }));
|
|
3193
3193
|
}
|
|
3194
3194
|
function removeLayerFilter(layers, id, filterId) {
|
|
3195
3195
|
const layer = requirePixelLayer(layers, id);
|
|
@@ -3198,7 +3198,7 @@ function removeLayerFilter(layers, id, filterId) {
|
|
|
3198
3198
|
const next = { ...layer };
|
|
3199
3199
|
if (filters.length) next.filters = filters;
|
|
3200
3200
|
else delete next.filters;
|
|
3201
|
-
return
|
|
3201
|
+
return _chunkPAOWHJ5Ocjs.mapLayer.call(void 0, layers, id, () => next);
|
|
3202
3202
|
}
|
|
3203
3203
|
function requireEffectLayer(layers, id, action) {
|
|
3204
3204
|
const layer = requireLayer(layers, id).layer;
|
|
@@ -3213,7 +3213,7 @@ function guard(fn) {
|
|
|
3213
3213
|
try {
|
|
3214
3214
|
return fn();
|
|
3215
3215
|
} catch (e) {
|
|
3216
|
-
if (e instanceof
|
|
3216
|
+
if (e instanceof _chunkPAOWHJ5Ocjs.LayerEffectError) fail(e.message);
|
|
3217
3217
|
throw e;
|
|
3218
3218
|
}
|
|
3219
3219
|
}
|
|
@@ -3221,20 +3221,20 @@ function setLayerEffects(layers, id, effects) {
|
|
|
3221
3221
|
const layer = requireEffectLayer(layers, id, "change its effects");
|
|
3222
3222
|
const next = { ...layer };
|
|
3223
3223
|
if (effects && (effects.items.length || effects.psd || effects.scale !== void 0 || !effects.enabled)) {
|
|
3224
|
-
guard(() =>
|
|
3224
|
+
guard(() => _chunkPAOWHJ5Ocjs.validateLayerEffects.call(void 0, effects));
|
|
3225
3225
|
next.effects = effects;
|
|
3226
3226
|
} else delete next.effects;
|
|
3227
|
-
return
|
|
3227
|
+
return _chunkPAOWHJ5Ocjs.mapLayer.call(void 0, layers, id, () => next);
|
|
3228
3228
|
}
|
|
3229
3229
|
function addLayerEffect(layers, id, kind, params = {}, index) {
|
|
3230
|
-
if (!
|
|
3230
|
+
if (!_chunkPAOWHJ5Ocjs.isLayerEffectKind.call(void 0, kind)) fail(`Unknown effect kind "${String(kind)}". Kinds: ${_chunkPAOWHJ5Ocjs.LAYER_EFFECT_KINDS.join(", ")}.`);
|
|
3231
3231
|
const layer = requireEffectLayer(layers, id, "add effects");
|
|
3232
3232
|
const current = layerEffectsOf(layer);
|
|
3233
3233
|
const ids = new Set(current.items.map((e) => e.id));
|
|
3234
|
-
let effectId =
|
|
3235
|
-
while (ids.has(effectId)) effectId =
|
|
3234
|
+
let effectId = _chunkPAOWHJ5Ocjs.newEffectId.call(void 0, );
|
|
3235
|
+
while (ids.has(effectId)) effectId = _chunkPAOWHJ5Ocjs.newEffectId.call(void 0, );
|
|
3236
3236
|
const { id: _ignored, kind: _kind, ...rest } = params;
|
|
3237
|
-
const effect = guard(() =>
|
|
3237
|
+
const effect = guard(() => _chunkPAOWHJ5Ocjs.mergeLayerEffect.call(void 0, _chunkPAOWHJ5Ocjs.defaultLayerEffect.call(void 0, kind, effectId), rest));
|
|
3238
3238
|
const items = [...current.items];
|
|
3239
3239
|
const at = index === void 0 ? items.length : Math.max(0, Math.min(items.length, Math.floor(index)));
|
|
3240
3240
|
items.splice(at, 0, effect);
|
|
@@ -3251,7 +3251,7 @@ function updateLayerEffect(layers, id, effectId, changes) {
|
|
|
3251
3251
|
const i = requireEffect(layer, effectId);
|
|
3252
3252
|
const current = layer.effects;
|
|
3253
3253
|
const items = [...current.items];
|
|
3254
|
-
items[i] = guard(() =>
|
|
3254
|
+
items[i] = guard(() => _chunkPAOWHJ5Ocjs.mergeLayerEffect.call(void 0, items[i], changes));
|
|
3255
3255
|
return setLayerEffects(layers, id, { ...current, items });
|
|
3256
3256
|
}
|
|
3257
3257
|
function removeLayerEffect(layers, id, effectId) {
|
|
@@ -3286,7 +3286,7 @@ function unionRect(a, b) {
|
|
|
3286
3286
|
}
|
|
3287
3287
|
|
|
3288
3288
|
// src/image-editor/layers/shape.ts
|
|
3289
|
-
var SHAPE_RENDER_MARGIN =
|
|
3289
|
+
var SHAPE_RENDER_MARGIN = _chunkPAOWHJ5Ocjs.MAX_EFFECT_REACH;
|
|
3290
3290
|
var DEFAULT_MITER_LIMIT = 100;
|
|
3291
3291
|
var fail2 = (message) => {
|
|
3292
3292
|
throw new LayerOperationError(message);
|
|
@@ -3326,7 +3326,7 @@ function mapAnchor(a, f) {
|
|
|
3326
3326
|
return out;
|
|
3327
3327
|
}
|
|
3328
3328
|
function mapSubpaths(subpaths, f) {
|
|
3329
|
-
return
|
|
3329
|
+
return _chunkFODKPD44cjs.expandVectorCorners.call(void 0, subpaths).map((sp) => ({ closed: sp.closed, anchors: sp.anchors.map((a) => mapAnchor(a, f)) }));
|
|
3330
3330
|
}
|
|
3331
3331
|
function liveShapeSubpaths(live) {
|
|
3332
3332
|
let out;
|
|
@@ -3334,19 +3334,19 @@ function liveShapeSubpaths(live) {
|
|
|
3334
3334
|
case "rect": {
|
|
3335
3335
|
const x = Math.min(live.x, live.x + live.width);
|
|
3336
3336
|
const y = Math.min(live.y, live.y + live.height);
|
|
3337
|
-
const sp =
|
|
3337
|
+
const sp = _chunkFODKPD44cjs.rectSubpath.call(void 0, { x, y, width: Math.abs(live.width), height: Math.abs(live.height) });
|
|
3338
3338
|
const r = _nullishCoalesce(live.radii, () => ( [0, 0, 0, 0]));
|
|
3339
|
-
out = [{ closed: true, anchors: sp.anchors.map((a, i) => r[i] > 0 ?
|
|
3339
|
+
out = [{ closed: true, anchors: sp.anchors.map((a, i) => r[i] > 0 ? _chunkFODKPD44cjs.setAnchorCorner.call(void 0, a, r[i]) : a) }];
|
|
3340
3340
|
break;
|
|
3341
3341
|
}
|
|
3342
3342
|
case "ellipse":
|
|
3343
|
-
out = [
|
|
3343
|
+
out = [_chunkFODKPD44cjs.ellipseSubpath.call(void 0, normBox(live))];
|
|
3344
3344
|
break;
|
|
3345
3345
|
case "polygon":
|
|
3346
|
-
out = [
|
|
3346
|
+
out = [_chunkFODKPD44cjs.polygonSubpath.call(void 0, normBox(live), live.sides)];
|
|
3347
3347
|
break;
|
|
3348
3348
|
case "star":
|
|
3349
|
-
out = [
|
|
3349
|
+
out = [_chunkFODKPD44cjs.starSubpath.call(void 0, normBox(live), live.points, Math.max(0, Math.min(1, live.innerRatio)))];
|
|
3350
3350
|
break;
|
|
3351
3351
|
case "line": {
|
|
3352
3352
|
const a = { x: live.x1, y: live.y1 };
|
|
@@ -3369,7 +3369,7 @@ function liveShapeSubpaths(live) {
|
|
|
3369
3369
|
}
|
|
3370
3370
|
}
|
|
3371
3371
|
const m = live.transform;
|
|
3372
|
-
return m && !
|
|
3372
|
+
return m && !_chunkFODKPD44cjs.isIdentityMatrix.call(void 0, m) ? mapSubpaths(out, (p) => _chunkFODKPD44cjs.applyMatrix.call(void 0, m, p)) : out;
|
|
3373
3373
|
}
|
|
3374
3374
|
function normBox(b) {
|
|
3375
3375
|
return { x: Math.min(b.x, b.x + b.width), y: Math.min(b.y, b.y + b.height), width: Math.abs(b.width), height: Math.abs(b.height) };
|
|
@@ -3381,7 +3381,7 @@ var pathCache = /* @__PURE__ */ new WeakMap();
|
|
|
3381
3381
|
function componentPath(c) {
|
|
3382
3382
|
let p = pathCache.get(c.subpaths);
|
|
3383
3383
|
if (!p) {
|
|
3384
|
-
p =
|
|
3384
|
+
p = _chunkFODKPD44cjs.subpathsToBezier.call(void 0, c.subpaths);
|
|
3385
3385
|
pathCache.set(c.subpaths, p);
|
|
3386
3386
|
}
|
|
3387
3387
|
return p;
|
|
@@ -3502,11 +3502,11 @@ function fillCoverage(geo, rect, rule, inverted = false) {
|
|
|
3502
3502
|
function paintContext(env) {
|
|
3503
3503
|
const tiles = /* @__PURE__ */ new Map();
|
|
3504
3504
|
return {
|
|
3505
|
-
light:
|
|
3505
|
+
light: _chunkPAOWHJ5Ocjs.DEFAULT_GLOBAL_LIGHT,
|
|
3506
3506
|
pattern: (id) => {
|
|
3507
3507
|
if (tiles.has(id)) return tiles.get(id);
|
|
3508
|
-
const p = _nullishCoalesce(_optionalChain([env, 'access', _44 => _44.pattern, 'optionalCall', _45 => _45(id)]), () => (
|
|
3509
|
-
const t = p && p.width > 0 && p.height > 0 && p.data.length >= p.width * p.height * 4 ? new (0,
|
|
3508
|
+
const p = _nullishCoalesce(_optionalChain([env, 'access', _44 => _44.pattern, 'optionalCall', _45 => _45(id)]), () => ( _chunkPAOWHJ5Ocjs.builtinPattern.call(void 0, id)));
|
|
3509
|
+
const t = p && p.width > 0 && p.height > 0 && p.data.length >= p.width * p.height * 4 ? new (0, _chunkPAOWHJ5Ocjs.PatternTile)(p) : null;
|
|
3510
3510
|
tiles.set(id, t);
|
|
3511
3511
|
return t;
|
|
3512
3512
|
}
|
|
@@ -3537,9 +3537,9 @@ function renderShapeRect(layer, rect, env, ctx = paintContext(env)) {
|
|
|
3537
3537
|
if (!fCov && !sCov) return null;
|
|
3538
3538
|
const canvas = { x: 0, y: 0, width: env.width, height: env.height };
|
|
3539
3539
|
const anchor = { x: geo.frame.x, y: geo.frame.y };
|
|
3540
|
-
const fc = fCov ?
|
|
3540
|
+
const fc = fCov ? _chunkPAOWHJ5Ocjs.effectFillColors.call(void 0, layer.fill, rect, geo.frame, canvas, anchor, ctx) : null;
|
|
3541
3541
|
const fo = _nullishCoalesce(_optionalChain([layer, 'access', _46 => _46.fill, 'optionalAccess', _47 => _47.opacity]), () => ( 1));
|
|
3542
|
-
const sc = sCov ?
|
|
3542
|
+
const sc = sCov ? _chunkPAOWHJ5Ocjs.effectFillColors.call(void 0, layer.stroke.paint, rect, geo.frame, canvas, anchor, ctx) : null;
|
|
3543
3543
|
const so = _nullishCoalesce(_optionalChain([layer, 'access', _48 => _48.stroke, 'optionalAccess', _49 => _49.paint, 'access', _50 => _50.opacity]), () => ( 1));
|
|
3544
3544
|
const out = new Uint8ClampedArray(n * 4);
|
|
3545
3545
|
let any = false;
|
|
@@ -3632,9 +3632,9 @@ function normalizeShapePaint(v, path = "paint") {
|
|
|
3632
3632
|
offset: _nullishCoalesce(g.offset, () => ( { x: 0, y: 0 }))
|
|
3633
3633
|
};
|
|
3634
3634
|
try {
|
|
3635
|
-
|
|
3635
|
+
_chunkPAOWHJ5Ocjs.validateEffectGradient.call(void 0, gradient, `${path}.gradient`);
|
|
3636
3636
|
} catch (e) {
|
|
3637
|
-
if (e instanceof
|
|
3637
|
+
if (e instanceof _chunkPAOWHJ5Ocjs.LayerEffectError) fail2(e.message);
|
|
3638
3638
|
throw e;
|
|
3639
3639
|
}
|
|
3640
3640
|
if (gradient.stops.length < 1) fail2(`${path}.gradient.stops needs at least one { position, color }.`);
|
|
@@ -3704,7 +3704,7 @@ function matrixArg(v, path) {
|
|
|
3704
3704
|
if (!Array.isArray(v) || v.length !== 6 || !v.every(isNum)) fail2(`${path} must be six numbers [a, b, c, d, e, f].`);
|
|
3705
3705
|
const m = v;
|
|
3706
3706
|
if (Math.abs(m[0] * m[3] - m[1] * m[2]) < 1e-12) fail2(`${path} is singular.`);
|
|
3707
|
-
return
|
|
3707
|
+
return _chunkFODKPD44cjs.isIdentityMatrix.call(void 0, m) ? void 0 : [...m];
|
|
3708
3708
|
}
|
|
3709
3709
|
function normalizeLiveShape(v, path = "shape") {
|
|
3710
3710
|
if (!v || typeof v !== "object") return fail2(`${path} must be an object with kind ${LIVE_SHAPE_KINDS.join(", ")}.`);
|
|
@@ -3765,7 +3765,7 @@ function normalizeSubpaths(v, path = "subpaths") {
|
|
|
3765
3765
|
if (typeof v === "string") {
|
|
3766
3766
|
let subs;
|
|
3767
3767
|
try {
|
|
3768
|
-
subs =
|
|
3768
|
+
subs = _chunkFODKPD44cjs.bezierToSubpaths.call(void 0, v);
|
|
3769
3769
|
} catch (e5) {
|
|
3770
3770
|
return fail2(`${path}: could not read the SVG path data.`);
|
|
3771
3771
|
}
|
|
@@ -3846,20 +3846,20 @@ function updateShapeLayer(layers, id, change, env, action = "edit it") {
|
|
|
3846
3846
|
if (!("annotation" in patch)) delete next.annotation;
|
|
3847
3847
|
if (!next.components.length) fail2("A shape needs at least one component; delete the layer instead.");
|
|
3848
3848
|
const rendered = rerenderShape(next, env);
|
|
3849
|
-
return { layers:
|
|
3849
|
+
return { layers: _chunkPAOWHJ5Ocjs.mapLayer.call(void 0, layers, id, () => rendered), layer: rendered };
|
|
3850
3850
|
}
|
|
3851
3851
|
function transformShapeComponents(components, f, affine) {
|
|
3852
3852
|
return components.map((c) => {
|
|
3853
3853
|
if (affine && c.live) {
|
|
3854
|
-
const live = { ...c.live, transform:
|
|
3855
|
-
if (
|
|
3854
|
+
const live = { ...c.live, transform: _chunkFODKPD44cjs.multiplyMatrices.call(void 0, _nullishCoalesce(c.live.transform, () => ( _chunkFODKPD44cjs.IDENTITY_MATRIX)), affine) };
|
|
3855
|
+
if (_chunkFODKPD44cjs.isIdentityMatrix.call(void 0, live.transform)) delete live.transform;
|
|
3856
3856
|
return { op: c.op, subpaths: liveShapeSubpaths(live), live };
|
|
3857
3857
|
}
|
|
3858
3858
|
return { op: c.op, subpaths: mapSubpaths(c.subpaths, f) };
|
|
3859
3859
|
});
|
|
3860
3860
|
}
|
|
3861
3861
|
function offsetShape(layer, dx, dy, env) {
|
|
3862
|
-
const m =
|
|
3862
|
+
const m = _chunkFODKPD44cjs.translateMatrix.call(void 0, dx, dy);
|
|
3863
3863
|
const next = { ...layer, components: transformShapeComponents(layer.components, (p) => ({ x: p.x + dx, y: p.y + dy }), m) };
|
|
3864
3864
|
delete next.annotation;
|
|
3865
3865
|
return rerenderShape(next, env);
|
|
@@ -3867,7 +3867,7 @@ function offsetShape(layer, dx, dy, env) {
|
|
|
3867
3867
|
function mergeShapeComponents(components, fillRule = "nonzero") {
|
|
3868
3868
|
if (components.length < 2) return [...components];
|
|
3869
3869
|
const path = shapeOutline(components, fillRule);
|
|
3870
|
-
const subpaths =
|
|
3870
|
+
const subpaths = _chunkFODKPD44cjs.bezierToSubpaths.call(void 0, path);
|
|
3871
3871
|
if (!subpaths.length) fail2("The components combine to nothing (the operations remove every area), so there is nothing to merge into.");
|
|
3872
3872
|
return [{ op: "combine", subpaths }];
|
|
3873
3873
|
}
|
|
@@ -3877,14 +3877,14 @@ function shapeAsPixelLayer(layer) {
|
|
|
3877
3877
|
}
|
|
3878
3878
|
function annotationPaint(color, opacity) {
|
|
3879
3879
|
const c = parseCssColor(color);
|
|
3880
|
-
if (!c || !
|
|
3880
|
+
if (!c || !_chunkPAOWHJ5Ocjs.parseEffectColor.call(void 0, c.hex)) return void 0;
|
|
3881
3881
|
const a = c.alpha * opacity;
|
|
3882
3882
|
return a !== 1 ? { type: "color", color: c.hex, opacity: a } : { type: "color", color: c.hex };
|
|
3883
3883
|
}
|
|
3884
3884
|
function shapeFromAnnotation(a) {
|
|
3885
3885
|
const opacity = _nullishCoalesce(a.opacity, () => ( 1));
|
|
3886
3886
|
const lineWidth = "strokeWidth" in a && a.strokeWidth > 0 ? a.strokeWidth : 1;
|
|
3887
|
-
const rotation = a.rotation ?
|
|
3887
|
+
const rotation = a.rotation ? _chunkFODKPD44cjs.rotateMatrix.call(void 0, a.rotation, { x: a.x, y: a.y }) : void 0;
|
|
3888
3888
|
const t = rotation ? { transform: rotation } : {};
|
|
3889
3889
|
const live = (l) => liveComponent(l);
|
|
3890
3890
|
switch (a.type) {
|
|
@@ -3927,7 +3927,7 @@ function shapeFromAnnotation(a) {
|
|
|
3927
3927
|
case "pen": {
|
|
3928
3928
|
const paint = annotationPaint(a.strokeColor, opacity);
|
|
3929
3929
|
if (!paint) return null;
|
|
3930
|
-
const pts = rotation ? a.points.map((p) =>
|
|
3930
|
+
const pts = rotation ? a.points.map((p) => _chunkFODKPD44cjs.applyMatrix.call(void 0, rotation, p)) : a.points;
|
|
3931
3931
|
const subpaths = pts.length > 1 ? [{ closed: false, anchors: pts.map((p) => ({ x: p.x, y: p.y })) }] : [];
|
|
3932
3932
|
return {
|
|
3933
3933
|
components: [{ op: "combine", subpaths }],
|
|
@@ -3958,9 +3958,9 @@ function annotationOfShape(layer) {
|
|
|
3958
3958
|
var fail3 = (message) => {
|
|
3959
3959
|
throw new LayerOperationError(message);
|
|
3960
3960
|
};
|
|
3961
|
-
var TEXT_RENDER_MARGIN =
|
|
3961
|
+
var TEXT_RENDER_MARGIN = _chunkPAOWHJ5Ocjs.MAX_EFFECT_REACH;
|
|
3962
3962
|
function textMatrix(layer) {
|
|
3963
|
-
return _nullishCoalesce(layer.transform, () => (
|
|
3963
|
+
return _nullishCoalesce(layer.transform, () => ( _chunkFODKPD44cjs.IDENTITY_MATRIX));
|
|
3964
3964
|
}
|
|
3965
3965
|
function rectCorners(r) {
|
|
3966
3966
|
return [
|
|
@@ -3971,7 +3971,7 @@ function rectCorners(r) {
|
|
|
3971
3971
|
];
|
|
3972
3972
|
}
|
|
3973
3973
|
function docRect(r, m) {
|
|
3974
|
-
const pts = rectCorners(r).map((p) =>
|
|
3974
|
+
const pts = rectCorners(r).map((p) => _chunkFODKPD44cjs.applyMatrix.call(void 0, m, p));
|
|
3975
3975
|
const x0 = Math.floor(Math.min(...pts.map((p) => p.x)));
|
|
3976
3976
|
const y0 = Math.floor(Math.min(...pts.map((p) => p.y)));
|
|
3977
3977
|
const x1 = Math.ceil(Math.max(...pts.map((p) => p.x)));
|
|
@@ -4004,14 +4004,14 @@ function inkBounds(layout) {
|
|
|
4004
4004
|
}
|
|
4005
4005
|
function textOutlines(layer, shaper) {
|
|
4006
4006
|
if (!shaper.outline) fail3(`The text shaper "${shaper.id}" cannot give glyph outlines; plug in an outline shaper (createOutlineTextShaper) to convert text to shapes.`);
|
|
4007
|
-
const layout =
|
|
4007
|
+
const layout = _chunkFODKPD44cjs.layoutText.call(void 0, layer, shaper);
|
|
4008
4008
|
const m = textMatrix(layer);
|
|
4009
4009
|
const out = [];
|
|
4010
4010
|
for (const l of layout.lines) {
|
|
4011
4011
|
for (const f of l.fragments) {
|
|
4012
|
-
let path =
|
|
4013
|
-
for (const r of
|
|
4014
|
-
out.push({ fragment: f, path:
|
|
4012
|
+
let path = _chunkFODKPD44cjs.textFragmentOutline.call(void 0, shaper, layer.text, f);
|
|
4013
|
+
for (const r of _chunkFODKPD44cjs.textDecorations.call(void 0, f, l)) path = [...path, ..._chunkFODKPD44cjs.textRectPath.call(void 0, r)];
|
|
4014
|
+
out.push({ fragment: f, path: _chunkFODKPD44cjs.isIdentityMatrix.call(void 0, m) ? path : _chunkXGD3FSNCcjs.transformBezierPath.call(void 0, path, m) });
|
|
4015
4015
|
}
|
|
4016
4016
|
}
|
|
4017
4017
|
return out;
|
|
@@ -4067,7 +4067,7 @@ function renderOnCanvas(layer, shaper, region, env) {
|
|
|
4067
4067
|
const canvas = env.createCanvas(region.width, region.height);
|
|
4068
4068
|
const ctx = canvas.getContext("2d");
|
|
4069
4069
|
if (!ctx || typeof ctx.getImageData !== "function") return null;
|
|
4070
|
-
const layout =
|
|
4070
|
+
const layout = _chunkFODKPD44cjs.layoutText.call(void 0, layer, shaper);
|
|
4071
4071
|
const m = textMatrix(layer);
|
|
4072
4072
|
ctx.setTransform(1, 0, 0, 1, 0, 0);
|
|
4073
4073
|
ctx.clearRect(0, 0, region.width, region.height);
|
|
@@ -4079,8 +4079,8 @@ function renderOnCanvas(layer, shaper, region, env) {
|
|
|
4079
4079
|
ctx.globalAlpha = _nullishCoalesce(f.style.opacity, () => ( 1));
|
|
4080
4080
|
const s = layer.text.slice(f.start, f.end);
|
|
4081
4081
|
if (!f.spaced) shaper.draw(ctx, s, f.font, f.x, f.y);
|
|
4082
|
-
else for (let k = 0; k < s.length; k++) if (!
|
|
4083
|
-
for (const d of
|
|
4082
|
+
else for (let k = 0; k < s.length; k++) if (!_chunkFODKPD44cjs.isTextSpace.call(void 0, s[k])) shaper.draw(ctx, s[k], f.font, f.x + f.carets[k], f.y);
|
|
4083
|
+
for (const d of _chunkFODKPD44cjs.textDecorations.call(void 0, f, l)) ctx.fillRect(d.x, d.y, d.width, d.height);
|
|
4084
4084
|
}
|
|
4085
4085
|
}
|
|
4086
4086
|
ctx.globalAlpha = 1;
|
|
@@ -4091,7 +4091,7 @@ function renderOnCanvas(layer, shaper, region, env) {
|
|
|
4091
4091
|
function renderText(layer, env) {
|
|
4092
4092
|
const shaper = env.shaper;
|
|
4093
4093
|
if (!shaper || !shaper.outline && !shaper.draw) return null;
|
|
4094
|
-
const layout =
|
|
4094
|
+
const layout = _chunkFODKPD44cjs.layoutText.call(void 0, layer, shaper);
|
|
4095
4095
|
const ink = inkBounds(layout);
|
|
4096
4096
|
const clip = { x: -TEXT_RENDER_MARGIN, y: -TEXT_RENDER_MARGIN, width: env.width + 2 * TEXT_RENDER_MARGIN, height: env.height + 2 * TEXT_RENDER_MARGIN };
|
|
4097
4097
|
const region = ink ? intersect2(docRect(ink, textMatrix(layer)), clip) : null;
|
|
@@ -4186,7 +4186,7 @@ function patchParagraphStyle(base, patch, path = "paragraph") {
|
|
|
4186
4186
|
continue;
|
|
4187
4187
|
}
|
|
4188
4188
|
const value = k === "autoLeading" ? num(v, `${path}.${k}`, 0.1, 10) : num(v, `${path}.${k}`, -1e4, 1e4);
|
|
4189
|
-
if (k === "autoLeading" && value ===
|
|
4189
|
+
if (k === "autoLeading" && value === _chunkFODKPD44cjs.DEFAULT_AUTO_LEADING || k !== "autoLeading" && value === 0) delete o[k];
|
|
4190
4190
|
else o[k] = value;
|
|
4191
4191
|
} else fail3(`${path}.${k} is not a paragraph style field; use ${PARAGRAPH_STYLE_FIELDS.join(", ")}.`);
|
|
4192
4192
|
}
|
|
@@ -4223,14 +4223,14 @@ function createTypeLayer(init, env, id = newLayerId(), lenient = false) {
|
|
|
4223
4223
|
opacity: 1,
|
|
4224
4224
|
blend: "normal",
|
|
4225
4225
|
text: text3,
|
|
4226
|
-
runs:
|
|
4227
|
-
paragraphs:
|
|
4226
|
+
runs: _chunkFODKPD44cjs.fitRuns.call(void 0, init.runs, text3.length, _chunkFODKPD44cjs.DEFAULT_TEXT_STYLE),
|
|
4227
|
+
paragraphs: _chunkFODKPD44cjs.fitParagraphRuns.call(void 0, _nullishCoalesce(init.paragraphs, () => ( [{ length: text3.length, style: {} }])), text3),
|
|
4228
4228
|
frame: init.frame,
|
|
4229
4229
|
surface: _chunkTFOPHZ3Ucjs.emptySurface.call(void 0, 4),
|
|
4230
4230
|
offset: { x: 0, y: 0 }
|
|
4231
4231
|
};
|
|
4232
|
-
if (!layer.runs.length) layer.runs = [{ length: 0, style: _nullishCoalesce(_optionalChain([init, 'access', _62 => _62.runs, 'access', _63 => _63[0], 'optionalAccess', _64 => _64.style]), () => (
|
|
4233
|
-
if (init.transform && !
|
|
4232
|
+
if (!layer.runs.length) layer.runs = [{ length: 0, style: _nullishCoalesce(_optionalChain([init, 'access', _62 => _62.runs, 'access', _63 => _63[0], 'optionalAccess', _64 => _64.style]), () => ( _chunkFODKPD44cjs.DEFAULT_TEXT_STYLE)) }];
|
|
4233
|
+
if (init.transform && !_chunkFODKPD44cjs.isIdentityMatrix.call(void 0, init.transform)) layer.transform = init.transform;
|
|
4234
4234
|
if (lenient && !renderText(layer, env)) return { ...layer, rendering: "stored" };
|
|
4235
4235
|
return rerenderText(layer, env);
|
|
4236
4236
|
}
|
|
@@ -4240,24 +4240,24 @@ function updateTypeLayer(layers, id, change, env, action = "edit it") {
|
|
|
4240
4240
|
const patch = change(current);
|
|
4241
4241
|
const next = { ...current, ...patch };
|
|
4242
4242
|
if (!("annotation" in patch)) delete next.annotation;
|
|
4243
|
-
if ("text" in patch || "runs" in patch) next.runs =
|
|
4244
|
-
if (!next.runs.length) next.runs = [{ length: 0, style:
|
|
4245
|
-
if ("text" in patch || "paragraphs" in patch) next.paragraphs =
|
|
4243
|
+
if ("text" in patch || "runs" in patch) next.runs = _chunkFODKPD44cjs.fitRuns.call(void 0, next.runs, next.text.length, _nullishCoalesce(_optionalChain([current, 'access', _65 => _65.runs, 'access', _66 => _66[0], 'optionalAccess', _67 => _67.style]), () => ( _chunkFODKPD44cjs.DEFAULT_TEXT_STYLE)));
|
|
4244
|
+
if (!next.runs.length) next.runs = [{ length: 0, style: _chunkFODKPD44cjs.styleAt.call(void 0, current.runs, 0, _chunkFODKPD44cjs.DEFAULT_TEXT_STYLE) }];
|
|
4245
|
+
if ("text" in patch || "paragraphs" in patch) next.paragraphs = _chunkFODKPD44cjs.fitParagraphRuns.call(void 0, next.paragraphs, next.text);
|
|
4246
4246
|
const rendered = rerenderText(next, env);
|
|
4247
|
-
return { layers:
|
|
4247
|
+
return { layers: _chunkPAOWHJ5Ocjs.mapLayer.call(void 0, layers, id, () => rendered), layer: rendered };
|
|
4248
4248
|
}
|
|
4249
4249
|
function replaceTextRange(layer, start, end, insert) {
|
|
4250
4250
|
const text3 = layer.text.slice(0, start) + insert + layer.text.slice(end);
|
|
4251
|
-
const style =
|
|
4252
|
-
const runs =
|
|
4253
|
-
const pstyle =
|
|
4254
|
-
const paragraphs =
|
|
4255
|
-
return { text: text3, runs, paragraphs:
|
|
4251
|
+
const style = _chunkFODKPD44cjs.styleAt.call(void 0, layer.runs, start > 0 && start === layer.text.length ? start - 1 : start, _chunkFODKPD44cjs.DEFAULT_TEXT_STYLE);
|
|
4252
|
+
const runs = _chunkFODKPD44cjs.spliceRuns.call(void 0, layer.runs, start, end, insert.length, style);
|
|
4253
|
+
const pstyle = _chunkFODKPD44cjs.styleAt.call(void 0, layer.paragraphs, start, {});
|
|
4254
|
+
const paragraphs = _chunkFODKPD44cjs.spliceRuns.call(void 0, layer.paragraphs, start, end, insert.length, pstyle);
|
|
4255
|
+
return { text: text3, runs, paragraphs: _chunkFODKPD44cjs.fitParagraphRuns.call(void 0, paragraphs, text3) };
|
|
4256
4256
|
}
|
|
4257
4257
|
function transformTypeLayer(layer, m) {
|
|
4258
|
-
const t =
|
|
4258
|
+
const t = _chunkFODKPD44cjs.multiplyMatrices.call(void 0, textMatrix(layer), m);
|
|
4259
4259
|
const next = { ...layer };
|
|
4260
|
-
if (
|
|
4260
|
+
if (_chunkFODKPD44cjs.isIdentityMatrix.call(void 0, t)) delete next.transform;
|
|
4261
4261
|
else next.transform = t;
|
|
4262
4262
|
delete next.annotation;
|
|
4263
4263
|
return next;
|
|
@@ -4265,7 +4265,7 @@ function transformTypeLayer(layer, m) {
|
|
|
4265
4265
|
function typeFrame(layer, shaper) {
|
|
4266
4266
|
if (layer.frame.kind === "box") return { x: 0, y: 0, width: layer.frame.width, height: layer.frame.height };
|
|
4267
4267
|
if (!shaper) return fail3("Type layers need a text shaper to be measured; none is set here.");
|
|
4268
|
-
const b =
|
|
4268
|
+
const b = _chunkFODKPD44cjs.layoutText.call(void 0, layer, shaper).bounds;
|
|
4269
4269
|
return { x: b.x, y: b.y, width: Math.max(b.width, 1), height: Math.max(b.height, 1) };
|
|
4270
4270
|
}
|
|
4271
4271
|
function typeAsPixelLayer(layer) {
|
|
@@ -4273,7 +4273,7 @@ function typeAsPixelLayer(layer) {
|
|
|
4273
4273
|
return { ...rest, type: "pixel", surface: layer.surface, offset: { x: 0, y: 0 } };
|
|
4274
4274
|
}
|
|
4275
4275
|
function toTextSpace(layer, p) {
|
|
4276
|
-
return
|
|
4276
|
+
return _chunkFODKPD44cjs.applyMatrix.call(void 0, _chunkFODKPD44cjs.invertMatrix.call(void 0, textMatrix(layer)), p);
|
|
4277
4277
|
}
|
|
4278
4278
|
function typeFromAnnotation(a) {
|
|
4279
4279
|
if (a.type !== "text") return null;
|
|
@@ -4287,7 +4287,7 @@ function typeFromAnnotation(a) {
|
|
|
4287
4287
|
if (op !== 1) style.opacity = op;
|
|
4288
4288
|
const text3 = t.text.replace(/\r?\n|\r/g, " ");
|
|
4289
4289
|
const translate = [1, 0, 0, 1, t.x, t.y];
|
|
4290
|
-
const transform = t.rotation ?
|
|
4290
|
+
const transform = t.rotation ? _chunkFODKPD44cjs.multiplyMatrices.call(void 0, translate, _chunkFODKPD44cjs.rotateMatrix.call(void 0, t.rotation, { x: t.x, y: t.y })) : translate;
|
|
4291
4291
|
return { text: text3, runs: [{ length: text3.length, style }], frame: { kind: "point", origin: "top" }, transform };
|
|
4292
4292
|
}
|
|
4293
4293
|
function annotationOfType(layer) {
|
|
@@ -4617,34 +4617,34 @@ function isTransformAnchor(value) {
|
|
|
4617
4617
|
return typeof value === "string" && value in ANCHOR_FRACTION;
|
|
4618
4618
|
}
|
|
4619
4619
|
function identityTransform(box2) {
|
|
4620
|
-
return { box: { ...box2 }, corners:
|
|
4620
|
+
return { box: { ...box2 }, corners: _chunkEJVDBITDcjs.boxQuad.call(void 0, box2) };
|
|
4621
4621
|
}
|
|
4622
4622
|
function cornersFromMatrix(box2, m) {
|
|
4623
|
-
const q2 =
|
|
4624
|
-
return [
|
|
4623
|
+
const q2 = _chunkEJVDBITDcjs.boxQuad.call(void 0, box2);
|
|
4624
|
+
return [_chunkFODKPD44cjs.applyMatrix.call(void 0, m, q2[0]), _chunkFODKPD44cjs.applyMatrix.call(void 0, m, q2[1]), _chunkFODKPD44cjs.applyMatrix.call(void 0, m, q2[2]), _chunkFODKPD44cjs.applyMatrix.call(void 0, m, q2[3])];
|
|
4625
4625
|
}
|
|
4626
4626
|
function matrixFromCorners(box2, corners, eps = 1e-6) {
|
|
4627
4627
|
const [tl, tr, br, bl] = corners;
|
|
4628
4628
|
const size = 1 + Math.max(box2.width, box2.height);
|
|
4629
4629
|
if (Math.abs(tl.x + br.x - tr.x - bl.x) > eps * size || Math.abs(tl.y + br.y - tr.y - bl.y) > eps * size) return null;
|
|
4630
|
-
const h =
|
|
4631
|
-
return h ?
|
|
4630
|
+
const h = _chunkEJVDBITDcjs.rectToQuad.call(void 0, box2, corners);
|
|
4631
|
+
return h ? _chunkEJVDBITDcjs.affineFromHomography.call(void 0, h, 1e-9) : null;
|
|
4632
4632
|
}
|
|
4633
4633
|
function transformHomography(geometry) {
|
|
4634
|
-
const h =
|
|
4634
|
+
const h = _chunkEJVDBITDcjs.rectToQuad.call(void 0, geometry.box, geometry.corners);
|
|
4635
4635
|
if (!h) return null;
|
|
4636
|
-
return
|
|
4636
|
+
return _chunkEJVDBITDcjs.homographyKeepsQuad.call(void 0, h, _chunkEJVDBITDcjs.boxQuad.call(void 0, geometry.box)) ? h : null;
|
|
4637
4637
|
}
|
|
4638
4638
|
function hasWarp(geometry) {
|
|
4639
4639
|
const w = geometry.warp;
|
|
4640
4640
|
if (!w) return false;
|
|
4641
|
-
const id =
|
|
4641
|
+
const id = _chunkFODKPD44cjs.identityWarpMesh.call(void 0, geometry.box, w.us.length - 1, w.vs.length - 1);
|
|
4642
4642
|
if (id.points.length !== w.points.length || id.us.some((u, i) => Math.abs(u - w.us[i]) > 1e-12) || id.vs.some((v, i) => Math.abs(v - w.vs[i]) > 1e-12)) return true;
|
|
4643
4643
|
return w.points.some((p, i) => Math.abs(p.x - id.points[i].x) > 1e-6 || Math.abs(p.y - id.points[i].y) > 1e-6);
|
|
4644
4644
|
}
|
|
4645
4645
|
function isIdentityTransform(geometry) {
|
|
4646
4646
|
if (hasWarp(geometry)) return false;
|
|
4647
|
-
const q2 =
|
|
4647
|
+
const q2 = _chunkEJVDBITDcjs.boxQuad.call(void 0, geometry.box);
|
|
4648
4648
|
return geometry.corners.every((c, i) => Math.abs(c.x - q2[i].x) < 1e-6 && Math.abs(c.y - q2[i].y) < 1e-6);
|
|
4649
4649
|
}
|
|
4650
4650
|
function transformMap(geometry) {
|
|
@@ -4652,8 +4652,8 @@ function transformMap(geometry) {
|
|
|
4652
4652
|
if (!h) return null;
|
|
4653
4653
|
const { box: box2 } = geometry;
|
|
4654
4654
|
const warp = hasWarp(geometry) ? geometry.warp : null;
|
|
4655
|
-
if (!warp) return (p) =>
|
|
4656
|
-
return (p) =>
|
|
4655
|
+
if (!warp) return (p) => _chunkEJVDBITDcjs.applyHomography.call(void 0, h, p);
|
|
4656
|
+
return (p) => _chunkEJVDBITDcjs.applyHomography.call(void 0, h, _chunkFODKPD44cjs.evalWarpMesh.call(void 0, warp, (p.x - box2.x) / box2.width, (p.y - box2.y) / box2.height));
|
|
4657
4657
|
}
|
|
4658
4658
|
function transformedPoint(geometry, fx, fy) {
|
|
4659
4659
|
const f = transformMap(geometry);
|
|
@@ -4662,9 +4662,9 @@ function transformedPoint(geometry, fx, fy) {
|
|
|
4662
4662
|
}
|
|
4663
4663
|
function anchorPoint(geometry, anchor) {
|
|
4664
4664
|
const [fx, fy] = ANCHOR_FRACTION[anchor];
|
|
4665
|
-
const h =
|
|
4665
|
+
const h = _chunkEJVDBITDcjs.rectToQuad.call(void 0, geometry.box, geometry.corners);
|
|
4666
4666
|
const p = { x: geometry.box.x + fx * geometry.box.width, y: geometry.box.y + fy * geometry.box.height };
|
|
4667
|
-
return _nullishCoalesce((h &&
|
|
4667
|
+
return _nullishCoalesce((h && _chunkEJVDBITDcjs.applyHomography.call(void 0, h, p)), () => ( p));
|
|
4668
4668
|
}
|
|
4669
4669
|
function transformedBox(geometry) {
|
|
4670
4670
|
const f = transformMap(geometry);
|
|
@@ -4697,16 +4697,16 @@ function matrixFromParams(box2, params) {
|
|
|
4697
4697
|
const tx = Math.tan((_nullishCoalesce(params.skewX, () => ( 0))) * Math.PI / 180);
|
|
4698
4698
|
const ty = Math.tan((_nullishCoalesce(params.skewY, () => ( 0))) * Math.PI / 180);
|
|
4699
4699
|
const ref = referencePoint(box2, params.reference);
|
|
4700
|
-
const linear =
|
|
4701
|
-
return
|
|
4700
|
+
const linear = _chunkFODKPD44cjs.multiplyMatrices.call(void 0, _chunkFODKPD44cjs.multiplyMatrices.call(void 0, [1, ty, tx, 1, 0, 0], [sx, 0, 0, sy, 0, 0]), _chunkFODKPD44cjs.rotateMatrix.call(void 0, _nullishCoalesce(params.rotate, () => ( 0))));
|
|
4701
|
+
return _chunkFODKPD44cjs.multiplyMatrices.call(void 0, _chunkFODKPD44cjs.matrixAbout.call(void 0, linear, ref), _chunkFODKPD44cjs.translateMatrix.call(void 0, _nullishCoalesce(params.dx, () => ( 0)), _nullishCoalesce(params.dy, () => ( 0))));
|
|
4702
4702
|
}
|
|
4703
4703
|
function describeTransform(geometry, reference = "center") {
|
|
4704
4704
|
const m = hasWarp(geometry) ? null : matrixFromCorners(geometry.box, geometry.corners);
|
|
4705
4705
|
const ref = referencePoint(geometry.box, reference);
|
|
4706
4706
|
const bounds = transformedBox(geometry);
|
|
4707
4707
|
if (!m) {
|
|
4708
|
-
const h =
|
|
4709
|
-
const at2 = _nullishCoalesce((h &&
|
|
4708
|
+
const h = _chunkEJVDBITDcjs.rectToQuad.call(void 0, geometry.box, geometry.corners);
|
|
4709
|
+
const at2 = _nullishCoalesce((h && _chunkEJVDBITDcjs.applyHomography.call(void 0, h, ref)), () => ( ref));
|
|
4710
4710
|
return { affine: false, scaleX: 100, scaleY: 100, rotate: 0, skewX: 0, x: at2.x, y: at2.y, bounds, corners: geometry.corners };
|
|
4711
4711
|
}
|
|
4712
4712
|
const [a, b, c, d] = m;
|
|
@@ -4715,7 +4715,7 @@ function describeTransform(geometry, reference = "center") {
|
|
|
4715
4715
|
const shear = sxAbs ? (a * c + b * d) / sxAbs : 0;
|
|
4716
4716
|
const sy = sxAbs ? (a * d - b * c) / sxAbs : 0;
|
|
4717
4717
|
const skew = sxAbs ? Math.atan(shear / sxAbs) * 180 / Math.PI : 0;
|
|
4718
|
-
const at =
|
|
4718
|
+
const at = _chunkFODKPD44cjs.applyMatrix.call(void 0, m, ref);
|
|
4719
4719
|
const clean = (v) => Math.abs(v) < 1e-9 ? 0 : v;
|
|
4720
4720
|
return {
|
|
4721
4721
|
affine: true,
|
|
@@ -4733,35 +4733,35 @@ function applyParams(geometry, params) {
|
|
|
4733
4733
|
const ref = params.reference && typeof params.reference === "object" ? params.reference : anchorPoint(geometry, _nullishCoalesce(params.reference, () => ( "center")));
|
|
4734
4734
|
const m = matrixFromParams({ x: ref.x, y: ref.y, width: 0, height: 0 }, { ...params, reference: ref });
|
|
4735
4735
|
const c = geometry.corners;
|
|
4736
|
-
return [
|
|
4736
|
+
return [_chunkFODKPD44cjs.applyMatrix.call(void 0, m, c[0]), _chunkFODKPD44cjs.applyMatrix.call(void 0, m, c[1]), _chunkFODKPD44cjs.applyMatrix.call(void 0, m, c[2]), _chunkFODKPD44cjs.applyMatrix.call(void 0, m, c[3])];
|
|
4737
4737
|
}
|
|
4738
4738
|
function flipCorners(geometry, axis) {
|
|
4739
4739
|
const c = anchorPoint(geometry, "center");
|
|
4740
4740
|
const m = axis === "horizontal" ? [-1, 0, 0, 1, 2 * c.x, 0] : [1, 0, 0, -1, 0, 2 * c.y];
|
|
4741
4741
|
const q2 = geometry.corners;
|
|
4742
|
-
return [
|
|
4742
|
+
return [_chunkFODKPD44cjs.applyMatrix.call(void 0, m, q2[0]), _chunkFODKPD44cjs.applyMatrix.call(void 0, m, q2[1]), _chunkFODKPD44cjs.applyMatrix.call(void 0, m, q2[2]), _chunkFODKPD44cjs.applyMatrix.call(void 0, m, q2[3])];
|
|
4743
4743
|
}
|
|
4744
4744
|
function boxPointOf(geometry, p) {
|
|
4745
4745
|
const m = matrixFromCorners(geometry.box, geometry.corners);
|
|
4746
|
-
if (m) return
|
|
4746
|
+
if (m) return _chunkFODKPD44cjs.applyMatrix.call(void 0, _chunkFODKPD44cjs.invertMatrix.call(void 0, m), p);
|
|
4747
4747
|
return null;
|
|
4748
4748
|
}
|
|
4749
4749
|
function presetWarp(box2, preset) {
|
|
4750
|
-
return
|
|
4750
|
+
return _chunkFODKPD44cjs.warpPresetMesh.call(void 0, preset, box2);
|
|
4751
4751
|
}
|
|
4752
4752
|
function isValidWarp(mesh) {
|
|
4753
|
-
return
|
|
4753
|
+
return _chunkFODKPD44cjs.isValidWarpMesh.call(void 0, mesh);
|
|
4754
4754
|
}
|
|
4755
4755
|
function geometryHomography(geometry) {
|
|
4756
4756
|
const m = matrixFromCorners(geometry.box, geometry.corners);
|
|
4757
|
-
return m ?
|
|
4757
|
+
return m ? _chunkEJVDBITDcjs.homographyFromAffine.call(void 0, m) : transformHomography(geometry);
|
|
4758
4758
|
}
|
|
4759
4759
|
|
|
4760
4760
|
// src/image-editor/layers/smart.ts
|
|
4761
4761
|
var fail4 = (message) => {
|
|
4762
4762
|
throw new LayerOperationError(message);
|
|
4763
4763
|
};
|
|
4764
|
-
var SMART_RENDER_MARGIN =
|
|
4764
|
+
var SMART_RENDER_MARGIN = _chunkPAOWHJ5Ocjs.MAX_EFFECT_REACH;
|
|
4765
4765
|
function newContentsId() {
|
|
4766
4766
|
return newLayerId("so");
|
|
4767
4767
|
}
|
|
@@ -4772,7 +4772,7 @@ function placementGeometry(layer) {
|
|
|
4772
4772
|
return { box: contentsBox(layer.contents), corners: layer.placement.corners, warp: _nullishCoalesce(layer.placement.warp, () => ( null)) };
|
|
4773
4773
|
}
|
|
4774
4774
|
function placementAt(contents, x, y) {
|
|
4775
|
-
return { corners:
|
|
4775
|
+
return { corners: _chunkEJVDBITDcjs.boxQuad.call(void 0, { x, y, width: contents.width, height: contents.height }) };
|
|
4776
4776
|
}
|
|
4777
4777
|
function isContentsDecoded(contents) {
|
|
4778
4778
|
return contents.kind === "raster" ? Boolean(contents.raster) : Boolean(contents.document);
|
|
@@ -4827,7 +4827,7 @@ function placementKey(p, canvas) {
|
|
|
4827
4827
|
function integerMove(layer) {
|
|
4828
4828
|
const g = placementGeometry(layer);
|
|
4829
4829
|
if (hasWarp(g)) return null;
|
|
4830
|
-
const q2 =
|
|
4830
|
+
const q2 = _chunkEJVDBITDcjs.boxQuad.call(void 0, g.box);
|
|
4831
4831
|
const dx = g.corners[0].x - q2[0].x;
|
|
4832
4832
|
const dy = g.corners[0].y - q2[0].y;
|
|
4833
4833
|
if (Math.abs(dx - Math.round(dx)) > 1e-9 || Math.abs(dy - Math.round(dy)) > 1e-9) return null;
|
|
@@ -4868,7 +4868,7 @@ function placeContents(layer, canvas, options = {}) {
|
|
|
4868
4868
|
k = step;
|
|
4869
4869
|
let r = _optionalChain([options, 'access', _84 => _84.reduced, 'optionalAccess', _85 => _85.get, 'call', _86 => _86(k)]);
|
|
4870
4870
|
if (!r) {
|
|
4871
|
-
r =
|
|
4871
|
+
r = _chunkPAOWHJ5Ocjs.reduceSurface.call(void 0, src, k);
|
|
4872
4872
|
_optionalChain([options, 'access', _87 => _87.reduced, 'optionalAccess', _88 => _88.set, 'call', _89 => _89(k, r)]);
|
|
4873
4873
|
}
|
|
4874
4874
|
source = r;
|
|
@@ -4878,15 +4878,15 @@ function placeContents(layer, canvas, options = {}) {
|
|
|
4878
4878
|
if (hasWarp(g)) {
|
|
4879
4879
|
const f = transformMap(g);
|
|
4880
4880
|
if (!f) fail4("The placement folds the contents over itself or through the horizon; keep the corners a convex quad.");
|
|
4881
|
-
out =
|
|
4881
|
+
out = _chunkPAOWHJ5Ocjs.warpSurface.call(void 0, source, (p) => f({ x: p.x * k, y: p.y * k }), { interpolation, source: box2, clip, step: step > 1 ? step : void 0 });
|
|
4882
4882
|
} else {
|
|
4883
4883
|
const h = transformHomography(g);
|
|
4884
4884
|
if (!h) fail4("The placement folds the contents over itself or through the horizon; keep the corners a convex quad.");
|
|
4885
|
-
const hk =
|
|
4886
|
-
out =
|
|
4885
|
+
const hk = _chunkEJVDBITDcjs.multiplyHomographies.call(void 0, [k, 0, 0, 0, k, 0, 0, 0, 1], h);
|
|
4886
|
+
out = _chunkPAOWHJ5Ocjs.transformSurface.call(void 0, source, hk, { interpolation, source: box2, clip, step: step > 1 ? step : void 0 });
|
|
4887
4887
|
}
|
|
4888
4888
|
} catch (e) {
|
|
4889
|
-
if (e instanceof
|
|
4889
|
+
if (e instanceof _chunkPAOWHJ5Ocjs.TransformTooLargeError) fail4(e.message);
|
|
4890
4890
|
throw e;
|
|
4891
4891
|
}
|
|
4892
4892
|
}
|
|
@@ -4918,7 +4918,7 @@ function filterMaskCoverage(mask, canvas) {
|
|
|
4918
4918
|
}
|
|
4919
4919
|
const feather = _nullishCoalesce(mask.feather, () => ( 0));
|
|
4920
4920
|
if (all && !(feather > 0)) return null;
|
|
4921
|
-
if (feather > 0) v =
|
|
4921
|
+
if (feather > 0) v = _chunkPAOWHJ5Ocjs.gaussianBlur.call(void 0, v, W, H, feather, "clamp");
|
|
4922
4922
|
const density = _nullishCoalesce(mask.density, () => ( 1));
|
|
4923
4923
|
if (density !== 1) for (let i = 0; i < v.length; i++) v[i] = 1 - density * (1 - v[i]);
|
|
4924
4924
|
return v;
|
|
@@ -4940,7 +4940,7 @@ function applySmartFilters(placed, stack, canvas) {
|
|
|
4940
4940
|
if (f.opacity >= 1) acc = out;
|
|
4941
4941
|
else lerpInto(acc, out, f.opacity, null);
|
|
4942
4942
|
} else {
|
|
4943
|
-
|
|
4943
|
+
_chunkPAOWHJ5Ocjs.blendTile.call(void 0, acc, out, f.blend, f.opacity, null);
|
|
4944
4944
|
}
|
|
4945
4945
|
}
|
|
4946
4946
|
entry = { key, base, filtered: acc };
|
|
@@ -4983,11 +4983,11 @@ function normalizePlacement(raw, contents) {
|
|
|
4983
4983
|
}
|
|
4984
4984
|
const out = { corners: c.map((p) => ({ x: p.x, y: p.y })) };
|
|
4985
4985
|
if (raw.warp) {
|
|
4986
|
-
if (!
|
|
4986
|
+
if (!_chunkFODKPD44cjs.isValidWarpMesh.call(void 0, raw.warp)) fail4("warp must be a mesh with us and vs (knots from 0 to 1, increasing) and (3\xB7columns + 1) \xD7 (3\xB7rows + 1) finite points in contents pixels.");
|
|
4987
4987
|
out.warp = { us: [...raw.warp.us], vs: [...raw.warp.vs], points: raw.warp.points.map((p) => ({ x: p.x, y: p.y })) };
|
|
4988
4988
|
}
|
|
4989
4989
|
if (raw.interpolation !== void 0) {
|
|
4990
|
-
if (!
|
|
4990
|
+
if (!_chunkPAOWHJ5Ocjs.isInterpolation.call(void 0, raw.interpolation)) fail4(`Unknown interpolation "${String(raw.interpolation)}"; use nearest, bilinear or bicubic.`);
|
|
4991
4991
|
if (raw.interpolation !== "bicubic") out.interpolation = raw.interpolation;
|
|
4992
4992
|
}
|
|
4993
4993
|
const g = { box: { x: 0, y: 0, width: contents.width, height: contents.height }, corners: out.corners, warp: _nullishCoalesce(out.warp, () => ( null)) };
|
|
@@ -5004,10 +5004,10 @@ function followMask(mask, before, after) {
|
|
|
5004
5004
|
const h0 = placementHomography(before);
|
|
5005
5005
|
const h1 = placementHomography(after);
|
|
5006
5006
|
if (!h0 || !h1) return mask;
|
|
5007
|
-
const inv =
|
|
5007
|
+
const inv = _chunkEJVDBITDcjs.invertHomography.call(void 0, h0);
|
|
5008
5008
|
if (!inv) return mask;
|
|
5009
|
-
const delta =
|
|
5010
|
-
const surface =
|
|
5009
|
+
const delta = _chunkEJVDBITDcjs.multiplyHomographies.call(void 0, inv, h1);
|
|
5010
|
+
const surface = _chunkPAOWHJ5Ocjs.transformSurface.call(void 0, mask.surface, delta, { interpolation: "bilinear" });
|
|
5011
5011
|
return { ...mask, surface };
|
|
5012
5012
|
}
|
|
5013
5013
|
function setSmartPlacement(layers, id, placement, canvas) {
|
|
@@ -5028,7 +5028,7 @@ function setSmartPlacement(layers, id, placement, canvas) {
|
|
|
5028
5028
|
next.smartFilters = { ...next.smartFilters, mask: m };
|
|
5029
5029
|
}
|
|
5030
5030
|
next = rerender(next, canvas, "be transformed");
|
|
5031
|
-
return { layers:
|
|
5031
|
+
return { layers: _chunkPAOWHJ5Ocjs.mapLayer.call(void 0, layers, id, () => next), layer: next, masksMoved };
|
|
5032
5032
|
}
|
|
5033
5033
|
function offsetSmartObject(layers, id, dx, dy, canvas) {
|
|
5034
5034
|
const layer = requireSmartObject(layers, id);
|
|
@@ -5050,7 +5050,7 @@ function offsetSmartObject(layers, id, dx, dy, canvas) {
|
|
|
5050
5050
|
} else {
|
|
5051
5051
|
next = rerender(next, canvas, "move");
|
|
5052
5052
|
}
|
|
5053
|
-
return
|
|
5053
|
+
return _chunkPAOWHJ5Ocjs.mapLayer.call(void 0, layers, id, () => next);
|
|
5054
5054
|
}
|
|
5055
5055
|
function translateLayer(layer, dx, dy) {
|
|
5056
5056
|
if (!dx && !dy) return layer;
|
|
@@ -5086,7 +5086,7 @@ function translateLayer(layer, dx, dy) {
|
|
|
5086
5086
|
case "shape": {
|
|
5087
5087
|
const next = {
|
|
5088
5088
|
...layer,
|
|
5089
|
-
components: transformShapeComponents(layer.components, (p) => ({ x: p.x + dx, y: p.y + dy }),
|
|
5089
|
+
components: transformShapeComponents(layer.components, (p) => ({ x: p.x + dx, y: p.y + dy }), _chunkFODKPD44cjs.translateMatrix.call(void 0, dx, dy)),
|
|
5090
5090
|
surface: _chunkTFOPHZ3Ucjs.translateSurface.call(void 0, layer.surface, dx, dy),
|
|
5091
5091
|
mask: moveMask(layer.mask)
|
|
5092
5092
|
};
|
|
@@ -5095,7 +5095,7 @@ function translateLayer(layer, dx, dy) {
|
|
|
5095
5095
|
return next;
|
|
5096
5096
|
}
|
|
5097
5097
|
case "type": {
|
|
5098
|
-
const next = { ...transformTypeLayer(layer,
|
|
5098
|
+
const next = { ...transformTypeLayer(layer, _chunkFODKPD44cjs.translateMatrix.call(void 0, dx, dy)), surface: _chunkTFOPHZ3Ucjs.translateSurface.call(void 0, layer.surface, dx, dy), mask: moveMask(layer.mask) };
|
|
5099
5099
|
if (!next.mask) delete next.mask;
|
|
5100
5100
|
return next;
|
|
5101
5101
|
}
|
|
@@ -5118,7 +5118,7 @@ function layerExtent(layer, surfaceOf, canvas) {
|
|
|
5118
5118
|
} else {
|
|
5119
5119
|
b = full;
|
|
5120
5120
|
}
|
|
5121
|
-
const m =
|
|
5121
|
+
const m = _chunkPAOWHJ5Ocjs.effectsMargin.call(void 0, layer.effects);
|
|
5122
5122
|
if (b && m > 0) b = { x: b.x - Math.ceil(m), y: b.y - Math.ceil(m), width: b.width + 2 * Math.ceil(m), height: b.height + 2 * Math.ceil(m) };
|
|
5123
5123
|
return b;
|
|
5124
5124
|
}
|
|
@@ -5187,7 +5187,7 @@ function convertToSmartObject(layers, ids, canvas, options) {
|
|
|
5187
5187
|
delete resolved.source;
|
|
5188
5188
|
layer = resolved;
|
|
5189
5189
|
}
|
|
5190
|
-
if (
|
|
5190
|
+
if (_chunkPAOWHJ5Ocjs.flattenLayers.call(void 0, [layer]).some((x) => x.type === "pixel" && x.source === "document")) fail4(`Layer "${layer.name || layer.id}" holds the document image inside a group; convert the Background on its own.`);
|
|
5191
5191
|
return translateLayer(layer, -b.x, -b.y);
|
|
5192
5192
|
});
|
|
5193
5193
|
if (nested[0].clipped) {
|
|
@@ -5214,8 +5214,8 @@ function convertToSmartObject(layers, ids, canvas, options) {
|
|
|
5214
5214
|
smart = { ...smart, surface: renderSmartObject(smart, canvas) };
|
|
5215
5215
|
const below = ordered.filter((l) => l.index < top.index).length;
|
|
5216
5216
|
let out = layers;
|
|
5217
|
-
for (const l of ordered) out =
|
|
5218
|
-
return { layers:
|
|
5217
|
+
for (const l of ordered) out = _chunkPAOWHJ5Ocjs.mapLayer.call(void 0, out, l.layer.id, () => null);
|
|
5218
|
+
return { layers: _chunkPAOWHJ5Ocjs.insertLayer.call(void 0, out, smart, parent, top.index - below), layer: smart };
|
|
5219
5219
|
}
|
|
5220
5220
|
function rasterizeSmartObject(layers, id) {
|
|
5221
5221
|
const layer = requireSmartObject(layers, id);
|
|
@@ -5235,7 +5235,7 @@ function rasterizeSmartObject(layers, id) {
|
|
|
5235
5235
|
if (layer.locks) out.locks = layer.locks;
|
|
5236
5236
|
if (layer.effects) out.effects = layer.effects;
|
|
5237
5237
|
if (layer.fillOpacity !== void 0) out.fillOpacity = layer.fillOpacity;
|
|
5238
|
-
return { layers:
|
|
5238
|
+
return { layers: _chunkPAOWHJ5Ocjs.mapLayer.call(void 0, layers, id, () => out), layer: out };
|
|
5239
5239
|
}
|
|
5240
5240
|
function copySmartObject(layers, id, linked, name) {
|
|
5241
5241
|
const loc = requireLayer(layers, id);
|
|
@@ -5245,19 +5245,19 @@ function copySmartObject(layers, id, linked, name) {
|
|
|
5245
5245
|
delete copy.psd;
|
|
5246
5246
|
if (!linked) copy.contents = { ...layer.contents, id: newContentsId() };
|
|
5247
5247
|
if (copy.smartFilters) copy.smartFilters = { ...copy.smartFilters, filters: copy.smartFilters.filters.map((f) => ({ ...f, id: newLayerId("flt") })) };
|
|
5248
|
-
return { layers:
|
|
5248
|
+
return { layers: _chunkPAOWHJ5Ocjs.insertLayer.call(void 0, layers, copy, _nullishCoalesce(_optionalChain([loc, 'access', _114 => _114.parent, 'optionalAccess', _115 => _115.id]), () => ( null)), loc.index + 1), layer: copy };
|
|
5249
5249
|
}
|
|
5250
5250
|
function instancesOf(layers, contentsId) {
|
|
5251
|
-
return
|
|
5251
|
+
return _chunkPAOWHJ5Ocjs.flattenLayers.call(void 0, layers).filter((l) => l.type === "smart" && l.contents.id === contentsId).map((l) => l.id);
|
|
5252
5252
|
}
|
|
5253
5253
|
function replaceContents(layers, contentsId, contents, canvas) {
|
|
5254
5254
|
const ids = instancesOf(layers, contentsId);
|
|
5255
5255
|
if (!ids.length) fail4(`No smart object uses contents "${contentsId}".`);
|
|
5256
|
-
for (const id of ids) requireUnlocked(
|
|
5256
|
+
for (const id of ids) requireUnlocked(_chunkPAOWHJ5Ocjs.findLayer.call(void 0, layers, id).layer, "all", "replace its contents");
|
|
5257
5257
|
const next = { ...contents, id: contentsId };
|
|
5258
5258
|
let out = layers;
|
|
5259
5259
|
for (const id of ids) {
|
|
5260
|
-
out =
|
|
5260
|
+
out = _chunkPAOWHJ5Ocjs.mapLayer.call(void 0, out, id, (l) => {
|
|
5261
5261
|
const layer = l;
|
|
5262
5262
|
return rerender({ ...layer, contents: next, placement: refitPlacement(layer, next) }, canvas, "take the new contents");
|
|
5263
5263
|
});
|
|
@@ -5274,14 +5274,14 @@ function refitPlacement(layer, contents) {
|
|
|
5274
5274
|
const h = transformHomography(g);
|
|
5275
5275
|
if (!h) return placementAt(contents, 0, 0);
|
|
5276
5276
|
const shift = [1, 0, (W0 - W1) / 2, 0, 1, (H0 - H1) / 2, 0, 0, 1];
|
|
5277
|
-
const hn =
|
|
5278
|
-
const pts =
|
|
5277
|
+
const hn = _chunkEJVDBITDcjs.multiplyHomographies.call(void 0, shift, h);
|
|
5278
|
+
const pts = _chunkEJVDBITDcjs.boxQuad.call(void 0, { x: 0, y: 0, width: W1, height: H1 }).map((p) => {
|
|
5279
5279
|
const w = hn[6] * p.x + hn[7] * p.y + hn[8];
|
|
5280
5280
|
return { x: (hn[0] * p.x + hn[1] * p.y + hn[2]) / w, y: (hn[3] * p.x + hn[4] * p.y + hn[5]) / w };
|
|
5281
5281
|
});
|
|
5282
5282
|
const out = { corners: pts };
|
|
5283
5283
|
if (layer.placement.interpolation) out.interpolation = layer.placement.interpolation;
|
|
5284
|
-
if (layer.placement.warp) out.warp =
|
|
5284
|
+
if (layer.placement.warp) out.warp = _chunkFODKPD44cjs.mapWarpMeshPoints.call(void 0, layer.placement.warp, (p) => ({ x: p.x * W1 / W0, y: p.y * H1 / H0 }));
|
|
5285
5285
|
return out;
|
|
5286
5286
|
}
|
|
5287
5287
|
function normalizeSmartFilter(raw, id = newLayerId("flt")) {
|
|
@@ -5320,7 +5320,7 @@ function addSmartFilter(layers, id, filter, canvas, index) {
|
|
|
5320
5320
|
const at = index === void 0 ? filters.length : Math.max(0, Math.min(filters.length, Math.floor(index)));
|
|
5321
5321
|
filters.splice(at, 0, filter);
|
|
5322
5322
|
const next = withStack(layer, { ...stack, filters }, canvas);
|
|
5323
|
-
return { layers:
|
|
5323
|
+
return { layers: _chunkPAOWHJ5Ocjs.mapLayer.call(void 0, layers, id, () => next), layer: next, filter };
|
|
5324
5324
|
}
|
|
5325
5325
|
function updateSmartFilter(layers, id, filterId, changes, canvas) {
|
|
5326
5326
|
const layer = editableSmart(layers, id);
|
|
@@ -5342,7 +5342,7 @@ function updateSmartFilter(layers, id, filterId, changes, canvas) {
|
|
|
5342
5342
|
const filters = [...layer.smartFilters.filters];
|
|
5343
5343
|
filters[i] = merged2;
|
|
5344
5344
|
const next = withStack(layer, { ...layer.smartFilters, filters }, canvas);
|
|
5345
|
-
return { layers:
|
|
5345
|
+
return { layers: _chunkPAOWHJ5Ocjs.mapLayer.call(void 0, layers, id, () => next), layer: next, filter: merged2 };
|
|
5346
5346
|
}
|
|
5347
5347
|
function removeSmartFilter(layers, id, filterId, canvas) {
|
|
5348
5348
|
const layer = editableSmart(layers, id);
|
|
@@ -5350,7 +5350,7 @@ function removeSmartFilter(layers, id, filterId, canvas) {
|
|
|
5350
5350
|
const stack = layer.smartFilters;
|
|
5351
5351
|
const filters = stack.filters.filter((f) => f.id !== filterId);
|
|
5352
5352
|
const next = withStack(layer, filters.length ? { ...stack, filters } : stack.enabled ? void 0 : { enabled: false, filters }, canvas);
|
|
5353
|
-
return { layers:
|
|
5353
|
+
return { layers: _chunkPAOWHJ5Ocjs.mapLayer.call(void 0, layers, id, () => next), layer: next };
|
|
5354
5354
|
}
|
|
5355
5355
|
function moveSmartFilter(layers, id, filterId, index, canvas) {
|
|
5356
5356
|
const layer = editableSmart(layers, id);
|
|
@@ -5361,12 +5361,12 @@ function moveSmartFilter(layers, id, filterId, index, canvas) {
|
|
|
5361
5361
|
const [f] = filters.splice(i, 1);
|
|
5362
5362
|
filters.splice(index, 0, f);
|
|
5363
5363
|
const next = withStack(layer, { ...layer.smartFilters, filters }, canvas);
|
|
5364
|
-
return { layers:
|
|
5364
|
+
return { layers: _chunkPAOWHJ5Ocjs.mapLayer.call(void 0, layers, id, () => next), layer: next };
|
|
5365
5365
|
}
|
|
5366
5366
|
function setSmartFiltersEnabled(layers, id, enabled, canvas) {
|
|
5367
5367
|
const layer = editableSmart(layers, id);
|
|
5368
5368
|
const next = withStack(layer, { ...stackOf(layer), enabled: Boolean(enabled) }, canvas);
|
|
5369
|
-
return { layers:
|
|
5369
|
+
return { layers: _chunkPAOWHJ5Ocjs.mapLayer.call(void 0, layers, id, () => next), layer: next };
|
|
5370
5370
|
}
|
|
5371
5371
|
function setSmartFilterMask(layers, id, mask, canvas) {
|
|
5372
5372
|
const layer = editableSmart(layers, id);
|
|
@@ -5375,7 +5375,7 @@ function setSmartFilterMask(layers, id, mask, canvas) {
|
|
|
5375
5375
|
if (mask) stack.mask = mask;
|
|
5376
5376
|
else delete stack.mask;
|
|
5377
5377
|
const next = withStack(layer, stack, canvas);
|
|
5378
|
-
return { layers:
|
|
5378
|
+
return { layers: _chunkPAOWHJ5Ocjs.mapLayer.call(void 0, layers, id, () => next), layer: next };
|
|
5379
5379
|
}
|
|
5380
5380
|
function withFilterMaskSurface(layer, surface, canvas) {
|
|
5381
5381
|
const stack = stackOf(layer);
|
|
@@ -5389,7 +5389,7 @@ function placementBounds(layer) {
|
|
|
5389
5389
|
// src/image-editor/layers/serialize.ts
|
|
5390
5390
|
var LAYERED_SCHEMA_VERSION = 3;
|
|
5391
5391
|
function serializePatterns(patterns) {
|
|
5392
|
-
return patterns.map((p) => ({ id: p.id, name: p.name, png:
|
|
5392
|
+
return patterns.map((p) => ({ id: p.id, name: p.name, png: _chunkEJVDBITDcjs.pngDataUrl.call(void 0, p.width, p.height, p.data) }));
|
|
5393
5393
|
}
|
|
5394
5394
|
function deserializePatterns(raw, problems = []) {
|
|
5395
5395
|
if (!Array.isArray(raw)) return [];
|
|
@@ -5412,7 +5412,7 @@ function encodeSurface(surface) {
|
|
|
5412
5412
|
let out = null;
|
|
5413
5413
|
if (b) {
|
|
5414
5414
|
const data = _chunkTFOPHZ3Ucjs.readRegion.call(void 0, surface, b);
|
|
5415
|
-
out = { url:
|
|
5415
|
+
out = { url: _chunkEJVDBITDcjs.pngDataUrl.call(void 0, b.width, b.height, data, surface.channels), x: b.x, y: b.y };
|
|
5416
5416
|
}
|
|
5417
5417
|
encodedCache.set(surface, out);
|
|
5418
5418
|
return out;
|
|
@@ -5421,15 +5421,15 @@ var deepCache = /* @__PURE__ */ new WeakMap();
|
|
|
5421
5421
|
function encodeDeepSurface(surface) {
|
|
5422
5422
|
if (deepCache.has(surface)) return deepCache.get(surface);
|
|
5423
5423
|
let out = null;
|
|
5424
|
-
const depth =
|
|
5424
|
+
const depth = _chunkPAOWHJ5Ocjs.surfaceDepth.call(void 0, surface);
|
|
5425
5425
|
const b = depth === 8 ? null : _chunkTFOPHZ3Ucjs.contentBounds.call(void 0, surface);
|
|
5426
5426
|
if (depth !== 8 && b) {
|
|
5427
|
-
const samples =
|
|
5427
|
+
const samples = _chunkPAOWHJ5Ocjs.readDeepRegion.call(void 0, surface, b, depth);
|
|
5428
5428
|
const bytes = new Uint8Array(samples.byteLength);
|
|
5429
5429
|
const view = new DataView(bytes.buffer);
|
|
5430
5430
|
if (samples instanceof Uint16Array) for (let i = 0; i < samples.length; i++) view.setUint16(2 * i, samples[i], true);
|
|
5431
5431
|
else for (let i = 0; i < samples.length; i++) view.setFloat32(4 * i, samples[i], true);
|
|
5432
|
-
out = { depth, x: b.x, y: b.y, width: b.width, height: b.height, data:
|
|
5432
|
+
out = { depth, x: b.x, y: b.y, width: b.width, height: b.height, data: _chunkEJVDBITDcjs.bytesToBase64.call(void 0, _chunk643B2HKCcjs.deflate.call(void 0, bytes)) };
|
|
5433
5433
|
}
|
|
5434
5434
|
deepCache.set(surface, out);
|
|
5435
5435
|
return out;
|
|
@@ -5441,13 +5441,13 @@ function decodeDeepSurface(surface, raw, problems, label) {
|
|
|
5441
5441
|
if (d.depth !== 16 && d.depth !== 32 || !(d.width > 0 && d.height > 0) || !Number.isInteger(d.x) || !Number.isInteger(d.y) || typeof d.data !== "string") throw new Error("malformed");
|
|
5442
5442
|
const n = d.width * d.height * 4;
|
|
5443
5443
|
const size = d.depth === 16 ? 2 : 4;
|
|
5444
|
-
const bytes = _chunk643B2HKCcjs.inflate.call(void 0,
|
|
5444
|
+
const bytes = _chunk643B2HKCcjs.inflate.call(void 0, _chunkEJVDBITDcjs.base64ToBytes.call(void 0, d.data), { maxOutput: n * size });
|
|
5445
5445
|
if (bytes.length !== n * size) throw new Error("wrong length");
|
|
5446
5446
|
const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
|
|
5447
5447
|
const samples = d.depth === 16 ? new Uint16Array(n) : new Float32Array(n);
|
|
5448
5448
|
if (samples instanceof Uint16Array) for (let i = 0; i < n; i++) samples[i] = view.getUint16(2 * i, true);
|
|
5449
5449
|
else for (let i = 0; i < n; i++) samples[i] = view.getFloat32(4 * i, true);
|
|
5450
|
-
return
|
|
5450
|
+
return _chunkPAOWHJ5Ocjs.writeDeepRegion.call(void 0, surface, { x: d.x, y: d.y, width: d.width, height: d.height }, samples);
|
|
5451
5451
|
} catch (e6) {
|
|
5452
5452
|
problems.push(`${label}: its ${d.depth}-bit samples could not be read, so it was opened at 8 bits`);
|
|
5453
5453
|
return surface;
|
|
@@ -5470,7 +5470,7 @@ function baseFields(layer, ctx) {
|
|
|
5470
5470
|
function serializeEffects(effects) {
|
|
5471
5471
|
const out = { enabled: effects.enabled, items: JSON.parse(JSON.stringify(effects.items)) };
|
|
5472
5472
|
if (effects.scale !== void 0 && effects.scale !== 1) out.scale = effects.scale;
|
|
5473
|
-
if (effects.psd) out.psd = { key: effects.psd.key, data:
|
|
5473
|
+
if (effects.psd) out.psd = { key: effects.psd.key, data: _chunkEJVDBITDcjs.bytesToBase64.call(void 0, effects.psd.data) };
|
|
5474
5474
|
return out;
|
|
5475
5475
|
}
|
|
5476
5476
|
function deserializeEffects(raw) {
|
|
@@ -5480,12 +5480,12 @@ function deserializeEffects(raw) {
|
|
|
5480
5480
|
const p = r.psd;
|
|
5481
5481
|
if (p && typeof p.key === "string" && typeof p.data === "string") {
|
|
5482
5482
|
try {
|
|
5483
|
-
psd = { key: p.key, data:
|
|
5483
|
+
psd = { key: p.key, data: _chunkEJVDBITDcjs.base64ToBytes.call(void 0, p.data) };
|
|
5484
5484
|
} catch (e7) {
|
|
5485
5485
|
psd = void 0;
|
|
5486
5486
|
}
|
|
5487
5487
|
}
|
|
5488
|
-
return
|
|
5488
|
+
return _chunkPAOWHJ5Ocjs.normalizeLayerEffects.call(void 0, { ...r, psd });
|
|
5489
5489
|
}
|
|
5490
5490
|
function serializeMask(mask, hint, ctx) {
|
|
5491
5491
|
const out = { defaultValue: mask.defaultValue };
|
|
@@ -5566,8 +5566,8 @@ function serializeType(layer, base, ctx) {
|
|
|
5566
5566
|
if (layer.annotation) out.annotation = JSON.parse(JSON.stringify(layer.annotation));
|
|
5567
5567
|
if (_optionalChain([layer, 'access', _123 => _123.psd, 'optionalAccess', _124 => _124.tySh]) || _optionalChain([layer, 'access', _125 => _125.psd, 'optionalAccess', _126 => _126.blocks, 'optionalAccess', _127 => _127.length])) {
|
|
5568
5568
|
out.psd = {};
|
|
5569
|
-
if (layer.psd.tySh) out.psd.tySh =
|
|
5570
|
-
if (_optionalChain([layer, 'access', _128 => _128.psd, 'access', _129 => _129.blocks, 'optionalAccess', _130 => _130.length])) out.psd.blocks = layer.psd.blocks.map((b) => ({ key: b.key, data:
|
|
5569
|
+
if (layer.psd.tySh) out.psd.tySh = _chunkEJVDBITDcjs.bytesToBase64.call(void 0, layer.psd.tySh);
|
|
5570
|
+
if (_optionalChain([layer, 'access', _128 => _128.psd, 'access', _129 => _129.blocks, 'optionalAccess', _130 => _130.length])) out.psd.blocks = layer.psd.blocks.map((b) => ({ key: b.key, data: _chunkEJVDBITDcjs.bytesToBase64.call(void 0, b.data) }));
|
|
5571
5571
|
if (layer.psd.signature) out.psd.signature = layer.psd.signature;
|
|
5572
5572
|
}
|
|
5573
5573
|
return out;
|
|
@@ -5578,7 +5578,7 @@ function readType(r, base, ctx) {
|
|
|
5578
5578
|
const text3 = normalizeText(_nullishCoalesce(r.text, () => ( "")));
|
|
5579
5579
|
const runs = (Array.isArray(r.runs) ? r.runs : []).map((run, i) => ({
|
|
5580
5580
|
length: Math.max(0, Math.floor(num2(_optionalChain([run, 'optionalAccess', _131 => _131.length]), 0, 1e9, 0))),
|
|
5581
|
-
style: patchTextStyle(
|
|
5581
|
+
style: patchTextStyle(_chunkFODKPD44cjs.DEFAULT_TEXT_STYLE, _optionalChain([run, 'optionalAccess', _132 => _132.style]) && typeof run.style === "object" ? run.style : {}, `runs[${i}].style`)
|
|
5582
5582
|
}));
|
|
5583
5583
|
const paragraphs = (Array.isArray(r.paragraphs) ? r.paragraphs : []).map((p, i) => ({
|
|
5584
5584
|
length: Math.max(0, Math.floor(num2(_optionalChain([p, 'optionalAccess', _133 => _133.length]), 0, 1e9, 0))),
|
|
@@ -5591,13 +5591,13 @@ function readType(r, base, ctx) {
|
|
|
5591
5591
|
...base,
|
|
5592
5592
|
type: "type",
|
|
5593
5593
|
text: text3,
|
|
5594
|
-
runs:
|
|
5595
|
-
paragraphs:
|
|
5594
|
+
runs: _chunkFODKPD44cjs.fitRuns.call(void 0, runs, text3.length, _chunkFODKPD44cjs.DEFAULT_TEXT_STYLE),
|
|
5595
|
+
paragraphs: _chunkFODKPD44cjs.fitParagraphRuns.call(void 0, paragraphs.length ? paragraphs : [{ length: text3.length, style: {} }], text3),
|
|
5596
5596
|
frame,
|
|
5597
5597
|
surface: _chunkTFOPHZ3Ucjs.emptySurface.call(void 0, 4),
|
|
5598
5598
|
offset: { x: 0, y: 0 }
|
|
5599
5599
|
};
|
|
5600
|
-
if (!layer.runs.length) layer.runs = [{ length: 0, style: _nullishCoalesce(_optionalChain([runs, 'access', _137 => _137[0], 'optionalAccess', _138 => _138.style]), () => (
|
|
5600
|
+
if (!layer.runs.length) layer.runs = [{ length: 0, style: _nullishCoalesce(_optionalChain([runs, 'access', _137 => _137[0], 'optionalAccess', _138 => _138.style]), () => ( _chunkFODKPD44cjs.DEFAULT_TEXT_STYLE)) }];
|
|
5601
5601
|
if (m) layer.transform = m;
|
|
5602
5602
|
if (r.antiAlias === false) layer.antiAlias = false;
|
|
5603
5603
|
if (typeof r.fillOpacity === "number" && r.fillOpacity !== 1) layer.fillOpacity = num2(r.fillOpacity, 0, 1, 1);
|
|
@@ -5605,8 +5605,8 @@ function readType(r, base, ctx) {
|
|
|
5605
5605
|
if (r.annotation && typeof r.annotation === "object" && r.annotation.type === "text") layer.annotation = JSON.parse(JSON.stringify({ ...r.annotation, id: _nullishCoalesce(r.annotation.id, () => ( base.id)) }));
|
|
5606
5606
|
if (r.psd && typeof r.psd === "object") {
|
|
5607
5607
|
const psd = {};
|
|
5608
|
-
if (typeof r.psd.tySh === "string") psd.tySh =
|
|
5609
|
-
if (Array.isArray(r.psd.blocks)) psd.blocks = r.psd.blocks.filter((b) => b && typeof b.key === "string" && typeof b.data === "string").map((b) => ({ key: b.key, data:
|
|
5608
|
+
if (typeof r.psd.tySh === "string") psd.tySh = _chunkEJVDBITDcjs.base64ToBytes.call(void 0, r.psd.tySh);
|
|
5609
|
+
if (Array.isArray(r.psd.blocks)) psd.blocks = r.psd.blocks.filter((b) => b && typeof b.key === "string" && typeof b.data === "string").map((b) => ({ key: b.key, data: _chunkEJVDBITDcjs.base64ToBytes.call(void 0, b.data) }));
|
|
5610
5610
|
if (typeof r.psd.signature === "string") psd.signature = r.psd.signature;
|
|
5611
5611
|
if (psd.tySh || _optionalChain([psd, 'access', _139 => _139.blocks, 'optionalAccess', _140 => _140.length])) layer.psd = psd;
|
|
5612
5612
|
}
|
|
@@ -5634,7 +5634,7 @@ function serializeShape(layer, base) {
|
|
|
5634
5634
|
if (layer.inverted) out.inverted = true;
|
|
5635
5635
|
if (layer.fillOpacity !== void 0 && layer.fillOpacity !== 1) out.fillOpacity = layer.fillOpacity;
|
|
5636
5636
|
if (layer.annotation) out.annotation = JSON.parse(JSON.stringify(layer.annotation));
|
|
5637
|
-
if (_optionalChain([layer, 'access', _145 => _145.psd, 'optionalAccess', _146 => _146.blocks, 'optionalAccess', _147 => _147.length])) out.psd = { blocks: layer.psd.blocks.map((b) => ({ key: b.key, data:
|
|
5637
|
+
if (_optionalChain([layer, 'access', _145 => _145.psd, 'optionalAccess', _146 => _146.blocks, 'optionalAccess', _147 => _147.length])) out.psd = { blocks: layer.psd.blocks.map((b) => ({ key: b.key, data: _chunkEJVDBITDcjs.bytesToBase64.call(void 0, b.data) })), ...layer.psd.signature ? { signature: layer.psd.signature } : {} };
|
|
5638
5638
|
return out;
|
|
5639
5639
|
}
|
|
5640
5640
|
function readShape(r, base, ctx) {
|
|
@@ -5666,7 +5666,7 @@ function readShape(r, base, ctx) {
|
|
|
5666
5666
|
if (typeof r.fillOpacity === "number" && r.fillOpacity !== 1) out.fillOpacity = num2(r.fillOpacity, 0, 1, 1);
|
|
5667
5667
|
if (a && shapeFromAnnotation(a)) out.annotation = a;
|
|
5668
5668
|
if (r.psd && Array.isArray(r.psd.blocks)) {
|
|
5669
|
-
const blocks = r.psd.blocks.filter((b) => b && typeof b.key === "string" && typeof b.data === "string").map((b) => ({ key: b.key, data:
|
|
5669
|
+
const blocks = r.psd.blocks.filter((b) => b && typeof b.key === "string" && typeof b.data === "string").map((b) => ({ key: b.key, data: _chunkEJVDBITDcjs.base64ToBytes.call(void 0, b.data) }));
|
|
5670
5670
|
if (blocks.length) out.psd = { blocks };
|
|
5671
5671
|
if (out.psd && typeof r.psd.signature === "string") out.psd.signature = r.psd.signature;
|
|
5672
5672
|
}
|
|
@@ -5679,7 +5679,7 @@ function readShape(r, base, ctx) {
|
|
|
5679
5679
|
function serializeSmartFilters(stack, layerId, ctx) {
|
|
5680
5680
|
const out = {
|
|
5681
5681
|
enabled: stack.enabled,
|
|
5682
|
-
filters: stack.filters.map((f) => f.kind === "psd" ? { ...f, data:
|
|
5682
|
+
filters: stack.filters.map((f) => f.kind === "psd" ? { ...f, data: _chunkEJVDBITDcjs.bytesToBase64.call(void 0, f.data) } : JSON.parse(JSON.stringify(f)))
|
|
5683
5683
|
};
|
|
5684
5684
|
if (stack.mask) out.mask = serializeMask(stack.mask, `${layerId}-filter-mask`, ctx);
|
|
5685
5685
|
return out;
|
|
@@ -5705,7 +5705,7 @@ function serializeSmartObject(layer, base, ctx) {
|
|
|
5705
5705
|
}
|
|
5706
5706
|
if (layer.fillOpacity !== void 0 && layer.fillOpacity !== 1) out.fillOpacity = layer.fillOpacity;
|
|
5707
5707
|
if (layer.psd) {
|
|
5708
|
-
out.psd = { key: layer.psd.key, data:
|
|
5708
|
+
out.psd = { key: layer.psd.key, data: _chunkEJVDBITDcjs.bytesToBase64.call(void 0, layer.psd.data) };
|
|
5709
5709
|
if (layer.psd.placed) out.psd.placed = layer.psd.placed;
|
|
5710
5710
|
}
|
|
5711
5711
|
return out;
|
|
@@ -5717,7 +5717,7 @@ function serializeContents(c, ctx) {
|
|
|
5717
5717
|
if (enc) {
|
|
5718
5718
|
if (enc.x !== 0 || enc.y !== 0) {
|
|
5719
5719
|
const data = _chunkTFOPHZ3Ucjs.readRegion.call(void 0, c.raster, { x: 0, y: 0, width: c.width, height: c.height });
|
|
5720
|
-
out.asset = ctx.addAsset(
|
|
5720
|
+
out.asset = ctx.addAsset(_chunkEJVDBITDcjs.pngDataUrl.call(void 0, c.width, c.height, data, 4), `contents-${c.id}`);
|
|
5721
5721
|
} else out.asset = ctx.addAsset(enc.url, `contents-${c.id}`);
|
|
5722
5722
|
}
|
|
5723
5723
|
}
|
|
@@ -5726,7 +5726,7 @@ function serializeContents(c, ctx) {
|
|
|
5726
5726
|
if (c.document.globalLight) out.globalLight = { ...c.document.globalLight };
|
|
5727
5727
|
if (_optionalChain([c, 'access', _152 => _152.document, 'access', _153 => _153.patterns, 'optionalAccess', _154 => _154.length])) out.patterns = serializePatterns(c.document.patterns);
|
|
5728
5728
|
}
|
|
5729
|
-
if (c.file) out.file = { type: c.file.type, data:
|
|
5729
|
+
if (c.file) out.file = { type: c.file.type, data: _chunkEJVDBITDcjs.bytesToBase64.call(void 0, c.file.bytes) };
|
|
5730
5730
|
if (c.linked) out.linked = { path: c.linked.path };
|
|
5731
5731
|
return out;
|
|
5732
5732
|
}
|
|
@@ -5762,7 +5762,7 @@ async function serializeLayersExternal(layers, store) {
|
|
|
5762
5762
|
for (const [id, url] of Object.entries(inline.assets)) {
|
|
5763
5763
|
let ref = refs.get(url);
|
|
5764
5764
|
if (!ref) {
|
|
5765
|
-
const parsed =
|
|
5765
|
+
const parsed = _chunkEJVDBITDcjs.parseDataUrl.call(void 0, url);
|
|
5766
5766
|
const png = decodePngHeader(parsed.bytes);
|
|
5767
5767
|
ref = await store.put(new Blob([parsed.bytes], { type: "image/png" }), { id, width: png.width, height: png.height });
|
|
5768
5768
|
if (typeof ref !== "string" || !ref) throw new Error(`The asset store returned no reference for "${id}".`);
|
|
@@ -5790,7 +5790,7 @@ async function resolveExternalAssets(assets, store, problems) {
|
|
|
5790
5790
|
try {
|
|
5791
5791
|
const blob = await store.get(ref);
|
|
5792
5792
|
const bytes = new Uint8Array(await blob.arrayBuffer());
|
|
5793
|
-
out[id] = `data:image/png;base64,${
|
|
5793
|
+
out[id] = `data:image/png;base64,${_chunkEJVDBITDcjs.bytesToBase64.call(void 0, bytes)}`;
|
|
5794
5794
|
} catch (err) {
|
|
5795
5795
|
problems.push(`Asset "${id}" (${ref}) could not be fetched: ${err.message}`);
|
|
5796
5796
|
}
|
|
@@ -5798,9 +5798,9 @@ async function resolveExternalAssets(assets, store, problems) {
|
|
|
5798
5798
|
return out;
|
|
5799
5799
|
}
|
|
5800
5800
|
function decodePngDataUrl(url, channels) {
|
|
5801
|
-
const parsed =
|
|
5801
|
+
const parsed = _chunkEJVDBITDcjs.parseDataUrl.call(void 0, url);
|
|
5802
5802
|
if (!parsed) throw new Error("Asset is not a data URL.");
|
|
5803
|
-
const png =
|
|
5803
|
+
const png = _chunkEJVDBITDcjs.decodePng.call(void 0, parsed.bytes, { keepGray: channels === 1 });
|
|
5804
5804
|
if (png.channels === channels) return png;
|
|
5805
5805
|
if (channels === 1) {
|
|
5806
5806
|
const out2 = new Uint8ClampedArray(png.width * png.height);
|
|
@@ -5974,7 +5974,7 @@ function readContents(id, ctx) {
|
|
|
5974
5974
|
const c = { id, name: typeof raw.name === "string" ? raw.name : "Contents", width, height, kind: raw.kind === "document" ? "document" : "raster" };
|
|
5975
5975
|
if (raw.file && typeof raw.file.type === "string" && typeof raw.file.data === "string") {
|
|
5976
5976
|
try {
|
|
5977
|
-
c.file = { type: raw.file.type, bytes:
|
|
5977
|
+
c.file = { type: raw.file.type, bytes: _chunkEJVDBITDcjs.base64ToBytes.call(void 0, raw.file.data) };
|
|
5978
5978
|
} catch (e9) {
|
|
5979
5979
|
ctx.problems.push(`Smart object contents "${c.name}": the embedded file could not be read`);
|
|
5980
5980
|
}
|
|
@@ -6009,7 +6009,7 @@ function readSmartFilters(raw, ctx, what) {
|
|
|
6009
6009
|
const opacity = num2(f.opacity, 0, 1, 1);
|
|
6010
6010
|
if (f.kind === "psd") {
|
|
6011
6011
|
try {
|
|
6012
|
-
filters.push({ id: typeof f.id === "string" ? f.id : newLayerId("flt"), kind: "psd", enabled: f.enabled !== false, name: typeof f.name === "string" ? f.name : "Filter", data:
|
|
6012
|
+
filters.push({ id: typeof f.id === "string" ? f.id : newLayerId("flt"), kind: "psd", enabled: f.enabled !== false, name: typeof f.name === "string" ? f.name : "Filter", data: _chunkEJVDBITDcjs.base64ToBytes.call(void 0, String(_nullishCoalesce(f.data, () => ( "")))), blend, opacity });
|
|
6013
6013
|
} catch (e10) {
|
|
6014
6014
|
ctx.problems.push(`${what}: a Photoshop smart filter could not be read`);
|
|
6015
6015
|
}
|
|
@@ -6034,8 +6034,8 @@ function readSmartObject(r, base, ctx) {
|
|
|
6034
6034
|
let placement;
|
|
6035
6035
|
try {
|
|
6036
6036
|
const raw = { corners: p.corners };
|
|
6037
|
-
if (p.warp &&
|
|
6038
|
-
if (
|
|
6037
|
+
if (p.warp && _chunkFODKPD44cjs.isValidWarpMesh.call(void 0, p.warp)) raw.warp = p.warp;
|
|
6038
|
+
if (_chunkPAOWHJ5Ocjs.isInterpolation.call(void 0, p.interpolation)) raw.interpolation = p.interpolation;
|
|
6039
6039
|
placement = normalizePlacement(raw, contents);
|
|
6040
6040
|
} catch (e) {
|
|
6041
6041
|
ctx.problems.push(`${what}: its placement is invalid (${e instanceof Error ? e.message : String(e)}); it was placed at the top left`);
|
|
@@ -6047,7 +6047,7 @@ function readSmartObject(r, base, ctx) {
|
|
|
6047
6047
|
if (typeof r.fillOpacity === "number" && r.fillOpacity !== 1) layer.fillOpacity = num2(r.fillOpacity, 0, 1, 1);
|
|
6048
6048
|
if (r.psd && typeof r.psd.key === "string" && typeof r.psd.data === "string") {
|
|
6049
6049
|
try {
|
|
6050
|
-
layer.psd = { key: r.psd.key, data:
|
|
6050
|
+
layer.psd = { key: r.psd.key, data: _chunkEJVDBITDcjs.base64ToBytes.call(void 0, r.psd.data) };
|
|
6051
6051
|
if (typeof r.psd.placed === "string") layer.psd.placed = r.psd.placed;
|
|
6052
6052
|
} catch (e11) {
|
|
6053
6053
|
}
|
|
@@ -7017,7 +7017,7 @@ function vectorBlockForComponents(components, inverted, width, height, flags = 0
|
|
|
7017
7017
|
const fr = (p) => ({ x: p.x / w, y: p.y / h });
|
|
7018
7018
|
const subpaths = [];
|
|
7019
7019
|
components.forEach((c, ci) => {
|
|
7020
|
-
|
|
7020
|
+
_chunkFODKPD44cjs.expandVectorCorners.call(void 0, c.subpaths).forEach((sp, si) => {
|
|
7021
7021
|
if (!sp.anchors.length) return;
|
|
7022
7022
|
subpaths.push({
|
|
7023
7023
|
closed: sp.closed,
|
|
@@ -7739,7 +7739,7 @@ function merged(levels) {
|
|
|
7739
7739
|
function charStyle(d, fonts, notes) {
|
|
7740
7740
|
const n = (k) => eNum(eGet(d, k));
|
|
7741
7741
|
const flag = (k) => eBool(eGet(d, k));
|
|
7742
|
-
const s = { ...
|
|
7742
|
+
const s = { ..._chunkFODKPD44cjs.DEFAULT_TEXT_STYLE };
|
|
7743
7743
|
const fi = n("Font");
|
|
7744
7744
|
const ps = fi !== void 0 ? fonts[fi] : void 0;
|
|
7745
7745
|
if (ps) {
|
|
@@ -7822,7 +7822,7 @@ function typeFromTySh(data, notes) {
|
|
|
7822
7822
|
}
|
|
7823
7823
|
const edText = _nullishCoalesce(eStr(ePath(_nullishCoalesce(engine, () => ( void 0)), ["EngineDict", "Editor", "Text"])), () => ( ""));
|
|
7824
7824
|
const text3 = (_nullishCoalesce(txt, () => ( edText.replace(/\r$/, "")))).replace(/\r\n?/g, "\n");
|
|
7825
|
-
let runs = [{ length: text3.length, style: { ...
|
|
7825
|
+
let runs = [{ length: text3.length, style: { ..._chunkFODKPD44cjs.DEFAULT_TEXT_STYLE } }];
|
|
7826
7826
|
let paragraphs = [{ length: text3.length, style: {} }];
|
|
7827
7827
|
let frame = { kind: "point" };
|
|
7828
7828
|
let transform = t.transform;
|
|
@@ -7878,14 +7878,14 @@ function typeFromTySh(data, notes) {
|
|
|
7878
7878
|
const b = eArray(ePath(shape, ["Cookie", "Photoshop", "BoxBounds"])).map((v) => _nullishCoalesce(eNum(v), () => ( 0)));
|
|
7879
7879
|
if (b.length === 4 && b[2] > b[0] && b[3] > b[1]) {
|
|
7880
7880
|
frame = { kind: "box", width: b[2] - b[0], height: b[3] - b[1] };
|
|
7881
|
-
transform =
|
|
7881
|
+
transform = _chunkFODKPD44cjs.multiplyMatrices.call(void 0, [1, 0, 0, 1, b[0], b[1]], t.transform);
|
|
7882
7882
|
}
|
|
7883
7883
|
}
|
|
7884
7884
|
}
|
|
7885
7885
|
return {
|
|
7886
7886
|
text: text3,
|
|
7887
|
-
runs:
|
|
7888
|
-
paragraphs:
|
|
7887
|
+
runs: _chunkFODKPD44cjs.fitRuns.call(void 0, runs, text3.length, _chunkFODKPD44cjs.DEFAULT_TEXT_STYLE),
|
|
7888
|
+
paragraphs: _chunkFODKPD44cjs.fitParagraphRuns.call(void 0, paragraphs, text3),
|
|
7889
7889
|
frame,
|
|
7890
7890
|
transform,
|
|
7891
7891
|
antiAlias,
|
|
@@ -7959,7 +7959,7 @@ function buildEngineData(layer, template) {
|
|
|
7959
7959
|
fonts.push(ps);
|
|
7960
7960
|
return fonts.length - 1;
|
|
7961
7961
|
};
|
|
7962
|
-
const runs =
|
|
7962
|
+
const runs = _chunkFODKPD44cjs.fitRuns.call(void 0, layer.runs, layer.text.length, _chunkFODKPD44cjs.DEFAULT_TEXT_STYLE);
|
|
7963
7963
|
const sruns = [];
|
|
7964
7964
|
const slens = [];
|
|
7965
7965
|
runs.forEach((r, i) => {
|
|
@@ -7967,10 +7967,10 @@ function buildEngineData(layer, template) {
|
|
|
7967
7967
|
slens.push(E.int(r.length + (i === runs.length - 1 ? 1 : 0)));
|
|
7968
7968
|
});
|
|
7969
7969
|
if (!runs.length) {
|
|
7970
|
-
sruns.push(E.dict([["StyleSheet", E.dict([["StyleSheetData", styleSheetData(
|
|
7970
|
+
sruns.push(E.dict([["StyleSheet", E.dict([["StyleSheetData", styleSheetData(_chunkFODKPD44cjs.DEFAULT_TEXT_STYLE, fontIndex(postScriptFor(_chunkFODKPD44cjs.DEFAULT_TEXT_STYLE)))]])]]));
|
|
7971
7971
|
slens.push(E.int(1));
|
|
7972
7972
|
}
|
|
7973
|
-
const paras =
|
|
7973
|
+
const paras = _chunkFODKPD44cjs.fitParagraphRuns.call(void 0, layer.paragraphs, layer.text);
|
|
7974
7974
|
const pruns = [];
|
|
7975
7975
|
const plens = [];
|
|
7976
7976
|
paras.forEach((p, i) => {
|
|
@@ -8026,7 +8026,7 @@ function buildEngineData(layer, template) {
|
|
|
8026
8026
|
eSet(e, key, rd);
|
|
8027
8027
|
}
|
|
8028
8028
|
eSet(rd, "FontSet", fontSet);
|
|
8029
|
-
if (!eGet(rd, "StyleSheetSet")) eSet(rd, "StyleSheetSet", E.array([E.dict([["Name", E.str("Normal RGB")], ["StyleSheetData", styleSheetData(_nullishCoalesce(_optionalChain([runs, 'access', _203 => _203[0], 'optionalAccess', _204 => _204.style]), () => (
|
|
8029
|
+
if (!eGet(rd, "StyleSheetSet")) eSet(rd, "StyleSheetSet", E.array([E.dict([["Name", E.str("Normal RGB")], ["StyleSheetData", styleSheetData(_nullishCoalesce(_optionalChain([runs, 'access', _203 => _203[0], 'optionalAccess', _204 => _204.style]), () => ( _chunkFODKPD44cjs.DEFAULT_TEXT_STYLE)), 0)]])]));
|
|
8030
8030
|
if (!eGet(rd, "ParagraphSheetSet")) eSet(rd, "ParagraphSheetSet", E.array([E.dict([["Name", E.str("Normal RGB")], ["DefaultStyleSheet", E.int(0)], ["Properties", paragraphProperties({})]])]));
|
|
8031
8031
|
if (!eGet(rd, "TheNormalStyleSheet")) eSet(rd, "TheNormalStyleSheet", E.int(0));
|
|
8032
8032
|
if (!eGet(rd, "TheNormalParagraphSheet")) eSet(rd, "TheNormalParagraphSheet", E.int(0));
|
|
@@ -8037,13 +8037,13 @@ function inkBounds2(layer) {
|
|
|
8037
8037
|
if (layer.frame.kind === "box") return [0, 0, layer.frame.width, layer.frame.height];
|
|
8038
8038
|
const b = _chunkTFOPHZ3Ucjs.contentBounds.call(void 0, layer.surface);
|
|
8039
8039
|
if (!b) return [0, 0, 0, 0];
|
|
8040
|
-
const inv =
|
|
8040
|
+
const inv = _chunkFODKPD44cjs.invertMatrix.call(void 0, textMatrix(layer));
|
|
8041
8041
|
const pts = [
|
|
8042
8042
|
{ x: b.x, y: b.y },
|
|
8043
8043
|
{ x: b.x + b.width, y: b.y },
|
|
8044
8044
|
{ x: b.x + b.width, y: b.y + b.height },
|
|
8045
8045
|
{ x: b.x, y: b.y + b.height }
|
|
8046
|
-
].map((p) =>
|
|
8046
|
+
].map((p) => _chunkFODKPD44cjs.applyMatrix.call(void 0, inv, p));
|
|
8047
8047
|
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))];
|
|
8048
8048
|
}
|
|
8049
8049
|
function tyShForLayer(layer) {
|
|
@@ -8510,7 +8510,7 @@ function filterMaskItem(placed, mask, area) {
|
|
|
8510
8510
|
var warpStyleOf = (name) => {
|
|
8511
8511
|
if (!name.startsWith("warp")) return null;
|
|
8512
8512
|
const s = _optionalChain([name, 'access', _218 => _218[4], 'optionalAccess', _219 => _219.toLowerCase, 'call', _220 => _220()]) + name.slice(5);
|
|
8513
|
-
return
|
|
8513
|
+
return _chunkFODKPD44cjs.WARP_STYLES.includes(s) ? s : null;
|
|
8514
8514
|
};
|
|
8515
8515
|
function warpFromDescriptor(w, contents) {
|
|
8516
8516
|
const full = { x: 0, y: 0, width: contents.width, height: contents.height };
|
|
@@ -8540,7 +8540,7 @@ function warpFromDescriptor(w, contents) {
|
|
|
8540
8540
|
} else {
|
|
8541
8541
|
const style = warpStyleOf(styleName);
|
|
8542
8542
|
if (!style) return void 0;
|
|
8543
|
-
mesh =
|
|
8543
|
+
mesh = _chunkFODKPD44cjs.warpPresetMesh.call(void 0,
|
|
8544
8544
|
{
|
|
8545
8545
|
style,
|
|
8546
8546
|
bend: _nullishCoalesce(descNumber(w, "warpValue"), () => ( 0)),
|
|
@@ -8555,7 +8555,7 @@ function warpFromDescriptor(w, contents) {
|
|
|
8555
8555
|
const same = Math.abs(bounds.x) < 1e-6 && Math.abs(bounds.y) < 1e-6 && Math.abs(bounds.width - contents.width) < 1e-6 && Math.abs(bounds.height - contents.height) < 1e-6;
|
|
8556
8556
|
if (!same) {
|
|
8557
8557
|
const m = mesh;
|
|
8558
|
-
mesh =
|
|
8558
|
+
mesh = _chunkFODKPD44cjs.fitWarpMesh.call(void 0, (s, t) => _chunkFODKPD44cjs.evalWarpMesh.call(void 0, m, (s * contents.width - bounds.x) / bounds.width, (t * contents.height - bounds.y) / bounds.height), [0, 1], [0, 1]);
|
|
8559
8559
|
}
|
|
8560
8560
|
return { mesh, frame };
|
|
8561
8561
|
}
|
|
@@ -8604,14 +8604,14 @@ var toQuad = (p) => [
|
|
|
8604
8604
|
function cornersFromQuad(quad, frame, contents) {
|
|
8605
8605
|
if (quad.length !== 8 || !quad.every(Number.isFinite)) return null;
|
|
8606
8606
|
const q2 = toQuad(quad);
|
|
8607
|
-
const h =
|
|
8607
|
+
const h = _chunkEJVDBITDcjs.rectToQuad.call(void 0, frame, q2);
|
|
8608
8608
|
if (!h) return null;
|
|
8609
|
-
const out =
|
|
8609
|
+
const out = _chunkEJVDBITDcjs.boxQuad.call(void 0, { x: 0, y: 0, width: contents.width, height: contents.height }).map((p) => _chunkEJVDBITDcjs.applyHomography.call(void 0, h, p));
|
|
8610
8610
|
return out.every(Boolean) ? out : null;
|
|
8611
8611
|
}
|
|
8612
8612
|
function quadFromCorners(corners, frame, contents) {
|
|
8613
|
-
const h =
|
|
8614
|
-
const pts =
|
|
8613
|
+
const h = _chunkEJVDBITDcjs.rectToQuad.call(void 0, { x: 0, y: 0, width: contents.width, height: contents.height }, corners);
|
|
8614
|
+
const pts = _chunkEJVDBITDcjs.boxQuad.call(void 0, frame).map((p) => _nullishCoalesce((h ? _chunkEJVDBITDcjs.applyHomography.call(void 0, h, p) : p), () => ( p)));
|
|
8615
8615
|
return pts.flatMap((p) => [p.x, p.y]);
|
|
8616
8616
|
}
|
|
8617
8617
|
var PLACED_KEYS = ["SoLd", "SoLE", "PlLd"];
|
|
@@ -9764,7 +9764,7 @@ function recordPixels(ctx, rec, name) {
|
|
|
9764
9764
|
cmykToRgb: ctx.cmykToRgb
|
|
9765
9765
|
};
|
|
9766
9766
|
const deep = set.cmykToRgb ? null : toRgbaDeep(set);
|
|
9767
|
-
if (deep) return
|
|
9767
|
+
if (deep) return _chunkPAOWHJ5Ocjs.surfaceFromDeepPixels.call(void 0, { width, height, data: deep }, 4, rec.rect.left, rec.rect.top);
|
|
9768
9768
|
return _chunkTFOPHZ3Ucjs.surfaceFromPixels.call(void 0, { width, height, data: toRgba8(set) }, 4, rec.rect.left, rec.rect.top);
|
|
9769
9769
|
}
|
|
9770
9770
|
function recordMask(ctx, rec, name) {
|
|
@@ -9840,7 +9840,7 @@ function recordEffects(ctx, rec, name, notes, group) {
|
|
|
9840
9840
|
}
|
|
9841
9841
|
for (const e of parsed.effects.items) {
|
|
9842
9842
|
for (const id of patternIds(e)) {
|
|
9843
|
-
if (ctx.patterns.has(id) ||
|
|
9843
|
+
if (ctx.patterns.has(id) || _chunkPAOWHJ5Ocjs.builtinPattern.call(void 0, id)) continue;
|
|
9844
9844
|
ctx.warn.add("A pattern effect uses a pattern the file does not contain, and paints nothing", name);
|
|
9845
9845
|
notes.push(`pattern "${id}" is not in the file`);
|
|
9846
9846
|
}
|
|
@@ -10050,7 +10050,7 @@ function contentsFor(ctx, placed, name, notes) {
|
|
|
10050
10050
|
document: { layers: nested.layers, globalLight: nested.globalLight, patterns: nested.patterns.length ? nested.patterns : void 0 }
|
|
10051
10051
|
};
|
|
10052
10052
|
} else if (t.ext === "png") {
|
|
10053
|
-
const png =
|
|
10053
|
+
const png = _chunkEJVDBITDcjs.decodePng.call(void 0, file.bytes);
|
|
10054
10054
|
out = { ...base, kind: "raster", width: png.width, height: png.height, raster: _chunkTFOPHZ3Ucjs.surfaceFromPixels.call(void 0, png, 4, 0, 0) };
|
|
10055
10055
|
} else {
|
|
10056
10056
|
const size = _nullishCoalesce(placed.size, () => ( { width: 0, height: 0 }));
|
|
@@ -10092,7 +10092,7 @@ function importSmart(ctx, rec, name, notes, props) {
|
|
|
10092
10092
|
if (placement && (size.width !== contents.width || size.height !== contents.height)) {
|
|
10093
10093
|
const kx = contents.width / size.width;
|
|
10094
10094
|
const ky = contents.height / size.height;
|
|
10095
|
-
if (placement.warp) placement = { ...placement, warp:
|
|
10095
|
+
if (placement.warp) placement = { ...placement, warp: _chunkFODKPD44cjs.mapWarpMeshPoints.call(void 0, placement.warp, (p) => ({ x: p.x * kx, y: p.y * ky })) };
|
|
10096
10096
|
}
|
|
10097
10097
|
}
|
|
10098
10098
|
if (!contents || !placement) {
|
|
@@ -10116,7 +10116,7 @@ function importSmart(ctx, rec, name, notes, props) {
|
|
|
10116
10116
|
ctx.warn.add("A smart object without readable contents came in with its stored pixels as contents", name);
|
|
10117
10117
|
notes.push("contents missing");
|
|
10118
10118
|
}
|
|
10119
|
-
placement = { corners:
|
|
10119
|
+
placement = { corners: _chunkEJVDBITDcjs.boxQuad.call(void 0, { x: rec.rect.left, y: rec.rect.top, width, height }) };
|
|
10120
10120
|
preview = true;
|
|
10121
10121
|
}
|
|
10122
10122
|
const layer = { type: "smart", id: ctx.newId(name), ...props, contents, placement, surface, offset: { x: 0, y: 0 } };
|
|
@@ -10175,7 +10175,7 @@ function mergedLayer(ctx) {
|
|
|
10175
10175
|
};
|
|
10176
10176
|
const deep = hasAlpha || set.cmykToRgb ? null : toRgbaDeep(set);
|
|
10177
10177
|
let surface;
|
|
10178
|
-
if (deep) surface =
|
|
10178
|
+
if (deep) surface = _chunkPAOWHJ5Ocjs.surfaceFromDeepPixels.call(void 0, { width, height, data: deep }, 4);
|
|
10179
10179
|
else {
|
|
10180
10180
|
const data = toRgba8(set);
|
|
10181
10181
|
if (hasAlpha) unmatteWhite(data);
|
|
@@ -10393,34 +10393,34 @@ function blendOf(d, key, fallback, notes) {
|
|
|
10393
10393
|
function colorOf(d, fallback = "#000000") {
|
|
10394
10394
|
if (!d) return fallback;
|
|
10395
10395
|
const g = (k) => descNumber(d, k);
|
|
10396
|
-
if (g("redFloat") !== void 0) return
|
|
10396
|
+
if (g("redFloat") !== void 0) return _chunkPAOWHJ5Ocjs.effectColorHex.call(void 0, [g("redFloat"), _nullishCoalesce(g("greenFloat"), () => ( 0)), _nullishCoalesce(g("blueFloat"), () => ( 0))]);
|
|
10397
10397
|
switch (d.classId) {
|
|
10398
10398
|
case "HSBC": {
|
|
10399
10399
|
const rgb = decodePsdColor(1, [(_nullishCoalesce(g("H "), () => ( 0))) / 360 * 65535, (_nullishCoalesce(g("Strt"), () => ( 0))) / 100 * 65535, (_nullishCoalesce(g("Brgh"), () => ( 0))) / 100 * 65535]);
|
|
10400
|
-
return rgb ?
|
|
10400
|
+
return rgb ? _chunkPAOWHJ5Ocjs.effectColorHex.call(void 0, rgb) : fallback;
|
|
10401
10401
|
}
|
|
10402
10402
|
case "CMYC": {
|
|
10403
10403
|
const inv = (k) => (1 - (_nullishCoalesce(g(k), () => ( 0))) / 100) * 65535;
|
|
10404
10404
|
const rgb = decodePsdColor(2, [inv("Cyn "), inv("Mgnt"), inv("Ylw "), inv("Blck")]);
|
|
10405
|
-
return rgb ?
|
|
10405
|
+
return rgb ? _chunkPAOWHJ5Ocjs.effectColorHex.call(void 0, rgb) : fallback;
|
|
10406
10406
|
}
|
|
10407
10407
|
case "LbCl": {
|
|
10408
10408
|
const rgb = decodePsdColor(7, [(_nullishCoalesce(g("Lmnc"), () => ( 0))) * 100, Math.round((_nullishCoalesce(g("A "), () => ( 0))) * 100) & 65535, Math.round((_nullishCoalesce(g("B "), () => ( 0))) * 100) & 65535]);
|
|
10409
|
-
return rgb ?
|
|
10409
|
+
return rgb ? _chunkPAOWHJ5Ocjs.effectColorHex.call(void 0, rgb) : fallback;
|
|
10410
10410
|
}
|
|
10411
10411
|
case "Grsc": {
|
|
10412
10412
|
const v = 1 - (_nullishCoalesce(g("Gry "), () => ( 0))) / 100;
|
|
10413
|
-
return
|
|
10413
|
+
return _chunkPAOWHJ5Ocjs.effectColorHex.call(void 0, [v, v, v]);
|
|
10414
10414
|
}
|
|
10415
10415
|
}
|
|
10416
10416
|
const r = g("Rd ");
|
|
10417
10417
|
const gr = g("Grn ");
|
|
10418
10418
|
const b = g("Bl ");
|
|
10419
10419
|
if (r === void 0 || gr === void 0 || b === void 0) return fallback;
|
|
10420
|
-
return
|
|
10420
|
+
return _chunkPAOWHJ5Ocjs.effectColorHex.call(void 0, [r / 255, gr / 255, b / 255]);
|
|
10421
10421
|
}
|
|
10422
10422
|
function colorDesc(hex) {
|
|
10423
|
-
const [r, g, b] = _nullishCoalesce(
|
|
10423
|
+
const [r, g, b] = _nullishCoalesce(_chunkPAOWHJ5Ocjs.parseEffectColor.call(void 0, hex), () => ( [0, 0, 0]));
|
|
10424
10424
|
return descriptor("RGBC", [
|
|
10425
10425
|
["Rd ", dbl3(r * 255)],
|
|
10426
10426
|
["Grn ", dbl3(g * 255)],
|
|
@@ -10503,9 +10503,9 @@ function gradientOf(d, notes) {
|
|
|
10503
10503
|
raw.forEach((s, i) => {
|
|
10504
10504
|
if (i > 0 && Math.abs(s.mid - 0.5) > 1e-3) {
|
|
10505
10505
|
const a = raw[i - 1];
|
|
10506
|
-
const ca =
|
|
10507
|
-
const cb =
|
|
10508
|
-
stops.push({ position: a.position + (s.position - a.position) * s.mid, color:
|
|
10506
|
+
const ca = _chunkPAOWHJ5Ocjs.parseEffectColor.call(void 0, a.color);
|
|
10507
|
+
const cb = _chunkPAOWHJ5Ocjs.parseEffectColor.call(void 0, s.color);
|
|
10508
|
+
stops.push({ position: a.position + (s.position - a.position) * s.mid, color: _chunkPAOWHJ5Ocjs.effectColorHex.call(void 0, ca.map((v, k) => (v + cb[k]) / 2)) });
|
|
10509
10509
|
notes.add("gradient midpoints are drawn as straight segments");
|
|
10510
10510
|
}
|
|
10511
10511
|
stops.push({ position: s.position, color: s.color });
|
|
@@ -10617,8 +10617,8 @@ var KINDS = [
|
|
|
10617
10617
|
["FrFX", "frameFXMulti", "stroke"]
|
|
10618
10618
|
];
|
|
10619
10619
|
function common(d, kind, notes) {
|
|
10620
|
-
const def =
|
|
10621
|
-
return { id:
|
|
10620
|
+
const def = _chunkPAOWHJ5Ocjs.defaultLayerEffect.call(void 0, kind, "x");
|
|
10621
|
+
return { id: _chunkPAOWHJ5Ocjs.newEffectId.call(void 0, ), enabled: descBool(d, "enab") !== false, blend: blendOf(d, "Md ", def.blend, notes), opacity: clamp3(pct(d, "Opct", def.opacity), 0, 1) };
|
|
10622
10622
|
}
|
|
10623
10623
|
function readOne(kind, d, notes) {
|
|
10624
10624
|
const size = (key, fallback) => clamp3(num3(d, key, fallback), 0, 250);
|
|
@@ -10661,7 +10661,7 @@ function readOne(kind, d, notes) {
|
|
|
10661
10661
|
case "bevel-emboss": {
|
|
10662
10662
|
const styles = { OtrB: "outer-bevel", InrB: "inner-bevel", Embs: "emboss", PlEb: "pillow-emboss", strokeEmboss: "stroke-emboss" };
|
|
10663
10663
|
const out = {
|
|
10664
|
-
id:
|
|
10664
|
+
id: _chunkPAOWHJ5Ocjs.newEffectId.call(void 0, ),
|
|
10665
10665
|
enabled: descBool(d, "enab") !== false,
|
|
10666
10666
|
kind,
|
|
10667
10667
|
style: _nullishCoalesce(styles[_nullishCoalesce(enumOf3(d, "bvlS"), () => ( ""))], () => ( "inner-bevel")),
|
|
@@ -10872,10 +10872,10 @@ function writeLfx2(effects) {
|
|
|
10872
10872
|
["Scl ", unit3("#Prc", 100)],
|
|
10873
10873
|
["masterFXSwitch", boolV3(effects.enabled)]
|
|
10874
10874
|
];
|
|
10875
|
-
const scale =
|
|
10875
|
+
const scale = _chunkPAOWHJ5Ocjs.effectsScale.call(void 0, effects);
|
|
10876
10876
|
let dropped = 0;
|
|
10877
10877
|
for (const [single, multi, kind] of KINDS) {
|
|
10878
|
-
const of = effects.items.filter((e) => e.kind === kind).map((e) => writeOne(
|
|
10878
|
+
const of = effects.items.filter((e) => e.kind === kind).map((e) => writeOne(_chunkPAOWHJ5Ocjs.scaleLayerEffect.call(void 0, e, scale)));
|
|
10879
10879
|
if (!of.length) continue;
|
|
10880
10880
|
if (of.length === 1) items.push([single, obj3(of[0])]);
|
|
10881
10881
|
else if (multi) items.push([multi, { type: "VlLs", items: of.map(obj3) }]);
|
|
@@ -10907,7 +10907,7 @@ function parseLrfx(data) {
|
|
|
10907
10907
|
const colorAt = (rd) => {
|
|
10908
10908
|
rd.u16();
|
|
10909
10909
|
const c = [rd.u16(), rd.u16(), rd.u16(), rd.u16()];
|
|
10910
|
-
return
|
|
10910
|
+
return _chunkPAOWHJ5Ocjs.effectColorHex.call(void 0, [c[0] >> 8, c[1] >> 8, c[2] >> 8].map((v) => v / 255));
|
|
10911
10911
|
};
|
|
10912
10912
|
const blendAt = (rd) => {
|
|
10913
10913
|
rd.skip(4);
|
|
@@ -10926,7 +10926,7 @@ function parseLrfx(data) {
|
|
|
10926
10926
|
const enabled = b.u8() !== 0;
|
|
10927
10927
|
const useGlobalLight = b.u8() !== 0;
|
|
10928
10928
|
const opacity = b.u8() / 255;
|
|
10929
|
-
const base = { id:
|
|
10929
|
+
const base = { id: _chunkPAOWHJ5Ocjs.newEffectId.call(void 0, ), enabled, blend, opacity, color, angle, useGlobalLight, distance: clamp3(distance, 0, 3e4), size: clamp3(blur, 0, 250), antiAlias: false, noise: 0 };
|
|
10930
10930
|
items.push(key === "dsdw" ? { ...base, kind: "drop-shadow", spread: 0, knocksOut: true } : { ...base, kind: "inner-shadow", choke: 0 });
|
|
10931
10931
|
} else if (key === "oglw" || key === "iglw") {
|
|
10932
10932
|
b.u32();
|
|
@@ -10936,7 +10936,7 @@ function parseLrfx(data) {
|
|
|
10936
10936
|
const blend = blendAt(b);
|
|
10937
10937
|
const enabled = b.u8() !== 0;
|
|
10938
10938
|
const opacity = b.u8() / 255;
|
|
10939
|
-
const base = { id:
|
|
10939
|
+
const base = { id: _chunkPAOWHJ5Ocjs.newEffectId.call(void 0, ), enabled, blend, opacity, fill: { type: "color", color }, technique: "softer", size: clamp3(blur, 0, 250), antiAlias: false, range: 0.5, jitter: 0, noise: 0 };
|
|
10940
10940
|
items.push(key === "oglw" ? { ...base, kind: "outer-glow", spread: 0 } : { ...base, kind: "inner-glow", choke: 0, source: "edge" });
|
|
10941
10941
|
} else if (key === "sofi") {
|
|
10942
10942
|
b.u32();
|
|
@@ -10944,7 +10944,7 @@ function parseLrfx(data) {
|
|
|
10944
10944
|
const color = colorAt(b);
|
|
10945
10945
|
const opacity = b.u8() / 255;
|
|
10946
10946
|
const enabled = b.u8() !== 0;
|
|
10947
|
-
items.push({ id:
|
|
10947
|
+
items.push({ id: _chunkPAOWHJ5Ocjs.newEffectId.call(void 0, ), kind: "color-overlay", enabled, blend, opacity, color });
|
|
10948
10948
|
} else if (key === "bevl") notes.add("legacy bevels are not read");
|
|
10949
10949
|
}
|
|
10950
10950
|
return { effects: { enabled: true, items }, notes: [...notes] };
|
|
@@ -10996,7 +10996,7 @@ function rleChannel(id, plane, width, height, psb, depth = 8) {
|
|
|
10996
10996
|
function surfacePlanes(surface, bounds, depth) {
|
|
10997
10997
|
const n = bounds.width * bounds.height;
|
|
10998
10998
|
if (depth === 8) return rgbaToPlanes(_chunkTFOPHZ3Ucjs.readRegion.call(void 0, surface, bounds), n);
|
|
10999
|
-
return deepToPlanes(
|
|
10999
|
+
return deepToPlanes(_chunkPAOWHJ5Ocjs.readDeepRegion.call(void 0, surface, bounds, depth), n);
|
|
11000
11000
|
}
|
|
11001
11001
|
var emptyChannel = (id) => ({ id, compression: 0, data: new Uint8Array(0) });
|
|
11002
11002
|
function maskChannel(mask, ox, oy, psb, depth = 8) {
|
|
@@ -11056,7 +11056,7 @@ function smartContentsFile(c) {
|
|
|
11056
11056
|
if (c.file) return { name: c.name, bytes: c.file.bytes };
|
|
11057
11057
|
if (c.kind === "raster") {
|
|
11058
11058
|
const data = _chunkTFOPHZ3Ucjs.readRegion.call(void 0, contentsSurface(c), { x: 0, y: 0, width: c.width, height: c.height });
|
|
11059
|
-
return { name: `${base}.png`, bytes:
|
|
11059
|
+
return { name: `${base}.png`, bytes: _chunkEJVDBITDcjs.encodePng.call(void 0, c.width, c.height, data) };
|
|
11060
11060
|
}
|
|
11061
11061
|
const doc = c.document;
|
|
11062
11062
|
const merged2 = _chunkTFOPHZ3Ucjs.readRegion.call(void 0, contentsSurface(c), { x: 0, y: 0, width: c.width, height: c.height });
|
|
@@ -11123,7 +11123,7 @@ function exportPsd(input) {
|
|
|
11123
11123
|
const key = layer.type === "group" ? "lfxs" : "lfx2";
|
|
11124
11124
|
if (fx.psd) {
|
|
11125
11125
|
const original = parseLfx2(fx.psd.data);
|
|
11126
|
-
if (original ?
|
|
11126
|
+
if (original ? _chunkPAOWHJ5Ocjs.effectsFingerprint.call(void 0, original.effects) === _chunkPAOWHJ5Ocjs.effectsFingerprint.call(void 0, fx) : !fx.items.length) return { key, data: padEven(fx.psd.data) };
|
|
11127
11127
|
}
|
|
11128
11128
|
if (!fx.items.length && fx.enabled && (_nullishCoalesce(fx.scale, () => ( 1))) === 1) return null;
|
|
11129
11129
|
const { data, dropped } = writeLfx2(fx);
|
|
@@ -11344,7 +11344,7 @@ function exportPsd(input) {
|
|
|
11344
11344
|
const byId = new Map((_nullishCoalesce(input.patterns, () => ( []))).map((p) => [p.id, p]));
|
|
11345
11345
|
const embed = [];
|
|
11346
11346
|
for (const id of patternIds2) {
|
|
11347
|
-
const p = _nullishCoalesce(byId.get(id), () => (
|
|
11347
|
+
const p = _nullishCoalesce(byId.get(id), () => ( _chunkPAOWHJ5Ocjs.builtinPattern.call(void 0, id)));
|
|
11348
11348
|
if (p) embed.push(p);
|
|
11349
11349
|
else note(`Pattern "${id}" is not in the document and was not embedded`, id);
|
|
11350
11350
|
}
|
|
@@ -11735,4 +11735,4 @@ function exportPsd(input) {
|
|
|
11735
11735
|
|
|
11736
11736
|
|
|
11737
11737
|
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.applyProcess2Adjustments = applyProcess2Adjustments; 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.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.parseCssColor = parseCssColor; exports.LayerOperationError = LayerOperationError; 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.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.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.filterMaskCoverage = filterMaskCoverage; exports.applySmartFilters = applySmartFilters; exports.renderSmartObject = renderSmartObject; exports.rerender = rerender; exports.normalizePlacement = normalizePlacement; exports.setSmartPlacement = setSmartPlacement; exports.offsetSmartObject = offsetSmartObject; 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;
|
|
11738
|
-
//# sourceMappingURL=chunk-
|
|
11738
|
+
//# sourceMappingURL=chunk-ZYZGEILO.cjs.map
|