@pixerate/editor 0.228.1 → 0.229.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-MXJP77K4.cjs → chunk-5VQXSS2S.cjs} +109 -103
- package/dist/{chunk-B46UQUDC.cjs → chunk-HB4ICNNA.cjs} +6 -2
- package/dist/{chunk-KN3Y3FRY.js → chunk-JVNGCS26.js} +8 -2
- package/dist/{chunk-QXY4YTRI.js → chunk-UOOK7HTX.js} +6 -2
- package/dist/image-editor/controller.d.cts +12 -0
- package/dist/image-editor/controller.d.ts +12 -0
- package/dist/image-editor/geometry.d.cts +6 -0
- package/dist/image-editor/geometry.d.ts +6 -0
- package/dist/image-editor/index.cjs +980 -881
- package/dist/image-editor/index.js +117 -18
- package/dist/image-editor/tool-groups.d.cts +57 -9
- package/dist/image-editor/tool-groups.d.ts +57 -9
- package/dist/image-editor/types.d.cts +3 -1
- package/dist/image-editor/types.d.ts +3 -1
- package/dist/paint-editor/index.cjs +80 -80
- package/dist/paint-editor/index.js +2 -2
- package/dist/raster/index.cjs +2 -2
- package/dist/raster/index.js +1 -1
- package/package.json +1 -1
- package/skills/pixerate-image-editor/SKILL.md +1 -0
|
@@ -46,7 +46,7 @@ var _chunkSS53NNZOcjs = require('./chunk-SS53NNZO.cjs');
|
|
|
46
46
|
|
|
47
47
|
|
|
48
48
|
|
|
49
|
-
var
|
|
49
|
+
var _chunkHB4ICNNAcjs = require('./chunk-HB4ICNNA.cjs');
|
|
50
50
|
|
|
51
51
|
|
|
52
52
|
|
|
@@ -464,6 +464,11 @@ function clampCropToImage(crop, width, height) {
|
|
|
464
464
|
height: Math.max(1, Math.min(height - y, crop.height))
|
|
465
465
|
};
|
|
466
466
|
}
|
|
467
|
+
var MARGIN_FIT_MIN_GUTTER = 36;
|
|
468
|
+
function marginFitSpan(size) {
|
|
469
|
+
const gutter = Math.max(size * 0.075, MARGIN_FIT_MIN_GUTTER);
|
|
470
|
+
return size - 2 * gutter > size * 0.5 ? size - 2 * gutter : size * 0.85;
|
|
471
|
+
}
|
|
467
472
|
function resolveViewport(state, vpWidth, vpHeight, isActivelyCropping, cropOverride) {
|
|
468
473
|
const { imageDimensions, crop: stateCrop, transform, zoom, pan, fit = "margin" } = state;
|
|
469
474
|
const naturalWidth = imageDimensions.width || 800;
|
|
@@ -472,7 +477,7 @@ function resolveViewport(state, vpWidth, vpHeight, isActivelyCropping, cropOverr
|
|
|
472
477
|
const activeCrop = cropOverride !== void 0 && cropOverride !== null ? cropOverride : _nullishCoalesce(stateCrop, () => ( (isActivelyCropping ? full : null)));
|
|
473
478
|
const region = !isActivelyCropping && activeCrop ? clampCropToImage(activeCrop, naturalWidth, naturalHeight) : full;
|
|
474
479
|
const { width: baseW, height: baseH } = getRotatedSize(region.width, region.height, transform);
|
|
475
|
-
const fitScale = fit === "contain" ? Math.min(vpWidth / baseW, vpHeight / baseH) : Math.min(vpWidth
|
|
480
|
+
const fitScale = fit === "contain" ? Math.min(vpWidth / baseW, vpHeight / baseH) : Math.min(marginFitSpan(vpWidth) / baseW, marginFitSpan(vpHeight) / baseH, 1);
|
|
476
481
|
const centerX = vpWidth / 2 + pan.x;
|
|
477
482
|
const centerY = vpHeight / 2 + pan.y;
|
|
478
483
|
const projection = {
|
|
@@ -1044,7 +1049,7 @@ function normalizeAdjustmentLayers(raw) {
|
|
|
1044
1049
|
return out;
|
|
1045
1050
|
}
|
|
1046
1051
|
function curveLutFromLevels(points) {
|
|
1047
|
-
return
|
|
1052
|
+
return _chunkHB4ICNNAcjs.curveLut.call(void 0, points.map((p) => ({ input: p.input / 255, output: p.output / 255 })));
|
|
1048
1053
|
}
|
|
1049
1054
|
var toUnitLevels = (c) => ({
|
|
1050
1055
|
inBlack: c.inBlack / 255,
|
|
@@ -2240,7 +2245,7 @@ function newLayerId(prefix = "layer") {
|
|
|
2240
2245
|
return `${prefix}_${Date.now().toString(36)}_${(++idCounter).toString(36)}`;
|
|
2241
2246
|
}
|
|
2242
2247
|
function pixelLayers(layers) {
|
|
2243
|
-
return
|
|
2248
|
+
return _chunkHB4ICNNAcjs.flattenLayers.call(void 0, layers).filter((l) => l.type === "pixel");
|
|
2244
2249
|
}
|
|
2245
2250
|
function developFilter(layer) {
|
|
2246
2251
|
return _optionalChain([layer, 'access', _10 => _10.filters, 'optionalAccess', _11 => _11.find, 'call', _12 => _12((f) => f.kind === "develop")]);
|
|
@@ -2271,14 +2276,14 @@ function isRenderedLayer(layer) {
|
|
|
2271
2276
|
return layer.type === "smart" || layer.type === "shape" || layer.type === "type";
|
|
2272
2277
|
}
|
|
2273
2278
|
function shapeLayers(layers) {
|
|
2274
|
-
return
|
|
2279
|
+
return _chunkHB4ICNNAcjs.flattenLayers.call(void 0, layers).filter((l) => l.type === "shape");
|
|
2275
2280
|
}
|
|
2276
2281
|
function smartObjectLayers(layers) {
|
|
2277
|
-
return
|
|
2282
|
+
return _chunkHB4ICNNAcjs.flattenLayers.call(void 0, layers).filter((l) => l.type === "smart");
|
|
2278
2283
|
}
|
|
2279
2284
|
|
|
2280
2285
|
// src/image-editor/layers/shape.ts
|
|
2281
|
-
var SHAPE_RENDER_MARGIN =
|
|
2286
|
+
var SHAPE_RENDER_MARGIN = _chunkHB4ICNNAcjs.MAX_EFFECT_REACH;
|
|
2282
2287
|
var DEFAULT_MITER_LIMIT = 100;
|
|
2283
2288
|
var fail = (message) => {
|
|
2284
2289
|
throw new LayerOperationError(message);
|
|
@@ -2498,11 +2503,11 @@ function componentsCoverage(components, rect, rule = "nonzero", inverted = false
|
|
|
2498
2503
|
function paintContext(env) {
|
|
2499
2504
|
const tiles = /* @__PURE__ */ new Map();
|
|
2500
2505
|
return {
|
|
2501
|
-
light:
|
|
2506
|
+
light: _chunkHB4ICNNAcjs.DEFAULT_GLOBAL_LIGHT,
|
|
2502
2507
|
pattern: (id) => {
|
|
2503
2508
|
if (tiles.has(id)) return tiles.get(id);
|
|
2504
|
-
const p = _nullishCoalesce(_optionalChain([env, 'access', _18 => _18.pattern, 'optionalCall', _19 => _19(id)]), () => (
|
|
2505
|
-
const t = p && p.width > 0 && p.height > 0 && p.data.length >= p.width * p.height * 4 ? new (0,
|
|
2509
|
+
const p = _nullishCoalesce(_optionalChain([env, 'access', _18 => _18.pattern, 'optionalCall', _19 => _19(id)]), () => ( _chunkHB4ICNNAcjs.builtinPattern.call(void 0, id)));
|
|
2510
|
+
const t = p && p.width > 0 && p.height > 0 && p.data.length >= p.width * p.height * 4 ? new (0, _chunkHB4ICNNAcjs.PatternTile)(p) : null;
|
|
2506
2511
|
tiles.set(id, t);
|
|
2507
2512
|
return t;
|
|
2508
2513
|
}
|
|
@@ -2533,9 +2538,9 @@ function renderShapeRect(layer, rect, env, ctx = paintContext(env)) {
|
|
|
2533
2538
|
if (!fCov && !sCov) return null;
|
|
2534
2539
|
const canvas = { x: 0, y: 0, width: env.width, height: env.height };
|
|
2535
2540
|
const anchor = { x: geo.frame.x, y: geo.frame.y };
|
|
2536
|
-
const fc = fCov ?
|
|
2541
|
+
const fc = fCov ? _chunkHB4ICNNAcjs.effectFillColors.call(void 0, layer.fill, rect, geo.frame, canvas, anchor, ctx) : null;
|
|
2537
2542
|
const fo = _nullishCoalesce(_optionalChain([layer, 'access', _20 => _20.fill, 'optionalAccess', _21 => _21.opacity]), () => ( 1));
|
|
2538
|
-
const sc = sCov ?
|
|
2543
|
+
const sc = sCov ? _chunkHB4ICNNAcjs.effectFillColors.call(void 0, layer.stroke.paint, rect, geo.frame, canvas, anchor, ctx) : null;
|
|
2539
2544
|
const so = _nullishCoalesce(_optionalChain([layer, 'access', _22 => _22.stroke, 'optionalAccess', _23 => _23.paint, 'access', _24 => _24.opacity]), () => ( 1));
|
|
2540
2545
|
const out = new Uint8ClampedArray(n * 4);
|
|
2541
2546
|
let any = false;
|
|
@@ -2628,9 +2633,9 @@ function normalizeShapePaint(v, path = "paint") {
|
|
|
2628
2633
|
offset: _nullishCoalesce(g.offset, () => ( { x: 0, y: 0 }))
|
|
2629
2634
|
};
|
|
2630
2635
|
try {
|
|
2631
|
-
|
|
2636
|
+
_chunkHB4ICNNAcjs.validateEffectGradient.call(void 0, gradient, `${path}.gradient`);
|
|
2632
2637
|
} catch (e) {
|
|
2633
|
-
if (e instanceof
|
|
2638
|
+
if (e instanceof _chunkHB4ICNNAcjs.LayerEffectError) fail(e.message);
|
|
2634
2639
|
throw e;
|
|
2635
2640
|
}
|
|
2636
2641
|
if (gradient.stops.length < 1) fail(`${path}.gradient.stops needs at least one { position, color }.`);
|
|
@@ -2842,7 +2847,7 @@ function updateShapeLayer(layers, id, change, env, action = "edit it") {
|
|
|
2842
2847
|
if (!("annotation" in patch)) delete next.annotation;
|
|
2843
2848
|
if (!next.components.length) fail("A shape needs at least one component; delete the layer instead.");
|
|
2844
2849
|
const rendered = rerenderShape(next, env);
|
|
2845
|
-
return { layers:
|
|
2850
|
+
return { layers: _chunkHB4ICNNAcjs.mapLayer.call(void 0, layers, id, () => rendered), layer: rendered };
|
|
2846
2851
|
}
|
|
2847
2852
|
function transformShapeComponents(components, f, affine) {
|
|
2848
2853
|
return components.map((c) => {
|
|
@@ -2873,7 +2878,7 @@ function shapeAsPixelLayer(layer) {
|
|
|
2873
2878
|
}
|
|
2874
2879
|
function annotationPaint(color, opacity) {
|
|
2875
2880
|
const c = _chunkA2IS7EHEcjs.parseCssColor.call(void 0, color);
|
|
2876
|
-
if (!c || !
|
|
2881
|
+
if (!c || !_chunkHB4ICNNAcjs.parseEffectColor.call(void 0, c.hex)) return void 0;
|
|
2877
2882
|
const a = c.alpha * opacity;
|
|
2878
2883
|
return a !== 1 ? { type: "color", color: c.hex, opacity: a } : { type: "color", color: c.hex };
|
|
2879
2884
|
}
|
|
@@ -3312,18 +3317,18 @@ function userErrorMessage(err) {
|
|
|
3312
3317
|
return err instanceof Error ? err.message : String(err);
|
|
3313
3318
|
}
|
|
3314
3319
|
function isPaintableLayer(layer) {
|
|
3315
|
-
return layer.type === "pixel" && layer.visible && !
|
|
3320
|
+
return layer.type === "pixel" && layer.visible && !_chunkHB4ICNNAcjs.isLayerLocked.call(void 0, layer, "pixels");
|
|
3316
3321
|
}
|
|
3317
3322
|
function defaultActiveLayerId(layers) {
|
|
3318
|
-
const pixels =
|
|
3323
|
+
const pixels = _chunkHB4ICNNAcjs.flattenLayers.call(void 0, layers).filter((l) => l.type === "pixel");
|
|
3319
3324
|
for (let i = pixels.length - 1; i >= 0; i--) if (isPaintableLayer(pixels[i])) return pixels[i].id;
|
|
3320
3325
|
return _nullishCoalesce(_optionalChain([pixels, 'access', _47 => _47[pixels.length - 1], 'optionalAccess', _48 => _48.id]), () => ( null));
|
|
3321
3326
|
}
|
|
3322
3327
|
function activeLayerAfterRemoval(prev, next, removedId) {
|
|
3323
|
-
const before =
|
|
3328
|
+
const before = _chunkHB4ICNNAcjs.flattenLayers.call(void 0, prev);
|
|
3324
3329
|
const at = before.findIndex((l) => l.id === removedId);
|
|
3325
3330
|
for (let i = at - 1; i >= 0; i--) {
|
|
3326
|
-
const loc =
|
|
3331
|
+
const loc = _chunkHB4ICNNAcjs.findLayer.call(void 0, next, before[i].id);
|
|
3327
3332
|
if (loc && isPaintableLayer(loc.layer)) return loc.layer.id;
|
|
3328
3333
|
}
|
|
3329
3334
|
return defaultActiveLayerId(next);
|
|
@@ -3332,47 +3337,47 @@ var fail2 = (message) => {
|
|
|
3332
3337
|
throw new LayerOperationError(message);
|
|
3333
3338
|
};
|
|
3334
3339
|
function requireLayer(layers, id) {
|
|
3335
|
-
const loc =
|
|
3340
|
+
const loc = _chunkHB4ICNNAcjs.findLayer.call(void 0, layers, id);
|
|
3336
3341
|
if (!loc) {
|
|
3337
|
-
const ids =
|
|
3342
|
+
const ids = _chunkHB4ICNNAcjs.flattenLayers.call(void 0, layers).map((l) => l.id);
|
|
3338
3343
|
fail2(`Unknown layer "${id}". ${ids.length ? `Layers: ${ids.join(", ")}.` : "The document has no layers."} Call list_layers for ids.`);
|
|
3339
3344
|
}
|
|
3340
3345
|
return loc;
|
|
3341
3346
|
}
|
|
3342
3347
|
function requireUnlocked(layer, what, action) {
|
|
3343
|
-
if (
|
|
3344
|
-
if (what !== "all" &&
|
|
3348
|
+
if (_chunkHB4ICNNAcjs.isLayerLocked.call(void 0, layer, "all")) fail2(`Layer "${layer.name || layer.id}" is locked (all); unlock it before you ${action}.`);
|
|
3349
|
+
if (what !== "all" && _chunkHB4ICNNAcjs.isLayerLocked.call(void 0, layer, what)) fail2(`Layer "${layer.name || layer.id}" has its ${what} locked; unlock it before you ${action}.`);
|
|
3345
3350
|
}
|
|
3346
3351
|
function placeLayer(layers, layer, placement = {}, defaultIndex) {
|
|
3347
3352
|
const given = [placement.aboveId, placement.belowId, placement.parentId].filter((v) => v !== void 0).length;
|
|
3348
3353
|
if (given > 1) fail2("Give only one of aboveId, belowId and parentId.");
|
|
3349
3354
|
if (placement.aboveId || placement.belowId) {
|
|
3350
3355
|
const ref = requireLayer(layers, _nullishCoalesce(placement.aboveId, () => ( placement.belowId)));
|
|
3351
|
-
return
|
|
3356
|
+
return _chunkHB4ICNNAcjs.insertLayer.call(void 0, layers, layer, _nullishCoalesce(_optionalChain([ref, 'access', _49 => _49.parent, 'optionalAccess', _50 => _50.id]), () => ( null)), ref.index + (placement.aboveId ? 1 : 0));
|
|
3352
3357
|
}
|
|
3353
3358
|
if (placement.parentId) {
|
|
3354
3359
|
const ref = requireLayer(layers, placement.parentId);
|
|
3355
3360
|
if (ref.layer.type !== "group") fail2(`Layer "${placement.parentId}" is not a group; parentId must be a group id.`);
|
|
3356
|
-
return
|
|
3361
|
+
return _chunkHB4ICNNAcjs.insertLayer.call(void 0, layers, layer, ref.layer.id, placement.index);
|
|
3357
3362
|
}
|
|
3358
|
-
return
|
|
3363
|
+
return _chunkHB4ICNNAcjs.insertLayer.call(void 0, layers, layer, null, _nullishCoalesce(placement.index, () => ( defaultIndex)));
|
|
3359
3364
|
}
|
|
3360
3365
|
function removeLayer(layers, id) {
|
|
3361
3366
|
const loc = requireLayer(layers, id);
|
|
3362
3367
|
requireUnlocked(loc.layer, "all", "delete it");
|
|
3363
|
-
return
|
|
3368
|
+
return _chunkHB4ICNNAcjs.mapLayer.call(void 0, layers, id, () => null);
|
|
3364
3369
|
}
|
|
3365
3370
|
function moveLayer(layers, id, placement) {
|
|
3366
3371
|
const loc = requireLayer(layers, id);
|
|
3367
3372
|
requireUnlocked(loc.layer, "all", "move it");
|
|
3368
3373
|
const target = _nullishCoalesce(_nullishCoalesce(placement.aboveId, () => ( placement.belowId)), () => ( placement.parentId));
|
|
3369
3374
|
if (target === id) fail2("A layer cannot be placed relative to itself.");
|
|
3370
|
-
if (target && loc.layer.type === "group" &&
|
|
3375
|
+
if (target && loc.layer.type === "group" && _chunkHB4ICNNAcjs.flattenLayers.call(void 0, loc.layer.children).some((l) => l.id === target)) {
|
|
3371
3376
|
fail2(`Group "${id}" cannot be moved into its own child "${target}".`);
|
|
3372
3377
|
}
|
|
3373
3378
|
if (target) requireLayer(layers, target);
|
|
3374
3379
|
if (!target && placement.index === void 0) fail2("Give aboveId, belowId, parentId or index.");
|
|
3375
|
-
const without =
|
|
3380
|
+
const without = _chunkHB4ICNNAcjs.mapLayer.call(void 0, layers, id, () => null);
|
|
3376
3381
|
return placeLayer(without, loc.layer, placement);
|
|
3377
3382
|
}
|
|
3378
3383
|
function withNewIds(layer) {
|
|
@@ -3391,7 +3396,7 @@ function duplicateLayer(layers, id, name) {
|
|
|
3391
3396
|
const copy = withNewIds(loc.layer);
|
|
3392
3397
|
copy.name = _nullishCoalesce(name, () => ( `${loc.layer.name || "Layer"} copy`));
|
|
3393
3398
|
delete copy.locks;
|
|
3394
|
-
return { layers:
|
|
3399
|
+
return { layers: _chunkHB4ICNNAcjs.insertLayer.call(void 0, layers, copy, _nullishCoalesce(_optionalChain([loc, 'access', _53 => _53.parent, 'optionalAccess', _54 => _54.id]), () => ( null)), loc.index + 1), id: copy.id };
|
|
3395
3400
|
}
|
|
3396
3401
|
function setLayerProperties(layers, id, props) {
|
|
3397
3402
|
const loc = requireLayer(layers, id);
|
|
@@ -3438,7 +3443,7 @@ function setLayerProperties(layers, id, props) {
|
|
|
3438
3443
|
if (props.collapsed) g.collapsed = true;
|
|
3439
3444
|
else delete g.collapsed;
|
|
3440
3445
|
}
|
|
3441
|
-
return
|
|
3446
|
+
return _chunkHB4ICNNAcjs.mapLayer.call(void 0, layers, id, () => next);
|
|
3442
3447
|
}
|
|
3443
3448
|
function groupLayers(layers, ids, name = "Group") {
|
|
3444
3449
|
if (!ids.length) fail2("Give at least one layer id to group.");
|
|
@@ -3467,17 +3472,17 @@ function groupLayers(layers, ids, name = "Group") {
|
|
|
3467
3472
|
group.children[0] = c;
|
|
3468
3473
|
}
|
|
3469
3474
|
let out = layers;
|
|
3470
|
-
for (const l of ordered) out =
|
|
3471
|
-
return { layers:
|
|
3475
|
+
for (const l of ordered) out = _chunkHB4ICNNAcjs.mapLayer.call(void 0, out, l.layer.id, () => null);
|
|
3476
|
+
return { layers: _chunkHB4ICNNAcjs.insertLayer.call(void 0, out, group, parent, top - below), id: group.id };
|
|
3472
3477
|
}
|
|
3473
3478
|
function ungroupLayer(layers, id) {
|
|
3474
3479
|
const loc = requireLayer(layers, id);
|
|
3475
3480
|
if (loc.layer.type !== "group") fail2(`Layer "${id}" is not a group.`);
|
|
3476
3481
|
requireUnlocked(loc.layer, "all", "ungroup it");
|
|
3477
3482
|
const group = loc.layer;
|
|
3478
|
-
let out =
|
|
3483
|
+
let out = _chunkHB4ICNNAcjs.mapLayer.call(void 0, layers, id, () => null);
|
|
3479
3484
|
group.children.forEach((c, i) => {
|
|
3480
|
-
out =
|
|
3485
|
+
out = _chunkHB4ICNNAcjs.insertLayer.call(void 0, out, c, _nullishCoalesce(_optionalChain([loc, 'access', _63 => _63.parent, 'optionalAccess', _64 => _64.id]), () => ( null)), loc.index + i);
|
|
3481
3486
|
});
|
|
3482
3487
|
return { layers: out, ids: group.children.map((c) => c.id) };
|
|
3483
3488
|
}
|
|
@@ -3492,12 +3497,12 @@ function offsetLayer(layers, id, offset) {
|
|
|
3492
3497
|
if (mask && mask.linked === false && !mask.source) {
|
|
3493
3498
|
next.mask = { ...mask, surface: _chunk474IQG74cjs.translateSurface.call(void 0, mask.surface, layer.offset.x - next.offset.x, layer.offset.y - next.offset.y) };
|
|
3494
3499
|
}
|
|
3495
|
-
return
|
|
3500
|
+
return _chunkHB4ICNNAcjs.mapLayer.call(void 0, layers, id, () => followLayerMove(next, next.offset.x - layer.offset.x, next.offset.y - layer.offset.y));
|
|
3496
3501
|
}
|
|
3497
3502
|
function setLayerMask(layers, id, mask) {
|
|
3498
3503
|
const loc = requireLayer(layers, id);
|
|
3499
3504
|
requireUnlocked(loc.layer, "all", "change its mask");
|
|
3500
|
-
return
|
|
3505
|
+
return _chunkHB4ICNNAcjs.mapLayer.call(void 0, layers, id, (l) => {
|
|
3501
3506
|
const next = { ...l };
|
|
3502
3507
|
if (mask) next.mask = mask;
|
|
3503
3508
|
else delete next.mask;
|
|
@@ -3536,7 +3541,7 @@ function requirePixelLayer(layers, id) {
|
|
|
3536
3541
|
function addLayerFilter(layers, id, filter) {
|
|
3537
3542
|
const layer = requirePixelLayer(layers, id);
|
|
3538
3543
|
if (_optionalChain([layer, 'access', _65 => _65.filters, 'optionalAccess', _66 => _66.some, 'call', _67 => _67((f) => f.kind === filter.kind)])) fail2(`Layer "${id}" already has a ${filter.kind} filter; change it with update_layer_filter.`);
|
|
3539
|
-
return
|
|
3544
|
+
return _chunkHB4ICNNAcjs.mapLayer.call(void 0, layers, id, () => ({ ...layer, filters: [..._nullishCoalesce(layer.filters, () => ( [])), filter] }));
|
|
3540
3545
|
}
|
|
3541
3546
|
function updateLayerFilter(layers, id, filterId, changes) {
|
|
3542
3547
|
const layer = requirePixelLayer(layers, id);
|
|
@@ -3547,7 +3552,7 @@ function updateLayerFilter(layers, id, filterId, changes) {
|
|
|
3547
3552
|
const merged2 = normalizeFilter({ ...current, ...changes, kind: current.kind }, current.id);
|
|
3548
3553
|
const filters = [...layer.filters];
|
|
3549
3554
|
filters[i] = merged2;
|
|
3550
|
-
return
|
|
3555
|
+
return _chunkHB4ICNNAcjs.mapLayer.call(void 0, layers, id, () => ({ ...layer, filters }));
|
|
3551
3556
|
}
|
|
3552
3557
|
function removeLayerFilter(layers, id, filterId) {
|
|
3553
3558
|
const layer = requirePixelLayer(layers, id);
|
|
@@ -3556,7 +3561,7 @@ function removeLayerFilter(layers, id, filterId) {
|
|
|
3556
3561
|
const next = { ...layer };
|
|
3557
3562
|
if (filters.length) next.filters = filters;
|
|
3558
3563
|
else delete next.filters;
|
|
3559
|
-
return
|
|
3564
|
+
return _chunkHB4ICNNAcjs.mapLayer.call(void 0, layers, id, () => next);
|
|
3560
3565
|
}
|
|
3561
3566
|
function requireEffectLayer(layers, id, action) {
|
|
3562
3567
|
const layer = requireLayer(layers, id).layer;
|
|
@@ -3571,7 +3576,7 @@ function guard(fn) {
|
|
|
3571
3576
|
try {
|
|
3572
3577
|
return fn();
|
|
3573
3578
|
} catch (e) {
|
|
3574
|
-
if (e instanceof
|
|
3579
|
+
if (e instanceof _chunkHB4ICNNAcjs.LayerEffectError) fail2(e.message);
|
|
3575
3580
|
throw e;
|
|
3576
3581
|
}
|
|
3577
3582
|
}
|
|
@@ -3579,20 +3584,20 @@ function setLayerEffects(layers, id, effects) {
|
|
|
3579
3584
|
const layer = requireEffectLayer(layers, id, "change its effects");
|
|
3580
3585
|
const next = { ...layer };
|
|
3581
3586
|
if (effects && (effects.items.length || effects.psd || effects.scale !== void 0 || !effects.enabled)) {
|
|
3582
|
-
guard(() =>
|
|
3587
|
+
guard(() => _chunkHB4ICNNAcjs.validateLayerEffects.call(void 0, effects));
|
|
3583
3588
|
next.effects = effects;
|
|
3584
3589
|
} else delete next.effects;
|
|
3585
|
-
return
|
|
3590
|
+
return _chunkHB4ICNNAcjs.mapLayer.call(void 0, layers, id, () => next);
|
|
3586
3591
|
}
|
|
3587
3592
|
function addLayerEffect(layers, id, kind, params = {}, index) {
|
|
3588
|
-
if (!
|
|
3593
|
+
if (!_chunkHB4ICNNAcjs.isLayerEffectKind.call(void 0, kind)) fail2(`Unknown effect kind "${String(kind)}". Kinds: ${_chunkHB4ICNNAcjs.LAYER_EFFECT_KINDS.join(", ")}.`);
|
|
3589
3594
|
const layer = requireEffectLayer(layers, id, "add effects");
|
|
3590
3595
|
const current = layerEffectsOf(layer);
|
|
3591
3596
|
const ids = new Set(current.items.map((e) => e.id));
|
|
3592
|
-
let effectId =
|
|
3593
|
-
while (ids.has(effectId)) effectId =
|
|
3597
|
+
let effectId = _chunkHB4ICNNAcjs.newEffectId.call(void 0, );
|
|
3598
|
+
while (ids.has(effectId)) effectId = _chunkHB4ICNNAcjs.newEffectId.call(void 0, );
|
|
3594
3599
|
const { id: _ignored, kind: _kind, ...rest } = params;
|
|
3595
|
-
const effect = guard(() =>
|
|
3600
|
+
const effect = guard(() => _chunkHB4ICNNAcjs.mergeLayerEffect.call(void 0, _chunkHB4ICNNAcjs.defaultLayerEffect.call(void 0, kind, effectId), rest));
|
|
3596
3601
|
const items = [...current.items];
|
|
3597
3602
|
const at = index === void 0 ? items.length : Math.max(0, Math.min(items.length, Math.floor(index)));
|
|
3598
3603
|
items.splice(at, 0, effect);
|
|
@@ -3609,7 +3614,7 @@ function updateLayerEffect(layers, id, effectId, changes) {
|
|
|
3609
3614
|
const i = requireEffect(layer, effectId);
|
|
3610
3615
|
const current = layer.effects;
|
|
3611
3616
|
const items = [...current.items];
|
|
3612
|
-
items[i] = guard(() =>
|
|
3617
|
+
items[i] = guard(() => _chunkHB4ICNNAcjs.mergeLayerEffect.call(void 0, items[i], changes));
|
|
3613
3618
|
return setLayerEffects(layers, id, { ...current, items });
|
|
3614
3619
|
}
|
|
3615
3620
|
function removeLayerEffect(layers, id, effectId) {
|
|
@@ -3854,7 +3859,7 @@ var PHOTO_PROFILE = {
|
|
|
3854
3859
|
return v;
|
|
3855
3860
|
}
|
|
3856
3861
|
};
|
|
3857
|
-
var LayerCompositor = class extends
|
|
3862
|
+
var LayerCompositor = class extends _chunkHB4ICNNAcjs.RasterCompositor {
|
|
3858
3863
|
constructor(options = {}) {
|
|
3859
3864
|
super(PHOTO_PROFILE, options);
|
|
3860
3865
|
}
|
|
@@ -3870,7 +3875,7 @@ var LayerCompositor = class extends _chunkB46UQUDCcjs.RasterCompositor {
|
|
|
3870
3875
|
}
|
|
3871
3876
|
};
|
|
3872
3877
|
function compositeDeep(layers, rect, sources, depth) {
|
|
3873
|
-
const deep = new (0,
|
|
3878
|
+
const deep = new (0, _chunkHB4ICNNAcjs.DeepCompositor)(new LayerCompositor(), PHOTO_PROFILE, {
|
|
3874
3879
|
applyFilterRunDeep: (run, acc, _r, masks) => applyAdjustmentLayersFloat(acc, run.map(adjustmentNodeAsLayer), masks),
|
|
3875
3880
|
pixelFiltersDeep: (l) => {
|
|
3876
3881
|
if (l.type !== "pixel" || hasEdgeUnmix(l.edge)) return null;
|
|
@@ -3886,7 +3891,7 @@ function compositeDeep(layers, rect, sources, depth) {
|
|
|
3886
3891
|
var fail3 = (message) => {
|
|
3887
3892
|
throw new LayerOperationError(message);
|
|
3888
3893
|
};
|
|
3889
|
-
var TEXT_RENDER_MARGIN =
|
|
3894
|
+
var TEXT_RENDER_MARGIN = _chunkHB4ICNNAcjs.MAX_EFFECT_REACH;
|
|
3890
3895
|
function textMatrix(layer) {
|
|
3891
3896
|
return _nullishCoalesce(layer.transform, () => ( _chunkBQE3Y6ZOcjs.IDENTITY_MATRIX));
|
|
3892
3897
|
}
|
|
@@ -4182,7 +4187,7 @@ function updateTypeLayer(layers, id, change, env, action = "edit it") {
|
|
|
4182
4187
|
if (!next.runs.length) next.runs = [{ length: 0, style: _chunkBQE3Y6ZOcjs.styleAt.call(void 0, current.runs, 0, _chunkBQE3Y6ZOcjs.DEFAULT_TEXT_STYLE) }];
|
|
4183
4188
|
if ("text" in patch || "paragraphs" in patch) next.paragraphs = _chunkBQE3Y6ZOcjs.fitParagraphRuns.call(void 0, next.paragraphs, next.text);
|
|
4184
4189
|
const rendered = rerenderText(next, env);
|
|
4185
|
-
return { layers:
|
|
4190
|
+
return { layers: _chunkHB4ICNNAcjs.mapLayer.call(void 0, layers, id, () => rendered), layer: rendered };
|
|
4186
4191
|
}
|
|
4187
4192
|
function replaceTextRange(layer, start, end, insert) {
|
|
4188
4193
|
const text3 = layer.text.slice(0, start) + insert + layer.text.slice(end);
|
|
@@ -4699,7 +4704,7 @@ function geometryHomography(geometry) {
|
|
|
4699
4704
|
var fail4 = (message) => {
|
|
4700
4705
|
throw new LayerOperationError(message);
|
|
4701
4706
|
};
|
|
4702
|
-
var SMART_RENDER_MARGIN =
|
|
4707
|
+
var SMART_RENDER_MARGIN = _chunkHB4ICNNAcjs.MAX_EFFECT_REACH;
|
|
4703
4708
|
var incompleteSurfaces = /* @__PURE__ */ new WeakSet();
|
|
4704
4709
|
var isSmartSurfaceIncomplete = (surface) => incompleteSurfaces.has(surface);
|
|
4705
4710
|
var surfaceIds = /* @__PURE__ */ new WeakMap();
|
|
@@ -4815,7 +4820,7 @@ function placeContents(layer, canvas, options = {}) {
|
|
|
4815
4820
|
k = step;
|
|
4816
4821
|
let r = _optionalChain([options, 'access', _101 => _101.reduced, 'optionalAccess', _102 => _102.get, 'call', _103 => _103(k)]);
|
|
4817
4822
|
if (!r) {
|
|
4818
|
-
r =
|
|
4823
|
+
r = _chunkHB4ICNNAcjs.reduceSurface.call(void 0, src, k);
|
|
4819
4824
|
_optionalChain([options, 'access', _104 => _104.reduced, 'optionalAccess', _105 => _105.set, 'call', _106 => _106(k, r)]);
|
|
4820
4825
|
}
|
|
4821
4826
|
source = r;
|
|
@@ -4825,15 +4830,15 @@ function placeContents(layer, canvas, options = {}) {
|
|
|
4825
4830
|
if (hasWarp(g)) {
|
|
4826
4831
|
const f = transformMap(g);
|
|
4827
4832
|
if (!f) fail4("The placement folds the contents over itself or through the horizon; keep the corners a convex quad.");
|
|
4828
|
-
out =
|
|
4833
|
+
out = _chunkHB4ICNNAcjs.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 });
|
|
4829
4834
|
} else {
|
|
4830
4835
|
const h = transformHomography(g);
|
|
4831
4836
|
if (!h) fail4("The placement folds the contents over itself or through the horizon; keep the corners a convex quad.");
|
|
4832
4837
|
const hk = _chunkQT26RHKKcjs.multiplyHomographies.call(void 0, [k, 0, 0, 0, k, 0, 0, 0, 1], h);
|
|
4833
|
-
out =
|
|
4838
|
+
out = _chunkHB4ICNNAcjs.transformSurface.call(void 0, source, hk, { interpolation, source: box2, clip, step: step > 1 ? step : void 0 });
|
|
4834
4839
|
}
|
|
4835
4840
|
} catch (e) {
|
|
4836
|
-
if (e instanceof
|
|
4841
|
+
if (e instanceof _chunkHB4ICNNAcjs.TransformTooLargeError) fail4(e.message);
|
|
4837
4842
|
throw e;
|
|
4838
4843
|
}
|
|
4839
4844
|
}
|
|
@@ -4910,7 +4915,7 @@ function applySmartFilters(placed, stack, canvas) {
|
|
|
4910
4915
|
if (f.opacity >= 1) acc = out2;
|
|
4911
4916
|
else lerpInto(acc, out2, f.opacity, null);
|
|
4912
4917
|
} else {
|
|
4913
|
-
|
|
4918
|
+
_chunkHB4ICNNAcjs.blendTile.call(void 0, acc, out2, f.blend, f.opacity, null);
|
|
4914
4919
|
}
|
|
4915
4920
|
}
|
|
4916
4921
|
entry = { key, base, filtered: acc };
|
|
@@ -4971,7 +4976,7 @@ function normalizePlacement(raw, contents) {
|
|
|
4971
4976
|
out.warp = { us: [...raw.warp.us], vs: [...raw.warp.vs], points: raw.warp.points.map((p) => ({ x: p.x, y: p.y })) };
|
|
4972
4977
|
}
|
|
4973
4978
|
if (raw.interpolation !== void 0) {
|
|
4974
|
-
if (!
|
|
4979
|
+
if (!_chunkHB4ICNNAcjs.isInterpolation.call(void 0, raw.interpolation)) fail4(`Unknown interpolation "${String(raw.interpolation)}"; use nearest, bilinear or bicubic.`);
|
|
4975
4980
|
if (raw.interpolation !== "bicubic") out.interpolation = raw.interpolation;
|
|
4976
4981
|
}
|
|
4977
4982
|
const g = { box: { x: 0, y: 0, width: contents.width, height: contents.height }, corners: out.corners, warp: _nullishCoalesce(out.warp, () => ( null)) };
|
|
@@ -4991,7 +4996,7 @@ function followMask(mask, before, after) {
|
|
|
4991
4996
|
const inv = _chunkQT26RHKKcjs.invertHomography.call(void 0, h0);
|
|
4992
4997
|
if (!inv) return mask;
|
|
4993
4998
|
const delta = _chunkQT26RHKKcjs.multiplyHomographies.call(void 0, inv, h1);
|
|
4994
|
-
const surface =
|
|
4999
|
+
const surface = _chunkHB4ICNNAcjs.transformSurface.call(void 0, mask.surface, delta, { interpolation: "bilinear" });
|
|
4995
5000
|
return { ...mask, surface };
|
|
4996
5001
|
}
|
|
4997
5002
|
function setSmartPlacement(layers, id, placement, canvas) {
|
|
@@ -5012,7 +5017,7 @@ function setSmartPlacement(layers, id, placement, canvas) {
|
|
|
5012
5017
|
next.smartFilters = { ...next.smartFilters, mask: m };
|
|
5013
5018
|
}
|
|
5014
5019
|
next = rerender(next, canvas, "be transformed");
|
|
5015
|
-
return { layers:
|
|
5020
|
+
return { layers: _chunkHB4ICNNAcjs.mapLayer.call(void 0, layers, id, () => next), layer: next, masksMoved };
|
|
5016
5021
|
}
|
|
5017
5022
|
function offsetSmartObject(layers, id, dx, dy, canvas) {
|
|
5018
5023
|
const layer = requireSmartObject(layers, id);
|
|
@@ -5035,7 +5040,7 @@ function offsetSmartObject(layers, id, dx, dy, canvas) {
|
|
|
5035
5040
|
} else {
|
|
5036
5041
|
next = rerender(next, canvas, "move");
|
|
5037
5042
|
}
|
|
5038
|
-
return
|
|
5043
|
+
return _chunkHB4ICNNAcjs.mapLayer.call(void 0, layers, id, () => next);
|
|
5039
5044
|
}
|
|
5040
5045
|
function translateLayer(layer, dx, dy) {
|
|
5041
5046
|
if (!dx && !dy) return layer;
|
|
@@ -5103,7 +5108,7 @@ function layerExtent(layer, surfaceOf, canvas) {
|
|
|
5103
5108
|
} else {
|
|
5104
5109
|
b = full;
|
|
5105
5110
|
}
|
|
5106
|
-
const m =
|
|
5111
|
+
const m = _chunkHB4ICNNAcjs.effectsMargin.call(void 0, layer.effects);
|
|
5107
5112
|
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) };
|
|
5108
5113
|
return b;
|
|
5109
5114
|
}
|
|
@@ -5172,7 +5177,7 @@ function convertToSmartObject(layers, ids, canvas, options) {
|
|
|
5172
5177
|
delete resolved2.source;
|
|
5173
5178
|
layer = resolved2;
|
|
5174
5179
|
}
|
|
5175
|
-
if (
|
|
5180
|
+
if (_chunkHB4ICNNAcjs.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.`);
|
|
5176
5181
|
return translateLayer(layer, -b.x, -b.y);
|
|
5177
5182
|
});
|
|
5178
5183
|
if (nested[0].clipped) {
|
|
@@ -5199,8 +5204,8 @@ function convertToSmartObject(layers, ids, canvas, options) {
|
|
|
5199
5204
|
smart = { ...smart, surface: renderSmartObject(smart, canvas) };
|
|
5200
5205
|
const below = ordered.filter((l) => l.index < top.index).length;
|
|
5201
5206
|
let out = layers;
|
|
5202
|
-
for (const l of ordered) out =
|
|
5203
|
-
return { layers:
|
|
5207
|
+
for (const l of ordered) out = _chunkHB4ICNNAcjs.mapLayer.call(void 0, out, l.layer.id, () => null);
|
|
5208
|
+
return { layers: _chunkHB4ICNNAcjs.insertLayer.call(void 0, out, smart, parent, top.index - below), layer: smart };
|
|
5204
5209
|
}
|
|
5205
5210
|
function rasterizeSmartObject(layers, id) {
|
|
5206
5211
|
const layer = requireSmartObject(layers, id);
|
|
@@ -5220,7 +5225,7 @@ function rasterizeSmartObject(layers, id) {
|
|
|
5220
5225
|
if (layer.locks) out.locks = layer.locks;
|
|
5221
5226
|
if (layer.effects) out.effects = layer.effects;
|
|
5222
5227
|
if (layer.fillOpacity !== void 0) out.fillOpacity = layer.fillOpacity;
|
|
5223
|
-
return { layers:
|
|
5228
|
+
return { layers: _chunkHB4ICNNAcjs.mapLayer.call(void 0, layers, id, () => out), layer: out };
|
|
5224
5229
|
}
|
|
5225
5230
|
function copySmartObject(layers, id, linked, name) {
|
|
5226
5231
|
const loc = requireLayer(layers, id);
|
|
@@ -5230,19 +5235,19 @@ function copySmartObject(layers, id, linked, name) {
|
|
|
5230
5235
|
delete copy.psd;
|
|
5231
5236
|
if (!linked) copy.contents = { ...layer.contents, id: newContentsId() };
|
|
5232
5237
|
if (copy.smartFilters) copy.smartFilters = { ...copy.smartFilters, filters: copy.smartFilters.filters.map((f) => ({ ...f, id: newLayerId("flt") })) };
|
|
5233
|
-
return { layers:
|
|
5238
|
+
return { layers: _chunkHB4ICNNAcjs.insertLayer.call(void 0, layers, copy, _nullishCoalesce(_optionalChain([loc, 'access', _140 => _140.parent, 'optionalAccess', _141 => _141.id]), () => ( null)), loc.index + 1), layer: copy };
|
|
5234
5239
|
}
|
|
5235
5240
|
function instancesOf(layers, contentsId) {
|
|
5236
|
-
return
|
|
5241
|
+
return _chunkHB4ICNNAcjs.flattenLayers.call(void 0, layers).filter((l) => l.type === "smart" && l.contents.id === contentsId).map((l) => l.id);
|
|
5237
5242
|
}
|
|
5238
5243
|
function replaceContents(layers, contentsId, contents, canvas) {
|
|
5239
5244
|
const ids = instancesOf(layers, contentsId);
|
|
5240
5245
|
if (!ids.length) fail4(`No smart object uses contents "${contentsId}".`);
|
|
5241
|
-
for (const id of ids) requireUnlocked(
|
|
5246
|
+
for (const id of ids) requireUnlocked(_chunkHB4ICNNAcjs.findLayer.call(void 0, layers, id).layer, "all", "replace its contents");
|
|
5242
5247
|
const next = { ...contents, id: contentsId };
|
|
5243
5248
|
let out = layers;
|
|
5244
5249
|
for (const id of ids) {
|
|
5245
|
-
out =
|
|
5250
|
+
out = _chunkHB4ICNNAcjs.mapLayer.call(void 0, out, id, (l) => {
|
|
5246
5251
|
const layer = l;
|
|
5247
5252
|
return rerender({ ...layer, contents: next, placement: refitPlacement(layer, next) }, canvas, "take the new contents");
|
|
5248
5253
|
});
|
|
@@ -5321,7 +5326,7 @@ function addSmartFilter(layers, id, filter, canvas, index) {
|
|
|
5321
5326
|
const at = index === void 0 ? filters.length : Math.max(0, Math.min(filters.length, Math.floor(index)));
|
|
5322
5327
|
filters.splice(at, 0, filter);
|
|
5323
5328
|
const next = withStack(layer, { ...stack, filters }, canvas);
|
|
5324
|
-
return { layers:
|
|
5329
|
+
return { layers: _chunkHB4ICNNAcjs.mapLayer.call(void 0, layers, id, () => next), layer: next, filter };
|
|
5325
5330
|
}
|
|
5326
5331
|
function updateSmartFilter(layers, id, filterId, changes, canvas) {
|
|
5327
5332
|
const layer = editableSmart(layers, id);
|
|
@@ -5343,7 +5348,7 @@ function updateSmartFilter(layers, id, filterId, changes, canvas) {
|
|
|
5343
5348
|
const filters = [...layer.smartFilters.filters];
|
|
5344
5349
|
filters[i] = merged2;
|
|
5345
5350
|
const next = withStack(layer, { ...layer.smartFilters, filters }, canvas);
|
|
5346
|
-
return { layers:
|
|
5351
|
+
return { layers: _chunkHB4ICNNAcjs.mapLayer.call(void 0, layers, id, () => next), layer: next, filter: merged2 };
|
|
5347
5352
|
}
|
|
5348
5353
|
function removeSmartFilter(layers, id, filterId, canvas) {
|
|
5349
5354
|
const layer = editableSmart(layers, id);
|
|
@@ -5351,7 +5356,7 @@ function removeSmartFilter(layers, id, filterId, canvas) {
|
|
|
5351
5356
|
const stack = layer.smartFilters;
|
|
5352
5357
|
const filters = stack.filters.filter((f) => f.id !== filterId);
|
|
5353
5358
|
const next = withStack(layer, filters.length ? { ...stack, filters } : stack.enabled ? void 0 : { enabled: false, filters }, canvas);
|
|
5354
|
-
return { layers:
|
|
5359
|
+
return { layers: _chunkHB4ICNNAcjs.mapLayer.call(void 0, layers, id, () => next), layer: next };
|
|
5355
5360
|
}
|
|
5356
5361
|
function moveSmartFilter(layers, id, filterId, index, canvas) {
|
|
5357
5362
|
const layer = editableSmart(layers, id);
|
|
@@ -5362,12 +5367,12 @@ function moveSmartFilter(layers, id, filterId, index, canvas) {
|
|
|
5362
5367
|
const [f] = filters.splice(i, 1);
|
|
5363
5368
|
filters.splice(index, 0, f);
|
|
5364
5369
|
const next = withStack(layer, { ...layer.smartFilters, filters }, canvas);
|
|
5365
|
-
return { layers:
|
|
5370
|
+
return { layers: _chunkHB4ICNNAcjs.mapLayer.call(void 0, layers, id, () => next), layer: next };
|
|
5366
5371
|
}
|
|
5367
5372
|
function setSmartFiltersEnabled(layers, id, enabled, canvas) {
|
|
5368
5373
|
const layer = editableSmart(layers, id);
|
|
5369
5374
|
const next = withStack(layer, { ...stackOf(layer), enabled: Boolean(enabled) }, canvas);
|
|
5370
|
-
return { layers:
|
|
5375
|
+
return { layers: _chunkHB4ICNNAcjs.mapLayer.call(void 0, layers, id, () => next), layer: next };
|
|
5371
5376
|
}
|
|
5372
5377
|
function setSmartFilterMask(layers, id, mask, canvas) {
|
|
5373
5378
|
const layer = editableSmart(layers, id);
|
|
@@ -5376,7 +5381,7 @@ function setSmartFilterMask(layers, id, mask, canvas) {
|
|
|
5376
5381
|
if (mask) stack.mask = mask;
|
|
5377
5382
|
else delete stack.mask;
|
|
5378
5383
|
const next = withStack(layer, stack, canvas);
|
|
5379
|
-
return { layers:
|
|
5384
|
+
return { layers: _chunkHB4ICNNAcjs.mapLayer.call(void 0, layers, id, () => next), layer: next };
|
|
5380
5385
|
}
|
|
5381
5386
|
function withFilterMaskSurface(layer, surface, canvas) {
|
|
5382
5387
|
const stack = stackOf(layer);
|
|
@@ -5500,7 +5505,7 @@ function deserializeEffects(raw) {
|
|
|
5500
5505
|
psd = void 0;
|
|
5501
5506
|
}
|
|
5502
5507
|
}
|
|
5503
|
-
return
|
|
5508
|
+
return _chunkHB4ICNNAcjs.normalizeLayerEffects.call(void 0, { ...r, psd });
|
|
5504
5509
|
}
|
|
5505
5510
|
function serializeVectorMask(vm) {
|
|
5506
5511
|
const out = { components: JSON.parse(JSON.stringify(vm.components)) };
|
|
@@ -6133,7 +6138,7 @@ function readSmartObject(r, base, ctx) {
|
|
|
6133
6138
|
try {
|
|
6134
6139
|
const raw = { corners: p.corners };
|
|
6135
6140
|
if (p.warp && _chunkBQE3Y6ZOcjs.isValidWarpMesh.call(void 0, p.warp)) raw.warp = p.warp;
|
|
6136
|
-
if (
|
|
6141
|
+
if (_chunkHB4ICNNAcjs.isInterpolation.call(void 0, p.interpolation)) raw.interpolation = p.interpolation;
|
|
6137
6142
|
placement = normalizePlacement(raw, contents);
|
|
6138
6143
|
} catch (e) {
|
|
6139
6144
|
ctx.problems.push(`${what}: its placement is invalid (${e instanceof Error ? e.message : String(e)}); it was placed at the top left`);
|
|
@@ -10103,7 +10108,7 @@ function recordEffects(ctx, rec, name, notes, group) {
|
|
|
10103
10108
|
}
|
|
10104
10109
|
for (const e of parsed.effects.items) {
|
|
10105
10110
|
for (const id of patternIds(e)) {
|
|
10106
|
-
if (ctx.patterns.has(id) ||
|
|
10111
|
+
if (ctx.patterns.has(id) || _chunkHB4ICNNAcjs.builtinPattern.call(void 0, id)) continue;
|
|
10107
10112
|
ctx.warn.add("A pattern effect uses a pattern the file does not contain, and paints nothing", name);
|
|
10108
10113
|
notes.push(`pattern "${id}" is not in the file`);
|
|
10109
10114
|
}
|
|
@@ -10681,34 +10686,34 @@ function blendOf(d, key, fallback, notes) {
|
|
|
10681
10686
|
function colorOf(d, fallback = "#000000") {
|
|
10682
10687
|
if (!d) return fallback;
|
|
10683
10688
|
const g = (k) => descNumber(d, k);
|
|
10684
|
-
if (g("redFloat") !== void 0) return
|
|
10689
|
+
if (g("redFloat") !== void 0) return _chunkHB4ICNNAcjs.effectColorHex.call(void 0, [g("redFloat"), _nullishCoalesce(g("greenFloat"), () => ( 0)), _nullishCoalesce(g("blueFloat"), () => ( 0))]);
|
|
10685
10690
|
switch (d.classId) {
|
|
10686
10691
|
case "HSBC": {
|
|
10687
10692
|
const rgb = decodePsdColor(1, [(_nullishCoalesce(g("H "), () => ( 0))) / 360 * 65535, (_nullishCoalesce(g("Strt"), () => ( 0))) / 100 * 65535, (_nullishCoalesce(g("Brgh"), () => ( 0))) / 100 * 65535]);
|
|
10688
|
-
return rgb ?
|
|
10693
|
+
return rgb ? _chunkHB4ICNNAcjs.effectColorHex.call(void 0, rgb) : fallback;
|
|
10689
10694
|
}
|
|
10690
10695
|
case "CMYC": {
|
|
10691
10696
|
const inv = (k) => (1 - (_nullishCoalesce(g(k), () => ( 0))) / 100) * 65535;
|
|
10692
10697
|
const rgb = decodePsdColor(2, [inv("Cyn "), inv("Mgnt"), inv("Ylw "), inv("Blck")]);
|
|
10693
|
-
return rgb ?
|
|
10698
|
+
return rgb ? _chunkHB4ICNNAcjs.effectColorHex.call(void 0, rgb) : fallback;
|
|
10694
10699
|
}
|
|
10695
10700
|
case "LbCl": {
|
|
10696
10701
|
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]);
|
|
10697
|
-
return rgb ?
|
|
10702
|
+
return rgb ? _chunkHB4ICNNAcjs.effectColorHex.call(void 0, rgb) : fallback;
|
|
10698
10703
|
}
|
|
10699
10704
|
case "Grsc": {
|
|
10700
10705
|
const v = 1 - (_nullishCoalesce(g("Gry "), () => ( 0))) / 100;
|
|
10701
|
-
return
|
|
10706
|
+
return _chunkHB4ICNNAcjs.effectColorHex.call(void 0, [v, v, v]);
|
|
10702
10707
|
}
|
|
10703
10708
|
}
|
|
10704
10709
|
const r = g("Rd ");
|
|
10705
10710
|
const gr = g("Grn ");
|
|
10706
10711
|
const b = g("Bl ");
|
|
10707
10712
|
if (r === void 0 || gr === void 0 || b === void 0) return fallback;
|
|
10708
|
-
return
|
|
10713
|
+
return _chunkHB4ICNNAcjs.effectColorHex.call(void 0, [r / 255, gr / 255, b / 255]);
|
|
10709
10714
|
}
|
|
10710
10715
|
function colorDesc(hex) {
|
|
10711
|
-
const [r, g, b] = _nullishCoalesce(
|
|
10716
|
+
const [r, g, b] = _nullishCoalesce(_chunkHB4ICNNAcjs.parseEffectColor.call(void 0, hex), () => ( [0, 0, 0]));
|
|
10712
10717
|
return descriptor("RGBC", [
|
|
10713
10718
|
["Rd ", dbl3(r * 255)],
|
|
10714
10719
|
["Grn ", dbl3(g * 255)],
|
|
@@ -10791,9 +10796,9 @@ function gradientOf(d, notes) {
|
|
|
10791
10796
|
raw.forEach((s, i) => {
|
|
10792
10797
|
if (i > 0 && Math.abs(s.mid - 0.5) > 1e-3) {
|
|
10793
10798
|
const a = raw[i - 1];
|
|
10794
|
-
const ca =
|
|
10795
|
-
const cb =
|
|
10796
|
-
stops.push({ position: a.position + (s.position - a.position) * s.mid, color:
|
|
10799
|
+
const ca = _chunkHB4ICNNAcjs.parseEffectColor.call(void 0, a.color);
|
|
10800
|
+
const cb = _chunkHB4ICNNAcjs.parseEffectColor.call(void 0, s.color);
|
|
10801
|
+
stops.push({ position: a.position + (s.position - a.position) * s.mid, color: _chunkHB4ICNNAcjs.effectColorHex.call(void 0, ca.map((v, k) => (v + cb[k]) / 2)) });
|
|
10797
10802
|
notes.add("gradient midpoints are drawn as straight segments");
|
|
10798
10803
|
}
|
|
10799
10804
|
stops.push({ position: s.position, color: s.color });
|
|
@@ -10905,8 +10910,8 @@ var KINDS = [
|
|
|
10905
10910
|
["FrFX", "frameFXMulti", "stroke"]
|
|
10906
10911
|
];
|
|
10907
10912
|
function common(d, kind, notes) {
|
|
10908
|
-
const def =
|
|
10909
|
-
return { id:
|
|
10913
|
+
const def = _chunkHB4ICNNAcjs.defaultLayerEffect.call(void 0, kind, "x");
|
|
10914
|
+
return { id: _chunkHB4ICNNAcjs.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) };
|
|
10910
10915
|
}
|
|
10911
10916
|
function readOne(kind, d, notes) {
|
|
10912
10917
|
const size = (key, fallback) => clamp3(num3(d, key, fallback), 0, 250);
|
|
@@ -10949,7 +10954,7 @@ function readOne(kind, d, notes) {
|
|
|
10949
10954
|
case "bevel-emboss": {
|
|
10950
10955
|
const styles = { OtrB: "outer-bevel", InrB: "inner-bevel", Embs: "emboss", PlEb: "pillow-emboss", strokeEmboss: "stroke-emboss" };
|
|
10951
10956
|
const out = {
|
|
10952
|
-
id:
|
|
10957
|
+
id: _chunkHB4ICNNAcjs.newEffectId.call(void 0, ),
|
|
10953
10958
|
enabled: descBool(d, "enab") !== false,
|
|
10954
10959
|
kind,
|
|
10955
10960
|
style: _nullishCoalesce(styles[_nullishCoalesce(enumOf3(d, "bvlS"), () => ( ""))], () => ( "inner-bevel")),
|
|
@@ -11160,10 +11165,10 @@ function writeLfx2(effects) {
|
|
|
11160
11165
|
["Scl ", unit3("#Prc", 100)],
|
|
11161
11166
|
["masterFXSwitch", boolV3(effects.enabled)]
|
|
11162
11167
|
];
|
|
11163
|
-
const scale =
|
|
11168
|
+
const scale = _chunkHB4ICNNAcjs.effectsScale.call(void 0, effects);
|
|
11164
11169
|
let dropped = 0;
|
|
11165
11170
|
for (const [single, multi, kind] of KINDS) {
|
|
11166
|
-
const of = effects.items.filter((e) => e.kind === kind).map((e) => writeOne(
|
|
11171
|
+
const of = effects.items.filter((e) => e.kind === kind).map((e) => writeOne(_chunkHB4ICNNAcjs.scaleLayerEffect.call(void 0, e, scale)));
|
|
11167
11172
|
if (!of.length) continue;
|
|
11168
11173
|
if (of.length === 1) items.push([single, obj3(of[0])]);
|
|
11169
11174
|
else if (multi) items.push([multi, { type: "VlLs", items: of.map(obj3) }]);
|
|
@@ -11195,7 +11200,7 @@ function parseLrfx(data) {
|
|
|
11195
11200
|
const colorAt = (rd) => {
|
|
11196
11201
|
rd.u16();
|
|
11197
11202
|
const c = [rd.u16(), rd.u16(), rd.u16(), rd.u16()];
|
|
11198
|
-
return
|
|
11203
|
+
return _chunkHB4ICNNAcjs.effectColorHex.call(void 0, [c[0] >> 8, c[1] >> 8, c[2] >> 8].map((v) => v / 255));
|
|
11199
11204
|
};
|
|
11200
11205
|
const blendAt = (rd) => {
|
|
11201
11206
|
rd.skip(4);
|
|
@@ -11214,7 +11219,7 @@ function parseLrfx(data) {
|
|
|
11214
11219
|
const enabled = b.u8() !== 0;
|
|
11215
11220
|
const useGlobalLight = b.u8() !== 0;
|
|
11216
11221
|
const opacity = b.u8() / 255;
|
|
11217
|
-
const base = { id:
|
|
11222
|
+
const base = { id: _chunkHB4ICNNAcjs.newEffectId.call(void 0, ), enabled, blend, opacity, color, angle, useGlobalLight, distance: clamp3(distance, 0, 3e4), size: clamp3(blur, 0, 250), antiAlias: false, noise: 0 };
|
|
11218
11223
|
items.push(key === "dsdw" ? { ...base, kind: "drop-shadow", spread: 0, knocksOut: true } : { ...base, kind: "inner-shadow", choke: 0 });
|
|
11219
11224
|
} else if (key === "oglw" || key === "iglw") {
|
|
11220
11225
|
b.u32();
|
|
@@ -11224,7 +11229,7 @@ function parseLrfx(data) {
|
|
|
11224
11229
|
const blend = blendAt(b);
|
|
11225
11230
|
const enabled = b.u8() !== 0;
|
|
11226
11231
|
const opacity = b.u8() / 255;
|
|
11227
|
-
const base = { id:
|
|
11232
|
+
const base = { id: _chunkHB4ICNNAcjs.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 };
|
|
11228
11233
|
items.push(key === "oglw" ? { ...base, kind: "outer-glow", spread: 0 } : { ...base, kind: "inner-glow", choke: 0, source: "edge" });
|
|
11229
11234
|
} else if (key === "sofi") {
|
|
11230
11235
|
b.u32();
|
|
@@ -11232,7 +11237,7 @@ function parseLrfx(data) {
|
|
|
11232
11237
|
const color = colorAt(b);
|
|
11233
11238
|
const opacity = b.u8() / 255;
|
|
11234
11239
|
const enabled = b.u8() !== 0;
|
|
11235
|
-
items.push({ id:
|
|
11240
|
+
items.push({ id: _chunkHB4ICNNAcjs.newEffectId.call(void 0, ), kind: "color-overlay", enabled, blend, opacity, color });
|
|
11236
11241
|
} else if (key === "bevl") notes.add("legacy bevels are not read");
|
|
11237
11242
|
}
|
|
11238
11243
|
return { effects: { enabled: true, items }, notes: [...notes] };
|
|
@@ -11425,7 +11430,7 @@ function exportPsd(input) {
|
|
|
11425
11430
|
const key = layer.type === "group" ? "lfxs" : "lfx2";
|
|
11426
11431
|
if (fx.psd) {
|
|
11427
11432
|
const original = parseLfx2(fx.psd.data);
|
|
11428
|
-
if (original ?
|
|
11433
|
+
if (original ? _chunkHB4ICNNAcjs.effectsFingerprint.call(void 0, original.effects) === _chunkHB4ICNNAcjs.effectsFingerprint.call(void 0, fx) : !fx.items.length) return { key, data: padEven(fx.psd.data) };
|
|
11429
11434
|
}
|
|
11430
11435
|
if (!fx.items.length && fx.enabled && (_nullishCoalesce(fx.scale, () => ( 1))) === 1) return null;
|
|
11431
11436
|
const { data, dropped } = writeLfx2(fx);
|
|
@@ -11677,7 +11682,7 @@ function exportPsd(input) {
|
|
|
11677
11682
|
const byId = new Map((_nullishCoalesce(input.patterns, () => ( []))).map((p) => [p.id, p]));
|
|
11678
11683
|
const embed = [];
|
|
11679
11684
|
for (const id of patternIds2) {
|
|
11680
|
-
const p = _nullishCoalesce(byId.get(id), () => (
|
|
11685
|
+
const p = _nullishCoalesce(byId.get(id), () => ( _chunkHB4ICNNAcjs.builtinPattern.call(void 0, id)));
|
|
11681
11686
|
if (p) embed.push(p);
|
|
11682
11687
|
else note(`Pattern "${id}" is not in the document and was not embedded`, id);
|
|
11683
11688
|
}
|
|
@@ -12079,4 +12084,5 @@ function exportPsd(input) {
|
|
|
12079
12084
|
|
|
12080
12085
|
|
|
12081
12086
|
|
|
12082
|
-
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.layerMaskSelection = layerMaskSelection; exports.normalizeLayerMask = normalizeLayerMask; exports.layerMaskFromSelection = layerMaskFromSelection; exports.updateLayerMaskProps = updateLayerMaskProps; exports.decodeLayerMask = decodeLayerMask; exports.layerMaskKey = layerMaskKey; exports.layerMaskCoverage = layerMaskCoverage; exports.projectMaskCoverage = projectMaskCoverage; exports.buildLayerMaskPlanes = buildLayerMaskPlanes; exports.ADJUSTMENT_LUT_SIZE = ADJUSTMENT_LUT_SIZE; exports.sampleLut = sampleLut; exports.ADJUSTMENT_KINDS = ADJUSTMENT_KINDS; exports.isAdjustmentKind = isAdjustmentKind; exports.adjustmentKindLabel = adjustmentKindLabel; exports.HUE_RANGE_LABELS = HUE_RANGE_LABELS; exports.neutralHueRange = neutralHueRange; exports.identityCurve = identityCurve; exports.identityLevels = identityLevels; exports.defaultAdjustmentParams = defaultAdjustmentParams; exports.createAdjustmentLayer = createAdjustmentLayer; exports.normalizeAdjustmentLayer = normalizeAdjustmentLayer; exports.normalizeAdjustmentLayers = normalizeAdjustmentLayers; exports.curveLutFromLevels = curveLutFromLevels; exports.levelsValue = levelsValue; exports.rgbToHsl = rgbToHsl; exports.hslToRgb = hslToRgb; exports.hueRangeWeight = hueRangeWeight; exports.hueRangeTables = hueRangeTables; exports.hueSaturation = hueSaturation; exports.rangeLightness = rangeLightness; exports.VIBRANCE_GREY = VIBRANCE_GREY; exports.vibranceLinear = vibranceLinear; exports.vibrancePixel = vibrancePixel; exports.colorBalanceChannel = colorBalanceChannel; exports.blackWhiteGray = blackWhiteGray; exports.D50 = D50; exports.XYZ_D50_TO_SRGB = XYZ_D50_TO_SRGB; exports.photoFilterMatrix = photoFilterMatrix; exports.posterizeValue = posterizeValue; exports.rgbToGray = rgbToGray; exports.hexToRgb = hexToRgb; exports.toneLuts = toneLuts; exports.compileAdjustmentLayer = compileAdjustmentLayer; exports.activeAdjustmentLayers = activeAdjustmentLayers; exports.evaluateAdjustmentLayers = evaluateAdjustmentLayers; exports.applyAdjustmentLayers = applyAdjustmentLayers; exports.applyAdjustmentLayersFloat = applyAdjustmentLayersFloat; exports.adjustmentLayersKey = adjustmentLayersKey; exports.applyAdjustments = applyAdjustments; exports.applyLegacyAdjustments = applyLegacyAdjustments; exports.applyLegacyFloat = applyLegacyFloat; exports.applyProcess2Adjustments = applyProcess2Adjustments; exports.applyProcess2Float = applyProcess2Float; exports.applyBoxBlurFloat = applyBoxBlurFloat; exports.applyBoxBlur = applyBoxBlur; exports.applyDepthMask = applyDepthMask; exports.removeAlpha = removeAlpha; exports.flattenPath = flattenPath; exports.rasterizeCoverage = rasterizeCoverage; exports.TEXT_ORIENTATIONS = TEXT_ORIENTATIONS; exports.TEXT_ALIGNS = TEXT_ALIGNS; exports.MAX_EFFECT_ANIMATION_MS = MAX_EFFECT_ANIMATION_MS; exports.SHAPE_OPERATIONS = SHAPE_OPERATIONS; exports.LIVE_SHAPE_KINDS = LIVE_SHAPE_KINDS; exports.newLayerId = newLayerId; exports.pixelLayers = pixelLayers; exports.developFilter = developFilter; exports.blurFilter = blurFilter; exports.isActiveFilter = isActiveFilter; exports.isSpatialFilter = isSpatialFilter; exports.pixelLayerBounds = pixelLayerBounds; exports.layerTypeLabel = layerTypeLabel; exports.hasSurface = hasSurface; exports.isRenderedLayer = isRenderedLayer; exports.shapeLayers = shapeLayers; exports.smartObjectLayers = smartObjectLayers; exports.LayerOperationError = LayerOperationError; exports.userErrorMessage = userErrorMessage; exports.isPaintableLayer = isPaintableLayer; exports.defaultActiveLayerId = defaultActiveLayerId; exports.activeLayerAfterRemoval = activeLayerAfterRemoval; exports.requireLayer = requireLayer; exports.requireUnlocked = requireUnlocked; exports.placeLayer = placeLayer; exports.removeLayer = removeLayer; exports.moveLayer = moveLayer; exports.withNewIds = withNewIds; exports.duplicateLayer = duplicateLayer; exports.setLayerProperties = setLayerProperties; exports.groupLayers = groupLayers; exports.ungroupLayer = ungroupLayer; exports.offsetLayer = offsetLayer; exports.setLayerMask = setLayerMask; exports.normalizeFilter = normalizeFilter; exports.addLayerFilter = addLayerFilter; exports.updateLayerFilter = updateLayerFilter; exports.removeLayerFilter = removeLayerFilter; exports.layerEffectsOf = layerEffectsOf; exports.setLayerEffects = setLayerEffects; exports.addLayerEffect = addLayerEffect; exports.updateLayerEffect = updateLayerEffect; exports.removeLayerEffect = removeLayerEffect; exports.setLayerEffectsEnabled = setLayerEffectsEnabled; exports.parseBlend = parseBlend; exports.unionRect = unionRect; exports.SHAPE_RENDER_MARGIN = SHAPE_RENDER_MARGIN; exports.DEFAULT_MITER_LIMIT = DEFAULT_MITER_LIMIT; exports.mapSubpaths = mapSubpaths; exports.liveShapeSubpaths = liveShapeSubpaths; exports.liveComponent = liveComponent; exports.componentPath = componentPath; exports.shapeOutline = shapeOutline; exports.shapeGeometryBounds = shapeGeometryBounds; exports.componentsCoverage = componentsCoverage; 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.VECTOR_MASK_EDGE_DEFAULTS = VECTOR_MASK_EDGE_DEFAULTS; exports.vectorMaskSegments = vectorMaskSegments; exports.validVectorMaskEdges = validVectorMaskEdges; exports.hybridVectorMaskCoverage = hybridVectorMaskCoverage; exports.isActiveVectorMask = isActiveVectorMask; exports.vectorMaskCoverage = vectorMaskCoverage; exports.layerGuide = layerGuide; exports.effectiveLayerMask = effectiveLayerMask; exports.resolveVectorMasks = resolveVectorMasks; exports.offsetVectorMask = offsetVectorMask; exports.transformVectorMask = transformVectorMask; exports.followLayerMove = followLayerMove; exports.vectorMaskBounds = vectorMaskBounds; exports.vectorMaskThumbnail = vectorMaskThumbnail; exports.EDGE_COLOR_RADIUS = EDGE_COLOR_RADIUS; exports.hasEdgeUnmix = hasEdgeUnmix; exports.maskCoverageOverCanvas = maskCoverageOverCanvas; exports.hasSoftBand = hasSoftBand; exports.despillEdge = despillEdge; exports.applyEdgeUnmix = applyEdgeUnmix; exports.adjustmentNodeAsLayer = adjustmentNodeAsLayer; exports.depthMaskAlpha = depthMaskAlpha; exports.runLayerFilters = runLayerFilters; exports.runLayerFiltersFloat = runLayerFiltersFloat; exports.LayerCompositor = LayerCompositor; exports.compositeDeep = compositeDeep; exports.DEFAULT_ADJUSTMENTS_VALUES = DEFAULT_ADJUSTMENTS_VALUES; exports.DEFAULT_TRANSFORM_VALUES = DEFAULT_TRANSFORM_VALUES; exports.DEFAULT_DEPTH_MASK_VALUES = DEFAULT_DEPTH_MASK_VALUES; exports.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.textOrientation = textOrientation; exports.createTypeLayer = createTypeLayer; exports.updateTypeLayer = updateTypeLayer; exports.replaceTextRange = replaceTextRange; exports.transformTypeLayer = transformTypeLayer; exports.typeFrame = typeFrame; exports.typeAsPixelLayer = typeAsPixelLayer; exports.toTextSpace = toTextSpace; exports.typeFromAnnotation = typeFromAnnotation; exports.annotationOfType = annotationOfType; exports.BACKGROUND_LAYER_ID = BACKGROUND_LAYER_ID; exports.BACKGROUND_LAYER_NAME = BACKGROUND_LAYER_NAME; exports.DEVELOP_FILTER_ID = DEVELOP_FILTER_ID; exports.BLUR_FILTER_ID = BLUR_FILTER_ID; exports.rasterMaskFromLegacy = rasterMaskFromLegacy; exports.hasResampledLegacyMask = hasResampledLegacyMask; exports.legacyMaskOf = legacyMaskOf; exports.isDefaultDepthMask = isDefaultDepthMask; exports.developFromAdjustments = developFromAdjustments; exports.annotationLayerName = annotationLayerName; exports.annotationLayerFor = annotationLayerFor; exports.annotationOfLayer = annotationOfLayer; exports.adjustmentNodeFromLegacy = adjustmentNodeFromLegacy; exports.backgroundLayer = backgroundLayer; exports.depthRasterMask = depthRasterMask; exports.layersFromLegacy = layersFromLegacy; exports.legacyAdjustmentLayer = legacyAdjustmentLayer; exports.developTarget = developTarget; exports.legacyView = legacyView; exports.isLegacyShape = isLegacyShape; exports.FREE_TRANSFORM_MODES = FREE_TRANSFORM_MODES; exports.TRANSFORM_ANCHORS = TRANSFORM_ANCHORS; exports.ANCHOR_FRACTION = ANCHOR_FRACTION; exports.isTransformAnchor = isTransformAnchor; exports.identityTransform = identityTransform; exports.cornersFromMatrix = cornersFromMatrix; exports.matrixFromCorners = matrixFromCorners; exports.transformHomography = transformHomography; exports.hasWarp = hasWarp; exports.isIdentityTransform = isIdentityTransform; exports.transformMap = transformMap; exports.transformedPoint = transformedPoint; exports.anchorPoint = anchorPoint; exports.transformedBox = transformedBox; exports.referencePoint = referencePoint; exports.matrixFromParams = matrixFromParams; exports.describeTransform = describeTransform; exports.applyParams = applyParams; exports.flipCorners = flipCorners; exports.boxPointOf = boxPointOf; exports.presetWarp = presetWarp; exports.isValidWarp = isValidWarp; exports.geometryHomography = geometryHomography; exports.SMART_RENDER_MARGIN = SMART_RENDER_MARGIN; exports.isSmartSurfaceIncomplete = isSmartSurfaceIncomplete; exports.newContentsId = newContentsId; exports.contentsBox = contentsBox; exports.placementGeometry = placementGeometry; exports.placementAt = placementAt; exports.isContentsDecoded = isContentsDecoded; exports.requireSmartObject = requireSmartObject; exports.contentsSurface = contentsSurface; exports.rasterContents = rasterContents; exports.documentContents = documentContents; exports.placeContents = placeContents; exports.activeSmartFilters = activeSmartFilters; exports.activeEffectSmartFilters = activeEffectSmartFilters; exports.filterMaskCoverage = filterMaskCoverage; exports.applySmartFilters = applySmartFilters; exports.renderSmartObject = renderSmartObject; exports.rerender = rerender; exports.normalizePlacement = normalizePlacement; exports.setSmartPlacement = setSmartPlacement; exports.offsetSmartObject = offsetSmartObject; exports.translateLayer = translateLayer; exports.convertToSmartObject = convertToSmartObject; exports.rasterizeSmartObject = rasterizeSmartObject; exports.copySmartObject = copySmartObject; exports.instancesOf = instancesOf; exports.replaceContents = replaceContents; exports.normalizeSmartFilter = normalizeSmartFilter; exports.addSmartFilter = addSmartFilter; exports.updateSmartFilter = updateSmartFilter; exports.removeSmartFilter = removeSmartFilter; exports.moveSmartFilter = moveSmartFilter; exports.setSmartFiltersEnabled = setSmartFiltersEnabled; exports.setSmartFilterMask = setSmartFilterMask; exports.withFilterMaskSurface = withFilterMaskSurface; exports.placementBounds = placementBounds; exports.LAYERED_SCHEMA_VERSION = LAYERED_SCHEMA_VERSION; exports.serializePatterns = serializePatterns; exports.deserializePatterns = deserializePatterns; exports.encodeSurface = encodeSurface; exports.encodeDeepSurface = encodeDeepSurface; exports.decodeDeepSurface = decodeDeepSurface; exports.readEdgeColor = readEdgeColor; exports.serializeEffects = serializeEffects; exports.deserializeEffects = deserializeEffects; exports.readShapeComponents = readShapeComponents; 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.decodePlanes = decodePlanes; exports.encodeRle = encodeRle; 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.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;
|
|
12087
|
+
|
|
12088
|
+
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.MARGIN_FIT_MIN_GUTTER = MARGIN_FIT_MIN_GUTTER; 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.layerMaskSelection = layerMaskSelection; exports.normalizeLayerMask = normalizeLayerMask; exports.layerMaskFromSelection = layerMaskFromSelection; exports.updateLayerMaskProps = updateLayerMaskProps; exports.decodeLayerMask = decodeLayerMask; exports.layerMaskKey = layerMaskKey; exports.layerMaskCoverage = layerMaskCoverage; exports.projectMaskCoverage = projectMaskCoverage; exports.buildLayerMaskPlanes = buildLayerMaskPlanes; exports.ADJUSTMENT_LUT_SIZE = ADJUSTMENT_LUT_SIZE; exports.sampleLut = sampleLut; exports.ADJUSTMENT_KINDS = ADJUSTMENT_KINDS; exports.isAdjustmentKind = isAdjustmentKind; exports.adjustmentKindLabel = adjustmentKindLabel; exports.HUE_RANGE_LABELS = HUE_RANGE_LABELS; exports.neutralHueRange = neutralHueRange; exports.identityCurve = identityCurve; exports.identityLevels = identityLevels; exports.defaultAdjustmentParams = defaultAdjustmentParams; exports.createAdjustmentLayer = createAdjustmentLayer; exports.normalizeAdjustmentLayer = normalizeAdjustmentLayer; exports.normalizeAdjustmentLayers = normalizeAdjustmentLayers; exports.curveLutFromLevels = curveLutFromLevels; exports.levelsValue = levelsValue; exports.rgbToHsl = rgbToHsl; exports.hslToRgb = hslToRgb; exports.hueRangeWeight = hueRangeWeight; exports.hueRangeTables = hueRangeTables; exports.hueSaturation = hueSaturation; exports.rangeLightness = rangeLightness; exports.VIBRANCE_GREY = VIBRANCE_GREY; exports.vibranceLinear = vibranceLinear; exports.vibrancePixel = vibrancePixel; exports.colorBalanceChannel = colorBalanceChannel; exports.blackWhiteGray = blackWhiteGray; exports.D50 = D50; exports.XYZ_D50_TO_SRGB = XYZ_D50_TO_SRGB; exports.photoFilterMatrix = photoFilterMatrix; exports.posterizeValue = posterizeValue; exports.rgbToGray = rgbToGray; exports.hexToRgb = hexToRgb; exports.toneLuts = toneLuts; exports.compileAdjustmentLayer = compileAdjustmentLayer; exports.activeAdjustmentLayers = activeAdjustmentLayers; exports.evaluateAdjustmentLayers = evaluateAdjustmentLayers; exports.applyAdjustmentLayers = applyAdjustmentLayers; exports.applyAdjustmentLayersFloat = applyAdjustmentLayersFloat; exports.adjustmentLayersKey = adjustmentLayersKey; exports.applyAdjustments = applyAdjustments; exports.applyLegacyAdjustments = applyLegacyAdjustments; exports.applyLegacyFloat = applyLegacyFloat; exports.applyProcess2Adjustments = applyProcess2Adjustments; exports.applyProcess2Float = applyProcess2Float; exports.applyBoxBlurFloat = applyBoxBlurFloat; exports.applyBoxBlur = applyBoxBlur; exports.applyDepthMask = applyDepthMask; exports.removeAlpha = removeAlpha; exports.flattenPath = flattenPath; exports.rasterizeCoverage = rasterizeCoverage; exports.TEXT_ORIENTATIONS = TEXT_ORIENTATIONS; exports.TEXT_ALIGNS = TEXT_ALIGNS; exports.MAX_EFFECT_ANIMATION_MS = MAX_EFFECT_ANIMATION_MS; exports.SHAPE_OPERATIONS = SHAPE_OPERATIONS; exports.LIVE_SHAPE_KINDS = LIVE_SHAPE_KINDS; exports.newLayerId = newLayerId; exports.pixelLayers = pixelLayers; exports.developFilter = developFilter; exports.blurFilter = blurFilter; exports.isActiveFilter = isActiveFilter; exports.isSpatialFilter = isSpatialFilter; exports.pixelLayerBounds = pixelLayerBounds; exports.layerTypeLabel = layerTypeLabel; exports.hasSurface = hasSurface; exports.isRenderedLayer = isRenderedLayer; exports.shapeLayers = shapeLayers; exports.smartObjectLayers = smartObjectLayers; exports.LayerOperationError = LayerOperationError; exports.userErrorMessage = userErrorMessage; exports.isPaintableLayer = isPaintableLayer; exports.defaultActiveLayerId = defaultActiveLayerId; exports.activeLayerAfterRemoval = activeLayerAfterRemoval; exports.requireLayer = requireLayer; exports.requireUnlocked = requireUnlocked; exports.placeLayer = placeLayer; exports.removeLayer = removeLayer; exports.moveLayer = moveLayer; exports.withNewIds = withNewIds; exports.duplicateLayer = duplicateLayer; exports.setLayerProperties = setLayerProperties; exports.groupLayers = groupLayers; exports.ungroupLayer = ungroupLayer; exports.offsetLayer = offsetLayer; exports.setLayerMask = setLayerMask; exports.normalizeFilter = normalizeFilter; exports.addLayerFilter = addLayerFilter; exports.updateLayerFilter = updateLayerFilter; exports.removeLayerFilter = removeLayerFilter; exports.layerEffectsOf = layerEffectsOf; exports.setLayerEffects = setLayerEffects; exports.addLayerEffect = addLayerEffect; exports.updateLayerEffect = updateLayerEffect; exports.removeLayerEffect = removeLayerEffect; exports.setLayerEffectsEnabled = setLayerEffectsEnabled; exports.parseBlend = parseBlend; exports.unionRect = unionRect; exports.SHAPE_RENDER_MARGIN = SHAPE_RENDER_MARGIN; exports.DEFAULT_MITER_LIMIT = DEFAULT_MITER_LIMIT; exports.mapSubpaths = mapSubpaths; exports.liveShapeSubpaths = liveShapeSubpaths; exports.liveComponent = liveComponent; exports.componentPath = componentPath; exports.shapeOutline = shapeOutline; exports.shapeGeometryBounds = shapeGeometryBounds; exports.componentsCoverage = componentsCoverage; 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.VECTOR_MASK_EDGE_DEFAULTS = VECTOR_MASK_EDGE_DEFAULTS; exports.vectorMaskSegments = vectorMaskSegments; exports.validVectorMaskEdges = validVectorMaskEdges; exports.hybridVectorMaskCoverage = hybridVectorMaskCoverage; exports.isActiveVectorMask = isActiveVectorMask; exports.vectorMaskCoverage = vectorMaskCoverage; exports.layerGuide = layerGuide; exports.effectiveLayerMask = effectiveLayerMask; exports.resolveVectorMasks = resolveVectorMasks; exports.offsetVectorMask = offsetVectorMask; exports.transformVectorMask = transformVectorMask; exports.followLayerMove = followLayerMove; exports.vectorMaskBounds = vectorMaskBounds; exports.vectorMaskThumbnail = vectorMaskThumbnail; exports.EDGE_COLOR_RADIUS = EDGE_COLOR_RADIUS; exports.hasEdgeUnmix = hasEdgeUnmix; exports.maskCoverageOverCanvas = maskCoverageOverCanvas; exports.hasSoftBand = hasSoftBand; exports.despillEdge = despillEdge; exports.applyEdgeUnmix = applyEdgeUnmix; exports.adjustmentNodeAsLayer = adjustmentNodeAsLayer; exports.depthMaskAlpha = depthMaskAlpha; exports.runLayerFilters = runLayerFilters; exports.runLayerFiltersFloat = runLayerFiltersFloat; exports.LayerCompositor = LayerCompositor; exports.compositeDeep = compositeDeep; exports.DEFAULT_ADJUSTMENTS_VALUES = DEFAULT_ADJUSTMENTS_VALUES; exports.DEFAULT_TRANSFORM_VALUES = DEFAULT_TRANSFORM_VALUES; exports.DEFAULT_DEPTH_MASK_VALUES = DEFAULT_DEPTH_MASK_VALUES; exports.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.textOrientation = textOrientation; exports.createTypeLayer = createTypeLayer; exports.updateTypeLayer = updateTypeLayer; exports.replaceTextRange = replaceTextRange; exports.transformTypeLayer = transformTypeLayer; exports.typeFrame = typeFrame; exports.typeAsPixelLayer = typeAsPixelLayer; exports.toTextSpace = toTextSpace; exports.typeFromAnnotation = typeFromAnnotation; exports.annotationOfType = annotationOfType; exports.BACKGROUND_LAYER_ID = BACKGROUND_LAYER_ID; exports.BACKGROUND_LAYER_NAME = BACKGROUND_LAYER_NAME; exports.DEVELOP_FILTER_ID = DEVELOP_FILTER_ID; exports.BLUR_FILTER_ID = BLUR_FILTER_ID; exports.rasterMaskFromLegacy = rasterMaskFromLegacy; exports.hasResampledLegacyMask = hasResampledLegacyMask; exports.legacyMaskOf = legacyMaskOf; exports.isDefaultDepthMask = isDefaultDepthMask; exports.developFromAdjustments = developFromAdjustments; exports.annotationLayerName = annotationLayerName; exports.annotationLayerFor = annotationLayerFor; exports.annotationOfLayer = annotationOfLayer; exports.adjustmentNodeFromLegacy = adjustmentNodeFromLegacy; exports.backgroundLayer = backgroundLayer; exports.depthRasterMask = depthRasterMask; exports.layersFromLegacy = layersFromLegacy; exports.legacyAdjustmentLayer = legacyAdjustmentLayer; exports.developTarget = developTarget; exports.legacyView = legacyView; exports.isLegacyShape = isLegacyShape; exports.FREE_TRANSFORM_MODES = FREE_TRANSFORM_MODES; exports.TRANSFORM_ANCHORS = TRANSFORM_ANCHORS; exports.ANCHOR_FRACTION = ANCHOR_FRACTION; exports.isTransformAnchor = isTransformAnchor; exports.identityTransform = identityTransform; exports.cornersFromMatrix = cornersFromMatrix; exports.matrixFromCorners = matrixFromCorners; exports.transformHomography = transformHomography; exports.hasWarp = hasWarp; exports.isIdentityTransform = isIdentityTransform; exports.transformMap = transformMap; exports.transformedPoint = transformedPoint; exports.anchorPoint = anchorPoint; exports.transformedBox = transformedBox; exports.referencePoint = referencePoint; exports.matrixFromParams = matrixFromParams; exports.describeTransform = describeTransform; exports.applyParams = applyParams; exports.flipCorners = flipCorners; exports.boxPointOf = boxPointOf; exports.presetWarp = presetWarp; exports.isValidWarp = isValidWarp; exports.geometryHomography = geometryHomography; exports.SMART_RENDER_MARGIN = SMART_RENDER_MARGIN; exports.isSmartSurfaceIncomplete = isSmartSurfaceIncomplete; exports.newContentsId = newContentsId; exports.contentsBox = contentsBox; exports.placementGeometry = placementGeometry; exports.placementAt = placementAt; exports.isContentsDecoded = isContentsDecoded; exports.requireSmartObject = requireSmartObject; exports.contentsSurface = contentsSurface; exports.rasterContents = rasterContents; exports.documentContents = documentContents; exports.placeContents = placeContents; exports.activeSmartFilters = activeSmartFilters; exports.activeEffectSmartFilters = activeEffectSmartFilters; exports.filterMaskCoverage = filterMaskCoverage; exports.applySmartFilters = applySmartFilters; exports.renderSmartObject = renderSmartObject; exports.rerender = rerender; exports.normalizePlacement = normalizePlacement; exports.setSmartPlacement = setSmartPlacement; exports.offsetSmartObject = offsetSmartObject; exports.translateLayer = translateLayer; exports.convertToSmartObject = convertToSmartObject; exports.rasterizeSmartObject = rasterizeSmartObject; exports.copySmartObject = copySmartObject; exports.instancesOf = instancesOf; exports.replaceContents = replaceContents; exports.normalizeSmartFilter = normalizeSmartFilter; exports.addSmartFilter = addSmartFilter; exports.updateSmartFilter = updateSmartFilter; exports.removeSmartFilter = removeSmartFilter; exports.moveSmartFilter = moveSmartFilter; exports.setSmartFiltersEnabled = setSmartFiltersEnabled; exports.setSmartFilterMask = setSmartFilterMask; exports.withFilterMaskSurface = withFilterMaskSurface; exports.placementBounds = placementBounds; exports.LAYERED_SCHEMA_VERSION = LAYERED_SCHEMA_VERSION; exports.serializePatterns = serializePatterns; exports.deserializePatterns = deserializePatterns; exports.encodeSurface = encodeSurface; exports.encodeDeepSurface = encodeDeepSurface; exports.decodeDeepSurface = decodeDeepSurface; exports.readEdgeColor = readEdgeColor; exports.serializeEffects = serializeEffects; exports.deserializeEffects = deserializeEffects; exports.readShapeComponents = readShapeComponents; 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.decodePlanes = decodePlanes; exports.encodeRle = encodeRle; 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.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;
|