@pixerate/editor 0.119.0 → 0.121.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/animation-editor/index.cjs +54 -54
- package/dist/animation-editor/index.d.cts +3 -3
- package/dist/animation-editor/index.d.ts +3 -3
- package/dist/animation-editor/index.js +2 -2
- package/dist/{chunk-UMVW2Q66.js → chunk-4I54JSJ6.js} +2 -2
- package/dist/{chunk-N3467VD6.js → chunk-7QN76ESJ.js} +1 -179
- package/dist/chunk-7QN76ESJ.js.map +1 -0
- package/dist/{chunk-EJVDBITD.cjs → chunk-DCLJNVZS.cjs} +2 -180
- package/dist/chunk-DCLJNVZS.cjs.map +1 -0
- package/dist/{chunk-KGNUFO4T.cjs → chunk-DFLJHLKA.cjs} +36 -36
- package/dist/{chunk-KGNUFO4T.cjs.map → chunk-DFLJHLKA.cjs.map} +1 -1
- package/dist/{chunk-KZLQY4CD.js → chunk-E6N5KLMA.js} +12 -10
- package/dist/{chunk-KZLQY4CD.js.map → chunk-E6N5KLMA.js.map} +1 -1
- package/dist/{chunk-4S2AXNQF.cjs → chunk-GLOOH65Y.cjs} +236 -234
- package/dist/chunk-GLOOH65Y.cjs.map +1 -0
- package/dist/chunk-GX332W2C.js +181 -0
- package/dist/chunk-GX332W2C.js.map +1 -0
- package/dist/{chunk-TS5IEUW6.cjs → chunk-K7V27T72.cjs} +178 -3
- package/dist/chunk-K7V27T72.cjs.map +1 -0
- package/dist/{chunk-WMRIG4XQ.cjs → chunk-LL3RAN55.cjs} +17 -17
- package/dist/{chunk-WMRIG4XQ.cjs.map → chunk-LL3RAN55.cjs.map} +1 -1
- package/dist/chunk-MUUXNRU4.cjs +181 -0
- package/dist/chunk-MUUXNRU4.cjs.map +1 -0
- package/dist/{chunk-LI3KTY7K.cjs → chunk-VYW7JBTM.cjs} +72 -5
- package/dist/chunk-VYW7JBTM.cjs.map +1 -0
- package/dist/{chunk-TDQDMBUR.js → chunk-WAI6ATHC.js} +2 -2
- package/dist/{chunk-CSHEI3YT.js → chunk-WORWH5K5.js} +71 -4
- package/dist/chunk-WORWH5K5.js.map +1 -0
- package/dist/{chunk-YHW26LS2.js → chunk-ZZPGTNXJ.js} +177 -2
- package/dist/chunk-ZZPGTNXJ.js.map +1 -0
- package/dist/{export-Ds8Ccw0K.d.ts → export-D2D8hb_u.d.ts} +1 -1
- package/dist/{export-B_jO2PrH.d.cts → export-fP2hZYjm.d.cts} +1 -1
- package/dist/image-editor/index.cjs +789 -769
- package/dist/image-editor/index.cjs.map +1 -1
- package/dist/image-editor/index.d.cts +4 -4
- package/dist/image-editor/index.d.ts +4 -4
- package/dist/image-editor/index.js +32 -12
- package/dist/image-editor/index.js.map +1 -1
- package/dist/paint/index.cjs +22 -2
- package/dist/paint/index.cjs.map +1 -1
- package/dist/paint/index.d.cts +159 -1
- package/dist/paint/index.d.ts +159 -1
- package/dist/paint/index.js +21 -1
- package/dist/paint-editor/index.cjs +96 -95
- package/dist/paint-editor/index.cjs.map +1 -1
- package/dist/paint-editor/index.d.cts +2 -2
- package/dist/paint-editor/index.d.ts +2 -2
- package/dist/paint-editor/index.js +13 -12
- package/dist/paint-editor/index.js.map +1 -1
- package/dist/raster/index.cjs +5 -4
- package/dist/raster/index.cjs.map +1 -1
- package/dist/raster/index.js +11 -10
- package/dist/{svg-hK0WQc7-.d.cts → svg-S9zzvqaZ.d.cts} +1 -1
- package/dist/{svg-CTxrB5xO.d.ts → svg-leZpRsJB.d.ts} +1 -1
- package/dist/{types-TrSSh_RB.d.ts → types-BgwxFWvn.d.ts} +23 -9
- package/dist/{types-Dq-8qgoo.d.cts → types-DdRTDnza.d.cts} +23 -9
- package/dist/vector/index.cjs +887 -883
- package/dist/vector/index.cjs.map +1 -1
- package/dist/vector/index.d.cts +12 -5
- package/dist/vector/index.d.ts +12 -5
- package/dist/vector/index.js +14 -10
- package/dist/vector/index.js.map +1 -1
- package/package.json +1 -1
- package/skills/pixerate-vector/SKILL.md +1 -1
- package/skills/pixerate-vector/references/commands.md +1 -0
- package/dist/chunk-4S2AXNQF.cjs.map +0 -1
- package/dist/chunk-CSHEI3YT.js.map +0 -1
- package/dist/chunk-EJVDBITD.cjs.map +0 -1
- package/dist/chunk-LI3KTY7K.cjs.map +0 -1
- package/dist/chunk-N3467VD6.js.map +0 -1
- package/dist/chunk-TS5IEUW6.cjs.map +0 -1
- package/dist/chunk-YHW26LS2.js.map +0 -1
- /package/dist/{chunk-UMVW2Q66.js.map → chunk-4I54JSJ6.js.map} +0 -0
- /package/dist/{chunk-TDQDMBUR.js.map → chunk-WAI6ATHC.js.map} +0 -0
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
|
|
35
35
|
|
|
36
36
|
|
|
37
|
-
var
|
|
37
|
+
var _chunkLL3RAN55cjs = require('./chunk-LL3RAN55.cjs');
|
|
38
38
|
|
|
39
39
|
|
|
40
40
|
|
|
@@ -44,13 +44,13 @@ var _chunkWMRIG4XQcjs = require('./chunk-WMRIG4XQ.cjs');
|
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
|
|
47
|
+
var _chunkMUUXNRU4cjs = require('./chunk-MUUXNRU4.cjs');
|
|
47
48
|
|
|
48
49
|
|
|
49
50
|
|
|
50
51
|
|
|
51
52
|
|
|
52
53
|
|
|
53
|
-
var _chunkEJVDBITDcjs = require('./chunk-EJVDBITD.cjs');
|
|
54
54
|
|
|
55
55
|
|
|
56
56
|
|
|
@@ -65,13 +65,15 @@ var _chunkEJVDBITDcjs = require('./chunk-EJVDBITD.cjs');
|
|
|
65
65
|
|
|
66
66
|
|
|
67
67
|
|
|
68
|
+
var _chunk7ISPWEJAcjs = require('./chunk-7ISPWEJA.cjs');
|
|
68
69
|
|
|
69
70
|
|
|
70
71
|
|
|
71
72
|
|
|
72
73
|
|
|
73
74
|
|
|
74
|
-
|
|
75
|
+
|
|
76
|
+
var _chunkDCLJNVZScjs = require('./chunk-DCLJNVZS.cjs');
|
|
75
77
|
|
|
76
78
|
|
|
77
79
|
|
|
@@ -118,7 +120,7 @@ var _chunk643B2HKCcjs = require('./chunk-643B2HKC.cjs');
|
|
|
118
120
|
|
|
119
121
|
|
|
120
122
|
|
|
121
|
-
var
|
|
123
|
+
var _chunkVYW7JBTMcjs = require('./chunk-VYW7JBTM.cjs');
|
|
122
124
|
|
|
123
125
|
|
|
124
126
|
|
|
@@ -1137,7 +1139,7 @@ function smoothCoverage(m, w, h, r) {
|
|
|
1137
1139
|
return src;
|
|
1138
1140
|
}
|
|
1139
1141
|
function featherCoverage(m, w, h, radius) {
|
|
1140
|
-
const out =
|
|
1142
|
+
const out = _chunkLL3RAN55cjs.gaussianBlur.call(void 0, m, w, h, Number.isFinite(radius) ? Math.max(0, radius) : 0, "zero");
|
|
1141
1143
|
for (let i = 0; i < out.length; i++) if (Math.abs(out[i]) < 1e-7) out[i] = 0;
|
|
1142
1144
|
return out;
|
|
1143
1145
|
}
|
|
@@ -1285,7 +1287,7 @@ function layerMaskCoverage(mask) {
|
|
|
1285
1287
|
let v = new Float32Array(sel.data.length);
|
|
1286
1288
|
for (let i = 0; i < v.length; i++) v[i] = sel.data[i] / 255;
|
|
1287
1289
|
const feather = _nullishCoalesce(mask.feather, () => ( 0));
|
|
1288
|
-
if (feather > 0) v =
|
|
1290
|
+
if (feather > 0) v = _chunkLL3RAN55cjs.gaussianBlur.call(void 0, v, mask.width, mask.height, feather, "clamp");
|
|
1289
1291
|
const density = _nullishCoalesce(mask.density, () => ( 1));
|
|
1290
1292
|
if (density !== 1) for (let i = 0; i < v.length; i++) v[i] = 1 - density * (1 - v[i]);
|
|
1291
1293
|
return v;
|
|
@@ -1528,7 +1530,7 @@ function normalizeAdjustmentLayers(raw) {
|
|
|
1528
1530
|
return out;
|
|
1529
1531
|
}
|
|
1530
1532
|
function curveLutFromLevels(points) {
|
|
1531
|
-
return
|
|
1533
|
+
return _chunkLL3RAN55cjs.curveLut.call(void 0, points.map((p) => ({ input: p.input / 255, output: p.output / 255 })));
|
|
1532
1534
|
}
|
|
1533
1535
|
var toUnitLevels = (c) => ({
|
|
1534
1536
|
inBlack: c.inBlack / 255,
|
|
@@ -2282,7 +2284,7 @@ function newLayerId(prefix = "layer") {
|
|
|
2282
2284
|
return `${prefix}_${Date.now().toString(36)}_${(++idCounter).toString(36)}`;
|
|
2283
2285
|
}
|
|
2284
2286
|
function pixelLayers(layers) {
|
|
2285
|
-
return
|
|
2287
|
+
return _chunkLL3RAN55cjs.flattenLayers.call(void 0, layers).filter((l) => l.type === "pixel");
|
|
2286
2288
|
}
|
|
2287
2289
|
function developFilter(layer) {
|
|
2288
2290
|
return _optionalChain([layer, 'access', _10 => _10.filters, 'optionalAccess', _11 => _11.find, 'call', _12 => _12((f) => f.kind === "develop")]);
|
|
@@ -2313,10 +2315,10 @@ function isRenderedLayer(layer) {
|
|
|
2313
2315
|
return layer.type === "smart" || layer.type === "shape" || layer.type === "type";
|
|
2314
2316
|
}
|
|
2315
2317
|
function shapeLayers(layers) {
|
|
2316
|
-
return
|
|
2318
|
+
return _chunkLL3RAN55cjs.flattenLayers.call(void 0, layers).filter((l) => l.type === "shape");
|
|
2317
2319
|
}
|
|
2318
2320
|
function smartObjectLayers(layers) {
|
|
2319
|
-
return
|
|
2321
|
+
return _chunkLL3RAN55cjs.flattenLayers.call(void 0, layers).filter((l) => l.type === "smart");
|
|
2320
2322
|
}
|
|
2321
2323
|
|
|
2322
2324
|
// src/image-editor/layers/compositor.ts
|
|
@@ -2422,13 +2424,13 @@ var PHOTO_PROFILE = {
|
|
|
2422
2424
|
return v;
|
|
2423
2425
|
}
|
|
2424
2426
|
};
|
|
2425
|
-
var LayerCompositor = class extends
|
|
2427
|
+
var LayerCompositor = class extends _chunkLL3RAN55cjs.RasterCompositor {
|
|
2426
2428
|
constructor(options = {}) {
|
|
2427
2429
|
super(PHOTO_PROFILE, options);
|
|
2428
2430
|
}
|
|
2429
2431
|
};
|
|
2430
2432
|
function compositeDeep(layers, rect, sources, depth) {
|
|
2431
|
-
const deep = new (0,
|
|
2433
|
+
const deep = new (0, _chunkLL3RAN55cjs.DeepCompositor)(new LayerCompositor(), PHOTO_PROFILE, {
|
|
2432
2434
|
applyFilterRunDeep: (run, acc, _r, masks) => applyAdjustmentLayersFloat(acc, run.map(adjustmentNodeAsLayer), masks)
|
|
2433
2435
|
}, depth);
|
|
2434
2436
|
return deep.composite(layers, rect, sources);
|
|
@@ -2974,47 +2976,47 @@ var fail = (message) => {
|
|
|
2974
2976
|
throw new LayerOperationError(message);
|
|
2975
2977
|
};
|
|
2976
2978
|
function requireLayer(layers, id) {
|
|
2977
|
-
const loc =
|
|
2979
|
+
const loc = _chunkLL3RAN55cjs.findLayer.call(void 0, layers, id);
|
|
2978
2980
|
if (!loc) {
|
|
2979
|
-
const ids =
|
|
2981
|
+
const ids = _chunkLL3RAN55cjs.flattenLayers.call(void 0, layers).map((l) => l.id);
|
|
2980
2982
|
fail(`Unknown layer "${id}". ${ids.length ? `Layers: ${ids.join(", ")}.` : "The document has no layers."} Call list_layers for ids.`);
|
|
2981
2983
|
}
|
|
2982
2984
|
return loc;
|
|
2983
2985
|
}
|
|
2984
2986
|
function requireUnlocked(layer, what, action) {
|
|
2985
|
-
if (
|
|
2986
|
-
if (what !== "all" &&
|
|
2987
|
+
if (_chunkLL3RAN55cjs.isLayerLocked.call(void 0, layer, "all")) fail(`Layer "${layer.name || layer.id}" is locked (all); unlock it before you ${action}.`);
|
|
2988
|
+
if (what !== "all" && _chunkLL3RAN55cjs.isLayerLocked.call(void 0, layer, what)) fail(`Layer "${layer.name || layer.id}" has its ${what} locked; unlock it before you ${action}.`);
|
|
2987
2989
|
}
|
|
2988
2990
|
function placeLayer(layers, layer, placement = {}, defaultIndex) {
|
|
2989
2991
|
const given = [placement.aboveId, placement.belowId, placement.parentId].filter((v) => v !== void 0).length;
|
|
2990
2992
|
if (given > 1) fail("Give only one of aboveId, belowId and parentId.");
|
|
2991
2993
|
if (placement.aboveId || placement.belowId) {
|
|
2992
2994
|
const ref = requireLayer(layers, _nullishCoalesce(placement.aboveId, () => ( placement.belowId)));
|
|
2993
|
-
return
|
|
2995
|
+
return _chunkLL3RAN55cjs.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
2996
|
}
|
|
2995
2997
|
if (placement.parentId) {
|
|
2996
2998
|
const ref = requireLayer(layers, placement.parentId);
|
|
2997
2999
|
if (ref.layer.type !== "group") fail(`Layer "${placement.parentId}" is not a group; parentId must be a group id.`);
|
|
2998
|
-
return
|
|
3000
|
+
return _chunkLL3RAN55cjs.insertLayer.call(void 0, layers, layer, ref.layer.id, placement.index);
|
|
2999
3001
|
}
|
|
3000
|
-
return
|
|
3002
|
+
return _chunkLL3RAN55cjs.insertLayer.call(void 0, layers, layer, null, _nullishCoalesce(placement.index, () => ( defaultIndex)));
|
|
3001
3003
|
}
|
|
3002
3004
|
function removeLayer(layers, id) {
|
|
3003
3005
|
const loc = requireLayer(layers, id);
|
|
3004
3006
|
requireUnlocked(loc.layer, "all", "delete it");
|
|
3005
|
-
return
|
|
3007
|
+
return _chunkLL3RAN55cjs.mapLayer.call(void 0, layers, id, () => null);
|
|
3006
3008
|
}
|
|
3007
3009
|
function moveLayer(layers, id, placement) {
|
|
3008
3010
|
const loc = requireLayer(layers, id);
|
|
3009
3011
|
requireUnlocked(loc.layer, "all", "move it");
|
|
3010
3012
|
const target = _nullishCoalesce(_nullishCoalesce(placement.aboveId, () => ( placement.belowId)), () => ( placement.parentId));
|
|
3011
3013
|
if (target === id) fail("A layer cannot be placed relative to itself.");
|
|
3012
|
-
if (target && loc.layer.type === "group" &&
|
|
3014
|
+
if (target && loc.layer.type === "group" && _chunkLL3RAN55cjs.flattenLayers.call(void 0, loc.layer.children).some((l) => l.id === target)) {
|
|
3013
3015
|
fail(`Group "${id}" cannot be moved into its own child "${target}".`);
|
|
3014
3016
|
}
|
|
3015
3017
|
if (target) requireLayer(layers, target);
|
|
3016
3018
|
if (!target && placement.index === void 0) fail("Give aboveId, belowId, parentId or index.");
|
|
3017
|
-
const without =
|
|
3019
|
+
const without = _chunkLL3RAN55cjs.mapLayer.call(void 0, layers, id, () => null);
|
|
3018
3020
|
return placeLayer(without, loc.layer, placement);
|
|
3019
3021
|
}
|
|
3020
3022
|
function withNewIds(layer) {
|
|
@@ -3033,7 +3035,7 @@ function duplicateLayer(layers, id, name) {
|
|
|
3033
3035
|
const copy = withNewIds(loc.layer);
|
|
3034
3036
|
copy.name = _nullishCoalesce(name, () => ( `${loc.layer.name || "Layer"} copy`));
|
|
3035
3037
|
delete copy.locks;
|
|
3036
|
-
return { layers:
|
|
3038
|
+
return { layers: _chunkLL3RAN55cjs.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
3039
|
}
|
|
3038
3040
|
function setLayerProperties(layers, id, props) {
|
|
3039
3041
|
const loc = requireLayer(layers, id);
|
|
@@ -3080,7 +3082,7 @@ function setLayerProperties(layers, id, props) {
|
|
|
3080
3082
|
if (props.collapsed) g.collapsed = true;
|
|
3081
3083
|
else delete g.collapsed;
|
|
3082
3084
|
}
|
|
3083
|
-
return
|
|
3085
|
+
return _chunkLL3RAN55cjs.mapLayer.call(void 0, layers, id, () => next);
|
|
3084
3086
|
}
|
|
3085
3087
|
function groupLayers(layers, ids, name = "Group") {
|
|
3086
3088
|
if (!ids.length) fail("Give at least one layer id to group.");
|
|
@@ -3109,17 +3111,17 @@ function groupLayers(layers, ids, name = "Group") {
|
|
|
3109
3111
|
group.children[0] = c;
|
|
3110
3112
|
}
|
|
3111
3113
|
let out = layers;
|
|
3112
|
-
for (const l of ordered) out =
|
|
3113
|
-
return { layers:
|
|
3114
|
+
for (const l of ordered) out = _chunkLL3RAN55cjs.mapLayer.call(void 0, out, l.layer.id, () => null);
|
|
3115
|
+
return { layers: _chunkLL3RAN55cjs.insertLayer.call(void 0, out, group, parent, top - below), id: group.id };
|
|
3114
3116
|
}
|
|
3115
3117
|
function ungroupLayer(layers, id) {
|
|
3116
3118
|
const loc = requireLayer(layers, id);
|
|
3117
3119
|
if (loc.layer.type !== "group") fail(`Layer "${id}" is not a group.`);
|
|
3118
3120
|
requireUnlocked(loc.layer, "all", "ungroup it");
|
|
3119
3121
|
const group = loc.layer;
|
|
3120
|
-
let out =
|
|
3122
|
+
let out = _chunkLL3RAN55cjs.mapLayer.call(void 0, layers, id, () => null);
|
|
3121
3123
|
group.children.forEach((c, i) => {
|
|
3122
|
-
out =
|
|
3124
|
+
out = _chunkLL3RAN55cjs.insertLayer.call(void 0, out, c, _nullishCoalesce(_optionalChain([loc, 'access', _35 => _35.parent, 'optionalAccess', _36 => _36.id]), () => ( null)), loc.index + i);
|
|
3123
3125
|
});
|
|
3124
3126
|
return { layers: out, ids: group.children.map((c) => c.id) };
|
|
3125
3127
|
}
|
|
@@ -3134,12 +3136,12 @@ function offsetLayer(layers, id, offset) {
|
|
|
3134
3136
|
if (mask && mask.linked === false && !mask.source) {
|
|
3135
3137
|
next.mask = { ...mask, surface: _chunk7ISPWEJAcjs.translateSurface.call(void 0, mask.surface, layer.offset.x - next.offset.x, layer.offset.y - next.offset.y) };
|
|
3136
3138
|
}
|
|
3137
|
-
return
|
|
3139
|
+
return _chunkLL3RAN55cjs.mapLayer.call(void 0, layers, id, () => next);
|
|
3138
3140
|
}
|
|
3139
3141
|
function setLayerMask(layers, id, mask) {
|
|
3140
3142
|
const loc = requireLayer(layers, id);
|
|
3141
3143
|
requireUnlocked(loc.layer, "all", "change its mask");
|
|
3142
|
-
return
|
|
3144
|
+
return _chunkLL3RAN55cjs.mapLayer.call(void 0, layers, id, (l) => {
|
|
3143
3145
|
const next = { ...l };
|
|
3144
3146
|
if (mask) next.mask = mask;
|
|
3145
3147
|
else delete next.mask;
|
|
@@ -3178,7 +3180,7 @@ function requirePixelLayer(layers, id) {
|
|
|
3178
3180
|
function addLayerFilter(layers, id, filter) {
|
|
3179
3181
|
const layer = requirePixelLayer(layers, id);
|
|
3180
3182
|
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
|
|
3183
|
+
return _chunkLL3RAN55cjs.mapLayer.call(void 0, layers, id, () => ({ ...layer, filters: [..._nullishCoalesce(layer.filters, () => ( [])), filter] }));
|
|
3182
3184
|
}
|
|
3183
3185
|
function updateLayerFilter(layers, id, filterId, changes) {
|
|
3184
3186
|
const layer = requirePixelLayer(layers, id);
|
|
@@ -3189,7 +3191,7 @@ function updateLayerFilter(layers, id, filterId, changes) {
|
|
|
3189
3191
|
const merged2 = normalizeFilter({ ...current, ...changes, kind: current.kind }, current.id);
|
|
3190
3192
|
const filters = [...layer.filters];
|
|
3191
3193
|
filters[i] = merged2;
|
|
3192
|
-
return
|
|
3194
|
+
return _chunkLL3RAN55cjs.mapLayer.call(void 0, layers, id, () => ({ ...layer, filters }));
|
|
3193
3195
|
}
|
|
3194
3196
|
function removeLayerFilter(layers, id, filterId) {
|
|
3195
3197
|
const layer = requirePixelLayer(layers, id);
|
|
@@ -3198,7 +3200,7 @@ function removeLayerFilter(layers, id, filterId) {
|
|
|
3198
3200
|
const next = { ...layer };
|
|
3199
3201
|
if (filters.length) next.filters = filters;
|
|
3200
3202
|
else delete next.filters;
|
|
3201
|
-
return
|
|
3203
|
+
return _chunkLL3RAN55cjs.mapLayer.call(void 0, layers, id, () => next);
|
|
3202
3204
|
}
|
|
3203
3205
|
function requireEffectLayer(layers, id, action) {
|
|
3204
3206
|
const layer = requireLayer(layers, id).layer;
|
|
@@ -3213,7 +3215,7 @@ function guard(fn) {
|
|
|
3213
3215
|
try {
|
|
3214
3216
|
return fn();
|
|
3215
3217
|
} catch (e) {
|
|
3216
|
-
if (e instanceof
|
|
3218
|
+
if (e instanceof _chunkLL3RAN55cjs.LayerEffectError) fail(e.message);
|
|
3217
3219
|
throw e;
|
|
3218
3220
|
}
|
|
3219
3221
|
}
|
|
@@ -3221,20 +3223,20 @@ function setLayerEffects(layers, id, effects) {
|
|
|
3221
3223
|
const layer = requireEffectLayer(layers, id, "change its effects");
|
|
3222
3224
|
const next = { ...layer };
|
|
3223
3225
|
if (effects && (effects.items.length || effects.psd || effects.scale !== void 0 || !effects.enabled)) {
|
|
3224
|
-
guard(() =>
|
|
3226
|
+
guard(() => _chunkLL3RAN55cjs.validateLayerEffects.call(void 0, effects));
|
|
3225
3227
|
next.effects = effects;
|
|
3226
3228
|
} else delete next.effects;
|
|
3227
|
-
return
|
|
3229
|
+
return _chunkLL3RAN55cjs.mapLayer.call(void 0, layers, id, () => next);
|
|
3228
3230
|
}
|
|
3229
3231
|
function addLayerEffect(layers, id, kind, params = {}, index) {
|
|
3230
|
-
if (!
|
|
3232
|
+
if (!_chunkLL3RAN55cjs.isLayerEffectKind.call(void 0, kind)) fail(`Unknown effect kind "${String(kind)}". Kinds: ${_chunkLL3RAN55cjs.LAYER_EFFECT_KINDS.join(", ")}.`);
|
|
3231
3233
|
const layer = requireEffectLayer(layers, id, "add effects");
|
|
3232
3234
|
const current = layerEffectsOf(layer);
|
|
3233
3235
|
const ids = new Set(current.items.map((e) => e.id));
|
|
3234
|
-
let effectId =
|
|
3235
|
-
while (ids.has(effectId)) effectId =
|
|
3236
|
+
let effectId = _chunkLL3RAN55cjs.newEffectId.call(void 0, );
|
|
3237
|
+
while (ids.has(effectId)) effectId = _chunkLL3RAN55cjs.newEffectId.call(void 0, );
|
|
3236
3238
|
const { id: _ignored, kind: _kind, ...rest } = params;
|
|
3237
|
-
const effect = guard(() =>
|
|
3239
|
+
const effect = guard(() => _chunkLL3RAN55cjs.mergeLayerEffect.call(void 0, _chunkLL3RAN55cjs.defaultLayerEffect.call(void 0, kind, effectId), rest));
|
|
3238
3240
|
const items = [...current.items];
|
|
3239
3241
|
const at = index === void 0 ? items.length : Math.max(0, Math.min(items.length, Math.floor(index)));
|
|
3240
3242
|
items.splice(at, 0, effect);
|
|
@@ -3251,7 +3253,7 @@ function updateLayerEffect(layers, id, effectId, changes) {
|
|
|
3251
3253
|
const i = requireEffect(layer, effectId);
|
|
3252
3254
|
const current = layer.effects;
|
|
3253
3255
|
const items = [...current.items];
|
|
3254
|
-
items[i] = guard(() =>
|
|
3256
|
+
items[i] = guard(() => _chunkLL3RAN55cjs.mergeLayerEffect.call(void 0, items[i], changes));
|
|
3255
3257
|
return setLayerEffects(layers, id, { ...current, items });
|
|
3256
3258
|
}
|
|
3257
3259
|
function removeLayerEffect(layers, id, effectId) {
|
|
@@ -3286,7 +3288,7 @@ function unionRect(a, b) {
|
|
|
3286
3288
|
}
|
|
3287
3289
|
|
|
3288
3290
|
// src/image-editor/layers/shape.ts
|
|
3289
|
-
var SHAPE_RENDER_MARGIN =
|
|
3291
|
+
var SHAPE_RENDER_MARGIN = _chunkLL3RAN55cjs.MAX_EFFECT_REACH;
|
|
3290
3292
|
var DEFAULT_MITER_LIMIT = 100;
|
|
3291
3293
|
var fail2 = (message) => {
|
|
3292
3294
|
throw new LayerOperationError(message);
|
|
@@ -3326,7 +3328,7 @@ function mapAnchor(a, f) {
|
|
|
3326
3328
|
return out;
|
|
3327
3329
|
}
|
|
3328
3330
|
function mapSubpaths(subpaths, f) {
|
|
3329
|
-
return
|
|
3331
|
+
return _chunkVYW7JBTMcjs.expandVectorCorners.call(void 0, subpaths).map((sp) => ({ closed: sp.closed, anchors: sp.anchors.map((a) => mapAnchor(a, f)) }));
|
|
3330
3332
|
}
|
|
3331
3333
|
function liveShapeSubpaths(live) {
|
|
3332
3334
|
let out;
|
|
@@ -3334,19 +3336,19 @@ function liveShapeSubpaths(live) {
|
|
|
3334
3336
|
case "rect": {
|
|
3335
3337
|
const x = Math.min(live.x, live.x + live.width);
|
|
3336
3338
|
const y = Math.min(live.y, live.y + live.height);
|
|
3337
|
-
const sp =
|
|
3339
|
+
const sp = _chunkVYW7JBTMcjs.rectSubpath.call(void 0, { x, y, width: Math.abs(live.width), height: Math.abs(live.height) });
|
|
3338
3340
|
const r = _nullishCoalesce(live.radii, () => ( [0, 0, 0, 0]));
|
|
3339
|
-
out = [{ closed: true, anchors: sp.anchors.map((a, i) => r[i] > 0 ?
|
|
3341
|
+
out = [{ closed: true, anchors: sp.anchors.map((a, i) => r[i] > 0 ? _chunkVYW7JBTMcjs.setAnchorCorner.call(void 0, a, r[i]) : a) }];
|
|
3340
3342
|
break;
|
|
3341
3343
|
}
|
|
3342
3344
|
case "ellipse":
|
|
3343
|
-
out = [
|
|
3345
|
+
out = [_chunkVYW7JBTMcjs.ellipseSubpath.call(void 0, normBox(live))];
|
|
3344
3346
|
break;
|
|
3345
3347
|
case "polygon":
|
|
3346
|
-
out = [
|
|
3348
|
+
out = [_chunkVYW7JBTMcjs.polygonSubpath.call(void 0, normBox(live), live.sides)];
|
|
3347
3349
|
break;
|
|
3348
3350
|
case "star":
|
|
3349
|
-
out = [
|
|
3351
|
+
out = [_chunkVYW7JBTMcjs.starSubpath.call(void 0, normBox(live), live.points, Math.max(0, Math.min(1, live.innerRatio)))];
|
|
3350
3352
|
break;
|
|
3351
3353
|
case "line": {
|
|
3352
3354
|
const a = { x: live.x1, y: live.y1 };
|
|
@@ -3369,7 +3371,7 @@ function liveShapeSubpaths(live) {
|
|
|
3369
3371
|
}
|
|
3370
3372
|
}
|
|
3371
3373
|
const m = live.transform;
|
|
3372
|
-
return m && !
|
|
3374
|
+
return m && !_chunkVYW7JBTMcjs.isIdentityMatrix.call(void 0, m) ? mapSubpaths(out, (p) => _chunkVYW7JBTMcjs.applyMatrix.call(void 0, m, p)) : out;
|
|
3373
3375
|
}
|
|
3374
3376
|
function normBox(b) {
|
|
3375
3377
|
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 +3383,7 @@ var pathCache = /* @__PURE__ */ new WeakMap();
|
|
|
3381
3383
|
function componentPath(c) {
|
|
3382
3384
|
let p = pathCache.get(c.subpaths);
|
|
3383
3385
|
if (!p) {
|
|
3384
|
-
p =
|
|
3386
|
+
p = _chunkVYW7JBTMcjs.subpathsToBezier.call(void 0, c.subpaths);
|
|
3385
3387
|
pathCache.set(c.subpaths, p);
|
|
3386
3388
|
}
|
|
3387
3389
|
return p;
|
|
@@ -3502,11 +3504,11 @@ function fillCoverage(geo, rect, rule, inverted = false) {
|
|
|
3502
3504
|
function paintContext(env) {
|
|
3503
3505
|
const tiles = /* @__PURE__ */ new Map();
|
|
3504
3506
|
return {
|
|
3505
|
-
light:
|
|
3507
|
+
light: _chunkLL3RAN55cjs.DEFAULT_GLOBAL_LIGHT,
|
|
3506
3508
|
pattern: (id) => {
|
|
3507
3509
|
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,
|
|
3510
|
+
const p = _nullishCoalesce(_optionalChain([env, 'access', _44 => _44.pattern, 'optionalCall', _45 => _45(id)]), () => ( _chunkLL3RAN55cjs.builtinPattern.call(void 0, id)));
|
|
3511
|
+
const t = p && p.width > 0 && p.height > 0 && p.data.length >= p.width * p.height * 4 ? new (0, _chunkLL3RAN55cjs.PatternTile)(p) : null;
|
|
3510
3512
|
tiles.set(id, t);
|
|
3511
3513
|
return t;
|
|
3512
3514
|
}
|
|
@@ -3537,9 +3539,9 @@ function renderShapeRect(layer, rect, env, ctx = paintContext(env)) {
|
|
|
3537
3539
|
if (!fCov && !sCov) return null;
|
|
3538
3540
|
const canvas = { x: 0, y: 0, width: env.width, height: env.height };
|
|
3539
3541
|
const anchor = { x: geo.frame.x, y: geo.frame.y };
|
|
3540
|
-
const fc = fCov ?
|
|
3542
|
+
const fc = fCov ? _chunkLL3RAN55cjs.effectFillColors.call(void 0, layer.fill, rect, geo.frame, canvas, anchor, ctx) : null;
|
|
3541
3543
|
const fo = _nullishCoalesce(_optionalChain([layer, 'access', _46 => _46.fill, 'optionalAccess', _47 => _47.opacity]), () => ( 1));
|
|
3542
|
-
const sc = sCov ?
|
|
3544
|
+
const sc = sCov ? _chunkLL3RAN55cjs.effectFillColors.call(void 0, layer.stroke.paint, rect, geo.frame, canvas, anchor, ctx) : null;
|
|
3543
3545
|
const so = _nullishCoalesce(_optionalChain([layer, 'access', _48 => _48.stroke, 'optionalAccess', _49 => _49.paint, 'access', _50 => _50.opacity]), () => ( 1));
|
|
3544
3546
|
const out = new Uint8ClampedArray(n * 4);
|
|
3545
3547
|
let any = false;
|
|
@@ -3632,9 +3634,9 @@ function normalizeShapePaint(v, path = "paint") {
|
|
|
3632
3634
|
offset: _nullishCoalesce(g.offset, () => ( { x: 0, y: 0 }))
|
|
3633
3635
|
};
|
|
3634
3636
|
try {
|
|
3635
|
-
|
|
3637
|
+
_chunkLL3RAN55cjs.validateEffectGradient.call(void 0, gradient, `${path}.gradient`);
|
|
3636
3638
|
} catch (e) {
|
|
3637
|
-
if (e instanceof
|
|
3639
|
+
if (e instanceof _chunkLL3RAN55cjs.LayerEffectError) fail2(e.message);
|
|
3638
3640
|
throw e;
|
|
3639
3641
|
}
|
|
3640
3642
|
if (gradient.stops.length < 1) fail2(`${path}.gradient.stops needs at least one { position, color }.`);
|
|
@@ -3704,7 +3706,7 @@ function matrixArg(v, path) {
|
|
|
3704
3706
|
if (!Array.isArray(v) || v.length !== 6 || !v.every(isNum)) fail2(`${path} must be six numbers [a, b, c, d, e, f].`);
|
|
3705
3707
|
const m = v;
|
|
3706
3708
|
if (Math.abs(m[0] * m[3] - m[1] * m[2]) < 1e-12) fail2(`${path} is singular.`);
|
|
3707
|
-
return
|
|
3709
|
+
return _chunkVYW7JBTMcjs.isIdentityMatrix.call(void 0, m) ? void 0 : [...m];
|
|
3708
3710
|
}
|
|
3709
3711
|
function normalizeLiveShape(v, path = "shape") {
|
|
3710
3712
|
if (!v || typeof v !== "object") return fail2(`${path} must be an object with kind ${LIVE_SHAPE_KINDS.join(", ")}.`);
|
|
@@ -3765,7 +3767,7 @@ function normalizeSubpaths(v, path = "subpaths") {
|
|
|
3765
3767
|
if (typeof v === "string") {
|
|
3766
3768
|
let subs;
|
|
3767
3769
|
try {
|
|
3768
|
-
subs =
|
|
3770
|
+
subs = _chunkVYW7JBTMcjs.bezierToSubpaths.call(void 0, v);
|
|
3769
3771
|
} catch (e5) {
|
|
3770
3772
|
return fail2(`${path}: could not read the SVG path data.`);
|
|
3771
3773
|
}
|
|
@@ -3846,20 +3848,20 @@ function updateShapeLayer(layers, id, change, env, action = "edit it") {
|
|
|
3846
3848
|
if (!("annotation" in patch)) delete next.annotation;
|
|
3847
3849
|
if (!next.components.length) fail2("A shape needs at least one component; delete the layer instead.");
|
|
3848
3850
|
const rendered = rerenderShape(next, env);
|
|
3849
|
-
return { layers:
|
|
3851
|
+
return { layers: _chunkLL3RAN55cjs.mapLayer.call(void 0, layers, id, () => rendered), layer: rendered };
|
|
3850
3852
|
}
|
|
3851
3853
|
function transformShapeComponents(components, f, affine) {
|
|
3852
3854
|
return components.map((c) => {
|
|
3853
3855
|
if (affine && c.live) {
|
|
3854
|
-
const live = { ...c.live, transform:
|
|
3855
|
-
if (
|
|
3856
|
+
const live = { ...c.live, transform: _chunkVYW7JBTMcjs.multiplyMatrices.call(void 0, _nullishCoalesce(c.live.transform, () => ( _chunkVYW7JBTMcjs.IDENTITY_MATRIX)), affine) };
|
|
3857
|
+
if (_chunkVYW7JBTMcjs.isIdentityMatrix.call(void 0, live.transform)) delete live.transform;
|
|
3856
3858
|
return { op: c.op, subpaths: liveShapeSubpaths(live), live };
|
|
3857
3859
|
}
|
|
3858
3860
|
return { op: c.op, subpaths: mapSubpaths(c.subpaths, f) };
|
|
3859
3861
|
});
|
|
3860
3862
|
}
|
|
3861
3863
|
function offsetShape(layer, dx, dy, env) {
|
|
3862
|
-
const m =
|
|
3864
|
+
const m = _chunkVYW7JBTMcjs.translateMatrix.call(void 0, dx, dy);
|
|
3863
3865
|
const next = { ...layer, components: transformShapeComponents(layer.components, (p) => ({ x: p.x + dx, y: p.y + dy }), m) };
|
|
3864
3866
|
delete next.annotation;
|
|
3865
3867
|
return rerenderShape(next, env);
|
|
@@ -3867,7 +3869,7 @@ function offsetShape(layer, dx, dy, env) {
|
|
|
3867
3869
|
function mergeShapeComponents(components, fillRule = "nonzero") {
|
|
3868
3870
|
if (components.length < 2) return [...components];
|
|
3869
3871
|
const path = shapeOutline(components, fillRule);
|
|
3870
|
-
const subpaths =
|
|
3872
|
+
const subpaths = _chunkVYW7JBTMcjs.bezierToSubpaths.call(void 0, path);
|
|
3871
3873
|
if (!subpaths.length) fail2("The components combine to nothing (the operations remove every area), so there is nothing to merge into.");
|
|
3872
3874
|
return [{ op: "combine", subpaths }];
|
|
3873
3875
|
}
|
|
@@ -3877,14 +3879,14 @@ function shapeAsPixelLayer(layer) {
|
|
|
3877
3879
|
}
|
|
3878
3880
|
function annotationPaint(color, opacity) {
|
|
3879
3881
|
const c = parseCssColor(color);
|
|
3880
|
-
if (!c || !
|
|
3882
|
+
if (!c || !_chunkLL3RAN55cjs.parseEffectColor.call(void 0, c.hex)) return void 0;
|
|
3881
3883
|
const a = c.alpha * opacity;
|
|
3882
3884
|
return a !== 1 ? { type: "color", color: c.hex, opacity: a } : { type: "color", color: c.hex };
|
|
3883
3885
|
}
|
|
3884
3886
|
function shapeFromAnnotation(a) {
|
|
3885
3887
|
const opacity = _nullishCoalesce(a.opacity, () => ( 1));
|
|
3886
3888
|
const lineWidth = "strokeWidth" in a && a.strokeWidth > 0 ? a.strokeWidth : 1;
|
|
3887
|
-
const rotation = a.rotation ?
|
|
3889
|
+
const rotation = a.rotation ? _chunkVYW7JBTMcjs.rotateMatrix.call(void 0, a.rotation, { x: a.x, y: a.y }) : void 0;
|
|
3888
3890
|
const t = rotation ? { transform: rotation } : {};
|
|
3889
3891
|
const live = (l) => liveComponent(l);
|
|
3890
3892
|
switch (a.type) {
|
|
@@ -3927,7 +3929,7 @@ function shapeFromAnnotation(a) {
|
|
|
3927
3929
|
case "pen": {
|
|
3928
3930
|
const paint = annotationPaint(a.strokeColor, opacity);
|
|
3929
3931
|
if (!paint) return null;
|
|
3930
|
-
const pts = rotation ? a.points.map((p) =>
|
|
3932
|
+
const pts = rotation ? a.points.map((p) => _chunkVYW7JBTMcjs.applyMatrix.call(void 0, rotation, p)) : a.points;
|
|
3931
3933
|
const subpaths = pts.length > 1 ? [{ closed: false, anchors: pts.map((p) => ({ x: p.x, y: p.y })) }] : [];
|
|
3932
3934
|
return {
|
|
3933
3935
|
components: [{ op: "combine", subpaths }],
|
|
@@ -3958,9 +3960,9 @@ function annotationOfShape(layer) {
|
|
|
3958
3960
|
var fail3 = (message) => {
|
|
3959
3961
|
throw new LayerOperationError(message);
|
|
3960
3962
|
};
|
|
3961
|
-
var TEXT_RENDER_MARGIN =
|
|
3963
|
+
var TEXT_RENDER_MARGIN = _chunkLL3RAN55cjs.MAX_EFFECT_REACH;
|
|
3962
3964
|
function textMatrix(layer) {
|
|
3963
|
-
return _nullishCoalesce(layer.transform, () => (
|
|
3965
|
+
return _nullishCoalesce(layer.transform, () => ( _chunkVYW7JBTMcjs.IDENTITY_MATRIX));
|
|
3964
3966
|
}
|
|
3965
3967
|
function rectCorners(r) {
|
|
3966
3968
|
return [
|
|
@@ -3971,7 +3973,7 @@ function rectCorners(r) {
|
|
|
3971
3973
|
];
|
|
3972
3974
|
}
|
|
3973
3975
|
function docRect(r, m) {
|
|
3974
|
-
const pts = rectCorners(r).map((p) =>
|
|
3976
|
+
const pts = rectCorners(r).map((p) => _chunkVYW7JBTMcjs.applyMatrix.call(void 0, m, p));
|
|
3975
3977
|
const x0 = Math.floor(Math.min(...pts.map((p) => p.x)));
|
|
3976
3978
|
const y0 = Math.floor(Math.min(...pts.map((p) => p.y)));
|
|
3977
3979
|
const x1 = Math.ceil(Math.max(...pts.map((p) => p.x)));
|
|
@@ -4004,14 +4006,14 @@ function inkBounds(layout) {
|
|
|
4004
4006
|
}
|
|
4005
4007
|
function textOutlines(layer, shaper) {
|
|
4006
4008
|
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 =
|
|
4009
|
+
const layout = _chunkVYW7JBTMcjs.layoutText.call(void 0, layer, shaper);
|
|
4008
4010
|
const m = textMatrix(layer);
|
|
4009
4011
|
const out = [];
|
|
4010
4012
|
for (const l of layout.lines) {
|
|
4011
4013
|
for (const f of l.fragments) {
|
|
4012
|
-
let path =
|
|
4013
|
-
for (const r of
|
|
4014
|
-
out.push({ fragment: f, path:
|
|
4014
|
+
let path = _chunkVYW7JBTMcjs.textFragmentOutline.call(void 0, shaper, layer.text, f);
|
|
4015
|
+
for (const r of _chunkVYW7JBTMcjs.textDecorations.call(void 0, f, l)) path = [...path, ..._chunkVYW7JBTMcjs.textRectPath.call(void 0, r)];
|
|
4016
|
+
out.push({ fragment: f, path: _chunkVYW7JBTMcjs.isIdentityMatrix.call(void 0, m) ? path : _chunkXGD3FSNCcjs.transformBezierPath.call(void 0, path, m) });
|
|
4015
4017
|
}
|
|
4016
4018
|
}
|
|
4017
4019
|
return out;
|
|
@@ -4067,7 +4069,7 @@ function renderOnCanvas(layer, shaper, region, env) {
|
|
|
4067
4069
|
const canvas = env.createCanvas(region.width, region.height);
|
|
4068
4070
|
const ctx = canvas.getContext("2d");
|
|
4069
4071
|
if (!ctx || typeof ctx.getImageData !== "function") return null;
|
|
4070
|
-
const layout =
|
|
4072
|
+
const layout = _chunkVYW7JBTMcjs.layoutText.call(void 0, layer, shaper);
|
|
4071
4073
|
const m = textMatrix(layer);
|
|
4072
4074
|
ctx.setTransform(1, 0, 0, 1, 0, 0);
|
|
4073
4075
|
ctx.clearRect(0, 0, region.width, region.height);
|
|
@@ -4079,8 +4081,8 @@ function renderOnCanvas(layer, shaper, region, env) {
|
|
|
4079
4081
|
ctx.globalAlpha = _nullishCoalesce(f.style.opacity, () => ( 1));
|
|
4080
4082
|
const s = layer.text.slice(f.start, f.end);
|
|
4081
4083
|
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
|
|
4084
|
+
else for (let k = 0; k < s.length; k++) if (!_chunkVYW7JBTMcjs.isTextSpace.call(void 0, s[k])) shaper.draw(ctx, s[k], f.font, f.x + f.carets[k], f.y);
|
|
4085
|
+
for (const d of _chunkVYW7JBTMcjs.textDecorations.call(void 0, f, l)) ctx.fillRect(d.x, d.y, d.width, d.height);
|
|
4084
4086
|
}
|
|
4085
4087
|
}
|
|
4086
4088
|
ctx.globalAlpha = 1;
|
|
@@ -4091,7 +4093,7 @@ function renderOnCanvas(layer, shaper, region, env) {
|
|
|
4091
4093
|
function renderText(layer, env) {
|
|
4092
4094
|
const shaper = env.shaper;
|
|
4093
4095
|
if (!shaper || !shaper.outline && !shaper.draw) return null;
|
|
4094
|
-
const layout =
|
|
4096
|
+
const layout = _chunkVYW7JBTMcjs.layoutText.call(void 0, layer, shaper);
|
|
4095
4097
|
const ink = inkBounds(layout);
|
|
4096
4098
|
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
4099
|
const region = ink ? intersect2(docRect(ink, textMatrix(layer)), clip) : null;
|
|
@@ -4186,7 +4188,7 @@ function patchParagraphStyle(base, patch, path = "paragraph") {
|
|
|
4186
4188
|
continue;
|
|
4187
4189
|
}
|
|
4188
4190
|
const value = k === "autoLeading" ? num(v, `${path}.${k}`, 0.1, 10) : num(v, `${path}.${k}`, -1e4, 1e4);
|
|
4189
|
-
if (k === "autoLeading" && value ===
|
|
4191
|
+
if (k === "autoLeading" && value === _chunkVYW7JBTMcjs.DEFAULT_AUTO_LEADING || k !== "autoLeading" && value === 0) delete o[k];
|
|
4190
4192
|
else o[k] = value;
|
|
4191
4193
|
} else fail3(`${path}.${k} is not a paragraph style field; use ${PARAGRAPH_STYLE_FIELDS.join(", ")}.`);
|
|
4192
4194
|
}
|
|
@@ -4223,14 +4225,14 @@ function createTypeLayer(init, env, id = newLayerId(), lenient = false) {
|
|
|
4223
4225
|
opacity: 1,
|
|
4224
4226
|
blend: "normal",
|
|
4225
4227
|
text: text3,
|
|
4226
|
-
runs:
|
|
4227
|
-
paragraphs:
|
|
4228
|
+
runs: _chunkVYW7JBTMcjs.fitRuns.call(void 0, init.runs, text3.length, _chunkVYW7JBTMcjs.DEFAULT_TEXT_STYLE),
|
|
4229
|
+
paragraphs: _chunkVYW7JBTMcjs.fitParagraphRuns.call(void 0, _nullishCoalesce(init.paragraphs, () => ( [{ length: text3.length, style: {} }])), text3),
|
|
4228
4230
|
frame: init.frame,
|
|
4229
4231
|
surface: _chunk7ISPWEJAcjs.emptySurface.call(void 0, 4),
|
|
4230
4232
|
offset: { x: 0, y: 0 }
|
|
4231
4233
|
};
|
|
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 && !
|
|
4234
|
+
if (!layer.runs.length) layer.runs = [{ length: 0, style: _nullishCoalesce(_optionalChain([init, 'access', _62 => _62.runs, 'access', _63 => _63[0], 'optionalAccess', _64 => _64.style]), () => ( _chunkVYW7JBTMcjs.DEFAULT_TEXT_STYLE)) }];
|
|
4235
|
+
if (init.transform && !_chunkVYW7JBTMcjs.isIdentityMatrix.call(void 0, init.transform)) layer.transform = init.transform;
|
|
4234
4236
|
if (lenient && !renderText(layer, env)) return { ...layer, rendering: "stored" };
|
|
4235
4237
|
return rerenderText(layer, env);
|
|
4236
4238
|
}
|
|
@@ -4240,24 +4242,24 @@ function updateTypeLayer(layers, id, change, env, action = "edit it") {
|
|
|
4240
4242
|
const patch = change(current);
|
|
4241
4243
|
const next = { ...current, ...patch };
|
|
4242
4244
|
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 =
|
|
4245
|
+
if ("text" in patch || "runs" in patch) next.runs = _chunkVYW7JBTMcjs.fitRuns.call(void 0, next.runs, next.text.length, _nullishCoalesce(_optionalChain([current, 'access', _65 => _65.runs, 'access', _66 => _66[0], 'optionalAccess', _67 => _67.style]), () => ( _chunkVYW7JBTMcjs.DEFAULT_TEXT_STYLE)));
|
|
4246
|
+
if (!next.runs.length) next.runs = [{ length: 0, style: _chunkVYW7JBTMcjs.styleAt.call(void 0, current.runs, 0, _chunkVYW7JBTMcjs.DEFAULT_TEXT_STYLE) }];
|
|
4247
|
+
if ("text" in patch || "paragraphs" in patch) next.paragraphs = _chunkVYW7JBTMcjs.fitParagraphRuns.call(void 0, next.paragraphs, next.text);
|
|
4246
4248
|
const rendered = rerenderText(next, env);
|
|
4247
|
-
return { layers:
|
|
4249
|
+
return { layers: _chunkLL3RAN55cjs.mapLayer.call(void 0, layers, id, () => rendered), layer: rendered };
|
|
4248
4250
|
}
|
|
4249
4251
|
function replaceTextRange(layer, start, end, insert) {
|
|
4250
4252
|
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:
|
|
4253
|
+
const style = _chunkVYW7JBTMcjs.styleAt.call(void 0, layer.runs, start > 0 && start === layer.text.length ? start - 1 : start, _chunkVYW7JBTMcjs.DEFAULT_TEXT_STYLE);
|
|
4254
|
+
const runs = _chunkVYW7JBTMcjs.spliceRuns.call(void 0, layer.runs, start, end, insert.length, style);
|
|
4255
|
+
const pstyle = _chunkVYW7JBTMcjs.styleAt.call(void 0, layer.paragraphs, start, {});
|
|
4256
|
+
const paragraphs = _chunkVYW7JBTMcjs.spliceRuns.call(void 0, layer.paragraphs, start, end, insert.length, pstyle);
|
|
4257
|
+
return { text: text3, runs, paragraphs: _chunkVYW7JBTMcjs.fitParagraphRuns.call(void 0, paragraphs, text3) };
|
|
4256
4258
|
}
|
|
4257
4259
|
function transformTypeLayer(layer, m) {
|
|
4258
|
-
const t =
|
|
4260
|
+
const t = _chunkVYW7JBTMcjs.multiplyMatrices.call(void 0, textMatrix(layer), m);
|
|
4259
4261
|
const next = { ...layer };
|
|
4260
|
-
if (
|
|
4262
|
+
if (_chunkVYW7JBTMcjs.isIdentityMatrix.call(void 0, t)) delete next.transform;
|
|
4261
4263
|
else next.transform = t;
|
|
4262
4264
|
delete next.annotation;
|
|
4263
4265
|
return next;
|
|
@@ -4265,7 +4267,7 @@ function transformTypeLayer(layer, m) {
|
|
|
4265
4267
|
function typeFrame(layer, shaper) {
|
|
4266
4268
|
if (layer.frame.kind === "box") return { x: 0, y: 0, width: layer.frame.width, height: layer.frame.height };
|
|
4267
4269
|
if (!shaper) return fail3("Type layers need a text shaper to be measured; none is set here.");
|
|
4268
|
-
const b =
|
|
4270
|
+
const b = _chunkVYW7JBTMcjs.layoutText.call(void 0, layer, shaper).bounds;
|
|
4269
4271
|
return { x: b.x, y: b.y, width: Math.max(b.width, 1), height: Math.max(b.height, 1) };
|
|
4270
4272
|
}
|
|
4271
4273
|
function typeAsPixelLayer(layer) {
|
|
@@ -4273,7 +4275,7 @@ function typeAsPixelLayer(layer) {
|
|
|
4273
4275
|
return { ...rest, type: "pixel", surface: layer.surface, offset: { x: 0, y: 0 } };
|
|
4274
4276
|
}
|
|
4275
4277
|
function toTextSpace(layer, p) {
|
|
4276
|
-
return
|
|
4278
|
+
return _chunkVYW7JBTMcjs.applyMatrix.call(void 0, _chunkVYW7JBTMcjs.invertMatrix.call(void 0, textMatrix(layer)), p);
|
|
4277
4279
|
}
|
|
4278
4280
|
function typeFromAnnotation(a) {
|
|
4279
4281
|
if (a.type !== "text") return null;
|
|
@@ -4287,7 +4289,7 @@ function typeFromAnnotation(a) {
|
|
|
4287
4289
|
if (op !== 1) style.opacity = op;
|
|
4288
4290
|
const text3 = t.text.replace(/\r?\n|\r/g, " ");
|
|
4289
4291
|
const translate = [1, 0, 0, 1, t.x, t.y];
|
|
4290
|
-
const transform = t.rotation ?
|
|
4292
|
+
const transform = t.rotation ? _chunkVYW7JBTMcjs.multiplyMatrices.call(void 0, translate, _chunkVYW7JBTMcjs.rotateMatrix.call(void 0, t.rotation, { x: t.x, y: t.y })) : translate;
|
|
4291
4293
|
return { text: text3, runs: [{ length: text3.length, style }], frame: { kind: "point", origin: "top" }, transform };
|
|
4292
4294
|
}
|
|
4293
4295
|
function annotationOfType(layer) {
|
|
@@ -4617,34 +4619,34 @@ function isTransformAnchor(value) {
|
|
|
4617
4619
|
return typeof value === "string" && value in ANCHOR_FRACTION;
|
|
4618
4620
|
}
|
|
4619
4621
|
function identityTransform(box2) {
|
|
4620
|
-
return { box: { ...box2 }, corners:
|
|
4622
|
+
return { box: { ...box2 }, corners: _chunkMUUXNRU4cjs.boxQuad.call(void 0, box2) };
|
|
4621
4623
|
}
|
|
4622
4624
|
function cornersFromMatrix(box2, m) {
|
|
4623
|
-
const q2 =
|
|
4624
|
-
return [
|
|
4625
|
+
const q2 = _chunkMUUXNRU4cjs.boxQuad.call(void 0, box2);
|
|
4626
|
+
return [_chunkVYW7JBTMcjs.applyMatrix.call(void 0, m, q2[0]), _chunkVYW7JBTMcjs.applyMatrix.call(void 0, m, q2[1]), _chunkVYW7JBTMcjs.applyMatrix.call(void 0, m, q2[2]), _chunkVYW7JBTMcjs.applyMatrix.call(void 0, m, q2[3])];
|
|
4625
4627
|
}
|
|
4626
4628
|
function matrixFromCorners(box2, corners, eps = 1e-6) {
|
|
4627
4629
|
const [tl, tr, br, bl] = corners;
|
|
4628
4630
|
const size = 1 + Math.max(box2.width, box2.height);
|
|
4629
4631
|
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 ?
|
|
4632
|
+
const h = _chunkMUUXNRU4cjs.rectToQuad.call(void 0, box2, corners);
|
|
4633
|
+
return h ? _chunkMUUXNRU4cjs.affineFromHomography.call(void 0, h, 1e-9) : null;
|
|
4632
4634
|
}
|
|
4633
4635
|
function transformHomography(geometry) {
|
|
4634
|
-
const h =
|
|
4636
|
+
const h = _chunkMUUXNRU4cjs.rectToQuad.call(void 0, geometry.box, geometry.corners);
|
|
4635
4637
|
if (!h) return null;
|
|
4636
|
-
return
|
|
4638
|
+
return _chunkMUUXNRU4cjs.homographyKeepsQuad.call(void 0, h, _chunkMUUXNRU4cjs.boxQuad.call(void 0, geometry.box)) ? h : null;
|
|
4637
4639
|
}
|
|
4638
4640
|
function hasWarp(geometry) {
|
|
4639
4641
|
const w = geometry.warp;
|
|
4640
4642
|
if (!w) return false;
|
|
4641
|
-
const id =
|
|
4643
|
+
const id = _chunkVYW7JBTMcjs.identityWarpMesh.call(void 0, geometry.box, w.us.length - 1, w.vs.length - 1);
|
|
4642
4644
|
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
4645
|
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
4646
|
}
|
|
4645
4647
|
function isIdentityTransform(geometry) {
|
|
4646
4648
|
if (hasWarp(geometry)) return false;
|
|
4647
|
-
const q2 =
|
|
4649
|
+
const q2 = _chunkMUUXNRU4cjs.boxQuad.call(void 0, geometry.box);
|
|
4648
4650
|
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
4651
|
}
|
|
4650
4652
|
function transformMap(geometry) {
|
|
@@ -4652,8 +4654,8 @@ function transformMap(geometry) {
|
|
|
4652
4654
|
if (!h) return null;
|
|
4653
4655
|
const { box: box2 } = geometry;
|
|
4654
4656
|
const warp = hasWarp(geometry) ? geometry.warp : null;
|
|
4655
|
-
if (!warp) return (p) =>
|
|
4656
|
-
return (p) =>
|
|
4657
|
+
if (!warp) return (p) => _chunkMUUXNRU4cjs.applyHomography.call(void 0, h, p);
|
|
4658
|
+
return (p) => _chunkMUUXNRU4cjs.applyHomography.call(void 0, h, _chunkVYW7JBTMcjs.evalWarpMesh.call(void 0, warp, (p.x - box2.x) / box2.width, (p.y - box2.y) / box2.height));
|
|
4657
4659
|
}
|
|
4658
4660
|
function transformedPoint(geometry, fx, fy) {
|
|
4659
4661
|
const f = transformMap(geometry);
|
|
@@ -4662,9 +4664,9 @@ function transformedPoint(geometry, fx, fy) {
|
|
|
4662
4664
|
}
|
|
4663
4665
|
function anchorPoint(geometry, anchor) {
|
|
4664
4666
|
const [fx, fy] = ANCHOR_FRACTION[anchor];
|
|
4665
|
-
const h =
|
|
4667
|
+
const h = _chunkMUUXNRU4cjs.rectToQuad.call(void 0, geometry.box, geometry.corners);
|
|
4666
4668
|
const p = { x: geometry.box.x + fx * geometry.box.width, y: geometry.box.y + fy * geometry.box.height };
|
|
4667
|
-
return _nullishCoalesce((h &&
|
|
4669
|
+
return _nullishCoalesce((h && _chunkMUUXNRU4cjs.applyHomography.call(void 0, h, p)), () => ( p));
|
|
4668
4670
|
}
|
|
4669
4671
|
function transformedBox(geometry) {
|
|
4670
4672
|
const f = transformMap(geometry);
|
|
@@ -4697,16 +4699,16 @@ function matrixFromParams(box2, params) {
|
|
|
4697
4699
|
const tx = Math.tan((_nullishCoalesce(params.skewX, () => ( 0))) * Math.PI / 180);
|
|
4698
4700
|
const ty = Math.tan((_nullishCoalesce(params.skewY, () => ( 0))) * Math.PI / 180);
|
|
4699
4701
|
const ref = referencePoint(box2, params.reference);
|
|
4700
|
-
const linear =
|
|
4701
|
-
return
|
|
4702
|
+
const linear = _chunkVYW7JBTMcjs.multiplyMatrices.call(void 0, _chunkVYW7JBTMcjs.multiplyMatrices.call(void 0, [1, ty, tx, 1, 0, 0], [sx, 0, 0, sy, 0, 0]), _chunkVYW7JBTMcjs.rotateMatrix.call(void 0, _nullishCoalesce(params.rotate, () => ( 0))));
|
|
4703
|
+
return _chunkVYW7JBTMcjs.multiplyMatrices.call(void 0, _chunkVYW7JBTMcjs.matrixAbout.call(void 0, linear, ref), _chunkVYW7JBTMcjs.translateMatrix.call(void 0, _nullishCoalesce(params.dx, () => ( 0)), _nullishCoalesce(params.dy, () => ( 0))));
|
|
4702
4704
|
}
|
|
4703
4705
|
function describeTransform(geometry, reference = "center") {
|
|
4704
4706
|
const m = hasWarp(geometry) ? null : matrixFromCorners(geometry.box, geometry.corners);
|
|
4705
4707
|
const ref = referencePoint(geometry.box, reference);
|
|
4706
4708
|
const bounds = transformedBox(geometry);
|
|
4707
4709
|
if (!m) {
|
|
4708
|
-
const h =
|
|
4709
|
-
const at2 = _nullishCoalesce((h &&
|
|
4710
|
+
const h = _chunkMUUXNRU4cjs.rectToQuad.call(void 0, geometry.box, geometry.corners);
|
|
4711
|
+
const at2 = _nullishCoalesce((h && _chunkMUUXNRU4cjs.applyHomography.call(void 0, h, ref)), () => ( ref));
|
|
4710
4712
|
return { affine: false, scaleX: 100, scaleY: 100, rotate: 0, skewX: 0, x: at2.x, y: at2.y, bounds, corners: geometry.corners };
|
|
4711
4713
|
}
|
|
4712
4714
|
const [a, b, c, d] = m;
|
|
@@ -4715,7 +4717,7 @@ function describeTransform(geometry, reference = "center") {
|
|
|
4715
4717
|
const shear = sxAbs ? (a * c + b * d) / sxAbs : 0;
|
|
4716
4718
|
const sy = sxAbs ? (a * d - b * c) / sxAbs : 0;
|
|
4717
4719
|
const skew = sxAbs ? Math.atan(shear / sxAbs) * 180 / Math.PI : 0;
|
|
4718
|
-
const at =
|
|
4720
|
+
const at = _chunkVYW7JBTMcjs.applyMatrix.call(void 0, m, ref);
|
|
4719
4721
|
const clean = (v) => Math.abs(v) < 1e-9 ? 0 : v;
|
|
4720
4722
|
return {
|
|
4721
4723
|
affine: true,
|
|
@@ -4733,35 +4735,35 @@ function applyParams(geometry, params) {
|
|
|
4733
4735
|
const ref = params.reference && typeof params.reference === "object" ? params.reference : anchorPoint(geometry, _nullishCoalesce(params.reference, () => ( "center")));
|
|
4734
4736
|
const m = matrixFromParams({ x: ref.x, y: ref.y, width: 0, height: 0 }, { ...params, reference: ref });
|
|
4735
4737
|
const c = geometry.corners;
|
|
4736
|
-
return [
|
|
4738
|
+
return [_chunkVYW7JBTMcjs.applyMatrix.call(void 0, m, c[0]), _chunkVYW7JBTMcjs.applyMatrix.call(void 0, m, c[1]), _chunkVYW7JBTMcjs.applyMatrix.call(void 0, m, c[2]), _chunkVYW7JBTMcjs.applyMatrix.call(void 0, m, c[3])];
|
|
4737
4739
|
}
|
|
4738
4740
|
function flipCorners(geometry, axis) {
|
|
4739
4741
|
const c = anchorPoint(geometry, "center");
|
|
4740
4742
|
const m = axis === "horizontal" ? [-1, 0, 0, 1, 2 * c.x, 0] : [1, 0, 0, -1, 0, 2 * c.y];
|
|
4741
4743
|
const q2 = geometry.corners;
|
|
4742
|
-
return [
|
|
4744
|
+
return [_chunkVYW7JBTMcjs.applyMatrix.call(void 0, m, q2[0]), _chunkVYW7JBTMcjs.applyMatrix.call(void 0, m, q2[1]), _chunkVYW7JBTMcjs.applyMatrix.call(void 0, m, q2[2]), _chunkVYW7JBTMcjs.applyMatrix.call(void 0, m, q2[3])];
|
|
4743
4745
|
}
|
|
4744
4746
|
function boxPointOf(geometry, p) {
|
|
4745
4747
|
const m = matrixFromCorners(geometry.box, geometry.corners);
|
|
4746
|
-
if (m) return
|
|
4748
|
+
if (m) return _chunkVYW7JBTMcjs.applyMatrix.call(void 0, _chunkVYW7JBTMcjs.invertMatrix.call(void 0, m), p);
|
|
4747
4749
|
return null;
|
|
4748
4750
|
}
|
|
4749
4751
|
function presetWarp(box2, preset) {
|
|
4750
|
-
return
|
|
4752
|
+
return _chunkVYW7JBTMcjs.warpPresetMesh.call(void 0, preset, box2);
|
|
4751
4753
|
}
|
|
4752
4754
|
function isValidWarp(mesh) {
|
|
4753
|
-
return
|
|
4755
|
+
return _chunkVYW7JBTMcjs.isValidWarpMesh.call(void 0, mesh);
|
|
4754
4756
|
}
|
|
4755
4757
|
function geometryHomography(geometry) {
|
|
4756
4758
|
const m = matrixFromCorners(geometry.box, geometry.corners);
|
|
4757
|
-
return m ?
|
|
4759
|
+
return m ? _chunkMUUXNRU4cjs.homographyFromAffine.call(void 0, m) : transformHomography(geometry);
|
|
4758
4760
|
}
|
|
4759
4761
|
|
|
4760
4762
|
// src/image-editor/layers/smart.ts
|
|
4761
4763
|
var fail4 = (message) => {
|
|
4762
4764
|
throw new LayerOperationError(message);
|
|
4763
4765
|
};
|
|
4764
|
-
var SMART_RENDER_MARGIN =
|
|
4766
|
+
var SMART_RENDER_MARGIN = _chunkLL3RAN55cjs.MAX_EFFECT_REACH;
|
|
4765
4767
|
function newContentsId() {
|
|
4766
4768
|
return newLayerId("so");
|
|
4767
4769
|
}
|
|
@@ -4772,7 +4774,7 @@ function placementGeometry(layer) {
|
|
|
4772
4774
|
return { box: contentsBox(layer.contents), corners: layer.placement.corners, warp: _nullishCoalesce(layer.placement.warp, () => ( null)) };
|
|
4773
4775
|
}
|
|
4774
4776
|
function placementAt(contents, x, y) {
|
|
4775
|
-
return { corners:
|
|
4777
|
+
return { corners: _chunkMUUXNRU4cjs.boxQuad.call(void 0, { x, y, width: contents.width, height: contents.height }) };
|
|
4776
4778
|
}
|
|
4777
4779
|
function isContentsDecoded(contents) {
|
|
4778
4780
|
return contents.kind === "raster" ? Boolean(contents.raster) : Boolean(contents.document);
|
|
@@ -4827,7 +4829,7 @@ function placementKey(p, canvas) {
|
|
|
4827
4829
|
function integerMove(layer) {
|
|
4828
4830
|
const g = placementGeometry(layer);
|
|
4829
4831
|
if (hasWarp(g)) return null;
|
|
4830
|
-
const q2 =
|
|
4832
|
+
const q2 = _chunkMUUXNRU4cjs.boxQuad.call(void 0, g.box);
|
|
4831
4833
|
const dx = g.corners[0].x - q2[0].x;
|
|
4832
4834
|
const dy = g.corners[0].y - q2[0].y;
|
|
4833
4835
|
if (Math.abs(dx - Math.round(dx)) > 1e-9 || Math.abs(dy - Math.round(dy)) > 1e-9) return null;
|
|
@@ -4868,7 +4870,7 @@ function placeContents(layer, canvas, options = {}) {
|
|
|
4868
4870
|
k = step;
|
|
4869
4871
|
let r = _optionalChain([options, 'access', _84 => _84.reduced, 'optionalAccess', _85 => _85.get, 'call', _86 => _86(k)]);
|
|
4870
4872
|
if (!r) {
|
|
4871
|
-
r =
|
|
4873
|
+
r = _chunkLL3RAN55cjs.reduceSurface.call(void 0, src, k);
|
|
4872
4874
|
_optionalChain([options, 'access', _87 => _87.reduced, 'optionalAccess', _88 => _88.set, 'call', _89 => _89(k, r)]);
|
|
4873
4875
|
}
|
|
4874
4876
|
source = r;
|
|
@@ -4878,15 +4880,15 @@ function placeContents(layer, canvas, options = {}) {
|
|
|
4878
4880
|
if (hasWarp(g)) {
|
|
4879
4881
|
const f = transformMap(g);
|
|
4880
4882
|
if (!f) fail4("The placement folds the contents over itself or through the horizon; keep the corners a convex quad.");
|
|
4881
|
-
out =
|
|
4883
|
+
out = _chunkLL3RAN55cjs.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
4884
|
} else {
|
|
4883
4885
|
const h = transformHomography(g);
|
|
4884
4886
|
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 =
|
|
4887
|
+
const hk = _chunkMUUXNRU4cjs.multiplyHomographies.call(void 0, [k, 0, 0, 0, k, 0, 0, 0, 1], h);
|
|
4888
|
+
out = _chunkLL3RAN55cjs.transformSurface.call(void 0, source, hk, { interpolation, source: box2, clip, step: step > 1 ? step : void 0 });
|
|
4887
4889
|
}
|
|
4888
4890
|
} catch (e) {
|
|
4889
|
-
if (e instanceof
|
|
4891
|
+
if (e instanceof _chunkLL3RAN55cjs.TransformTooLargeError) fail4(e.message);
|
|
4890
4892
|
throw e;
|
|
4891
4893
|
}
|
|
4892
4894
|
}
|
|
@@ -4918,7 +4920,7 @@ function filterMaskCoverage(mask, canvas) {
|
|
|
4918
4920
|
}
|
|
4919
4921
|
const feather = _nullishCoalesce(mask.feather, () => ( 0));
|
|
4920
4922
|
if (all && !(feather > 0)) return null;
|
|
4921
|
-
if (feather > 0) v =
|
|
4923
|
+
if (feather > 0) v = _chunkLL3RAN55cjs.gaussianBlur.call(void 0, v, W, H, feather, "clamp");
|
|
4922
4924
|
const density = _nullishCoalesce(mask.density, () => ( 1));
|
|
4923
4925
|
if (density !== 1) for (let i = 0; i < v.length; i++) v[i] = 1 - density * (1 - v[i]);
|
|
4924
4926
|
return v;
|
|
@@ -4940,7 +4942,7 @@ function applySmartFilters(placed, stack, canvas) {
|
|
|
4940
4942
|
if (f.opacity >= 1) acc = out;
|
|
4941
4943
|
else lerpInto(acc, out, f.opacity, null);
|
|
4942
4944
|
} else {
|
|
4943
|
-
|
|
4945
|
+
_chunkLL3RAN55cjs.blendTile.call(void 0, acc, out, f.blend, f.opacity, null);
|
|
4944
4946
|
}
|
|
4945
4947
|
}
|
|
4946
4948
|
entry = { key, base, filtered: acc };
|
|
@@ -4983,11 +4985,11 @@ function normalizePlacement(raw, contents) {
|
|
|
4983
4985
|
}
|
|
4984
4986
|
const out = { corners: c.map((p) => ({ x: p.x, y: p.y })) };
|
|
4985
4987
|
if (raw.warp) {
|
|
4986
|
-
if (!
|
|
4988
|
+
if (!_chunkVYW7JBTMcjs.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
4989
|
out.warp = { us: [...raw.warp.us], vs: [...raw.warp.vs], points: raw.warp.points.map((p) => ({ x: p.x, y: p.y })) };
|
|
4988
4990
|
}
|
|
4989
4991
|
if (raw.interpolation !== void 0) {
|
|
4990
|
-
if (!
|
|
4992
|
+
if (!_chunkLL3RAN55cjs.isInterpolation.call(void 0, raw.interpolation)) fail4(`Unknown interpolation "${String(raw.interpolation)}"; use nearest, bilinear or bicubic.`);
|
|
4991
4993
|
if (raw.interpolation !== "bicubic") out.interpolation = raw.interpolation;
|
|
4992
4994
|
}
|
|
4993
4995
|
const g = { box: { x: 0, y: 0, width: contents.width, height: contents.height }, corners: out.corners, warp: _nullishCoalesce(out.warp, () => ( null)) };
|
|
@@ -5004,10 +5006,10 @@ function followMask(mask, before, after) {
|
|
|
5004
5006
|
const h0 = placementHomography(before);
|
|
5005
5007
|
const h1 = placementHomography(after);
|
|
5006
5008
|
if (!h0 || !h1) return mask;
|
|
5007
|
-
const inv =
|
|
5009
|
+
const inv = _chunkMUUXNRU4cjs.invertHomography.call(void 0, h0);
|
|
5008
5010
|
if (!inv) return mask;
|
|
5009
|
-
const delta =
|
|
5010
|
-
const surface =
|
|
5011
|
+
const delta = _chunkMUUXNRU4cjs.multiplyHomographies.call(void 0, inv, h1);
|
|
5012
|
+
const surface = _chunkLL3RAN55cjs.transformSurface.call(void 0, mask.surface, delta, { interpolation: "bilinear" });
|
|
5011
5013
|
return { ...mask, surface };
|
|
5012
5014
|
}
|
|
5013
5015
|
function setSmartPlacement(layers, id, placement, canvas) {
|
|
@@ -5028,7 +5030,7 @@ function setSmartPlacement(layers, id, placement, canvas) {
|
|
|
5028
5030
|
next.smartFilters = { ...next.smartFilters, mask: m };
|
|
5029
5031
|
}
|
|
5030
5032
|
next = rerender(next, canvas, "be transformed");
|
|
5031
|
-
return { layers:
|
|
5033
|
+
return { layers: _chunkLL3RAN55cjs.mapLayer.call(void 0, layers, id, () => next), layer: next, masksMoved };
|
|
5032
5034
|
}
|
|
5033
5035
|
function offsetSmartObject(layers, id, dx, dy, canvas) {
|
|
5034
5036
|
const layer = requireSmartObject(layers, id);
|
|
@@ -5050,7 +5052,7 @@ function offsetSmartObject(layers, id, dx, dy, canvas) {
|
|
|
5050
5052
|
} else {
|
|
5051
5053
|
next = rerender(next, canvas, "move");
|
|
5052
5054
|
}
|
|
5053
|
-
return
|
|
5055
|
+
return _chunkLL3RAN55cjs.mapLayer.call(void 0, layers, id, () => next);
|
|
5054
5056
|
}
|
|
5055
5057
|
function translateLayer(layer, dx, dy) {
|
|
5056
5058
|
if (!dx && !dy) return layer;
|
|
@@ -5086,7 +5088,7 @@ function translateLayer(layer, dx, dy) {
|
|
|
5086
5088
|
case "shape": {
|
|
5087
5089
|
const next = {
|
|
5088
5090
|
...layer,
|
|
5089
|
-
components: transformShapeComponents(layer.components, (p) => ({ x: p.x + dx, y: p.y + dy }),
|
|
5091
|
+
components: transformShapeComponents(layer.components, (p) => ({ x: p.x + dx, y: p.y + dy }), _chunkVYW7JBTMcjs.translateMatrix.call(void 0, dx, dy)),
|
|
5090
5092
|
surface: _chunk7ISPWEJAcjs.translateSurface.call(void 0, layer.surface, dx, dy),
|
|
5091
5093
|
mask: moveMask(layer.mask)
|
|
5092
5094
|
};
|
|
@@ -5095,7 +5097,7 @@ function translateLayer(layer, dx, dy) {
|
|
|
5095
5097
|
return next;
|
|
5096
5098
|
}
|
|
5097
5099
|
case "type": {
|
|
5098
|
-
const next = { ...transformTypeLayer(layer,
|
|
5100
|
+
const next = { ...transformTypeLayer(layer, _chunkVYW7JBTMcjs.translateMatrix.call(void 0, dx, dy)), surface: _chunk7ISPWEJAcjs.translateSurface.call(void 0, layer.surface, dx, dy), mask: moveMask(layer.mask) };
|
|
5099
5101
|
if (!next.mask) delete next.mask;
|
|
5100
5102
|
return next;
|
|
5101
5103
|
}
|
|
@@ -5118,7 +5120,7 @@ function layerExtent(layer, surfaceOf, canvas) {
|
|
|
5118
5120
|
} else {
|
|
5119
5121
|
b = full;
|
|
5120
5122
|
}
|
|
5121
|
-
const m =
|
|
5123
|
+
const m = _chunkLL3RAN55cjs.effectsMargin.call(void 0, layer.effects);
|
|
5122
5124
|
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
5125
|
return b;
|
|
5124
5126
|
}
|
|
@@ -5187,7 +5189,7 @@ function convertToSmartObject(layers, ids, canvas, options) {
|
|
|
5187
5189
|
delete resolved.source;
|
|
5188
5190
|
layer = resolved;
|
|
5189
5191
|
}
|
|
5190
|
-
if (
|
|
5192
|
+
if (_chunkLL3RAN55cjs.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
5193
|
return translateLayer(layer, -b.x, -b.y);
|
|
5192
5194
|
});
|
|
5193
5195
|
if (nested[0].clipped) {
|
|
@@ -5214,8 +5216,8 @@ function convertToSmartObject(layers, ids, canvas, options) {
|
|
|
5214
5216
|
smart = { ...smart, surface: renderSmartObject(smart, canvas) };
|
|
5215
5217
|
const below = ordered.filter((l) => l.index < top.index).length;
|
|
5216
5218
|
let out = layers;
|
|
5217
|
-
for (const l of ordered) out =
|
|
5218
|
-
return { layers:
|
|
5219
|
+
for (const l of ordered) out = _chunkLL3RAN55cjs.mapLayer.call(void 0, out, l.layer.id, () => null);
|
|
5220
|
+
return { layers: _chunkLL3RAN55cjs.insertLayer.call(void 0, out, smart, parent, top.index - below), layer: smart };
|
|
5219
5221
|
}
|
|
5220
5222
|
function rasterizeSmartObject(layers, id) {
|
|
5221
5223
|
const layer = requireSmartObject(layers, id);
|
|
@@ -5235,7 +5237,7 @@ function rasterizeSmartObject(layers, id) {
|
|
|
5235
5237
|
if (layer.locks) out.locks = layer.locks;
|
|
5236
5238
|
if (layer.effects) out.effects = layer.effects;
|
|
5237
5239
|
if (layer.fillOpacity !== void 0) out.fillOpacity = layer.fillOpacity;
|
|
5238
|
-
return { layers:
|
|
5240
|
+
return { layers: _chunkLL3RAN55cjs.mapLayer.call(void 0, layers, id, () => out), layer: out };
|
|
5239
5241
|
}
|
|
5240
5242
|
function copySmartObject(layers, id, linked, name) {
|
|
5241
5243
|
const loc = requireLayer(layers, id);
|
|
@@ -5245,19 +5247,19 @@ function copySmartObject(layers, id, linked, name) {
|
|
|
5245
5247
|
delete copy.psd;
|
|
5246
5248
|
if (!linked) copy.contents = { ...layer.contents, id: newContentsId() };
|
|
5247
5249
|
if (copy.smartFilters) copy.smartFilters = { ...copy.smartFilters, filters: copy.smartFilters.filters.map((f) => ({ ...f, id: newLayerId("flt") })) };
|
|
5248
|
-
return { layers:
|
|
5250
|
+
return { layers: _chunkLL3RAN55cjs.insertLayer.call(void 0, layers, copy, _nullishCoalesce(_optionalChain([loc, 'access', _114 => _114.parent, 'optionalAccess', _115 => _115.id]), () => ( null)), loc.index + 1), layer: copy };
|
|
5249
5251
|
}
|
|
5250
5252
|
function instancesOf(layers, contentsId) {
|
|
5251
|
-
return
|
|
5253
|
+
return _chunkLL3RAN55cjs.flattenLayers.call(void 0, layers).filter((l) => l.type === "smart" && l.contents.id === contentsId).map((l) => l.id);
|
|
5252
5254
|
}
|
|
5253
5255
|
function replaceContents(layers, contentsId, contents, canvas) {
|
|
5254
5256
|
const ids = instancesOf(layers, contentsId);
|
|
5255
5257
|
if (!ids.length) fail4(`No smart object uses contents "${contentsId}".`);
|
|
5256
|
-
for (const id of ids) requireUnlocked(
|
|
5258
|
+
for (const id of ids) requireUnlocked(_chunkLL3RAN55cjs.findLayer.call(void 0, layers, id).layer, "all", "replace its contents");
|
|
5257
5259
|
const next = { ...contents, id: contentsId };
|
|
5258
5260
|
let out = layers;
|
|
5259
5261
|
for (const id of ids) {
|
|
5260
|
-
out =
|
|
5262
|
+
out = _chunkLL3RAN55cjs.mapLayer.call(void 0, out, id, (l) => {
|
|
5261
5263
|
const layer = l;
|
|
5262
5264
|
return rerender({ ...layer, contents: next, placement: refitPlacement(layer, next) }, canvas, "take the new contents");
|
|
5263
5265
|
});
|
|
@@ -5274,14 +5276,14 @@ function refitPlacement(layer, contents) {
|
|
|
5274
5276
|
const h = transformHomography(g);
|
|
5275
5277
|
if (!h) return placementAt(contents, 0, 0);
|
|
5276
5278
|
const shift = [1, 0, (W0 - W1) / 2, 0, 1, (H0 - H1) / 2, 0, 0, 1];
|
|
5277
|
-
const hn =
|
|
5278
|
-
const pts =
|
|
5279
|
+
const hn = _chunkMUUXNRU4cjs.multiplyHomographies.call(void 0, shift, h);
|
|
5280
|
+
const pts = _chunkMUUXNRU4cjs.boxQuad.call(void 0, { x: 0, y: 0, width: W1, height: H1 }).map((p) => {
|
|
5279
5281
|
const w = hn[6] * p.x + hn[7] * p.y + hn[8];
|
|
5280
5282
|
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
5283
|
});
|
|
5282
5284
|
const out = { corners: pts };
|
|
5283
5285
|
if (layer.placement.interpolation) out.interpolation = layer.placement.interpolation;
|
|
5284
|
-
if (layer.placement.warp) out.warp =
|
|
5286
|
+
if (layer.placement.warp) out.warp = _chunkVYW7JBTMcjs.mapWarpMeshPoints.call(void 0, layer.placement.warp, (p) => ({ x: p.x * W1 / W0, y: p.y * H1 / H0 }));
|
|
5285
5287
|
return out;
|
|
5286
5288
|
}
|
|
5287
5289
|
function normalizeSmartFilter(raw, id = newLayerId("flt")) {
|
|
@@ -5320,7 +5322,7 @@ function addSmartFilter(layers, id, filter, canvas, index) {
|
|
|
5320
5322
|
const at = index === void 0 ? filters.length : Math.max(0, Math.min(filters.length, Math.floor(index)));
|
|
5321
5323
|
filters.splice(at, 0, filter);
|
|
5322
5324
|
const next = withStack(layer, { ...stack, filters }, canvas);
|
|
5323
|
-
return { layers:
|
|
5325
|
+
return { layers: _chunkLL3RAN55cjs.mapLayer.call(void 0, layers, id, () => next), layer: next, filter };
|
|
5324
5326
|
}
|
|
5325
5327
|
function updateSmartFilter(layers, id, filterId, changes, canvas) {
|
|
5326
5328
|
const layer = editableSmart(layers, id);
|
|
@@ -5342,7 +5344,7 @@ function updateSmartFilter(layers, id, filterId, changes, canvas) {
|
|
|
5342
5344
|
const filters = [...layer.smartFilters.filters];
|
|
5343
5345
|
filters[i] = merged2;
|
|
5344
5346
|
const next = withStack(layer, { ...layer.smartFilters, filters }, canvas);
|
|
5345
|
-
return { layers:
|
|
5347
|
+
return { layers: _chunkLL3RAN55cjs.mapLayer.call(void 0, layers, id, () => next), layer: next, filter: merged2 };
|
|
5346
5348
|
}
|
|
5347
5349
|
function removeSmartFilter(layers, id, filterId, canvas) {
|
|
5348
5350
|
const layer = editableSmart(layers, id);
|
|
@@ -5350,7 +5352,7 @@ function removeSmartFilter(layers, id, filterId, canvas) {
|
|
|
5350
5352
|
const stack = layer.smartFilters;
|
|
5351
5353
|
const filters = stack.filters.filter((f) => f.id !== filterId);
|
|
5352
5354
|
const next = withStack(layer, filters.length ? { ...stack, filters } : stack.enabled ? void 0 : { enabled: false, filters }, canvas);
|
|
5353
|
-
return { layers:
|
|
5355
|
+
return { layers: _chunkLL3RAN55cjs.mapLayer.call(void 0, layers, id, () => next), layer: next };
|
|
5354
5356
|
}
|
|
5355
5357
|
function moveSmartFilter(layers, id, filterId, index, canvas) {
|
|
5356
5358
|
const layer = editableSmart(layers, id);
|
|
@@ -5361,12 +5363,12 @@ function moveSmartFilter(layers, id, filterId, index, canvas) {
|
|
|
5361
5363
|
const [f] = filters.splice(i, 1);
|
|
5362
5364
|
filters.splice(index, 0, f);
|
|
5363
5365
|
const next = withStack(layer, { ...layer.smartFilters, filters }, canvas);
|
|
5364
|
-
return { layers:
|
|
5366
|
+
return { layers: _chunkLL3RAN55cjs.mapLayer.call(void 0, layers, id, () => next), layer: next };
|
|
5365
5367
|
}
|
|
5366
5368
|
function setSmartFiltersEnabled(layers, id, enabled, canvas) {
|
|
5367
5369
|
const layer = editableSmart(layers, id);
|
|
5368
5370
|
const next = withStack(layer, { ...stackOf(layer), enabled: Boolean(enabled) }, canvas);
|
|
5369
|
-
return { layers:
|
|
5371
|
+
return { layers: _chunkLL3RAN55cjs.mapLayer.call(void 0, layers, id, () => next), layer: next };
|
|
5370
5372
|
}
|
|
5371
5373
|
function setSmartFilterMask(layers, id, mask, canvas) {
|
|
5372
5374
|
const layer = editableSmart(layers, id);
|
|
@@ -5375,7 +5377,7 @@ function setSmartFilterMask(layers, id, mask, canvas) {
|
|
|
5375
5377
|
if (mask) stack.mask = mask;
|
|
5376
5378
|
else delete stack.mask;
|
|
5377
5379
|
const next = withStack(layer, stack, canvas);
|
|
5378
|
-
return { layers:
|
|
5380
|
+
return { layers: _chunkLL3RAN55cjs.mapLayer.call(void 0, layers, id, () => next), layer: next };
|
|
5379
5381
|
}
|
|
5380
5382
|
function withFilterMaskSurface(layer, surface, canvas) {
|
|
5381
5383
|
const stack = stackOf(layer);
|
|
@@ -5389,7 +5391,7 @@ function placementBounds(layer) {
|
|
|
5389
5391
|
// src/image-editor/layers/serialize.ts
|
|
5390
5392
|
var LAYERED_SCHEMA_VERSION = 3;
|
|
5391
5393
|
function serializePatterns(patterns) {
|
|
5392
|
-
return patterns.map((p) => ({ id: p.id, name: p.name, png:
|
|
5394
|
+
return patterns.map((p) => ({ id: p.id, name: p.name, png: _chunkDCLJNVZScjs.pngDataUrl.call(void 0, p.width, p.height, p.data) }));
|
|
5393
5395
|
}
|
|
5394
5396
|
function deserializePatterns(raw, problems = []) {
|
|
5395
5397
|
if (!Array.isArray(raw)) return [];
|
|
@@ -5412,7 +5414,7 @@ function encodeSurface(surface) {
|
|
|
5412
5414
|
let out = null;
|
|
5413
5415
|
if (b) {
|
|
5414
5416
|
const data = _chunk7ISPWEJAcjs.readRegion.call(void 0, surface, b);
|
|
5415
|
-
out = { url:
|
|
5417
|
+
out = { url: _chunkDCLJNVZScjs.pngDataUrl.call(void 0, b.width, b.height, data, surface.channels), x: b.x, y: b.y };
|
|
5416
5418
|
}
|
|
5417
5419
|
encodedCache.set(surface, out);
|
|
5418
5420
|
return out;
|
|
@@ -5429,7 +5431,7 @@ function encodeDeepSurface(surface) {
|
|
|
5429
5431
|
const view = new DataView(bytes.buffer);
|
|
5430
5432
|
if (samples instanceof Uint16Array) for (let i = 0; i < samples.length; i++) view.setUint16(2 * i, samples[i], true);
|
|
5431
5433
|
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:
|
|
5434
|
+
out = { depth, x: b.x, y: b.y, width: b.width, height: b.height, data: _chunkDCLJNVZScjs.bytesToBase64.call(void 0, _chunk643B2HKCcjs.deflate.call(void 0, bytes)) };
|
|
5433
5435
|
}
|
|
5434
5436
|
deepCache.set(surface, out);
|
|
5435
5437
|
return out;
|
|
@@ -5441,7 +5443,7 @@ function decodeDeepSurface(surface, raw, problems, label) {
|
|
|
5441
5443
|
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
5444
|
const n = d.width * d.height * surface.channels;
|
|
5443
5445
|
const size = d.depth === 16 ? 2 : 4;
|
|
5444
|
-
const bytes = _chunk643B2HKCcjs.inflate.call(void 0,
|
|
5446
|
+
const bytes = _chunk643B2HKCcjs.inflate.call(void 0, _chunkDCLJNVZScjs.base64ToBytes.call(void 0, d.data), { maxOutput: n * size });
|
|
5445
5447
|
if (bytes.length !== n * size) throw new Error("wrong length");
|
|
5446
5448
|
const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
|
|
5447
5449
|
const samples = d.depth === 16 ? new Uint16Array(n) : new Float32Array(n);
|
|
@@ -5470,7 +5472,7 @@ function baseFields(layer, ctx) {
|
|
|
5470
5472
|
function serializeEffects(effects) {
|
|
5471
5473
|
const out = { enabled: effects.enabled, items: JSON.parse(JSON.stringify(effects.items)) };
|
|
5472
5474
|
if (effects.scale !== void 0 && effects.scale !== 1) out.scale = effects.scale;
|
|
5473
|
-
if (effects.psd) out.psd = { key: effects.psd.key, data:
|
|
5475
|
+
if (effects.psd) out.psd = { key: effects.psd.key, data: _chunkDCLJNVZScjs.bytesToBase64.call(void 0, effects.psd.data) };
|
|
5474
5476
|
return out;
|
|
5475
5477
|
}
|
|
5476
5478
|
function deserializeEffects(raw) {
|
|
@@ -5480,12 +5482,12 @@ function deserializeEffects(raw) {
|
|
|
5480
5482
|
const p = r.psd;
|
|
5481
5483
|
if (p && typeof p.key === "string" && typeof p.data === "string") {
|
|
5482
5484
|
try {
|
|
5483
|
-
psd = { key: p.key, data:
|
|
5485
|
+
psd = { key: p.key, data: _chunkDCLJNVZScjs.base64ToBytes.call(void 0, p.data) };
|
|
5484
5486
|
} catch (e7) {
|
|
5485
5487
|
psd = void 0;
|
|
5486
5488
|
}
|
|
5487
5489
|
}
|
|
5488
|
-
return
|
|
5490
|
+
return _chunkLL3RAN55cjs.normalizeLayerEffects.call(void 0, { ...r, psd });
|
|
5489
5491
|
}
|
|
5490
5492
|
function serializeMask(mask, hint, ctx) {
|
|
5491
5493
|
const out = { defaultValue: mask.defaultValue };
|
|
@@ -5568,8 +5570,8 @@ function serializeType(layer, base, ctx) {
|
|
|
5568
5570
|
if (layer.annotation) out.annotation = JSON.parse(JSON.stringify(layer.annotation));
|
|
5569
5571
|
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])) {
|
|
5570
5572
|
out.psd = {};
|
|
5571
|
-
if (layer.psd.tySh) out.psd.tySh =
|
|
5572
|
-
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:
|
|
5573
|
+
if (layer.psd.tySh) out.psd.tySh = _chunkDCLJNVZScjs.bytesToBase64.call(void 0, layer.psd.tySh);
|
|
5574
|
+
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: _chunkDCLJNVZScjs.bytesToBase64.call(void 0, b.data) }));
|
|
5573
5575
|
if (layer.psd.signature) out.psd.signature = layer.psd.signature;
|
|
5574
5576
|
}
|
|
5575
5577
|
return out;
|
|
@@ -5580,7 +5582,7 @@ function readType(r, base, ctx) {
|
|
|
5580
5582
|
const text3 = normalizeText(_nullishCoalesce(r.text, () => ( "")));
|
|
5581
5583
|
const runs = (Array.isArray(r.runs) ? r.runs : []).map((run, i) => ({
|
|
5582
5584
|
length: Math.max(0, Math.floor(num2(_optionalChain([run, 'optionalAccess', _131 => _131.length]), 0, 1e9, 0))),
|
|
5583
|
-
style: patchTextStyle(
|
|
5585
|
+
style: patchTextStyle(_chunkVYW7JBTMcjs.DEFAULT_TEXT_STYLE, _optionalChain([run, 'optionalAccess', _132 => _132.style]) && typeof run.style === "object" ? run.style : {}, `runs[${i}].style`)
|
|
5584
5586
|
}));
|
|
5585
5587
|
const paragraphs = (Array.isArray(r.paragraphs) ? r.paragraphs : []).map((p, i) => ({
|
|
5586
5588
|
length: Math.max(0, Math.floor(num2(_optionalChain([p, 'optionalAccess', _133 => _133.length]), 0, 1e9, 0))),
|
|
@@ -5593,13 +5595,13 @@ function readType(r, base, ctx) {
|
|
|
5593
5595
|
...base,
|
|
5594
5596
|
type: "type",
|
|
5595
5597
|
text: text3,
|
|
5596
|
-
runs:
|
|
5597
|
-
paragraphs:
|
|
5598
|
+
runs: _chunkVYW7JBTMcjs.fitRuns.call(void 0, runs, text3.length, _chunkVYW7JBTMcjs.DEFAULT_TEXT_STYLE),
|
|
5599
|
+
paragraphs: _chunkVYW7JBTMcjs.fitParagraphRuns.call(void 0, paragraphs.length ? paragraphs : [{ length: text3.length, style: {} }], text3),
|
|
5598
5600
|
frame,
|
|
5599
5601
|
surface: _chunk7ISPWEJAcjs.emptySurface.call(void 0, 4),
|
|
5600
5602
|
offset: { x: 0, y: 0 }
|
|
5601
5603
|
};
|
|
5602
|
-
if (!layer.runs.length) layer.runs = [{ length: 0, style: _nullishCoalesce(_optionalChain([runs, 'access', _137 => _137[0], 'optionalAccess', _138 => _138.style]), () => (
|
|
5604
|
+
if (!layer.runs.length) layer.runs = [{ length: 0, style: _nullishCoalesce(_optionalChain([runs, 'access', _137 => _137[0], 'optionalAccess', _138 => _138.style]), () => ( _chunkVYW7JBTMcjs.DEFAULT_TEXT_STYLE)) }];
|
|
5603
5605
|
if (m) layer.transform = m;
|
|
5604
5606
|
if (r.antiAlias === false) layer.antiAlias = false;
|
|
5605
5607
|
if (typeof r.fillOpacity === "number" && r.fillOpacity !== 1) layer.fillOpacity = num2(r.fillOpacity, 0, 1, 1);
|
|
@@ -5607,8 +5609,8 @@ function readType(r, base, ctx) {
|
|
|
5607
5609
|
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)) }));
|
|
5608
5610
|
if (r.psd && typeof r.psd === "object") {
|
|
5609
5611
|
const psd = {};
|
|
5610
|
-
if (typeof r.psd.tySh === "string") psd.tySh =
|
|
5611
|
-
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:
|
|
5612
|
+
if (typeof r.psd.tySh === "string") psd.tySh = _chunkDCLJNVZScjs.base64ToBytes.call(void 0, r.psd.tySh);
|
|
5613
|
+
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: _chunkDCLJNVZScjs.base64ToBytes.call(void 0, b.data) }));
|
|
5612
5614
|
if (typeof r.psd.signature === "string") psd.signature = r.psd.signature;
|
|
5613
5615
|
if (psd.tySh || _optionalChain([psd, 'access', _139 => _139.blocks, 'optionalAccess', _140 => _140.length])) layer.psd = psd;
|
|
5614
5616
|
}
|
|
@@ -5636,7 +5638,7 @@ function serializeShape(layer, base) {
|
|
|
5636
5638
|
if (layer.inverted) out.inverted = true;
|
|
5637
5639
|
if (layer.fillOpacity !== void 0 && layer.fillOpacity !== 1) out.fillOpacity = layer.fillOpacity;
|
|
5638
5640
|
if (layer.annotation) out.annotation = JSON.parse(JSON.stringify(layer.annotation));
|
|
5639
|
-
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:
|
|
5641
|
+
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: _chunkDCLJNVZScjs.bytesToBase64.call(void 0, b.data) })), ...layer.psd.signature ? { signature: layer.psd.signature } : {} };
|
|
5640
5642
|
return out;
|
|
5641
5643
|
}
|
|
5642
5644
|
function readShape(r, base, ctx) {
|
|
@@ -5668,7 +5670,7 @@ function readShape(r, base, ctx) {
|
|
|
5668
5670
|
if (typeof r.fillOpacity === "number" && r.fillOpacity !== 1) out.fillOpacity = num2(r.fillOpacity, 0, 1, 1);
|
|
5669
5671
|
if (a && shapeFromAnnotation(a)) out.annotation = a;
|
|
5670
5672
|
if (r.psd && Array.isArray(r.psd.blocks)) {
|
|
5671
|
-
const blocks = r.psd.blocks.filter((b) => b && typeof b.key === "string" && typeof b.data === "string").map((b) => ({ key: b.key, data:
|
|
5673
|
+
const blocks = r.psd.blocks.filter((b) => b && typeof b.key === "string" && typeof b.data === "string").map((b) => ({ key: b.key, data: _chunkDCLJNVZScjs.base64ToBytes.call(void 0, b.data) }));
|
|
5672
5674
|
if (blocks.length) out.psd = { blocks };
|
|
5673
5675
|
if (out.psd && typeof r.psd.signature === "string") out.psd.signature = r.psd.signature;
|
|
5674
5676
|
}
|
|
@@ -5681,7 +5683,7 @@ function readShape(r, base, ctx) {
|
|
|
5681
5683
|
function serializeSmartFilters(stack, layerId, ctx) {
|
|
5682
5684
|
const out = {
|
|
5683
5685
|
enabled: stack.enabled,
|
|
5684
|
-
filters: stack.filters.map((f) => f.kind === "psd" ? { ...f, data:
|
|
5686
|
+
filters: stack.filters.map((f) => f.kind === "psd" ? { ...f, data: _chunkDCLJNVZScjs.bytesToBase64.call(void 0, f.data) } : JSON.parse(JSON.stringify(f)))
|
|
5685
5687
|
};
|
|
5686
5688
|
if (stack.mask) out.mask = serializeMask(stack.mask, `${layerId}-filter-mask`, ctx);
|
|
5687
5689
|
return out;
|
|
@@ -5707,7 +5709,7 @@ function serializeSmartObject(layer, base, ctx) {
|
|
|
5707
5709
|
}
|
|
5708
5710
|
if (layer.fillOpacity !== void 0 && layer.fillOpacity !== 1) out.fillOpacity = layer.fillOpacity;
|
|
5709
5711
|
if (layer.psd) {
|
|
5710
|
-
out.psd = { key: layer.psd.key, data:
|
|
5712
|
+
out.psd = { key: layer.psd.key, data: _chunkDCLJNVZScjs.bytesToBase64.call(void 0, layer.psd.data) };
|
|
5711
5713
|
if (layer.psd.placed) out.psd.placed = layer.psd.placed;
|
|
5712
5714
|
}
|
|
5713
5715
|
return out;
|
|
@@ -5719,7 +5721,7 @@ function serializeContents(c, ctx) {
|
|
|
5719
5721
|
if (enc) {
|
|
5720
5722
|
if (enc.x !== 0 || enc.y !== 0) {
|
|
5721
5723
|
const data = _chunk7ISPWEJAcjs.readRegion.call(void 0, c.raster, { x: 0, y: 0, width: c.width, height: c.height });
|
|
5722
|
-
out.asset = ctx.addAsset(
|
|
5724
|
+
out.asset = ctx.addAsset(_chunkDCLJNVZScjs.pngDataUrl.call(void 0, c.width, c.height, data, 4), `contents-${c.id}`);
|
|
5723
5725
|
} else out.asset = ctx.addAsset(enc.url, `contents-${c.id}`);
|
|
5724
5726
|
}
|
|
5725
5727
|
}
|
|
@@ -5728,7 +5730,7 @@ function serializeContents(c, ctx) {
|
|
|
5728
5730
|
if (c.document.globalLight) out.globalLight = { ...c.document.globalLight };
|
|
5729
5731
|
if (_optionalChain([c, 'access', _152 => _152.document, 'access', _153 => _153.patterns, 'optionalAccess', _154 => _154.length])) out.patterns = serializePatterns(c.document.patterns);
|
|
5730
5732
|
}
|
|
5731
|
-
if (c.file) out.file = { type: c.file.type, data:
|
|
5733
|
+
if (c.file) out.file = { type: c.file.type, data: _chunkDCLJNVZScjs.bytesToBase64.call(void 0, c.file.bytes) };
|
|
5732
5734
|
if (c.linked) out.linked = { path: c.linked.path };
|
|
5733
5735
|
return out;
|
|
5734
5736
|
}
|
|
@@ -5764,7 +5766,7 @@ async function serializeLayersExternal(layers, store) {
|
|
|
5764
5766
|
for (const [id, url] of Object.entries(inline.assets)) {
|
|
5765
5767
|
let ref = refs.get(url);
|
|
5766
5768
|
if (!ref) {
|
|
5767
|
-
const parsed =
|
|
5769
|
+
const parsed = _chunkDCLJNVZScjs.parseDataUrl.call(void 0, url);
|
|
5768
5770
|
const png = decodePngHeader(parsed.bytes);
|
|
5769
5771
|
ref = await store.put(new Blob([parsed.bytes], { type: "image/png" }), { id, width: png.width, height: png.height });
|
|
5770
5772
|
if (typeof ref !== "string" || !ref) throw new Error(`The asset store returned no reference for "${id}".`);
|
|
@@ -5792,7 +5794,7 @@ async function resolveExternalAssets(assets, store, problems) {
|
|
|
5792
5794
|
try {
|
|
5793
5795
|
const blob = await store.get(ref);
|
|
5794
5796
|
const bytes = new Uint8Array(await blob.arrayBuffer());
|
|
5795
|
-
out[id] = `data:image/png;base64,${
|
|
5797
|
+
out[id] = `data:image/png;base64,${_chunkDCLJNVZScjs.bytesToBase64.call(void 0, bytes)}`;
|
|
5796
5798
|
} catch (err) {
|
|
5797
5799
|
problems.push(`Asset "${id}" (${ref}) could not be fetched: ${err.message}`);
|
|
5798
5800
|
}
|
|
@@ -5800,9 +5802,9 @@ async function resolveExternalAssets(assets, store, problems) {
|
|
|
5800
5802
|
return out;
|
|
5801
5803
|
}
|
|
5802
5804
|
function decodePngDataUrl(url, channels) {
|
|
5803
|
-
const parsed =
|
|
5805
|
+
const parsed = _chunkDCLJNVZScjs.parseDataUrl.call(void 0, url);
|
|
5804
5806
|
if (!parsed) throw new Error("Asset is not a data URL.");
|
|
5805
|
-
const png =
|
|
5807
|
+
const png = _chunkDCLJNVZScjs.decodePng.call(void 0, parsed.bytes, { keepGray: channels === 1 });
|
|
5806
5808
|
if (png.channels === channels) return png;
|
|
5807
5809
|
if (channels === 1) {
|
|
5808
5810
|
const out2 = new Uint8ClampedArray(png.width * png.height);
|
|
@@ -5977,7 +5979,7 @@ function readContents(id, ctx) {
|
|
|
5977
5979
|
const c = { id, name: typeof raw.name === "string" ? raw.name : "Contents", width, height, kind: raw.kind === "document" ? "document" : "raster" };
|
|
5978
5980
|
if (raw.file && typeof raw.file.type === "string" && typeof raw.file.data === "string") {
|
|
5979
5981
|
try {
|
|
5980
|
-
c.file = { type: raw.file.type, bytes:
|
|
5982
|
+
c.file = { type: raw.file.type, bytes: _chunkDCLJNVZScjs.base64ToBytes.call(void 0, raw.file.data) };
|
|
5981
5983
|
} catch (e9) {
|
|
5982
5984
|
ctx.problems.push(`Smart object contents "${c.name}": the embedded file could not be read`);
|
|
5983
5985
|
}
|
|
@@ -6012,7 +6014,7 @@ function readSmartFilters(raw, ctx, what) {
|
|
|
6012
6014
|
const opacity = num2(f.opacity, 0, 1, 1);
|
|
6013
6015
|
if (f.kind === "psd") {
|
|
6014
6016
|
try {
|
|
6015
|
-
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:
|
|
6017
|
+
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: _chunkDCLJNVZScjs.base64ToBytes.call(void 0, String(_nullishCoalesce(f.data, () => ( "")))), blend, opacity });
|
|
6016
6018
|
} catch (e10) {
|
|
6017
6019
|
ctx.problems.push(`${what}: a Photoshop smart filter could not be read`);
|
|
6018
6020
|
}
|
|
@@ -6037,8 +6039,8 @@ function readSmartObject(r, base, ctx) {
|
|
|
6037
6039
|
let placement;
|
|
6038
6040
|
try {
|
|
6039
6041
|
const raw = { corners: p.corners };
|
|
6040
|
-
if (p.warp &&
|
|
6041
|
-
if (
|
|
6042
|
+
if (p.warp && _chunkVYW7JBTMcjs.isValidWarpMesh.call(void 0, p.warp)) raw.warp = p.warp;
|
|
6043
|
+
if (_chunkLL3RAN55cjs.isInterpolation.call(void 0, p.interpolation)) raw.interpolation = p.interpolation;
|
|
6042
6044
|
placement = normalizePlacement(raw, contents);
|
|
6043
6045
|
} catch (e) {
|
|
6044
6046
|
ctx.problems.push(`${what}: its placement is invalid (${e instanceof Error ? e.message : String(e)}); it was placed at the top left`);
|
|
@@ -6050,7 +6052,7 @@ function readSmartObject(r, base, ctx) {
|
|
|
6050
6052
|
if (typeof r.fillOpacity === "number" && r.fillOpacity !== 1) layer.fillOpacity = num2(r.fillOpacity, 0, 1, 1);
|
|
6051
6053
|
if (r.psd && typeof r.psd.key === "string" && typeof r.psd.data === "string") {
|
|
6052
6054
|
try {
|
|
6053
|
-
layer.psd = { key: r.psd.key, data:
|
|
6055
|
+
layer.psd = { key: r.psd.key, data: _chunkDCLJNVZScjs.base64ToBytes.call(void 0, r.psd.data) };
|
|
6054
6056
|
if (typeof r.psd.placed === "string") layer.psd.placed = r.psd.placed;
|
|
6055
6057
|
} catch (e11) {
|
|
6056
6058
|
}
|
|
@@ -7020,7 +7022,7 @@ function vectorBlockForComponents(components, inverted, width, height, flags = 0
|
|
|
7020
7022
|
const fr = (p) => ({ x: p.x / w, y: p.y / h });
|
|
7021
7023
|
const subpaths = [];
|
|
7022
7024
|
components.forEach((c, ci) => {
|
|
7023
|
-
|
|
7025
|
+
_chunkVYW7JBTMcjs.expandVectorCorners.call(void 0, c.subpaths).forEach((sp, si) => {
|
|
7024
7026
|
if (!sp.anchors.length) return;
|
|
7025
7027
|
subpaths.push({
|
|
7026
7028
|
closed: sp.closed,
|
|
@@ -7742,7 +7744,7 @@ function merged(levels) {
|
|
|
7742
7744
|
function charStyle(d, fonts, notes) {
|
|
7743
7745
|
const n = (k) => eNum(eGet(d, k));
|
|
7744
7746
|
const flag = (k) => eBool(eGet(d, k));
|
|
7745
|
-
const s = { ...
|
|
7747
|
+
const s = { ..._chunkVYW7JBTMcjs.DEFAULT_TEXT_STYLE };
|
|
7746
7748
|
const fi = n("Font");
|
|
7747
7749
|
const ps = fi !== void 0 ? fonts[fi] : void 0;
|
|
7748
7750
|
if (ps) {
|
|
@@ -7825,7 +7827,7 @@ function typeFromTySh(data, notes) {
|
|
|
7825
7827
|
}
|
|
7826
7828
|
const edText = _nullishCoalesce(eStr(ePath(_nullishCoalesce(engine, () => ( void 0)), ["EngineDict", "Editor", "Text"])), () => ( ""));
|
|
7827
7829
|
const text3 = (_nullishCoalesce(txt, () => ( edText.replace(/\r$/, "")))).replace(/\r\n?/g, "\n");
|
|
7828
|
-
let runs = [{ length: text3.length, style: { ...
|
|
7830
|
+
let runs = [{ length: text3.length, style: { ..._chunkVYW7JBTMcjs.DEFAULT_TEXT_STYLE } }];
|
|
7829
7831
|
let paragraphs = [{ length: text3.length, style: {} }];
|
|
7830
7832
|
let frame = { kind: "point" };
|
|
7831
7833
|
let transform = t.transform;
|
|
@@ -7881,14 +7883,14 @@ function typeFromTySh(data, notes) {
|
|
|
7881
7883
|
const b = eArray(ePath(shape, ["Cookie", "Photoshop", "BoxBounds"])).map((v) => _nullishCoalesce(eNum(v), () => ( 0)));
|
|
7882
7884
|
if (b.length === 4 && b[2] > b[0] && b[3] > b[1]) {
|
|
7883
7885
|
frame = { kind: "box", width: b[2] - b[0], height: b[3] - b[1] };
|
|
7884
|
-
transform =
|
|
7886
|
+
transform = _chunkVYW7JBTMcjs.multiplyMatrices.call(void 0, [1, 0, 0, 1, b[0], b[1]], t.transform);
|
|
7885
7887
|
}
|
|
7886
7888
|
}
|
|
7887
7889
|
}
|
|
7888
7890
|
return {
|
|
7889
7891
|
text: text3,
|
|
7890
|
-
runs:
|
|
7891
|
-
paragraphs:
|
|
7892
|
+
runs: _chunkVYW7JBTMcjs.fitRuns.call(void 0, runs, text3.length, _chunkVYW7JBTMcjs.DEFAULT_TEXT_STYLE),
|
|
7893
|
+
paragraphs: _chunkVYW7JBTMcjs.fitParagraphRuns.call(void 0, paragraphs, text3),
|
|
7892
7894
|
frame,
|
|
7893
7895
|
transform,
|
|
7894
7896
|
antiAlias,
|
|
@@ -7962,7 +7964,7 @@ function buildEngineData(layer, template) {
|
|
|
7962
7964
|
fonts.push(ps);
|
|
7963
7965
|
return fonts.length - 1;
|
|
7964
7966
|
};
|
|
7965
|
-
const runs =
|
|
7967
|
+
const runs = _chunkVYW7JBTMcjs.fitRuns.call(void 0, layer.runs, layer.text.length, _chunkVYW7JBTMcjs.DEFAULT_TEXT_STYLE);
|
|
7966
7968
|
const sruns = [];
|
|
7967
7969
|
const slens = [];
|
|
7968
7970
|
runs.forEach((r, i) => {
|
|
@@ -7970,10 +7972,10 @@ function buildEngineData(layer, template) {
|
|
|
7970
7972
|
slens.push(E.int(r.length + (i === runs.length - 1 ? 1 : 0)));
|
|
7971
7973
|
});
|
|
7972
7974
|
if (!runs.length) {
|
|
7973
|
-
sruns.push(E.dict([["StyleSheet", E.dict([["StyleSheetData", styleSheetData(
|
|
7975
|
+
sruns.push(E.dict([["StyleSheet", E.dict([["StyleSheetData", styleSheetData(_chunkVYW7JBTMcjs.DEFAULT_TEXT_STYLE, fontIndex(postScriptFor(_chunkVYW7JBTMcjs.DEFAULT_TEXT_STYLE)))]])]]));
|
|
7974
7976
|
slens.push(E.int(1));
|
|
7975
7977
|
}
|
|
7976
|
-
const paras =
|
|
7978
|
+
const paras = _chunkVYW7JBTMcjs.fitParagraphRuns.call(void 0, layer.paragraphs, layer.text);
|
|
7977
7979
|
const pruns = [];
|
|
7978
7980
|
const plens = [];
|
|
7979
7981
|
paras.forEach((p, i) => {
|
|
@@ -8029,7 +8031,7 @@ function buildEngineData(layer, template) {
|
|
|
8029
8031
|
eSet(e, key, rd);
|
|
8030
8032
|
}
|
|
8031
8033
|
eSet(rd, "FontSet", fontSet);
|
|
8032
|
-
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]), () => (
|
|
8034
|
+
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]), () => ( _chunkVYW7JBTMcjs.DEFAULT_TEXT_STYLE)), 0)]])]));
|
|
8033
8035
|
if (!eGet(rd, "ParagraphSheetSet")) eSet(rd, "ParagraphSheetSet", E.array([E.dict([["Name", E.str("Normal RGB")], ["DefaultStyleSheet", E.int(0)], ["Properties", paragraphProperties({})]])]));
|
|
8034
8036
|
if (!eGet(rd, "TheNormalStyleSheet")) eSet(rd, "TheNormalStyleSheet", E.int(0));
|
|
8035
8037
|
if (!eGet(rd, "TheNormalParagraphSheet")) eSet(rd, "TheNormalParagraphSheet", E.int(0));
|
|
@@ -8040,13 +8042,13 @@ function inkBounds2(layer) {
|
|
|
8040
8042
|
if (layer.frame.kind === "box") return [0, 0, layer.frame.width, layer.frame.height];
|
|
8041
8043
|
const b = _chunk7ISPWEJAcjs.contentBounds.call(void 0, layer.surface);
|
|
8042
8044
|
if (!b) return [0, 0, 0, 0];
|
|
8043
|
-
const inv =
|
|
8045
|
+
const inv = _chunkVYW7JBTMcjs.invertMatrix.call(void 0, textMatrix(layer));
|
|
8044
8046
|
const pts = [
|
|
8045
8047
|
{ x: b.x, y: b.y },
|
|
8046
8048
|
{ x: b.x + b.width, y: b.y },
|
|
8047
8049
|
{ x: b.x + b.width, y: b.y + b.height },
|
|
8048
8050
|
{ x: b.x, y: b.y + b.height }
|
|
8049
|
-
].map((p) =>
|
|
8051
|
+
].map((p) => _chunkVYW7JBTMcjs.applyMatrix.call(void 0, inv, p));
|
|
8050
8052
|
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))];
|
|
8051
8053
|
}
|
|
8052
8054
|
function tyShForLayer(layer) {
|
|
@@ -8513,7 +8515,7 @@ function filterMaskItem(placed, mask, area) {
|
|
|
8513
8515
|
var warpStyleOf = (name) => {
|
|
8514
8516
|
if (!name.startsWith("warp")) return null;
|
|
8515
8517
|
const s = _optionalChain([name, 'access', _218 => _218[4], 'optionalAccess', _219 => _219.toLowerCase, 'call', _220 => _220()]) + name.slice(5);
|
|
8516
|
-
return
|
|
8518
|
+
return _chunkVYW7JBTMcjs.WARP_STYLES.includes(s) ? s : null;
|
|
8517
8519
|
};
|
|
8518
8520
|
function warpFromDescriptor(w, contents) {
|
|
8519
8521
|
const full = { x: 0, y: 0, width: contents.width, height: contents.height };
|
|
@@ -8543,7 +8545,7 @@ function warpFromDescriptor(w, contents) {
|
|
|
8543
8545
|
} else {
|
|
8544
8546
|
const style = warpStyleOf(styleName);
|
|
8545
8547
|
if (!style) return void 0;
|
|
8546
|
-
mesh =
|
|
8548
|
+
mesh = _chunkVYW7JBTMcjs.warpPresetMesh.call(void 0,
|
|
8547
8549
|
{
|
|
8548
8550
|
style,
|
|
8549
8551
|
bend: _nullishCoalesce(descNumber(w, "warpValue"), () => ( 0)),
|
|
@@ -8558,7 +8560,7 @@ function warpFromDescriptor(w, contents) {
|
|
|
8558
8560
|
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;
|
|
8559
8561
|
if (!same) {
|
|
8560
8562
|
const m = mesh;
|
|
8561
|
-
mesh =
|
|
8563
|
+
mesh = _chunkVYW7JBTMcjs.fitWarpMesh.call(void 0, (s, t) => _chunkVYW7JBTMcjs.evalWarpMesh.call(void 0, m, (s * contents.width - bounds.x) / bounds.width, (t * contents.height - bounds.y) / bounds.height), [0, 1], [0, 1]);
|
|
8562
8564
|
}
|
|
8563
8565
|
return { mesh, frame };
|
|
8564
8566
|
}
|
|
@@ -8607,14 +8609,14 @@ var toQuad = (p) => [
|
|
|
8607
8609
|
function cornersFromQuad(quad, frame, contents) {
|
|
8608
8610
|
if (quad.length !== 8 || !quad.every(Number.isFinite)) return null;
|
|
8609
8611
|
const q2 = toQuad(quad);
|
|
8610
|
-
const h =
|
|
8612
|
+
const h = _chunkMUUXNRU4cjs.rectToQuad.call(void 0, frame, q2);
|
|
8611
8613
|
if (!h) return null;
|
|
8612
|
-
const out =
|
|
8614
|
+
const out = _chunkMUUXNRU4cjs.boxQuad.call(void 0, { x: 0, y: 0, width: contents.width, height: contents.height }).map((p) => _chunkMUUXNRU4cjs.applyHomography.call(void 0, h, p));
|
|
8613
8615
|
return out.every(Boolean) ? out : null;
|
|
8614
8616
|
}
|
|
8615
8617
|
function quadFromCorners(corners, frame, contents) {
|
|
8616
|
-
const h =
|
|
8617
|
-
const pts =
|
|
8618
|
+
const h = _chunkMUUXNRU4cjs.rectToQuad.call(void 0, { x: 0, y: 0, width: contents.width, height: contents.height }, corners);
|
|
8619
|
+
const pts = _chunkMUUXNRU4cjs.boxQuad.call(void 0, frame).map((p) => _nullishCoalesce((h ? _chunkMUUXNRU4cjs.applyHomography.call(void 0, h, p) : p), () => ( p)));
|
|
8618
8620
|
return pts.flatMap((p) => [p.x, p.y]);
|
|
8619
8621
|
}
|
|
8620
8622
|
var PLACED_KEYS = ["SoLd", "SoLE", "PlLd"];
|
|
@@ -9871,7 +9873,7 @@ function recordEffects(ctx, rec, name, notes, group) {
|
|
|
9871
9873
|
}
|
|
9872
9874
|
for (const e of parsed.effects.items) {
|
|
9873
9875
|
for (const id of patternIds(e)) {
|
|
9874
|
-
if (ctx.patterns.has(id) ||
|
|
9876
|
+
if (ctx.patterns.has(id) || _chunkLL3RAN55cjs.builtinPattern.call(void 0, id)) continue;
|
|
9875
9877
|
ctx.warn.add("A pattern effect uses a pattern the file does not contain, and paints nothing", name);
|
|
9876
9878
|
notes.push(`pattern "${id}" is not in the file`);
|
|
9877
9879
|
}
|
|
@@ -10081,7 +10083,7 @@ function contentsFor(ctx, placed, name, notes) {
|
|
|
10081
10083
|
document: { layers: nested.layers, globalLight: nested.globalLight, patterns: nested.patterns.length ? nested.patterns : void 0 }
|
|
10082
10084
|
};
|
|
10083
10085
|
} else if (t.ext === "png") {
|
|
10084
|
-
const png =
|
|
10086
|
+
const png = _chunkDCLJNVZScjs.decodePng.call(void 0, file.bytes);
|
|
10085
10087
|
out = { ...base, kind: "raster", width: png.width, height: png.height, raster: _chunk7ISPWEJAcjs.surfaceFromPixels.call(void 0, png, 4, 0, 0) };
|
|
10086
10088
|
} else {
|
|
10087
10089
|
const size = _nullishCoalesce(placed.size, () => ( { width: 0, height: 0 }));
|
|
@@ -10123,7 +10125,7 @@ function importSmart(ctx, rec, name, notes, props) {
|
|
|
10123
10125
|
if (placement && (size.width !== contents.width || size.height !== contents.height)) {
|
|
10124
10126
|
const kx = contents.width / size.width;
|
|
10125
10127
|
const ky = contents.height / size.height;
|
|
10126
|
-
if (placement.warp) placement = { ...placement, warp:
|
|
10128
|
+
if (placement.warp) placement = { ...placement, warp: _chunkVYW7JBTMcjs.mapWarpMeshPoints.call(void 0, placement.warp, (p) => ({ x: p.x * kx, y: p.y * ky })) };
|
|
10127
10129
|
}
|
|
10128
10130
|
}
|
|
10129
10131
|
if (!contents || !placement) {
|
|
@@ -10147,7 +10149,7 @@ function importSmart(ctx, rec, name, notes, props) {
|
|
|
10147
10149
|
ctx.warn.add("A smart object without readable contents came in with its stored pixels as contents", name);
|
|
10148
10150
|
notes.push("contents missing");
|
|
10149
10151
|
}
|
|
10150
|
-
placement = { corners:
|
|
10152
|
+
placement = { corners: _chunkMUUXNRU4cjs.boxQuad.call(void 0, { x: rec.rect.left, y: rec.rect.top, width, height }) };
|
|
10151
10153
|
preview = true;
|
|
10152
10154
|
}
|
|
10153
10155
|
const layer = { type: "smart", id: ctx.newId(name), ...props, contents, placement, surface, offset: { x: 0, y: 0 } };
|
|
@@ -10424,34 +10426,34 @@ function blendOf(d, key, fallback, notes) {
|
|
|
10424
10426
|
function colorOf(d, fallback = "#000000") {
|
|
10425
10427
|
if (!d) return fallback;
|
|
10426
10428
|
const g = (k) => descNumber(d, k);
|
|
10427
|
-
if (g("redFloat") !== void 0) return
|
|
10429
|
+
if (g("redFloat") !== void 0) return _chunkLL3RAN55cjs.effectColorHex.call(void 0, [g("redFloat"), _nullishCoalesce(g("greenFloat"), () => ( 0)), _nullishCoalesce(g("blueFloat"), () => ( 0))]);
|
|
10428
10430
|
switch (d.classId) {
|
|
10429
10431
|
case "HSBC": {
|
|
10430
10432
|
const rgb = decodePsdColor(1, [(_nullishCoalesce(g("H "), () => ( 0))) / 360 * 65535, (_nullishCoalesce(g("Strt"), () => ( 0))) / 100 * 65535, (_nullishCoalesce(g("Brgh"), () => ( 0))) / 100 * 65535]);
|
|
10431
|
-
return rgb ?
|
|
10433
|
+
return rgb ? _chunkLL3RAN55cjs.effectColorHex.call(void 0, rgb) : fallback;
|
|
10432
10434
|
}
|
|
10433
10435
|
case "CMYC": {
|
|
10434
10436
|
const inv = (k) => (1 - (_nullishCoalesce(g(k), () => ( 0))) / 100) * 65535;
|
|
10435
10437
|
const rgb = decodePsdColor(2, [inv("Cyn "), inv("Mgnt"), inv("Ylw "), inv("Blck")]);
|
|
10436
|
-
return rgb ?
|
|
10438
|
+
return rgb ? _chunkLL3RAN55cjs.effectColorHex.call(void 0, rgb) : fallback;
|
|
10437
10439
|
}
|
|
10438
10440
|
case "LbCl": {
|
|
10439
10441
|
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]);
|
|
10440
|
-
return rgb ?
|
|
10442
|
+
return rgb ? _chunkLL3RAN55cjs.effectColorHex.call(void 0, rgb) : fallback;
|
|
10441
10443
|
}
|
|
10442
10444
|
case "Grsc": {
|
|
10443
10445
|
const v = 1 - (_nullishCoalesce(g("Gry "), () => ( 0))) / 100;
|
|
10444
|
-
return
|
|
10446
|
+
return _chunkLL3RAN55cjs.effectColorHex.call(void 0, [v, v, v]);
|
|
10445
10447
|
}
|
|
10446
10448
|
}
|
|
10447
10449
|
const r = g("Rd ");
|
|
10448
10450
|
const gr = g("Grn ");
|
|
10449
10451
|
const b = g("Bl ");
|
|
10450
10452
|
if (r === void 0 || gr === void 0 || b === void 0) return fallback;
|
|
10451
|
-
return
|
|
10453
|
+
return _chunkLL3RAN55cjs.effectColorHex.call(void 0, [r / 255, gr / 255, b / 255]);
|
|
10452
10454
|
}
|
|
10453
10455
|
function colorDesc(hex) {
|
|
10454
|
-
const [r, g, b] = _nullishCoalesce(
|
|
10456
|
+
const [r, g, b] = _nullishCoalesce(_chunkLL3RAN55cjs.parseEffectColor.call(void 0, hex), () => ( [0, 0, 0]));
|
|
10455
10457
|
return descriptor("RGBC", [
|
|
10456
10458
|
["Rd ", dbl3(r * 255)],
|
|
10457
10459
|
["Grn ", dbl3(g * 255)],
|
|
@@ -10534,9 +10536,9 @@ function gradientOf(d, notes) {
|
|
|
10534
10536
|
raw.forEach((s, i) => {
|
|
10535
10537
|
if (i > 0 && Math.abs(s.mid - 0.5) > 1e-3) {
|
|
10536
10538
|
const a = raw[i - 1];
|
|
10537
|
-
const ca =
|
|
10538
|
-
const cb =
|
|
10539
|
-
stops.push({ position: a.position + (s.position - a.position) * s.mid, color:
|
|
10539
|
+
const ca = _chunkLL3RAN55cjs.parseEffectColor.call(void 0, a.color);
|
|
10540
|
+
const cb = _chunkLL3RAN55cjs.parseEffectColor.call(void 0, s.color);
|
|
10541
|
+
stops.push({ position: a.position + (s.position - a.position) * s.mid, color: _chunkLL3RAN55cjs.effectColorHex.call(void 0, ca.map((v, k) => (v + cb[k]) / 2)) });
|
|
10540
10542
|
notes.add("gradient midpoints are drawn as straight segments");
|
|
10541
10543
|
}
|
|
10542
10544
|
stops.push({ position: s.position, color: s.color });
|
|
@@ -10648,8 +10650,8 @@ var KINDS = [
|
|
|
10648
10650
|
["FrFX", "frameFXMulti", "stroke"]
|
|
10649
10651
|
];
|
|
10650
10652
|
function common(d, kind, notes) {
|
|
10651
|
-
const def =
|
|
10652
|
-
return { id:
|
|
10653
|
+
const def = _chunkLL3RAN55cjs.defaultLayerEffect.call(void 0, kind, "x");
|
|
10654
|
+
return { id: _chunkLL3RAN55cjs.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) };
|
|
10653
10655
|
}
|
|
10654
10656
|
function readOne(kind, d, notes) {
|
|
10655
10657
|
const size = (key, fallback) => clamp3(num3(d, key, fallback), 0, 250);
|
|
@@ -10692,7 +10694,7 @@ function readOne(kind, d, notes) {
|
|
|
10692
10694
|
case "bevel-emboss": {
|
|
10693
10695
|
const styles = { OtrB: "outer-bevel", InrB: "inner-bevel", Embs: "emboss", PlEb: "pillow-emboss", strokeEmboss: "stroke-emboss" };
|
|
10694
10696
|
const out = {
|
|
10695
|
-
id:
|
|
10697
|
+
id: _chunkLL3RAN55cjs.newEffectId.call(void 0, ),
|
|
10696
10698
|
enabled: descBool(d, "enab") !== false,
|
|
10697
10699
|
kind,
|
|
10698
10700
|
style: _nullishCoalesce(styles[_nullishCoalesce(enumOf3(d, "bvlS"), () => ( ""))], () => ( "inner-bevel")),
|
|
@@ -10903,10 +10905,10 @@ function writeLfx2(effects) {
|
|
|
10903
10905
|
["Scl ", unit3("#Prc", 100)],
|
|
10904
10906
|
["masterFXSwitch", boolV3(effects.enabled)]
|
|
10905
10907
|
];
|
|
10906
|
-
const scale =
|
|
10908
|
+
const scale = _chunkLL3RAN55cjs.effectsScale.call(void 0, effects);
|
|
10907
10909
|
let dropped = 0;
|
|
10908
10910
|
for (const [single, multi, kind] of KINDS) {
|
|
10909
|
-
const of = effects.items.filter((e) => e.kind === kind).map((e) => writeOne(
|
|
10911
|
+
const of = effects.items.filter((e) => e.kind === kind).map((e) => writeOne(_chunkLL3RAN55cjs.scaleLayerEffect.call(void 0, e, scale)));
|
|
10910
10912
|
if (!of.length) continue;
|
|
10911
10913
|
if (of.length === 1) items.push([single, obj3(of[0])]);
|
|
10912
10914
|
else if (multi) items.push([multi, { type: "VlLs", items: of.map(obj3) }]);
|
|
@@ -10938,7 +10940,7 @@ function parseLrfx(data) {
|
|
|
10938
10940
|
const colorAt = (rd) => {
|
|
10939
10941
|
rd.u16();
|
|
10940
10942
|
const c = [rd.u16(), rd.u16(), rd.u16(), rd.u16()];
|
|
10941
|
-
return
|
|
10943
|
+
return _chunkLL3RAN55cjs.effectColorHex.call(void 0, [c[0] >> 8, c[1] >> 8, c[2] >> 8].map((v) => v / 255));
|
|
10942
10944
|
};
|
|
10943
10945
|
const blendAt = (rd) => {
|
|
10944
10946
|
rd.skip(4);
|
|
@@ -10957,7 +10959,7 @@ function parseLrfx(data) {
|
|
|
10957
10959
|
const enabled = b.u8() !== 0;
|
|
10958
10960
|
const useGlobalLight = b.u8() !== 0;
|
|
10959
10961
|
const opacity = b.u8() / 255;
|
|
10960
|
-
const base = { id:
|
|
10962
|
+
const base = { id: _chunkLL3RAN55cjs.newEffectId.call(void 0, ), enabled, blend, opacity, color, angle, useGlobalLight, distance: clamp3(distance, 0, 3e4), size: clamp3(blur, 0, 250), antiAlias: false, noise: 0 };
|
|
10961
10963
|
items.push(key === "dsdw" ? { ...base, kind: "drop-shadow", spread: 0, knocksOut: true } : { ...base, kind: "inner-shadow", choke: 0 });
|
|
10962
10964
|
} else if (key === "oglw" || key === "iglw") {
|
|
10963
10965
|
b.u32();
|
|
@@ -10967,7 +10969,7 @@ function parseLrfx(data) {
|
|
|
10967
10969
|
const blend = blendAt(b);
|
|
10968
10970
|
const enabled = b.u8() !== 0;
|
|
10969
10971
|
const opacity = b.u8() / 255;
|
|
10970
|
-
const base = { id:
|
|
10972
|
+
const base = { id: _chunkLL3RAN55cjs.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 };
|
|
10971
10973
|
items.push(key === "oglw" ? { ...base, kind: "outer-glow", spread: 0 } : { ...base, kind: "inner-glow", choke: 0, source: "edge" });
|
|
10972
10974
|
} else if (key === "sofi") {
|
|
10973
10975
|
b.u32();
|
|
@@ -10975,7 +10977,7 @@ function parseLrfx(data) {
|
|
|
10975
10977
|
const color = colorAt(b);
|
|
10976
10978
|
const opacity = b.u8() / 255;
|
|
10977
10979
|
const enabled = b.u8() !== 0;
|
|
10978
|
-
items.push({ id:
|
|
10980
|
+
items.push({ id: _chunkLL3RAN55cjs.newEffectId.call(void 0, ), kind: "color-overlay", enabled, blend, opacity, color });
|
|
10979
10981
|
} else if (key === "bevl") notes.add("legacy bevels are not read");
|
|
10980
10982
|
}
|
|
10981
10983
|
return { effects: { enabled: true, items }, notes: [...notes] };
|
|
@@ -11091,7 +11093,7 @@ function smartContentsFile(c) {
|
|
|
11091
11093
|
if (c.file) return { name: c.name, bytes: c.file.bytes };
|
|
11092
11094
|
if (c.kind === "raster") {
|
|
11093
11095
|
const data = _chunk7ISPWEJAcjs.readRegion.call(void 0, contentsSurface(c), { x: 0, y: 0, width: c.width, height: c.height });
|
|
11094
|
-
return { name: `${base}.png`, bytes:
|
|
11096
|
+
return { name: `${base}.png`, bytes: _chunkDCLJNVZScjs.encodePng.call(void 0, c.width, c.height, data) };
|
|
11095
11097
|
}
|
|
11096
11098
|
const doc = c.document;
|
|
11097
11099
|
const merged2 = _chunk7ISPWEJAcjs.readRegion.call(void 0, contentsSurface(c), { x: 0, y: 0, width: c.width, height: c.height });
|
|
@@ -11158,7 +11160,7 @@ function exportPsd(input) {
|
|
|
11158
11160
|
const key = layer.type === "group" ? "lfxs" : "lfx2";
|
|
11159
11161
|
if (fx.psd) {
|
|
11160
11162
|
const original = parseLfx2(fx.psd.data);
|
|
11161
|
-
if (original ?
|
|
11163
|
+
if (original ? _chunkLL3RAN55cjs.effectsFingerprint.call(void 0, original.effects) === _chunkLL3RAN55cjs.effectsFingerprint.call(void 0, fx) : !fx.items.length) return { key, data: padEven(fx.psd.data) };
|
|
11162
11164
|
}
|
|
11163
11165
|
if (!fx.items.length && fx.enabled && (_nullishCoalesce(fx.scale, () => ( 1))) === 1) return null;
|
|
11164
11166
|
const { data, dropped } = writeLfx2(fx);
|
|
@@ -11379,7 +11381,7 @@ function exportPsd(input) {
|
|
|
11379
11381
|
const byId = new Map((_nullishCoalesce(input.patterns, () => ( []))).map((p) => [p.id, p]));
|
|
11380
11382
|
const embed = [];
|
|
11381
11383
|
for (const id of patternIds2) {
|
|
11382
|
-
const p = _nullishCoalesce(byId.get(id), () => (
|
|
11384
|
+
const p = _nullishCoalesce(byId.get(id), () => ( _chunkLL3RAN55cjs.builtinPattern.call(void 0, id)));
|
|
11383
11385
|
if (p) embed.push(p);
|
|
11384
11386
|
else note(`Pattern "${id}" is not in the document and was not embedded`, id);
|
|
11385
11387
|
}
|
|
@@ -11770,4 +11772,4 @@ function exportPsd(input) {
|
|
|
11770
11772
|
|
|
11771
11773
|
|
|
11772
11774
|
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;
|
|
11773
|
-
//# sourceMappingURL=chunk-
|
|
11775
|
+
//# sourceMappingURL=chunk-GLOOH65Y.cjs.map
|