@pixerate/editor 0.209.0 → 0.210.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-X4LUGTQX.cjs → chunk-L52VMQZS.cjs} +21 -10
- package/dist/{chunk-DWYQPL2A.js → chunk-LQ5SALHK.js} +13 -2
- package/dist/chunk-MQDIP4CF.cjs +462 -0
- package/dist/chunk-XI2NV5U7.js +462 -0
- package/dist/{chunk-3EHPLDFQ.cjs → chunk-YF3YZZ6G.cjs} +16 -453
- package/dist/{chunk-USQCKRZG.js → chunk-ZGJGSCUW.js} +8 -445
- package/dist/image-editor/content-aware-fill-session.d.cts +109 -0
- package/dist/image-editor/content-aware-fill-session.d.ts +109 -0
- package/dist/image-editor/controller.d.cts +60 -1
- package/dist/image-editor/controller.d.ts +60 -1
- package/dist/image-editor/index.cjs +620 -252
- package/dist/image-editor/index.d.cts +1 -0
- package/dist/image-editor/index.d.ts +1 -0
- package/dist/image-editor/index.js +396 -28
- package/dist/image-editor/selection/worker.d.cts +10 -0
- package/dist/image-editor/selection/worker.d.ts +10 -0
- package/dist/image-editor/selection-worker.cjs +4 -3
- package/dist/image-editor/selection-worker.js +2 -1
- package/dist/paint/heal.d.cts +3 -1
- package/dist/paint/heal.d.ts +3 -1
- package/dist/paint/index.cjs +4 -2
- package/dist/paint/index.js +10 -8
- package/package.json +1 -1
- package/skills/pixerate-image-editor/SKILL.md +20 -22
- package/skills/pixerate-image-editor/references/layer-effects.md +24 -0
- package/skills/pixerate-image-selection-masking/SKILL.md +2 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; } var _class; var _class2; var _class3; var _class4; var _class5; var _class6; var _class7; var _class8; var _class9; var _class10; var _class11; var _class12; var _class13; var _class14; var _class15; var _class16;
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; } var _class; var _class2; var _class3; var _class4; var _class5; var _class6; var _class7; var _class8; var _class9; var _class10; var _class11; var _class12; var _class13; var _class14; var _class15; var _class16; var _class17;
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
|
|
@@ -52,7 +52,7 @@ var _chunk3T5VCDIVcjs = require('../chunk-3T5VCDIV.cjs');
|
|
|
52
52
|
|
|
53
53
|
|
|
54
54
|
|
|
55
|
-
var
|
|
55
|
+
var _chunkL52VMQZScjs = require('../chunk-L52VMQZS.cjs');
|
|
56
56
|
|
|
57
57
|
|
|
58
58
|
|
|
@@ -542,6 +542,7 @@ var _chunkK6PXS6DOcjs = require('../chunk-K6PXS6DO.cjs');
|
|
|
542
542
|
|
|
543
543
|
|
|
544
544
|
|
|
545
|
+
var _chunkYF3YZZ6Gcjs = require('../chunk-YF3YZZ6G.cjs');
|
|
545
546
|
|
|
546
547
|
|
|
547
548
|
|
|
@@ -549,7 +550,8 @@ var _chunkK6PXS6DOcjs = require('../chunk-K6PXS6DO.cjs');
|
|
|
549
550
|
|
|
550
551
|
|
|
551
552
|
|
|
552
|
-
|
|
553
|
+
|
|
554
|
+
var _chunkMQDIP4CFcjs = require('../chunk-MQDIP4CF.cjs');
|
|
553
555
|
|
|
554
556
|
|
|
555
557
|
|
|
@@ -3649,7 +3651,7 @@ function segmentationOutlines(result) {
|
|
|
3649
3651
|
function segmentToSelection(width, height, result) {
|
|
3650
3652
|
let out = null;
|
|
3651
3653
|
for (const ring of segmentationOutlines(result)) {
|
|
3652
|
-
out = _chunkQYLWG22Ncjs.combineSelections.call(void 0, out,
|
|
3654
|
+
out = _chunkQYLWG22Ncjs.combineSelections.call(void 0, out, _chunkL52VMQZScjs.polygonSelection.call(void 0, width, height, ring), "add");
|
|
3653
3655
|
}
|
|
3654
3656
|
if (result.mask && result.mask.width > 0 && result.mask.height > 0) {
|
|
3655
3657
|
const raw = _chunkQYLWG22Ncjs.selectionFromPixels.call(void 0, result.mask, { channel: "luminance" });
|
|
@@ -4707,7 +4709,7 @@ var PaintStrokeSession = (_class11 = class {
|
|
|
4707
4709
|
this.stroke = null;
|
|
4708
4710
|
this.retouch = stroke;
|
|
4709
4711
|
if (this.base.channels === 1) {
|
|
4710
|
-
const view =
|
|
4712
|
+
const view = _chunkYF3YZZ6Gcjs.rgbaViewOfGrey.call(void 0, this.mixerPixels());
|
|
4711
4713
|
this.mixer = stroke.create(view.target);
|
|
4712
4714
|
this.flushView = view.flush;
|
|
4713
4715
|
} else this.mixer = stroke.create(this.mixerPixels());
|
|
@@ -4754,7 +4756,7 @@ var PaintStrokeSession = (_class11 = class {
|
|
|
4754
4756
|
retouchDeepTile(key, tx, ty, paint, options) {
|
|
4755
4757
|
const r = this.retouch;
|
|
4756
4758
|
const read = this.readWork(key);
|
|
4757
|
-
const out =
|
|
4759
|
+
const out = _chunkYF3YZZ6Gcjs.applyRetouchToTile.call(void 0, this.stroke.coverage, _nullishCoalesce(read, () => ( new Float32Array(_chunk474IQG74cjs.TILE * _chunk474IQG74cjs.TILE * 4))), 4, tx, ty, paint, r.apply, options);
|
|
4758
4760
|
this.work.set(key, out);
|
|
4759
4761
|
const d = deepOfWorkTile(out, this.deep, read, this.base.tiles.get(key));
|
|
4760
4762
|
this.liveDeep.set(key, d);
|
|
@@ -4764,7 +4766,7 @@ var PaintStrokeSession = (_class11 = class {
|
|
|
4764
4766
|
/** The new tile of a coverage stroke over the pre-stroke tile `src`. */
|
|
4765
4767
|
compositeTile(src, tx, ty, options = {}, paint) {
|
|
4766
4768
|
const r = this.retouch;
|
|
4767
|
-
if (r && r.kind === "coverage") return
|
|
4769
|
+
if (r && r.kind === "coverage") return _chunkYF3YZZ6Gcjs.applyRetouchToTile.call(void 0, this.stroke.coverage, src, this.base.channels, tx, ty, _nullishCoalesce(paint, () => ( r.paint())), r.apply, options);
|
|
4768
4770
|
return _chunkPQ3H2AANcjs.applyStrokeToTile.call(void 0, this.stroke.coverage, src, this.base.channels, tx, ty, this.apply, options);
|
|
4769
4771
|
}
|
|
4770
4772
|
/** The live pixels a mixer stroke reads and writes; base tiles are copied on first write. */
|
|
@@ -4862,7 +4864,7 @@ var PaintStrokeSession = (_class11 = class {
|
|
|
4862
4864
|
const prev2 = this.touched.has(key) ? this.liveDeep.get(key) : void 0;
|
|
4863
4865
|
this.touched.add(key);
|
|
4864
4866
|
const opts = prev2 ? { into: prev2, region: r, channels: ch } : { channels: ch };
|
|
4865
|
-
const d = _optionalChain([rt, 'optionalAccess', _125 => _125.kind]) === "coverage" && _optionalChain([paint, 'optionalAccess', _126 => _126.kind]) === "tone" ?
|
|
4867
|
+
const d = _optionalChain([rt, 'optionalAccess', _125 => _125.kind]) === "coverage" && _optionalChain([paint, 'optionalAccess', _126 => _126.kind]) === "tone" ? _chunkYF3YZZ6Gcjs.applyToneToDeepTile.call(void 0, stroke.coverage, src2, tx, ty, paint.tone, rt.apply, opts) : _chunkPQ3H2AANcjs.applyStrokeToDeepTile.call(void 0, stroke.coverage, src2, tx, ty, this.apply, opts);
|
|
4866
4868
|
this.liveDeep.set(key, d);
|
|
4867
4869
|
this.live.set(key, { data: _chunkOLNIPTB3cjs.proxyOf.call(void 0, d, ch), uniform: null, deep: d });
|
|
4868
4870
|
continue;
|
|
@@ -5114,7 +5116,7 @@ var ImageEditorController = (_class12 = class {
|
|
|
5114
5116
|
this.effectsEngine.subscribe(() => this.queueEffectRefresh("incomplete"));
|
|
5115
5117
|
if (options.effects) this.effects.set(options.effects);
|
|
5116
5118
|
if (options.segmentation) this.segmentation = options.segmentation;
|
|
5117
|
-
if (options.selectionWorker) this.selectionWorker = new (0,
|
|
5119
|
+
if (options.selectionWorker) this.selectionWorker = new (0, _chunkL52VMQZScjs.SelectionWorkerClient)(options.selectionWorker);
|
|
5118
5120
|
if (options.openDocument) this.documentOpener = options.openDocument;
|
|
5119
5121
|
this.maxHistoryDepth = _nullishCoalesce(options.maxHistoryDepth, () => ( 50));
|
|
5120
5122
|
if (options.textShaper !== void 0) this.textShaperValue = options.textShaper;
|
|
@@ -5150,7 +5152,7 @@ var ImageEditorController = (_class12 = class {
|
|
|
5150
5152
|
activeLayerId: null,
|
|
5151
5153
|
activeTarget: "pixels",
|
|
5152
5154
|
outputOpacity: 1,
|
|
5153
|
-
paint: { brush: { ..._chunkPQ3H2AANcjs.DEFAULT_BRUSH }, foreground: "#000000", background: "#ffffff", paint: { type: "color", color: "#000000" }, mixer: { ..._chunkPQ3H2AANcjs.DEFAULT_MIXER }, mixerLoad: _chunkPQ3H2AANcjs.EMPTY_MIXER_LOAD, retouch: { ...
|
|
5155
|
+
paint: { brush: { ..._chunkPQ3H2AANcjs.DEFAULT_BRUSH }, foreground: "#000000", background: "#ffffff", paint: { type: "color", color: "#000000" }, mixer: { ..._chunkPQ3H2AANcjs.DEFAULT_MIXER }, mixerLoad: _chunkPQ3H2AANcjs.EMPTY_MIXER_LOAD, retouch: { ..._chunkYF3YZZ6Gcjs.DEFAULT_RETOUCH }, cloneSource: null, cloneTransform: { ..._chunkYF3YZZ6Gcjs.IDENTITY_CLONE_TRANSFORM } },
|
|
5154
5156
|
fit: _nullishCoalesce(options.fit, () => ( "margin"))
|
|
5155
5157
|
};
|
|
5156
5158
|
if (options.image instanceof Object && "width" in options.image) {
|
|
@@ -5311,7 +5313,7 @@ var ImageEditorController = (_class12 = class {
|
|
|
5311
5313
|
*/
|
|
5312
5314
|
setSelectionWorker(factory) {
|
|
5313
5315
|
_optionalChain([this, 'access', _163 => _163.selectionWorker, 'optionalAccess', _164 => _164.terminate, 'call', _165 => _165()]);
|
|
5314
|
-
this.selectionWorker = factory ? new (0,
|
|
5316
|
+
this.selectionWorker = factory ? new (0, _chunkL52VMQZScjs.SelectionWorkerClient)(factory) : null;
|
|
5315
5317
|
}
|
|
5316
5318
|
/** Sets (or with `null` removes) how new documents are opened (see `DocumentOpener`). Not an edit. */
|
|
5317
5319
|
setDocumentOpener(opener) {
|
|
@@ -5389,7 +5391,7 @@ var ImageEditorController = (_class12 = class {
|
|
|
5389
5391
|
async runSelectionJob(job, pixels, options = {}) {
|
|
5390
5392
|
_optionalChain([options, 'access', _167 => _167.signal, 'optionalAccess', _168 => _168.throwIfAborted, 'call', _169 => _169()]);
|
|
5391
5393
|
if (this.selectionWorker) return this.selectionWorker.run(job, pixels, options);
|
|
5392
|
-
const result =
|
|
5394
|
+
const result = _chunkL52VMQZScjs.runSelectionJob.call(void 0, job, pixels, options.onProgress);
|
|
5393
5395
|
_optionalChain([options, 'access', _170 => _170.signal, 'optionalAccess', _171 => _171.throwIfAborted, 'call', _172 => _172()]);
|
|
5394
5396
|
return result;
|
|
5395
5397
|
}
|
|
@@ -7478,7 +7480,7 @@ var ImageEditorController = (_class12 = class {
|
|
|
7478
7480
|
/** Brush settings, colours and tool options of the paint tools (view state, no undo). */
|
|
7479
7481
|
setPaintOptions(options) {
|
|
7480
7482
|
const cur = this.state.paint;
|
|
7481
|
-
const retouch = options.retouch ?
|
|
7483
|
+
const retouch = options.retouch ? _chunkYF3YZZ6Gcjs.normalizeRetouch.call(void 0, options.retouch, cur.retouch) : cur.retouch;
|
|
7482
7484
|
const cloneSource = cur.cloneSource && retouch.aligned !== cur.retouch.aligned ? { ...cur.cloneSource, offset: null } : cur.cloneSource;
|
|
7483
7485
|
let source = cur.paint;
|
|
7484
7486
|
let foreground = options.foreground !== void 0 ? toHex(parseColor(options.foreground)) : cur.foreground;
|
|
@@ -7545,7 +7547,7 @@ var ImageEditorController = (_class12 = class {
|
|
|
7545
7547
|
*/
|
|
7546
7548
|
setCloneTransform(t) {
|
|
7547
7549
|
const cur = this.state.paint.cloneTransform;
|
|
7548
|
-
const next = t ? { ...cur, ...t } : { ...
|
|
7550
|
+
const next = t ? { ...cur, ...t } : { ..._chunkYF3YZZ6Gcjs.IDENTITY_CLONE_TRANSFORM };
|
|
7549
7551
|
for (const k of ["scaleX", "scaleY"]) {
|
|
7550
7552
|
const v = next[k];
|
|
7551
7553
|
if (!Number.isFinite(v) || Math.abs(v) < 0.01 || Math.abs(v) > 10) throw new (0, _chunkQE7D7TZRcjs.LayerOperationError)(`${k} must be a scale factor between 0.01 and 10 in size (negative flips), not ${String(v)}.`);
|
|
@@ -7653,11 +7655,11 @@ var ImageEditorController = (_class12 = class {
|
|
|
7653
7655
|
}
|
|
7654
7656
|
/** A retouching stroke's start: its settings, what it samples and how it composites. */
|
|
7655
7657
|
retouchStroke(tool, init, brush, target, apply) {
|
|
7656
|
-
const settings =
|
|
7658
|
+
const settings = _chunkYF3YZZ6Gcjs.normalizeRetouch.call(void 0, _nullishCoalesce(init.retouch, () => ( {})), this.state.paint.retouch);
|
|
7657
7659
|
const mask = target.channel !== "pixels";
|
|
7658
7660
|
if (tool === "sponge" && mask) throw new (0, _chunkQE7D7TZRcjs.LayerOperationError)("The Sponge changes saturation, and a mask has none; target pixels (channel pixels), or use dodge or burn on the mask.");
|
|
7659
|
-
if (tool === "smudge") return { kind: "dabs", create: (pixels) => new (0,
|
|
7660
|
-
if (tool === "sponge") return { kind: "dabs", create: (pixels) => new (0,
|
|
7661
|
+
if (tool === "smudge") return { kind: "dabs", create: (pixels) => new (0, _chunkYF3YZZ6Gcjs.RetouchDabStroke)(brush, pixels, _chunkYF3YZZ6Gcjs.smudgeEffect.call(void 0, brush, settings.strength)) };
|
|
7662
|
+
if (tool === "sponge") return { kind: "dabs", create: (pixels) => new (0, _chunkYF3YZZ6Gcjs.RetouchDabStroke)(brush, pixels, _chunkYF3YZZ6Gcjs.spongeEffect.call(void 0, brush, settings.spongeMode === "saturate", settings.vibrance)) };
|
|
7661
7663
|
const retouchApply = {
|
|
7662
7664
|
opacity: tool === "clone" || tool === "heal" || tool === "history" ? brush.opacity : tool === "blur" || tool === "sharpen" ? brush.opacity * settings.strength : 1,
|
|
7663
7665
|
blend: tool === "clone" && !mask ? brush.blend : "normal",
|
|
@@ -7667,7 +7669,7 @@ var ImageEditorController = (_class12 = class {
|
|
|
7667
7669
|
};
|
|
7668
7670
|
const coverage = new (0, _chunkPQ3H2AANcjs.StrokeCoverage)(brush);
|
|
7669
7671
|
if (tool === "dodge" || tool === "burn") {
|
|
7670
|
-
const paint2 = { kind: "tone", tone:
|
|
7672
|
+
const paint2 = { kind: "tone", tone: _chunkYF3YZZ6Gcjs.toneOf.call(void 0, tool, settings) };
|
|
7671
7673
|
return { kind: "coverage", coverage, apply: retouchApply, start: () => {
|
|
7672
7674
|
}, paint: () => paint2 };
|
|
7673
7675
|
}
|
|
@@ -7675,11 +7677,11 @@ var ImageEditorController = (_class12 = class {
|
|
|
7675
7677
|
const n = target.surface.channels;
|
|
7676
7678
|
const depth = !mask && this.bitDepth !== 8 ? this.bitDepth : null;
|
|
7677
7679
|
const m = 6;
|
|
7678
|
-
const filtered = new (0,
|
|
7680
|
+
const filtered = new (0, _chunkYF3YZZ6Gcjs.TilePixelSource)(
|
|
7679
7681
|
(tx, ty) => {
|
|
7680
7682
|
const r = { x: tx * _chunk474IQG74cjs.TILE - m, y: ty * _chunk474IQG74cjs.TILE - m, width: _chunk474IQG74cjs.TILE + 2 * m, height: _chunk474IQG74cjs.TILE + 2 * m };
|
|
7681
7683
|
const d = workRegionOf(target.surface, r, depth);
|
|
7682
|
-
|
|
7684
|
+
_chunkYF3YZZ6Gcjs.retouchFilter.call(void 0, d, r.width, r.height, n, tool, 2, 1.2);
|
|
7683
7685
|
const out = new Float32Array(_chunk474IQG74cjs.TILE * _chunk474IQG74cjs.TILE * n);
|
|
7684
7686
|
for (let y = 0; y < _chunk474IQG74cjs.TILE; y++) out.set(d.subarray(((y + m) * r.width + m) * n, ((y + m) * r.width + m + _chunk474IQG74cjs.TILE) * n), y * _chunk474IQG74cjs.TILE * n);
|
|
7685
7687
|
return out;
|
|
@@ -7701,14 +7703,14 @@ var ImageEditorController = (_class12 = class {
|
|
|
7701
7703
|
if (!surface) throw new (0, _chunkQE7D7TZRcjs.LayerOperationError)(`Layer "${target.id}" had no ${target.channel === "mask" ? "mask" : "pixels"} in that state.`);
|
|
7702
7704
|
const offset2 = then.type === "pixel" ? then.offset : { x: 0, y: 0 };
|
|
7703
7705
|
const depth = !mask && this.bitDepth !== 8 ? this.bitDepth : null;
|
|
7704
|
-
const source2 = depth ? new (0,
|
|
7706
|
+
const source2 = depth ? new (0, _chunkYF3YZZ6Gcjs.TilePixelSource)((tx, ty) => workTileOf(surface.tiles.get(_chunk474IQG74cjs.tileKey.call(void 0, tx, ty))), 4, offset2) : this.surfaceSource(surface, offset2);
|
|
7705
7707
|
const paint2 = { kind: "source", source: source2, dx: 0, dy: 0 };
|
|
7706
7708
|
return { kind: "coverage", coverage, apply: retouchApply, start: () => {
|
|
7707
7709
|
}, paint: () => paint2 };
|
|
7708
7710
|
}
|
|
7709
7711
|
const sample = mask ? "current" : settings.sample;
|
|
7710
7712
|
const deep = !mask && this.bitDepth !== 8 ? this.bitDepth : null;
|
|
7711
|
-
const own = deep ? new (0,
|
|
7713
|
+
const own = deep ? new (0, _chunkYF3YZZ6Gcjs.TilePixelSource)((tx, ty) => workTileOf(target.surface.tiles.get(_chunk474IQG74cjs.tileKey.call(void 0, tx, ty))), 4, target.offset) : this.surfaceSource(target.surface, target.offset);
|
|
7712
7714
|
const source = sample === "current" ? own : this.compositeSource(sample === "all" ? null : target.id, deep);
|
|
7713
7715
|
const pad = (r, m) => ({ x: r.x - m, y: r.y - m, width: r.width + 2 * m, height: r.height + 2 * m });
|
|
7714
7716
|
const covered = (cov, r) => {
|
|
@@ -7729,14 +7731,14 @@ var ImageEditorController = (_class12 = class {
|
|
|
7729
7731
|
paint: () => trail,
|
|
7730
7732
|
finalPaint: (cov) => {
|
|
7731
7733
|
if (!cov.bounds) return null;
|
|
7732
|
-
const win =
|
|
7734
|
+
const win = _chunkYF3YZZ6Gcjs.spotHealWindow.call(void 0, cov.bounds, { width, height });
|
|
7733
7735
|
if (win.width <= 0 || win.height <= 0) return null;
|
|
7734
|
-
const img =
|
|
7736
|
+
const img = _chunkYF3YZZ6Gcjs.readSourceRegion.call(void 0, source, win);
|
|
7735
7737
|
const hole = covered(cov, win);
|
|
7736
|
-
const healed =
|
|
7738
|
+
const healed = _chunkYF3YZZ6Gcjs.spotHealPixels.call(void 0, win.width, win.height, img, hole, brush.size, settings.spotType, (off) => {
|
|
7737
7739
|
patch = off ? { x: off[0], y: off[1] } : null;
|
|
7738
7740
|
});
|
|
7739
|
-
return { kind: "source", source: new (0,
|
|
7741
|
+
return { kind: "source", source: new (0, _chunkYF3YZZ6Gcjs.RegionPixelSource)(win, healed), dx: 0, dy: 0 };
|
|
7740
7742
|
},
|
|
7741
7743
|
result: () => ({ spotHeal: { offset: patch } })
|
|
7742
7744
|
};
|
|
@@ -7747,7 +7749,7 @@ var ImageEditorController = (_class12 = class {
|
|
|
7747
7749
|
let offset = { x: 0, y: 0 };
|
|
7748
7750
|
let first = { x: 0, y: 0 };
|
|
7749
7751
|
const xf = this.state.paint.cloneTransform;
|
|
7750
|
-
const transformed =
|
|
7752
|
+
const transformed = _chunkYF3YZZ6Gcjs.isIdentityCloneTransform.call(void 0, xf) ? null : new (0, _chunkYF3YZZ6Gcjs.TransformedPixelSource)(source, (x, y) => _chunkYF3YZZ6Gcjs.cloneSamplePoint.call(void 0, xf, cs, { x: cs.x - offset.x, y: cs.y - offset.y }, x, y));
|
|
7751
7753
|
const paint = () => transformed ? { kind: "source", source: transformed, dx: 0, dy: 0 } : { kind: "source", source, dx: offset.x, dy: offset.y };
|
|
7752
7754
|
return {
|
|
7753
7755
|
kind: "coverage",
|
|
@@ -7762,16 +7764,16 @@ var ImageEditorController = (_class12 = class {
|
|
|
7762
7764
|
finalPaint: tool === "heal" ? (cov) => {
|
|
7763
7765
|
if (!cov.bounds) return null;
|
|
7764
7766
|
const g = pad(cov.bounds, 2);
|
|
7765
|
-
const src = transformed ?
|
|
7766
|
-
const dst =
|
|
7767
|
-
return { kind: "source", source: new (0,
|
|
7767
|
+
const src = transformed ? _chunkYF3YZZ6Gcjs.readSourceRegion.call(void 0, transformed, g) : _chunkYF3YZZ6Gcjs.readSourceRegion.call(void 0, source, g, offset.x, offset.y);
|
|
7768
|
+
const dst = _chunkYF3YZZ6Gcjs.readSourceRegion.call(void 0, source, g);
|
|
7769
|
+
return { kind: "source", source: new (0, _chunkYF3YZZ6Gcjs.RegionPixelSource)(g, _chunkYF3YZZ6Gcjs.healPixels.call(void 0, g.width, g.height, src, dst, covered(cov, g))), dx: 0, dy: 0 };
|
|
7768
7770
|
} : void 0,
|
|
7769
7771
|
result: () => ({ clone: { offset: { ...offset }, source: { x: first.x + offset.x, y: first.y + offset.y }, aligned: settings.aligned } })
|
|
7770
7772
|
};
|
|
7771
7773
|
}
|
|
7772
7774
|
/** A pixel source over a surface (layer pixels or a mask) in layer space at `offset`. */
|
|
7773
7775
|
surfaceSource(surface, offset) {
|
|
7774
|
-
return new (0,
|
|
7776
|
+
return new (0, _chunkYF3YZZ6Gcjs.TilePixelSource)((tx, ty) => _nullishCoalesce(_optionalChain([surface, 'access', _296 => _296.tiles, 'access', _297 => _297.get, 'call', _298 => _298(_chunk474IQG74cjs.tileKey.call(void 0, tx, ty)), 'optionalAccess', _299 => _299.data]), () => ( (surface.defaultValue ? defaultTile(surface) : null))), surface.channels, offset);
|
|
7775
7777
|
}
|
|
7776
7778
|
/** A pixel source over the composite of the current layers (through `throughId` and below, or all of them), as it is now. */
|
|
7777
7779
|
compositeSource(throughId, depth = null) {
|
|
@@ -7779,7 +7781,7 @@ var ImageEditorController = (_class12 = class {
|
|
|
7779
7781
|
const layers = throughId ? layersThrough(stack, throughId) : stack;
|
|
7780
7782
|
const sources = this.compositorSources();
|
|
7781
7783
|
if (depth) {
|
|
7782
|
-
return new (0,
|
|
7784
|
+
return new (0, _chunkYF3YZZ6Gcjs.TilePixelSource)((tx, ty) => {
|
|
7783
7785
|
const w = _chunkQE7D7TZRcjs.compositeDeep.call(void 0, layers, { x: tx * _chunk474IQG74cjs.TILE, y: ty * _chunk474IQG74cjs.TILE, width: _chunk474IQG74cjs.TILE, height: _chunk474IQG74cjs.TILE }, sources, depth);
|
|
7784
7786
|
for (let i = 0; i < w.length; i += 4) {
|
|
7785
7787
|
if (depth === 32) for (let c = 0; c < 3; c++) w[i + c] = _chunkOLNIPTB3cjs.srgbEncode.call(void 0, w[i + c]);
|
|
@@ -7789,7 +7791,7 @@ var ImageEditorController = (_class12 = class {
|
|
|
7789
7791
|
}, 4);
|
|
7790
7792
|
}
|
|
7791
7793
|
const compositor = new (0, _chunkQE7D7TZRcjs.LayerCompositor)();
|
|
7792
|
-
return new (0,
|
|
7794
|
+
return new (0, _chunkYF3YZZ6Gcjs.TilePixelSource)((tx, ty) => compositor.tile(layers, tx, ty, sources), 4);
|
|
7793
7795
|
}
|
|
7794
7796
|
/** A Mixer Brush stroke's start: the settings, and the load (refilled when asked or set to). */
|
|
7795
7797
|
mixerStroke(init, brush) {
|
|
@@ -7903,9 +7905,46 @@ var ImageEditorController = (_class12 = class {
|
|
|
7903
7905
|
* (PatchMatch, as the Spot Healing Brush's content-aware mode), blended by the selection's
|
|
7904
7906
|
* coverage. `output` `current` paints into the layer; `new-layer` puts the fill on a new layer
|
|
7905
7907
|
* above it. Samples within `sampleRadius` px of the selection (default its larger side, at
|
|
7906
|
-
* least 32). Deterministic for a `seed`. One undo step.
|
|
7908
|
+
* least 32), or from the given sampling area. Deterministic for a `seed`. One undo step.
|
|
7909
|
+
* 8-bit documents only for now. Runs here; see `contentAwareFillAsync` for the worker.
|
|
7907
7910
|
*/
|
|
7908
7911
|
contentAwareFill(options = {}) {
|
|
7912
|
+
const plan = this.prepareContentAwareFill(options);
|
|
7913
|
+
const filled = _chunkMQDIP4CFcjs.contentAwareFill.call(void 0, plan.window.width, plan.window.height, 4, plan.before, plan.hole, { seed: _nullishCoalesce(options.seed, () => ( 0)), exclude: plan.exclude });
|
|
7914
|
+
return this.applyContentAwareFill(plan, Uint8ClampedArray.from(filled), _nullishCoalesce(options.output, () => ( "current")));
|
|
7915
|
+
}
|
|
7916
|
+
/**
|
|
7917
|
+
* `contentAwareFill` with the synthesis in the selection worker when there is one, with
|
|
7918
|
+
* `signal` and `onProgress`. The layer is checked again before the result lands.
|
|
7919
|
+
*/
|
|
7920
|
+
async contentAwareFillAsync(options = {}) {
|
|
7921
|
+
const plan = this.prepareContentAwareFill(options);
|
|
7922
|
+
const filled = await this.synthesiseFill(plan, _nullishCoalesce(options.seed, () => ( 0)), options);
|
|
7923
|
+
return this.applyContentAwareFill(plan, filled, _nullishCoalesce(options.output, () => ( "current")));
|
|
7924
|
+
}
|
|
7925
|
+
/**
|
|
7926
|
+
* The fill without changing anything: the window, its pixels before and after (RGBA, the fill
|
|
7927
|
+
* blended by the selection's coverage) and the sampling area used, for a preview.
|
|
7928
|
+
*/
|
|
7929
|
+
async previewContentAwareFill(options = {}) {
|
|
7930
|
+
const plan = this.prepareContentAwareFill(options);
|
|
7931
|
+
const filled = await this.synthesiseFill(plan, _nullishCoalesce(options.seed, () => ( 0)), options);
|
|
7932
|
+
return { plan, after: this.blendFill(plan, filled, "current") };
|
|
7933
|
+
}
|
|
7934
|
+
async synthesiseFill(plan, seed, options) {
|
|
7935
|
+
const { width, height } = plan.window;
|
|
7936
|
+
const { pixels } = await this.runSelectionJob(
|
|
7937
|
+
{ op: "fill", hole: plan.hole, exclude: plan.exclude, seed },
|
|
7938
|
+
{ width, height, data: plan.before },
|
|
7939
|
+
options
|
|
7940
|
+
);
|
|
7941
|
+
return pixels;
|
|
7942
|
+
}
|
|
7943
|
+
/**
|
|
7944
|
+
* Checks and gathers what a Content-Aware Fill needs: the selection, the 8-bit pixel layer, the
|
|
7945
|
+
* window around the selection (and the sampling area), and which pixels it may copy from.
|
|
7946
|
+
*/
|
|
7947
|
+
prepareContentAwareFill(options = {}) {
|
|
7909
7948
|
const sel = this.state.selection;
|
|
7910
7949
|
if (!_optionalChain([sel, 'optionalAccess', _304 => _304.bounds])) throw new (0, _chunkQE7D7TZRcjs.LayerOperationError)("Nothing is selected; select what to remove, then fill it.");
|
|
7911
7950
|
if (this.bitDepth !== 8) throw new (0, _chunkQE7D7TZRcjs.LayerOperationError)("Content-Aware Fill works on 8-bit documents for now; set_bit_depth 8 first, or use spot_heal.");
|
|
@@ -7914,33 +7953,70 @@ var ImageEditorController = (_class12 = class {
|
|
|
7914
7953
|
const target = this.paintTarget(options.layerId, "pixels", "fill");
|
|
7915
7954
|
const { width, height } = this.naturalSize;
|
|
7916
7955
|
const b = sel.bounds;
|
|
7917
|
-
|
|
7918
|
-
|
|
7919
|
-
|
|
7920
|
-
|
|
7921
|
-
|
|
7922
|
-
|
|
7923
|
-
|
|
7924
|
-
|
|
7925
|
-
|
|
7926
|
-
|
|
7927
|
-
|
|
7956
|
+
let area = _nullishCoalesce(options.samplingArea, () => ( null));
|
|
7957
|
+
if (!area && options.samplingChannelId) area = this.requireChannel(options.samplingChannelId).mask;
|
|
7958
|
+
if (!area && _optionalChain([options, 'access', _305 => _305.sampleRects, 'optionalAccess', _306 => _306.length])) {
|
|
7959
|
+
for (const r of options.sampleRects) area = _chunkQYLWG22Ncjs.combineSelections.call(void 0, area, _chunkL52VMQZScjs.rectSelection.call(void 0, width, height, r, { antiAlias: false }), "add");
|
|
7960
|
+
}
|
|
7961
|
+
if (area && !area.bounds) throw new (0, _chunkQE7D7TZRcjs.LayerOperationError)("The sampling area is empty; paint or give an area to sample from.");
|
|
7962
|
+
let win;
|
|
7963
|
+
if (_optionalChain([area, 'optionalAccess', _307 => _307.bounds])) {
|
|
7964
|
+
const a = area.bounds;
|
|
7965
|
+
const x0 = Math.max(0, Math.min(b.x - 8, a.x));
|
|
7966
|
+
const y0 = Math.max(0, Math.min(b.y - 8, a.y));
|
|
7967
|
+
win = { x: x0, y: y0, width: Math.min(width, Math.max(b.x + b.width + 8, a.x + a.width)) - x0, height: Math.min(height, Math.max(b.y + b.height + 8, a.y + a.height)) - y0 };
|
|
7968
|
+
} else {
|
|
7969
|
+
const margin = Math.max(32, Math.round(_nullishCoalesce(options.sampleRadius, () => ( Math.max(b.width, b.height)))));
|
|
7970
|
+
const x0 = Math.max(0, b.x - margin);
|
|
7971
|
+
const y0 = Math.max(0, b.y - margin);
|
|
7972
|
+
win = { x: x0, y: y0, width: Math.min(width, b.x + b.width + margin) - x0, height: Math.min(height, b.y + b.height + margin) - y0 };
|
|
7973
|
+
}
|
|
7974
|
+
if (win.width * win.height > 16e6) throw new (0, _chunkQE7D7TZRcjs.LayerOperationError)("The area to fill and sample is too large (over 16 MP); fill a smaller selection or sample from a smaller area.");
|
|
7975
|
+
const before = _chunk474IQG74cjs.readRegion.call(void 0, target.surface, { x: win.x - target.offset.x, y: win.y - target.offset.y, width: win.width, height: win.height });
|
|
7976
|
+
const n = win.width * win.height;
|
|
7977
|
+
const coverage = new Uint8Array(n);
|
|
7978
|
+
const hole = new Uint8Array(n);
|
|
7979
|
+
const selData = sel.data;
|
|
7928
7980
|
for (let y = 0; y < win.height; y++) {
|
|
7929
7981
|
for (let x = 0; x < win.width; x++) {
|
|
7930
|
-
const c =
|
|
7982
|
+
const c = selData[(win.y + y) * sel.width + win.x + x];
|
|
7931
7983
|
coverage[y * win.width + x] = c;
|
|
7932
7984
|
hole[y * win.width + x] = c > 0 ? 1 : 0;
|
|
7933
7985
|
}
|
|
7934
7986
|
}
|
|
7935
|
-
|
|
7987
|
+
let exclude = null;
|
|
7988
|
+
if (area || _optionalChain([options, 'access', _308 => _308.excludeRects, 'optionalAccess', _309 => _309.length])) {
|
|
7989
|
+
exclude = new Uint8Array(n);
|
|
7990
|
+
if (area) {
|
|
7991
|
+
const ad = area.data;
|
|
7992
|
+
for (let y = 0; y < win.height; y++) for (let x = 0; x < win.width; x++) if (ad[(win.y + y) * width + win.x + x] < 128) exclude[y * win.width + x] = 1;
|
|
7993
|
+
}
|
|
7994
|
+
for (const r of _nullishCoalesce(options.excludeRects, () => ( []))) {
|
|
7995
|
+
for (let y = Math.max(0, Math.floor(r.y) - win.y); y < Math.min(win.height, Math.ceil(r.y + r.height) - win.y); y++) {
|
|
7996
|
+
for (let x = Math.max(0, Math.floor(r.x) - win.x); x < Math.min(win.width, Math.ceil(r.x + r.width) - win.x); x++) exclude[y * win.width + x] = 1;
|
|
7997
|
+
}
|
|
7998
|
+
}
|
|
7999
|
+
}
|
|
8000
|
+
return { layerId: target.id, window: win, bounds: { ...b }, before, hole, coverage, exclude };
|
|
8001
|
+
}
|
|
8002
|
+
/** The window's pixels with `filled` blended in by the coverage (`current`), or the fill alone, its alpha by the coverage (`new-layer`). */
|
|
8003
|
+
blendFill(plan, filled, output) {
|
|
8004
|
+
const { before, coverage } = plan;
|
|
7936
8005
|
const out = new Uint8ClampedArray(before.length);
|
|
7937
8006
|
for (let i = 0; i < coverage.length; i++) {
|
|
7938
|
-
const k = coverage[i];
|
|
8007
|
+
const k = coverage[i] / 255;
|
|
7939
8008
|
for (let c = 0; c < 4; c++) {
|
|
7940
8009
|
const p = i * 4 + c;
|
|
7941
8010
|
out[p] = output === "new-layer" ? c === 3 ? Math.round(filled[p] * k) : filled[p] : before[p] + (filled[p] - before[p]) * k;
|
|
7942
8011
|
}
|
|
7943
8012
|
}
|
|
8013
|
+
return out;
|
|
8014
|
+
}
|
|
8015
|
+
/** Puts a computed fill into the document as one undo step. */
|
|
8016
|
+
applyContentAwareFill(plan, filled, output) {
|
|
8017
|
+
const target = this.paintTarget(plan.layerId, "pixels", "fill");
|
|
8018
|
+
const { window: win, bounds: b } = plan;
|
|
8019
|
+
const out = this.blendFill(plan, filled, output);
|
|
7944
8020
|
if (output === "new-layer") {
|
|
7945
8021
|
const crop = { x: b.x - win.x, y: b.y - win.y, width: b.width, height: b.height };
|
|
7946
8022
|
const data = new Uint8ClampedArray(b.width * b.height * 4);
|
|
@@ -7948,6 +8024,7 @@ var ImageEditorController = (_class12 = class {
|
|
|
7948
8024
|
const id = this.addPixelLayer({ name: "Content-Aware Fill", pixels: { width: b.width, height: b.height, data }, x: b.x, y: b.y, aboveId: target.id });
|
|
7949
8025
|
return { layerId: id, bounds: { ...b }, output };
|
|
7950
8026
|
}
|
|
8027
|
+
const layerRect = { x: win.x - target.offset.x, y: win.y - target.offset.y, width: win.width, height: win.height };
|
|
7951
8028
|
const surface = _chunk474IQG74cjs.writeRegion.call(void 0, target.surface, layerRect, out);
|
|
7952
8029
|
this.commitLayers(_chunkUOGKSVRQcjs.mapLayer.call(void 0, this.state.layers, target.id, (l) => this.withSurface(l, "pixels", surface)));
|
|
7953
8030
|
return { layerId: target.id, bounds: { ...b }, output };
|
|
@@ -7972,8 +8049,8 @@ var ImageEditorController = (_class12 = class {
|
|
|
7972
8049
|
*/
|
|
7973
8050
|
copyPixels(options = {}) {
|
|
7974
8051
|
const { width, height } = this.naturalSize;
|
|
7975
|
-
const sel = _optionalChain([this, 'access',
|
|
7976
|
-
const rect = _nullishCoalesce(_optionalChain([sel, 'optionalAccess',
|
|
8052
|
+
const sel = _optionalChain([this, 'access', _310 => _310.state, 'access', _311 => _311.selection, 'optionalAccess', _312 => _312.bounds]) ? this.state.selection : null;
|
|
8053
|
+
const rect = _nullishCoalesce(_optionalChain([sel, 'optionalAccess', _313 => _313.bounds]), () => ( { x: 0, y: 0, width, height }));
|
|
7977
8054
|
let data;
|
|
7978
8055
|
if (options.merged) {
|
|
7979
8056
|
data = new Uint8ClampedArray(this.compositePixels(rect).data);
|
|
@@ -8013,7 +8090,7 @@ var ImageEditorController = (_class12 = class {
|
|
|
8013
8090
|
pastePixels(mode = "new-layer", image = this.clipboard) {
|
|
8014
8091
|
if (!image) throw new (0, _chunkQE7D7TZRcjs.LayerOperationError)("The clipboard is empty; copy_pixels first.");
|
|
8015
8092
|
if (!PASTE_MODES.includes(mode)) throw new (0, _chunkQE7D7TZRcjs.LayerOperationError)(`Unknown paste mode "${String(mode)}"; use ${PASTE_MODES.join(", ")}.`);
|
|
8016
|
-
const sel = _optionalChain([this, 'access',
|
|
8093
|
+
const sel = _optionalChain([this, 'access', _314 => _314.state, 'access', _315 => _315.selection, 'optionalAccess', _316 => _316.bounds]) ? this.state.selection : null;
|
|
8017
8094
|
if ((mode === "into" || mode === "outside") && !sel) throw new (0, _chunkQE7D7TZRcjs.LayerOperationError)(`Paste ${mode === "into" ? "Into" : "Outside"} needs a selection; select where it goes first.`);
|
|
8018
8095
|
const { width, height } = this.naturalSize;
|
|
8019
8096
|
let x;
|
|
@@ -8022,7 +8099,7 @@ var ImageEditorController = (_class12 = class {
|
|
|
8022
8099
|
x = image.x;
|
|
8023
8100
|
y = image.y;
|
|
8024
8101
|
} else {
|
|
8025
|
-
const frame = _nullishCoalesce(_optionalChain([sel, 'optionalAccess',
|
|
8102
|
+
const frame = _nullishCoalesce(_optionalChain([sel, 'optionalAccess', _317 => _317.bounds]), () => ( { x: 0, y: 0, width, height }));
|
|
8026
8103
|
x = Math.round(frame.x + (frame.width - image.width) / 2);
|
|
8027
8104
|
y = Math.round(frame.y + (frame.height - image.height) / 2);
|
|
8028
8105
|
}
|
|
@@ -8039,8 +8116,8 @@ var ImageEditorController = (_class12 = class {
|
|
|
8039
8116
|
if (!(opacity >= 0 && opacity <= 1)) throw new (0, _chunkQE7D7TZRcjs.LayerOperationError)("opacity must be from 0 to 1.");
|
|
8040
8117
|
const blend = _nullishCoalesce(_chunkQE7D7TZRcjs.parseBlend.call(void 0, options.blend), () => ( "normal"));
|
|
8041
8118
|
const quickMask = target.channel === "quick-mask";
|
|
8042
|
-
const sel = _nullishCoalesce(coverageMask, () => ( (!quickMask && options.useSelection !== false && _optionalChain([this, 'access',
|
|
8043
|
-
const region = _nullishCoalesce(_optionalChain([sel, 'optionalAccess',
|
|
8119
|
+
const sel = _nullishCoalesce(coverageMask, () => ( (!quickMask && options.useSelection !== false && _optionalChain([this, 'access', _318 => _318.state, 'access', _319 => _319.selection, 'optionalAccess', _320 => _320.bounds]) ? this.state.selection : null)));
|
|
8120
|
+
const region = _nullishCoalesce(_optionalChain([sel, 'optionalAccess', _321 => _321.bounds]), () => ( { x: 0, y: 0, width, height }));
|
|
8044
8121
|
const coverage = new (0, _chunkPQ3H2AANcjs.CoverageMap)();
|
|
8045
8122
|
const ones = new Float32Array(region.width * region.height);
|
|
8046
8123
|
if (sel) {
|
|
@@ -8165,7 +8242,7 @@ var ImageEditorController = (_class12 = class {
|
|
|
8165
8242
|
placeLayer(layers, node, where) {
|
|
8166
8243
|
if (where.aboveId) {
|
|
8167
8244
|
const loc = _chunkUOGKSVRQcjs.findLayer.call(void 0, layers, where.aboveId);
|
|
8168
|
-
if (loc) return _chunkUOGKSVRQcjs.insertLayer.call(void 0, layers, node, _nullishCoalesce(_optionalChain([loc, 'access',
|
|
8245
|
+
if (loc) return _chunkUOGKSVRQcjs.insertLayer.call(void 0, layers, node, _nullishCoalesce(_optionalChain([loc, 'access', _322 => _322.parent, 'optionalAccess', _323 => _323.id]), () => ( null)), loc.index + 1);
|
|
8169
8246
|
}
|
|
8170
8247
|
if (where.parentId) {
|
|
8171
8248
|
const loc = _chunkUOGKSVRQcjs.findLayer.call(void 0, layers, where.parentId);
|
|
@@ -8176,11 +8253,11 @@ var ImageEditorController = (_class12 = class {
|
|
|
8176
8253
|
const at = Math.max(0, Math.min(nodes.length, Math.round(where.adjustmentIndex)));
|
|
8177
8254
|
if (at < nodes.length) {
|
|
8178
8255
|
const loc = _chunkUOGKSVRQcjs.findLayer.call(void 0, layers, nodes[at].id);
|
|
8179
|
-
return _chunkUOGKSVRQcjs.insertLayer.call(void 0, layers, node, _nullishCoalesce(_optionalChain([loc, 'access',
|
|
8256
|
+
return _chunkUOGKSVRQcjs.insertLayer.call(void 0, layers, node, _nullishCoalesce(_optionalChain([loc, 'access', _324 => _324.parent, 'optionalAccess', _325 => _325.id]), () => ( null)), loc.index);
|
|
8180
8257
|
}
|
|
8181
8258
|
if (nodes.length) {
|
|
8182
8259
|
const loc = _chunkUOGKSVRQcjs.findLayer.call(void 0, layers, nodes[nodes.length - 1].id);
|
|
8183
|
-
return _chunkUOGKSVRQcjs.insertLayer.call(void 0, layers, node, _nullishCoalesce(_optionalChain([loc, 'access',
|
|
8260
|
+
return _chunkUOGKSVRQcjs.insertLayer.call(void 0, layers, node, _nullishCoalesce(_optionalChain([loc, 'access', _326 => _326.parent, 'optionalAccess', _327 => _327.id]), () => ( null)), loc.index + 1);
|
|
8184
8261
|
}
|
|
8185
8262
|
}
|
|
8186
8263
|
return _chunkUOGKSVRQcjs.insertLayer.call(void 0, layers, node, null, this.defaultInsertIndex(layers));
|
|
@@ -8219,7 +8296,7 @@ var ImageEditorController = (_class12 = class {
|
|
|
8219
8296
|
enabled: spec.enabled,
|
|
8220
8297
|
opacity: spec.opacity,
|
|
8221
8298
|
blend: spec.blend,
|
|
8222
|
-
mask: _nullishCoalesce(spec.mask, () => ( (spec.useSelection && _optionalChain([this, 'access',
|
|
8299
|
+
mask: _nullishCoalesce(spec.mask, () => ( (spec.useSelection && _optionalChain([this, 'access', _328 => _328.state, 'access', _329 => _329.selection, 'optionalAccess', _330 => _330.bounds]) ? _chunkQE7D7TZRcjs.layerMaskFromSelection.call(void 0, this.state.selection) : void 0)))
|
|
8223
8300
|
});
|
|
8224
8301
|
while (ids.has(layer.id)) layer.id = _chunkQE7D7TZRcjs.newLayerId.call(void 0, "adj");
|
|
8225
8302
|
const { width, height } = this.naturalSize;
|
|
@@ -8296,7 +8373,7 @@ var ImageEditorController = (_class12 = class {
|
|
|
8296
8373
|
const anchor = nodes[to];
|
|
8297
8374
|
const without = _chunkUOGKSVRQcjs.mapLayer.call(void 0, layers, id, () => null);
|
|
8298
8375
|
const loc = _chunkUOGKSVRQcjs.findLayer.call(void 0, without, anchor.id);
|
|
8299
|
-
return _chunkUOGKSVRQcjs.insertLayer.call(void 0, without, node, _nullishCoalesce(_optionalChain([loc, 'access',
|
|
8376
|
+
return _chunkUOGKSVRQcjs.insertLayer.call(void 0, without, node, _nullishCoalesce(_optionalChain([loc, 'access', _331 => _331.parent, 'optionalAccess', _332 => _332.id]), () => ( null)), to > from ? loc.index + 1 : loc.index);
|
|
8300
8377
|
}
|
|
8301
8378
|
/** Moves a layer to `toIndex` among the adjustment layers (0 = bottom) as one undo step. Returns false if nothing moved. */
|
|
8302
8379
|
moveAdjustmentLayer(id, toIndex) {
|
|
@@ -8337,7 +8414,7 @@ var ImageEditorController = (_class12 = class {
|
|
|
8337
8414
|
return _nullishCoalesce(this.state.selection, () => ( null));
|
|
8338
8415
|
}
|
|
8339
8416
|
get hasSelection() {
|
|
8340
|
-
return Boolean(_optionalChain([this, 'access',
|
|
8417
|
+
return Boolean(_optionalChain([this, 'access', _333 => _333.state, 'access', _334 => _334.selection, 'optionalAccess', _335 => _335.bounds]));
|
|
8341
8418
|
}
|
|
8342
8419
|
/** Returns the current canvas (composition) dimensions. */
|
|
8343
8420
|
getCanvasSize() {
|
|
@@ -8429,7 +8506,7 @@ var ImageEditorController = (_class12 = class {
|
|
|
8429
8506
|
const prev = normalizeSelection(_nullishCoalesce(this.state.selection, () => ( null)));
|
|
8430
8507
|
if (prev === next || prev && next && sameSelection(prev, next)) return false;
|
|
8431
8508
|
this.recordHistory();
|
|
8432
|
-
if (!next && _optionalChain([prev, 'optionalAccess',
|
|
8509
|
+
if (!next && _optionalChain([prev, 'optionalAccess', _336 => _336.bounds])) this.lastSelection = prev;
|
|
8433
8510
|
this.state.selection = next;
|
|
8434
8511
|
this.notify();
|
|
8435
8512
|
return true;
|
|
@@ -8467,19 +8544,19 @@ var ImageEditorController = (_class12 = class {
|
|
|
8467
8544
|
throw new RangeError(`${orientation === "row" ? "y" : "x"} ${position} is outside the image (0..${max - 1}).`);
|
|
8468
8545
|
}
|
|
8469
8546
|
const rect = orientation === "row" ? { x: 0, y: at, width, height: 1 } : { x: at, y: 0, width: 1, height };
|
|
8470
|
-
return this.shapeCommand(
|
|
8547
|
+
return this.shapeCommand(_chunkL52VMQZScjs.rectSelection.call(void 0, width, height, rect, { antiAlias: false }), options);
|
|
8471
8548
|
}
|
|
8472
8549
|
/** Select › Grow: adds connected pixels within `tolerance` of a selected colour (one undo step). */
|
|
8473
8550
|
async growSelection(options = {}) {
|
|
8474
8551
|
const sel = this.state.selection;
|
|
8475
|
-
if (!_optionalChain([sel, 'optionalAccess',
|
|
8552
|
+
if (!_optionalChain([sel, 'optionalAccess', _337 => _337.bounds])) return false;
|
|
8476
8553
|
const pixels = await this.requirePixels(options);
|
|
8477
8554
|
return this.setSelection(growSelection(pixels, sel, options));
|
|
8478
8555
|
}
|
|
8479
8556
|
/** Select › Similar: adds every pixel within `tolerance` of a selected colour (one undo step). */
|
|
8480
8557
|
async selectSimilar(options = {}) {
|
|
8481
8558
|
const sel = this.state.selection;
|
|
8482
|
-
if (!_optionalChain([sel, 'optionalAccess',
|
|
8559
|
+
if (!_optionalChain([sel, 'optionalAccess', _338 => _338.bounds])) return false;
|
|
8483
8560
|
const pixels = await this.requirePixels(options);
|
|
8484
8561
|
return this.setSelection(selectSimilar(pixels, sel, options));
|
|
8485
8562
|
}
|
|
@@ -8525,17 +8602,17 @@ var ImageEditorController = (_class12 = class {
|
|
|
8525
8602
|
/** Rectangular marquee in natural image pixels. */
|
|
8526
8603
|
selectRect(rect, options = {}) {
|
|
8527
8604
|
const { width, height } = this.naturalSize;
|
|
8528
|
-
return this.shapeCommand(
|
|
8605
|
+
return this.shapeCommand(_chunkL52VMQZScjs.rectSelection.call(void 0, width, height, rect, options), options);
|
|
8529
8606
|
}
|
|
8530
8607
|
/** Elliptical marquee inscribed in `rect`. */
|
|
8531
8608
|
selectEllipse(rect, options = {}) {
|
|
8532
8609
|
const { width, height } = this.naturalSize;
|
|
8533
|
-
return this.shapeCommand(
|
|
8610
|
+
return this.shapeCommand(_chunkL52VMQZScjs.ellipseSelection.call(void 0, width, height, rect, options), options);
|
|
8534
8611
|
}
|
|
8535
8612
|
/** Lasso / polygonal lasso. */
|
|
8536
8613
|
selectPolygon(points, options = {}) {
|
|
8537
8614
|
const { width, height } = this.naturalSize;
|
|
8538
|
-
return this.shapeCommand(
|
|
8615
|
+
return this.shapeCommand(_chunkL52VMQZScjs.polygonSelection.call(void 0, width, height, points, options), options);
|
|
8539
8616
|
}
|
|
8540
8617
|
/**
|
|
8541
8618
|
* Magnetic Lasso for a given outline: each point snaps to the strongest edge within `width` px
|
|
@@ -8571,7 +8648,7 @@ var ImageEditorController = (_class12 = class {
|
|
|
8571
8648
|
size: options.size,
|
|
8572
8649
|
grow: m === "add",
|
|
8573
8650
|
enhanceEdge: options.enhanceEdge,
|
|
8574
|
-
selection: m === "add" && _optionalChain([sel, 'optionalAccess',
|
|
8651
|
+
selection: m === "add" && _optionalChain([sel, 'optionalAccess', _339 => _339.bounds]) ? _chunkL52VMQZScjs.serializeMask.call(void 0, sel) : null
|
|
8575
8652
|
};
|
|
8576
8653
|
const { mask } = await this.runSelectionJob(job, pixels, {
|
|
8577
8654
|
signal: options.signal,
|
|
@@ -8591,7 +8668,7 @@ var ImageEditorController = (_class12 = class {
|
|
|
8591
8668
|
const { width, height } = this.naturalSize;
|
|
8592
8669
|
const image = await this.toDataURL({ format: "image/png" });
|
|
8593
8670
|
const results = await provider.segment({ ...request, image, width, height });
|
|
8594
|
-
_optionalChain([request, 'access',
|
|
8671
|
+
_optionalChain([request, 'access', _340 => _340.signal, 'optionalAccess', _341 => _341.throwIfAborted, 'call', _342 => _342()]);
|
|
8595
8672
|
const decoded = [];
|
|
8596
8673
|
for (const r of _nullishCoalesce(results, () => ( []))) decoded.push({ ...r, mask: r.mask !== void 0 ? await this.decodeMaskImage(r.mask) : void 0 });
|
|
8597
8674
|
return decoded;
|
|
@@ -8608,11 +8685,11 @@ var ImageEditorController = (_class12 = class {
|
|
|
8608
8685
|
let union = null;
|
|
8609
8686
|
for (const r of decoded) {
|
|
8610
8687
|
const one = segmentsToSelection(width, height, [r]);
|
|
8611
|
-
if (!_optionalChain([one, 'optionalAccess',
|
|
8688
|
+
if (!_optionalChain([one, 'optionalAccess', _343 => _343.bounds])) continue;
|
|
8612
8689
|
if ("rect" in target) {
|
|
8613
8690
|
const r0 = target.rect;
|
|
8614
8691
|
const grow = 0.1 * Math.max(r0.width, r0.height);
|
|
8615
|
-
const box =
|
|
8692
|
+
const box = _chunkL52VMQZScjs.rectSelection.call(void 0, width, height, { x: r0.x - grow, y: r0.y - grow, width: r0.width + 2 * grow, height: r0.height + 2 * grow }, { antiAlias: false });
|
|
8616
8693
|
const inside = _chunkQYLWG22Ncjs.combineSelections.call(void 0, one, box, "intersect");
|
|
8617
8694
|
if (!inside || _chunkQYLWG22Ncjs.selectionArea.call(void 0, inside) < _chunkQYLWG22Ncjs.selectionArea.call(void 0, one) * 0.5) continue;
|
|
8618
8695
|
union = _chunkQYLWG22Ncjs.combineSelections.call(void 0, union, inside, "add");
|
|
@@ -8676,7 +8753,7 @@ var ImageEditorController = (_class12 = class {
|
|
|
8676
8753
|
if (this.segmentation && options.useModel !== false) {
|
|
8677
8754
|
const { width, height } = this.naturalSize;
|
|
8678
8755
|
const sky = segmentsToSelection(width, height, await this.modelSegments({ target: "the sky", signal: options.signal }));
|
|
8679
|
-
if (!_optionalChain([sky, 'optionalAccess',
|
|
8756
|
+
if (!_optionalChain([sky, 'optionalAccess', _344 => _344.bounds])) return { selection: _nullishCoalesce(this.state.selection, () => ( null)), method: "model", note: "The segmentation model found no sky." };
|
|
8680
8757
|
this.setSelection(sky, _nullishCoalesce(options.mode, () => ( "replace")));
|
|
8681
8758
|
return { selection: _nullishCoalesce(this.state.selection, () => ( null)), method: "model" };
|
|
8682
8759
|
}
|
|
@@ -8707,7 +8784,7 @@ var ImageEditorController = (_class12 = class {
|
|
|
8707
8784
|
try {
|
|
8708
8785
|
const canvas = await this.renderSource();
|
|
8709
8786
|
const ctx = canvas.getContext("2d");
|
|
8710
|
-
const data2 = _optionalChain([ctx, 'optionalAccess',
|
|
8787
|
+
const data2 = _optionalChain([ctx, 'optionalAccess', _345 => _345.getImageData, 'optionalCall', _346 => _346(0, 0, width, height)]);
|
|
8711
8788
|
if (data2 && data2.data && data2.data.length >= width * height * 4) {
|
|
8712
8789
|
base = { width, height, data: data2.data };
|
|
8713
8790
|
this.samplePixels = base;
|
|
@@ -8782,7 +8859,7 @@ var ImageEditorController = (_class12 = class {
|
|
|
8782
8859
|
/** Select › Modify: grow, shrink, feather, border or smooth by `radius` pixels (one undo step). */
|
|
8783
8860
|
modifySelection(op, radius) {
|
|
8784
8861
|
const sel = this.state.selection;
|
|
8785
|
-
if (!_optionalChain([sel, 'optionalAccess',
|
|
8862
|
+
if (!_optionalChain([sel, 'optionalAccess', _347 => _347.bounds])) return false;
|
|
8786
8863
|
return this.setSelection(_chunkQYLWG22Ncjs.modifySelection.call(void 0, sel, op, radius));
|
|
8787
8864
|
}
|
|
8788
8865
|
/**
|
|
@@ -8791,9 +8868,9 @@ var ImageEditorController = (_class12 = class {
|
|
|
8791
8868
|
*/
|
|
8792
8869
|
async refineSelection(params, options = {}) {
|
|
8793
8870
|
const sel = this.state.selection;
|
|
8794
|
-
if (!_optionalChain([sel, 'optionalAccess',
|
|
8871
|
+
if (!_optionalChain([sel, 'optionalAccess', _348 => _348.bounds])) return false;
|
|
8795
8872
|
const pixels = (_nullishCoalesce(params.radius, () => ( 0))) > 0 ? await this.requirePixels(options) : null;
|
|
8796
|
-
return this.setSelection(
|
|
8873
|
+
return this.setSelection(_chunkL52VMQZScjs.refineSelection.call(void 0, pixels, sel, params));
|
|
8797
8874
|
}
|
|
8798
8875
|
/**
|
|
8799
8876
|
* Select and Mask's output: refines the selection with `params`, then puts the result where
|
|
@@ -8813,7 +8890,7 @@ var ImageEditorController = (_class12 = class {
|
|
|
8813
8890
|
async refineSelectionTo(params, output = "selection", options = {}) {
|
|
8814
8891
|
const edits = _nullishCoalesce(options.edits, () => ( []));
|
|
8815
8892
|
const refineMode = _nullishCoalesce(options.refineMode, () => ( "color"));
|
|
8816
|
-
if (!_optionalChain([this, 'access',
|
|
8893
|
+
if (!_optionalChain([this, 'access', _349 => _349.state, 'access', _350 => _350.selection, 'optionalAccess', _351 => _351.bounds]) && !edits.length) throw new Error("Nothing is selected; select first, or pass edits that paint a selection.");
|
|
8817
8894
|
if (refineMode === "object" && !this.segmentation) {
|
|
8818
8895
|
throw new Error("Object aware refinement needs a segmentation model (setSegmentationProvider); use refineMode color.");
|
|
8819
8896
|
}
|
|
@@ -8834,19 +8911,19 @@ var ImageEditorController = (_class12 = class {
|
|
|
8834
8911
|
const needsPixels = (_nullishCoalesce(params.radius, () => ( 0))) > 0 || edits.some((e) => e.kind !== "brush");
|
|
8835
8912
|
const pixels = needsPixels ? await this.requirePixels(options) : null;
|
|
8836
8913
|
const { width, height } = this.naturalSize;
|
|
8837
|
-
const edited =
|
|
8914
|
+
const edited = _chunkL52VMQZScjs.applyRefineEdits.call(void 0, pixels, _nullishCoalesce(this.state.selection, () => ( null)), edits, width, height);
|
|
8838
8915
|
let sel = edited.selection;
|
|
8839
|
-
if (!_optionalChain([sel, 'optionalAccess',
|
|
8916
|
+
if (!_optionalChain([sel, 'optionalAccess', _352 => _352.bounds])) throw new Error("The edits leave nothing selected; paint with mode add first.");
|
|
8840
8917
|
if (refineMode === "object") {
|
|
8841
8918
|
const b = sel.bounds;
|
|
8842
8919
|
const found = await this.modelObject({ rect: b }, options.signal);
|
|
8843
8920
|
if (!found) throw new Error("The segmentation model found no object in the selection; use refineMode color.");
|
|
8844
8921
|
const near = _chunkQYLWG22Ncjs.modifySelection.call(void 0, sel, "expand", Math.max(4, _nullishCoalesce(params.radius, () => ( 8))));
|
|
8845
8922
|
const clipped = _chunkQYLWG22Ncjs.combineSelections.call(void 0, found, near, "intersect");
|
|
8846
|
-
if (!_optionalChain([clipped, 'optionalAccess',
|
|
8923
|
+
if (!_optionalChain([clipped, 'optionalAccess', _353 => _353.bounds])) throw new Error("The segmentation model found no object in the selection; use refineMode color.");
|
|
8847
8924
|
sel = clipped;
|
|
8848
8925
|
}
|
|
8849
|
-
const refined =
|
|
8926
|
+
const refined = _chunkL52VMQZScjs.refineSelection.call(void 0, pixels, sel, params, edited.refineBrush);
|
|
8850
8927
|
if (!refined.bounds) throw new Error("Refining left nothing selected; use a smaller shiftEdge or contrast.");
|
|
8851
8928
|
if (toDocument) {
|
|
8852
8929
|
const document2 = this.documentFromSelection({ layerId, withMask: output === "new-document-with-mask", selection: refined, decontaminate: amount * 100, radius: params.radius });
|
|
@@ -8907,7 +8984,7 @@ var ImageEditorController = (_class12 = class {
|
|
|
8907
8984
|
const cov = new Uint8Array(box.width * box.height);
|
|
8908
8985
|
const all = coverage.data;
|
|
8909
8986
|
for (let y = 0; y < box.height; y++) cov.set(all.subarray((box.y + y) * width + box.x, (box.y + y) * width + box.x + box.width), y * box.width);
|
|
8910
|
-
const cleaned =
|
|
8987
|
+
const cleaned = _chunkL52VMQZScjs.decontaminateColors.call(void 0, original, cov, box.width, box.height, amount, radius);
|
|
8911
8988
|
for (let i = 3; i < cleaned.length; i += 4) cleaned[i] = rgba[i];
|
|
8912
8989
|
return _chunk474IQG74cjs.writeRegion.call(void 0, surface, src, cleaned);
|
|
8913
8990
|
}
|
|
@@ -8938,7 +9015,7 @@ var ImageEditorController = (_class12 = class {
|
|
|
8938
9015
|
let mask;
|
|
8939
9016
|
if (source === "selection") {
|
|
8940
9017
|
const sel = this.state.selection;
|
|
8941
|
-
if (!_optionalChain([sel, 'optionalAccess',
|
|
9018
|
+
if (!_optionalChain([sel, 'optionalAccess', _354 => _354.bounds])) throw new (0, _chunkQE7D7TZRcjs.LayerOperationError)("Nothing is selected; select first, or export a channel or a layer mask.");
|
|
8942
9019
|
mask = sel;
|
|
8943
9020
|
} else if ("channelId" in source) {
|
|
8944
9021
|
mask = this.requireChannel(source.channelId).mask;
|
|
@@ -8962,7 +9039,7 @@ var ImageEditorController = (_class12 = class {
|
|
|
8962
9039
|
const canvas = this.renderer.createCanvas(w, h);
|
|
8963
9040
|
const ctx = canvas.getContext("2d");
|
|
8964
9041
|
if (ctx) ctx.drawImage(img, 0, 0, w, h);
|
|
8965
|
-
const data = _optionalChain([ctx, 'optionalAccess',
|
|
9042
|
+
const data = _optionalChain([ctx, 'optionalAccess', _355 => _355.getImageData, 'optionalCall', _356 => _356(0, 0, w, h)]);
|
|
8966
9043
|
if (!data) throw new Error("The mask image pixels are not available (no canvas access); pass pixels.");
|
|
8967
9044
|
return { width: w, height: h, data: data.data };
|
|
8968
9045
|
}
|
|
@@ -8978,7 +9055,7 @@ var ImageEditorController = (_class12 = class {
|
|
|
8978
9055
|
const provider = this.segmentation;
|
|
8979
9056
|
if (!provider) {
|
|
8980
9057
|
const pixels = await this.requirePixels({});
|
|
8981
|
-
_optionalChain([options, 'access',
|
|
9058
|
+
_optionalChain([options, 'access', _357 => _357.signal, 'optionalAccess', _358 => _358.throwIfAborted, 'call', _359 => _359()]);
|
|
8982
9059
|
const { mask: selection, reason } = await this.runSelectionJob({ op: "subject", enhanceEdge: options.enhanceEdge }, pixels, options);
|
|
8983
9060
|
if (selection.bounds) this.shapeCommand(selection, options);
|
|
8984
9061
|
const unused = target.trim() ? ` "${target.trim()}" was not used to choose it.` : "";
|
|
@@ -8994,17 +9071,17 @@ var ImageEditorController = (_class12 = class {
|
|
|
8994
9071
|
const decoded = await this.modelSegments({ target: description, maxSegments: options.maxSegments, signal: options.signal });
|
|
8995
9072
|
const segments = decoded.map((r) => {
|
|
8996
9073
|
const one = segmentsToSelection(width, height, [r]);
|
|
8997
|
-
return { label: r.label || description, bounds: _nullishCoalesce(_optionalChain([one, 'optionalAccess',
|
|
9074
|
+
return { label: r.label || description, bounds: _nullishCoalesce(_optionalChain([one, 'optionalAccess', _360 => _360.bounds]), () => ( null)), ...r.score !== void 0 ? { score: r.score } : {} };
|
|
8998
9075
|
});
|
|
8999
9076
|
const mask = segmentsToSelection(width, height, decoded);
|
|
9000
9077
|
if (mask && options.beforeApply) {
|
|
9001
9078
|
const outlines = decoded.flatMap((r, i) => {
|
|
9002
9079
|
const rings = segmentationOutlines(r);
|
|
9003
|
-
const b = _optionalChain([segments, 'access',
|
|
9080
|
+
const b = _optionalChain([segments, 'access', _361 => _361[i], 'optionalAccess', _362 => _362.bounds]);
|
|
9004
9081
|
return rings.length ? rings : b ? [[{ x: b.x, y: b.y }, { x: b.x + b.width, y: b.y }, { x: b.x + b.width, y: b.y + b.height }, { x: b.x, y: b.y + b.height }]] : [];
|
|
9005
9082
|
});
|
|
9006
9083
|
await options.beforeApply(outlines);
|
|
9007
|
-
_optionalChain([options, 'access',
|
|
9084
|
+
_optionalChain([options, 'access', _363 => _363.signal, 'optionalAccess', _364 => _364.throwIfAborted, 'call', _365 => _365()]);
|
|
9008
9085
|
}
|
|
9009
9086
|
if (mask) this.shapeCommand(mask, options);
|
|
9010
9087
|
return { segments: segments.filter((s) => s.bounds), method: "model" };
|
|
@@ -9037,7 +9114,7 @@ var ImageEditorController = (_class12 = class {
|
|
|
9037
9114
|
const view = this.state.maskView;
|
|
9038
9115
|
if (!view) return null;
|
|
9039
9116
|
const layer = this.getLayer(view.layerId);
|
|
9040
|
-
return _optionalChain([layer, 'optionalAccess',
|
|
9117
|
+
return _optionalChain([layer, 'optionalAccess', _366 => _366.mask]) && !layer.mask.source ? view : null;
|
|
9041
9118
|
}
|
|
9042
9119
|
/**
|
|
9043
9120
|
* Shows a layer's mask on the canvas: `gray` alone in grey (Alt-click the mask thumbnail),
|
|
@@ -9060,7 +9137,7 @@ var ImageEditorController = (_class12 = class {
|
|
|
9060
9137
|
if (!layer.mask) throw new (0, _chunkQE7D7TZRcjs.LayerOperationError)(`Layer "${layer.name || id}" has no mask to show; add one with add_layer_mask.`);
|
|
9061
9138
|
if (layer.mask.source) throw new (0, _chunkQE7D7TZRcjs.LayerOperationError)(`Layer "${layer.name || id}" has a depth mask, which is computed, not painted, so it has no mask view.`);
|
|
9062
9139
|
const cur = this.state.maskView;
|
|
9063
|
-
if (_optionalChain([cur, 'optionalAccess',
|
|
9140
|
+
if (_optionalChain([cur, 'optionalAccess', _367 => _367.layerId]) !== id || cur.mode !== mode) {
|
|
9064
9141
|
this.state.maskView = { layerId: id, mode };
|
|
9065
9142
|
this.notify();
|
|
9066
9143
|
}
|
|
@@ -9072,7 +9149,7 @@ var ImageEditorController = (_class12 = class {
|
|
|
9072
9149
|
return _nullishCoalesce(this.state.channels, () => ( []));
|
|
9073
9150
|
}
|
|
9074
9151
|
getChannel(id) {
|
|
9075
|
-
return _nullishCoalesce(_optionalChain([this, 'access',
|
|
9152
|
+
return _nullishCoalesce(_optionalChain([this, 'access', _368 => _368.state, 'access', _369 => _369.channels, 'optionalAccess', _370 => _370.find, 'call', _371 => _371((c) => c.id === id)]), () => ( null));
|
|
9076
9153
|
}
|
|
9077
9154
|
requireChannel(id) {
|
|
9078
9155
|
const channel = this.getChannel(id);
|
|
@@ -9101,14 +9178,14 @@ var ImageEditorController = (_class12 = class {
|
|
|
9101
9178
|
*/
|
|
9102
9179
|
saveSelection(options = {}) {
|
|
9103
9180
|
const sel = this.state.selection;
|
|
9104
|
-
if (!_optionalChain([sel, 'optionalAccess',
|
|
9181
|
+
if (!_optionalChain([sel, 'optionalAccess', _372 => _372.bounds])) throw new (0, _chunkQE7D7TZRcjs.LayerOperationError)("Nothing is selected; select first, then save the selection to a channel.");
|
|
9105
9182
|
const { width, height } = this.naturalSize;
|
|
9106
9183
|
const sized = sel.width === width && sel.height === height ? sel : _chunkQYLWG22Ncjs.resizeSelection.call(void 0, sel, width, height);
|
|
9107
9184
|
const channels = [...this.getChannels()];
|
|
9108
9185
|
if (options.channelId !== void 0) {
|
|
9109
9186
|
const existing = this.requireChannel(options.channelId);
|
|
9110
9187
|
const mask = _nullishCoalesce(_chunkQYLWG22Ncjs.combineSelections.call(void 0, existing.mask.bounds ? existing.mask : null, sized, _nullishCoalesce(options.mode, () => ( "replace"))), () => ( _chunkQYLWG22Ncjs.createSelectionMask.call(void 0, width, height)));
|
|
9111
|
-
const next = { ...existing, mask, ..._optionalChain([options, 'access',
|
|
9188
|
+
const next = { ...existing, mask, ..._optionalChain([options, 'access', _373 => _373.name, 'optionalAccess', _374 => _374.trim, 'call', _375 => _375()]) ? { name: options.name.trim() } : {} };
|
|
9112
9189
|
this.setChannels(channels.map((c) => c.id === existing.id ? next : c));
|
|
9113
9190
|
return next;
|
|
9114
9191
|
}
|
|
@@ -9119,7 +9196,7 @@ var ImageEditorController = (_class12 = class {
|
|
|
9119
9196
|
const channels = this.getChannels();
|
|
9120
9197
|
const channel = {
|
|
9121
9198
|
id: this.newChannelId(),
|
|
9122
|
-
name: _optionalChain([name, 'optionalAccess',
|
|
9199
|
+
name: _optionalChain([name, 'optionalAccess', _376 => _376.trim, 'call', _377 => _377()]) || `Alpha ${channels.length + 1}`,
|
|
9123
9200
|
mask,
|
|
9124
9201
|
color: DEFAULT_CHANNEL_COLOR,
|
|
9125
9202
|
opacity: 0.5,
|
|
@@ -9164,7 +9241,7 @@ var ImageEditorController = (_class12 = class {
|
|
|
9164
9241
|
/** Duplicates an alpha channel just after it (one undo step). Returns the copy. */
|
|
9165
9242
|
duplicateChannel(id, name) {
|
|
9166
9243
|
const channel = this.requireChannel(id);
|
|
9167
|
-
const copy = { ...channel, id: this.newChannelId(), name: _optionalChain([name, 'optionalAccess',
|
|
9244
|
+
const copy = { ...channel, id: this.newChannelId(), name: _optionalChain([name, 'optionalAccess', _378 => _378.trim, 'call', _379 => _379()]) || `${channel.name} copy` };
|
|
9168
9245
|
const channels = [...this.getChannels()];
|
|
9169
9246
|
channels.splice(channels.findIndex((c) => c.id === id) + 1, 0, copy);
|
|
9170
9247
|
this.setChannels(channels);
|
|
@@ -9195,7 +9272,7 @@ var ImageEditorController = (_class12 = class {
|
|
|
9195
9272
|
quickMaskSurface() {
|
|
9196
9273
|
const { width, height } = this.naturalSize;
|
|
9197
9274
|
const sel = this.state.selection;
|
|
9198
|
-
if (!_optionalChain([sel, 'optionalAccess',
|
|
9275
|
+
if (!_optionalChain([sel, 'optionalAccess', _380 => _380.bounds])) return _chunk474IQG74cjs.emptySurface.call(void 0, 1, 0);
|
|
9199
9276
|
return (sel.width === width && sel.height === height ? sel : _chunkQYLWG22Ncjs.resizeSelection.call(void 0, sel, width, height)).surface;
|
|
9200
9277
|
}
|
|
9201
9278
|
/** The selection a painted Quick Mask surface stands for (it shares the surface's tiles). */
|
|
@@ -9216,7 +9293,7 @@ var ImageEditorController = (_class12 = class {
|
|
|
9216
9293
|
*/
|
|
9217
9294
|
applySelectionAsLayerMask(layerId, props = {}) {
|
|
9218
9295
|
const sel = this.state.selection;
|
|
9219
|
-
if (!_optionalChain([sel, 'optionalAccess',
|
|
9296
|
+
if (!_optionalChain([sel, 'optionalAccess', _381 => _381.bounds]) || !this.getAdjustmentLayer(layerId)) return false;
|
|
9220
9297
|
return this.setLayerMask(layerId, this.maskFromSelection(sel, props));
|
|
9221
9298
|
}
|
|
9222
9299
|
setLayerMask(layerId, mask, commitToHistory = true) {
|
|
@@ -9256,7 +9333,7 @@ var ImageEditorController = (_class12 = class {
|
|
|
9256
9333
|
/** A layer's painted mask over the canvas as a selection mask; null without one (or for a depth mask). */
|
|
9257
9334
|
layerMaskCoverage(layerId) {
|
|
9258
9335
|
const layer = this.getLayer(layerId);
|
|
9259
|
-
if (!_optionalChain([layer, 'optionalAccess',
|
|
9336
|
+
if (!_optionalChain([layer, 'optionalAccess', _382 => _382.mask]) || layer.mask.source) return null;
|
|
9260
9337
|
const { width, height } = this.naturalSize;
|
|
9261
9338
|
const ox = layer.type === "pixel" ? layer.offset.x : 0;
|
|
9262
9339
|
const oy = layer.type === "pixel" ? layer.offset.y : 0;
|
|
@@ -9291,7 +9368,7 @@ var ImageEditorController = (_class12 = class {
|
|
|
9291
9368
|
this.state.layers = _chunkUOGKSVRQcjs.mapLayer.call(void 0, this.state.layers, target.id, (l) => {
|
|
9292
9369
|
const next = { ...l };
|
|
9293
9370
|
if (_chunkQE7D7TZRcjs.isDefaultDepthMask.call(void 0, merged)) {
|
|
9294
|
-
if (_optionalChain([next, 'access',
|
|
9371
|
+
if (_optionalChain([next, 'access', _383 => _383.mask, 'optionalAccess', _384 => _384.source])) delete next.mask;
|
|
9295
9372
|
} else next.mask = _chunkQE7D7TZRcjs.depthRasterMask.call(void 0, merged);
|
|
9296
9373
|
return next;
|
|
9297
9374
|
});
|
|
@@ -9301,7 +9378,7 @@ var ImageEditorController = (_class12 = class {
|
|
|
9301
9378
|
resetDepthMask() {
|
|
9302
9379
|
this.recordHistory();
|
|
9303
9380
|
const target = this.developLayer();
|
|
9304
|
-
if (_optionalChain([target, 'optionalAccess',
|
|
9381
|
+
if (_optionalChain([target, 'optionalAccess', _385 => _385.mask, 'optionalAccess', _386 => _386.source])) {
|
|
9305
9382
|
this.state.layers = _chunkUOGKSVRQcjs.mapLayer.call(void 0, this.state.layers, target.id, (l) => {
|
|
9306
9383
|
const next = { ...l };
|
|
9307
9384
|
delete next.mask;
|
|
@@ -9313,7 +9390,7 @@ var ImageEditorController = (_class12 = class {
|
|
|
9313
9390
|
// --- Annotations & Layers ---
|
|
9314
9391
|
/** The layer showing annotation `id`: an annotation layer, or a shape layer migrated from it. */
|
|
9315
9392
|
annotationLayer(id) {
|
|
9316
|
-
return _chunkUOGKSVRQcjs.flattenLayers.call(void 0, this.state.layers).find((l) => (l.type === "annotation" || l.type === "shape" || l.type === "type") && _optionalChain([_chunkQE7D7TZRcjs.annotationOfLayer.call(void 0, l), 'optionalAccess',
|
|
9393
|
+
return _chunkUOGKSVRQcjs.flattenLayers.call(void 0, this.state.layers).find((l) => (l.type === "annotation" || l.type === "shape" || l.type === "type") && _optionalChain([_chunkQE7D7TZRcjs.annotationOfLayer.call(void 0, l), 'optionalAccess', _387 => _387.id]) === id);
|
|
9317
9394
|
}
|
|
9318
9395
|
/** What migrating an annotation needs: the canvas size, patterns and the text shaper. */
|
|
9319
9396
|
annotationEnv() {
|
|
@@ -9331,7 +9408,7 @@ var ImageEditorController = (_class12 = class {
|
|
|
9331
9408
|
const fullAnnotation = { ...annotation, id };
|
|
9332
9409
|
const layer = _chunkQE7D7TZRcjs.annotationLayerFor.call(void 0, fullAnnotation, this.annotationEnv());
|
|
9333
9410
|
const loc = placement.aboveId ? _chunkUOGKSVRQcjs.findLayer.call(void 0, this.state.layers, placement.aboveId) : null;
|
|
9334
|
-
this.state.layers = loc ? _chunkUOGKSVRQcjs.insertLayer.call(void 0, this.state.layers, layer, _nullishCoalesce(_optionalChain([loc, 'access',
|
|
9411
|
+
this.state.layers = loc ? _chunkUOGKSVRQcjs.insertLayer.call(void 0, this.state.layers, layer, _nullishCoalesce(_optionalChain([loc, 'access', _388 => _388.parent, 'optionalAccess', _389 => _389.id]), () => ( null)), loc.index + 1) : _chunkUOGKSVRQcjs.insertLayer.call(void 0, this.state.layers, layer, null);
|
|
9335
9412
|
this.state.selectedAnnotationId = id;
|
|
9336
9413
|
this.notify();
|
|
9337
9414
|
return id;
|
|
@@ -9439,7 +9516,7 @@ var ImageEditorController = (_class12 = class {
|
|
|
9439
9516
|
const cs = s.paint.cloneSource;
|
|
9440
9517
|
if (!cs) return null;
|
|
9441
9518
|
if (cursor && cs.offset && s.paint.retouch.aligned) {
|
|
9442
|
-
const [x, y] =
|
|
9519
|
+
const [x, y] = _chunkYF3YZZ6Gcjs.cloneSamplePoint.call(void 0, s.paint.cloneTransform, cs, { x: cs.x - cs.offset.x, y: cs.y - cs.offset.y }, cursor.x, cursor.y);
|
|
9443
9520
|
return { x, y };
|
|
9444
9521
|
}
|
|
9445
9522
|
return { x: cs.x, y: cs.y };
|
|
@@ -9454,7 +9531,7 @@ var ImageEditorController = (_class12 = class {
|
|
|
9454
9531
|
await this.renderer.renderToCanvas(targetCanvas, source, this.state, {
|
|
9455
9532
|
...options,
|
|
9456
9533
|
// The clone source follows the brush cursor (both editors pass it).
|
|
9457
|
-
cloneSourceMarker: _optionalChain([options, 'optionalAccess',
|
|
9534
|
+
cloneSourceMarker: _optionalChain([options, 'optionalAccess', _390 => _390.cloneSourceMarker]) !== void 0 ? options.cloneSourceMarker : _optionalChain([options, 'optionalAccess', _391 => _391.brushCursor]) ? this.cloneSourceMarker(options.brushCursor) : null,
|
|
9458
9535
|
dirty: dirty === "all" ? void 0 : dirty,
|
|
9459
9536
|
checkpointLayerId: this.state.activeLayerId
|
|
9460
9537
|
});
|
|
@@ -9467,7 +9544,7 @@ var ImageEditorController = (_class12 = class {
|
|
|
9467
9544
|
return this.renderer.createCanvas(1, 1);
|
|
9468
9545
|
}
|
|
9469
9546
|
this.syncViews();
|
|
9470
|
-
if (_optionalChain([options, 'optionalAccess',
|
|
9547
|
+
if (_optionalChain([options, 'optionalAccess', _392 => _392.layerIds])) {
|
|
9471
9548
|
const keep = new Set(options.layerIds);
|
|
9472
9549
|
const layers = _chunkUOGKSVRQcjs.flattenLayers.call(void 0, this.state.layers).filter((l) => keep.has(l.id));
|
|
9473
9550
|
return this.renderer.renderExport(source, { ...this.state, layers }, options);
|
|
@@ -9621,7 +9698,7 @@ var ImageEditorController = (_class12 = class {
|
|
|
9621
9698
|
let px2 = await this.decodeImage(newDataUrl);
|
|
9622
9699
|
if (px2.width !== width || px2.height !== height) px2 = resizePixels(px2, width, height);
|
|
9623
9700
|
const data = new Uint8ClampedArray(px2.data);
|
|
9624
|
-
const sel = _optionalChain([this, 'access',
|
|
9701
|
+
const sel = _optionalChain([this, 'access', _393 => _393.state, 'access', _394 => _394.selection, 'optionalAccess', _395 => _395.bounds]) ? this.state.selection : null;
|
|
9625
9702
|
if (sel) for (let p = 0, i = 3; p < width * height; p++, i += 4) data[i] = Math.round(data[i] * sel.data[p] / 255);
|
|
9626
9703
|
return this.addPixelLayer({ name: "Inpaint", pixels: { width, height, data } });
|
|
9627
9704
|
}
|
|
@@ -9668,7 +9745,7 @@ var ImageEditorController = (_class12 = class {
|
|
|
9668
9745
|
}
|
|
9669
9746
|
/** Font families the shaper offers (generic families at least). */
|
|
9670
9747
|
listFonts() {
|
|
9671
|
-
return _nullishCoalesce(_optionalChain([this, 'access',
|
|
9748
|
+
return _nullishCoalesce(_optionalChain([this, 'access', _396 => _396.getTextShaper, 'call', _397 => _397(), 'optionalAccess', _398 => _398.families, 'optionalCall', _399 => _399()]), () => ( ["sans-serif", "serif", "monospace"]));
|
|
9672
9749
|
}
|
|
9673
9750
|
typeInfo(id) {
|
|
9674
9751
|
const layer = _chunkQE7D7TZRcjs.requireTypeLayer.call(void 0, this.state.layers, id);
|
|
@@ -9742,8 +9819,8 @@ var ImageEditorController = (_class12 = class {
|
|
|
9742
9819
|
const layer = this.layoutTypeLayer({ ...init, text, orientation: vertical ? "vertical" : "horizontal" });
|
|
9743
9820
|
const { width, height } = this.naturalSize;
|
|
9744
9821
|
const b = _chunk474IQG74cjs.contentBounds.call(void 0, layer.surface);
|
|
9745
|
-
const x0 = Math.max(0, _nullishCoalesce(_optionalChain([b, 'optionalAccess',
|
|
9746
|
-
const y0 = Math.max(0, _nullishCoalesce(_optionalChain([b, 'optionalAccess',
|
|
9822
|
+
const x0 = Math.max(0, _nullishCoalesce(_optionalChain([b, 'optionalAccess', _400 => _400.x]), () => ( 0)));
|
|
9823
|
+
const y0 = Math.max(0, _nullishCoalesce(_optionalChain([b, 'optionalAccess', _401 => _401.y]), () => ( 0)));
|
|
9747
9824
|
const x1 = Math.min(width, b ? b.x + b.width : 0);
|
|
9748
9825
|
const y1 = Math.min(height, b ? b.y + b.height : 0);
|
|
9749
9826
|
let mask;
|
|
@@ -9920,7 +9997,7 @@ var ImageEditorController = (_class12 = class {
|
|
|
9920
9997
|
if (colors.size > 1) warnings.push("The text had several colours; the shape takes the first one.");
|
|
9921
9998
|
const missing = _chunkQAUIZPYIcjs.layoutText.call(void 0, layer, shaper).missingFonts;
|
|
9922
9999
|
if (missing.length) warnings.push(`Missing fonts were drawn with a fallback: ${missing.join(", ")}.`);
|
|
9923
|
-
const first = _nullishCoalesce(_optionalChain([layer, 'access',
|
|
10000
|
+
const first = _nullishCoalesce(_optionalChain([layer, 'access', _402 => _402.runs, 'access', _403 => _403.find, 'call', _404 => _404((r) => r.length > 0), 'optionalAccess', _405 => _405.style]), () => ( _chunkQAUIZPYIcjs.DEFAULT_TEXT_STYLE));
|
|
9924
10001
|
const fill = first.opacity !== void 0 && first.opacity !== 1 ? { type: "color", color: first.color, opacity: first.opacity } : { type: "color", color: first.color };
|
|
9925
10002
|
const shape = _chunkQE7D7TZRcjs.createShapeLayer.call(void 0, { components: [{ op: "combine", subpaths }], fill, stroke: null, name: layer.name }, this.shapeEnv(), layer.id);
|
|
9926
10003
|
const keep = { visible: layer.visible, opacity: layer.opacity, blend: layer.blend };
|
|
@@ -9953,7 +10030,7 @@ var ImageEditorController = (_class12 = class {
|
|
|
9953
10030
|
// --- Shape layers ---
|
|
9954
10031
|
/** What shape rendering needs: the canvas size and the document's patterns. */
|
|
9955
10032
|
shapeEnv() {
|
|
9956
|
-
return { ...this.naturalSize, pattern: (id) => _nullishCoalesce(_optionalChain([this, 'access',
|
|
10033
|
+
return { ...this.naturalSize, pattern: (id) => _nullishCoalesce(_optionalChain([this, 'access', _406 => _406.state, 'access', _407 => _407.patterns, 'optionalAccess', _408 => _408.find, 'call', _409 => _409((p) => p.id === id)]), () => ( null)) };
|
|
9957
10034
|
}
|
|
9958
10035
|
/** One component from tool or UI input (validated). */
|
|
9959
10036
|
componentFrom(spec, path) {
|
|
@@ -9996,9 +10073,9 @@ var ImageEditorController = (_class12 = class {
|
|
|
9996
10073
|
* open path) and stroked with `stroke`. Goes above the active layer unless placed. Returns its id.
|
|
9997
10074
|
*/
|
|
9998
10075
|
addShapeLayer(init) {
|
|
9999
|
-
const specs = _optionalChain([init, 'access',
|
|
10000
|
-
if (_optionalChain([init, 'access',
|
|
10001
|
-
const components = specs.map((c, i) => this.componentFrom(c, _optionalChain([init, 'access',
|
|
10076
|
+
const specs = _optionalChain([init, 'access', _410 => _410.components, 'optionalAccess', _411 => _411.length]) ? init.components : [init];
|
|
10077
|
+
if (_optionalChain([init, 'access', _412 => _412.components, 'optionalAccess', _413 => _413.length]) && (init.shape !== void 0 || init.subpaths !== void 0)) throw new (0, _chunkQE7D7TZRcjs.LayerOperationError)("Give components, or shape / subpaths, not both.");
|
|
10078
|
+
const components = specs.map((c, i) => this.componentFrom(c, _optionalChain([init, 'access', _414 => _414.components, 'optionalAccess', _415 => _415.length]) ? `components[${i}].` : ""));
|
|
10002
10079
|
const stroke = init.stroke ? _chunkQE7D7TZRcjs.normalizeShapeStroke.call(void 0, init.stroke, "stroke") : null;
|
|
10003
10080
|
const openOnly = components.every((c) => !c.live && c.subpaths.every((sp) => !sp.closed));
|
|
10004
10081
|
const fill = init.fill === void 0 ? stroke && openOnly ? null : _chunkQE7D7TZRcjs.normalizeShapePaint.call(void 0, this.state.paint.foreground, "fill") : init.fill === null ? null : _chunkQE7D7TZRcjs.normalizeShapePaint.call(void 0, init.fill, "fill");
|
|
@@ -10109,7 +10186,7 @@ var ImageEditorController = (_class12 = class {
|
|
|
10109
10186
|
if (layer.locks) next.locks = layer.locks;
|
|
10110
10187
|
if (this.state.selectedAnnotationId === layer.annotation.id) this.state.selectedAnnotationId = null;
|
|
10111
10188
|
} else if (layer.type === "pixel") {
|
|
10112
|
-
if (!_optionalChain([layer, 'access',
|
|
10189
|
+
if (!_optionalChain([layer, 'access', _416 => _416.filters, 'optionalAccess', _417 => _417.length])) throw new (0, _chunkQE7D7TZRcjs.LayerOperationError)(`Layer "${layer.name || id}" is already pixels with no filters to bake.`);
|
|
10113
10190
|
_chunkQE7D7TZRcjs.requireUnlocked.call(void 0, layer, "pixels", "rasterize it");
|
|
10114
10191
|
const spatial = layer.filters.some((f) => f.enabled && f.kind === "blur");
|
|
10115
10192
|
const content = { ...layer, visible: true, opacity: 1, blend: "normal" };
|
|
@@ -10128,7 +10205,7 @@ var ImageEditorController = (_class12 = class {
|
|
|
10128
10205
|
return this.rasterizeSmartObject(id);
|
|
10129
10206
|
} else if (layer.type === "shape" || layer.type === "type") {
|
|
10130
10207
|
next = layer.type === "shape" ? _chunkQE7D7TZRcjs.shapeAsPixelLayer.call(void 0, layer) : _chunkQE7D7TZRcjs.typeAsPixelLayer.call(void 0, layer);
|
|
10131
|
-
if (this.state.selectedAnnotationId && this.state.selectedAnnotationId === _optionalChain([layer, 'access',
|
|
10208
|
+
if (this.state.selectedAnnotationId && this.state.selectedAnnotationId === _optionalChain([layer, 'access', _418 => _418.annotation, 'optionalAccess', _419 => _419.id])) this.state.selectedAnnotationId = null;
|
|
10132
10209
|
} else {
|
|
10133
10210
|
throw new (0, _chunkQE7D7TZRcjs.LayerOperationError)(`Only shape, type and annotation layers, smart objects and pixel layers with filters rasterize; "${layer.name || id}" is a ${layer.type} layer. Merge it down or flatten instead.`);
|
|
10134
10211
|
}
|
|
@@ -10142,8 +10219,8 @@ var ImageEditorController = (_class12 = class {
|
|
|
10142
10219
|
const doc = this.state.colorProfile;
|
|
10143
10220
|
const p = resolveProfile(doc);
|
|
10144
10221
|
const m = this.state.colorMode;
|
|
10145
|
-
const out = { name: _nullishCoalesce(_optionalChain([doc, 'optionalAccess',
|
|
10146
|
-
if (_optionalChain([m, 'optionalAccess',
|
|
10222
|
+
const out = { name: _nullishCoalesce(_optionalChain([doc, 'optionalAccess', _420 => _420.name]), () => ( p.description)), builtin: doc ? _nullishCoalesce(doc.builtin, () => ( null)) : "srgb", colorSpace: p.colorSpace, srgb: isSrgb(doc), mode: _nullishCoalesce(_optionalChain([m, 'optionalAccess', _421 => _421.mode]), () => ( "rgb")) };
|
|
10223
|
+
if (_optionalChain([m, 'optionalAccess', _422 => _422.mode]) === "cmyk") out.cmykProfile = { name: m.profile.name, builtin: _nullishCoalesce(m.profile.builtin, () => ( null)), intent: m.intent };
|
|
10147
10224
|
return out;
|
|
10148
10225
|
}
|
|
10149
10226
|
/**
|
|
@@ -10233,7 +10310,7 @@ var ImageEditorController = (_class12 = class {
|
|
|
10233
10310
|
const textEnv = this.textEnv();
|
|
10234
10311
|
const walk = (layers) => layers.map((l) => {
|
|
10235
10312
|
let next2 = l;
|
|
10236
|
-
if (_optionalChain([l, 'access',
|
|
10313
|
+
if (_optionalChain([l, 'access', _423 => _423.effects, 'optionalAccess', _424 => _424.items, 'access', _425 => _425.length])) next2 = { ...next2, effects: convertColorFields(l.effects, hex) };
|
|
10237
10314
|
if (l.type === "group") {
|
|
10238
10315
|
if (next2 !== l) converted.push(l.id);
|
|
10239
10316
|
return { ...next2, children: walk(l.children) };
|
|
@@ -10417,8 +10494,8 @@ var ImageEditorController = (_class12 = class {
|
|
|
10417
10494
|
else delete s.bitDepth;
|
|
10418
10495
|
delete s.colorProfile;
|
|
10419
10496
|
delete s.colorMode;
|
|
10420
|
-
if (_optionalChain([result, 'access',
|
|
10421
|
-
else if (_optionalChain([result, 'access',
|
|
10497
|
+
if (_optionalChain([result, 'access', _426 => _426.sourceMode, 'optionalAccess', _427 => _427.mode]) === "cmyk") s.colorMode = { mode: "cmyk", profile: result.sourceMode.profile, intent: "relative" };
|
|
10498
|
+
else if (_optionalChain([result, 'access', _428 => _428.sourceMode, 'optionalAccess', _429 => _429.mode]) === "lab") s.colorMode = { mode: "lab" };
|
|
10422
10499
|
else if (result.iccProfile) {
|
|
10423
10500
|
try {
|
|
10424
10501
|
const doc = documentProfile(result.iccProfile);
|
|
@@ -10482,7 +10559,7 @@ var ImageEditorController = (_class12 = class {
|
|
|
10482
10559
|
const compositor = new (0, _chunkQE7D7TZRcjs.LayerCompositor)();
|
|
10483
10560
|
const bakeMask = (layer) => {
|
|
10484
10561
|
const mask = layer.mask;
|
|
10485
|
-
if (!_optionalChain([mask, 'optionalAccess',
|
|
10562
|
+
if (!_optionalChain([mask, 'optionalAccess', _430 => _430.source])) return mask;
|
|
10486
10563
|
add2("Parametric (depth) masks were baked into pixel masks", layer.name);
|
|
10487
10564
|
const plain3 = { ...layer, mask: { ...mask, density: 1, feather: 0, enabled: true } };
|
|
10488
10565
|
const ox = layer.type === "pixel" ? layer.offset.x : 0;
|
|
@@ -10499,7 +10576,7 @@ var ImageEditorController = (_class12 = class {
|
|
|
10499
10576
|
};
|
|
10500
10577
|
const prepare = async (layer) => {
|
|
10501
10578
|
const p = await prepareLayer(layer);
|
|
10502
|
-
if (_optionalChain([p, 'optionalAccess',
|
|
10579
|
+
if (_optionalChain([p, 'optionalAccess', _431 => _431.blend]) === "pigment") add2("The Pigment blend mode has no PSD equivalent and was written as Normal", layer.name);
|
|
10503
10580
|
return p;
|
|
10504
10581
|
};
|
|
10505
10582
|
const prepareLayer = async (layer) => {
|
|
@@ -10542,7 +10619,7 @@ var ImageEditorController = (_class12 = class {
|
|
|
10542
10619
|
return out2;
|
|
10543
10620
|
}
|
|
10544
10621
|
if (layer.type === "shape" || layer.type === "type") {
|
|
10545
|
-
if (layer.type === "type" && _optionalChain([layer, 'access',
|
|
10622
|
+
if (layer.type === "type" && _optionalChain([layer, 'access', _432 => _432.missingFonts, 'optionalAccess', _433 => _433.length])) add2(`Type layers drawn with a fallback for missing fonts (${layer.missingFonts.join(", ")}) keep the font names, so Photoshop may draw them differently`, layer.name);
|
|
10546
10623
|
const out2 = { ...layer };
|
|
10547
10624
|
const mask2 = bakeMask(layer);
|
|
10548
10625
|
if (mask2) out2.mask = mask2;
|
|
@@ -10561,7 +10638,7 @@ var ImageEditorController = (_class12 = class {
|
|
|
10561
10638
|
out.surface = this.surfaceOf(layer);
|
|
10562
10639
|
delete out.source;
|
|
10563
10640
|
}
|
|
10564
|
-
const active = _nullishCoalesce(_optionalChain([layer, 'access',
|
|
10641
|
+
const active = _nullishCoalesce(_optionalChain([layer, 'access', _434 => _434.filters, 'optionalAccess', _435 => _435.filter, 'call', _436 => _436(_chunkQE7D7TZRcjs.isActiveFilter)]), () => ( []));
|
|
10565
10642
|
if (active.length) {
|
|
10566
10643
|
add2("Layer filters (develop, blur) were baked into the pixels", layer.name);
|
|
10567
10644
|
const content = { ...out, visible: true, opacity: 1, blend: "normal" };
|
|
@@ -10572,7 +10649,7 @@ var ImageEditorController = (_class12 = class {
|
|
|
10572
10649
|
const data = compositor.composite([content], canvas, sources);
|
|
10573
10650
|
out = { ...out, surface: _chunk474IQG74cjs.surfaceFromPixels.call(void 0, { width, height, data }, 4, -layer.offset.x, -layer.offset.y) };
|
|
10574
10651
|
}
|
|
10575
|
-
if (_optionalChain([layer, 'access',
|
|
10652
|
+
if (_optionalChain([layer, 'access', _437 => _437.filters, 'optionalAccess', _438 => _438.some, 'call', _439 => _439((f) => !f.enabled)])) add2("Disabled layer filters were left out", layer.name);
|
|
10576
10653
|
delete out.filters;
|
|
10577
10654
|
const mask = bakeMask(layer);
|
|
10578
10655
|
if (mask) out.mask = mask;
|
|
@@ -10636,7 +10713,7 @@ var ImageEditorController = (_class12 = class {
|
|
|
10636
10713
|
);
|
|
10637
10714
|
}
|
|
10638
10715
|
layers = resizeLegacyMasks(layers, prev, next.dimensions);
|
|
10639
|
-
const env = { ...next.dimensions, pattern: (pid) => _nullishCoalesce(_optionalChain([this, 'access',
|
|
10716
|
+
const env = { ...next.dimensions, pattern: (pid) => _nullishCoalesce(_optionalChain([this, 'access', _440 => _440.state, 'access', _441 => _441.patterns, 'optionalAccess', _442 => _442.find, 'call', _443 => _443((p) => p.id === pid)]), () => ( null)) };
|
|
10640
10717
|
for (const l of _chunkUOGKSVRQcjs.flattenLayers.call(void 0, layers)) {
|
|
10641
10718
|
if (l.type === "annotation") {
|
|
10642
10719
|
layers = _chunkUOGKSVRQcjs.mapLayer.call(void 0, layers, l.id, () => ({ ...l, annotation: scaleAnnotation(l.annotation, sx, sy) }));
|
|
@@ -10645,7 +10722,7 @@ var ImageEditorController = (_class12 = class {
|
|
|
10645
10722
|
const scaled = a ? scaleAnnotation(a, sx, sy) : null;
|
|
10646
10723
|
const fromAnnotation = scaled ? _chunkQE7D7TZRcjs.shapeFromAnnotation.call(void 0, scaled) : null;
|
|
10647
10724
|
const m = [sx, 0, 0, sy, 0, 0];
|
|
10648
|
-
const components = _nullishCoalesce(_optionalChain([fromAnnotation, 'optionalAccess',
|
|
10725
|
+
const components = _nullishCoalesce(_optionalChain([fromAnnotation, 'optionalAccess', _444 => _444.components]), () => ( _chunkQE7D7TZRcjs.transformShapeComponents.call(void 0, l.components, (p) => ({ x: p.x * sx, y: p.y * sy }), m)));
|
|
10649
10726
|
const moved = { ...l, components, ...fromAnnotation ? { fill: fromAnnotation.fill, stroke: fromAnnotation.stroke } : {} };
|
|
10650
10727
|
if (scaled && fromAnnotation) moved.annotation = scaled;
|
|
10651
10728
|
else delete moved.annotation;
|
|
@@ -10663,7 +10740,7 @@ var ImageEditorController = (_class12 = class {
|
|
|
10663
10740
|
this.notify();
|
|
10664
10741
|
}
|
|
10665
10742
|
toJSON(options) {
|
|
10666
|
-
const root = _optionalChain([this, 'access',
|
|
10743
|
+
const root = _optionalChain([this, 'access', _445 => _445.contentsStack, 'access', _446 => _446[0], 'optionalAccess', _447 => _447.saved]);
|
|
10667
10744
|
const current = this.state;
|
|
10668
10745
|
const element = this.imageElement;
|
|
10669
10746
|
if (root) {
|
|
@@ -10674,8 +10751,8 @@ var ImageEditorController = (_class12 = class {
|
|
|
10674
10751
|
let out;
|
|
10675
10752
|
try {
|
|
10676
10753
|
out = this.serializeState();
|
|
10677
|
-
if (_optionalChain([this, 'access',
|
|
10678
|
-
if (_optionalChain([this, 'access',
|
|
10754
|
+
if (_optionalChain([this, 'access', _448 => _448.state, 'access', _449 => _449.selection, 'optionalAccess', _450 => _450.bounds])) out.selection = _chunkQYLWG22Ncjs.serializeSelection.call(void 0, this.state.selection);
|
|
10755
|
+
if (_optionalChain([this, 'access', _451 => _451.state, 'access', _452 => _452.channels, 'optionalAccess', _453 => _453.length])) out.channels = serializeChannels(this.state.channels);
|
|
10679
10756
|
} finally {
|
|
10680
10757
|
if (root) {
|
|
10681
10758
|
this.state = current;
|
|
@@ -10789,10 +10866,10 @@ var ImageEditorController = (_class12 = class {
|
|
|
10789
10866
|
serializeState() {
|
|
10790
10867
|
const { width, height } = this.naturalSize;
|
|
10791
10868
|
const view = _chunkQE7D7TZRcjs.legacyView.call(void 0, this.stack(), width, height, null);
|
|
10792
|
-
if (view.exact && !this.state.globalLight && !_optionalChain([this, 'access',
|
|
10869
|
+
if (view.exact && !this.state.globalLight && !_optionalChain([this, 'access', _454 => _454.state, 'access', _455 => _455.patterns, 'optionalAccess', _456 => _456.length]) && this.bitDepth === 8 && !this.state.colorProfile && !this.state.colorMode) {
|
|
10793
10870
|
return {
|
|
10794
10871
|
// States without adjustment layers keep schema 1, so they round-trip unchanged.
|
|
10795
|
-
version: _optionalChain([view, 'access',
|
|
10872
|
+
version: _optionalChain([view, 'access', _457 => _457.adjustments, 'access', _458 => _458.layers, 'optionalAccess', _459 => _459.length]) ? 2 : 1,
|
|
10796
10873
|
crop: this.state.crop ? { ...this.state.crop } : null,
|
|
10797
10874
|
transform: { ...this.state.transform },
|
|
10798
10875
|
adjustments: serializeAdjustments(view.adjustments),
|
|
@@ -10817,7 +10894,7 @@ var ImageEditorController = (_class12 = class {
|
|
|
10817
10894
|
};
|
|
10818
10895
|
if (this.state.legacyOutputBlur !== void 0) out.legacyOutputBlur = this.state.legacyOutputBlur;
|
|
10819
10896
|
if (this.state.globalLight) out.globalLight = { ...this.state.globalLight };
|
|
10820
|
-
if (_optionalChain([this, 'access',
|
|
10897
|
+
if (_optionalChain([this, 'access', _460 => _460.state, 'access', _461 => _461.patterns, 'optionalAccess', _462 => _462.length])) out.patterns = _chunkQE7D7TZRcjs.serializePatterns.call(void 0, this.state.patterns);
|
|
10821
10898
|
if (smartContents) out.smartContents = smartContents;
|
|
10822
10899
|
if (this.state.bitDepth === 16 || this.state.bitDepth === 32) out.bitDepth = this.state.bitDepth;
|
|
10823
10900
|
if (this.state.colorProfile) out.colorProfile = serializeColorProfile(this.state.colorProfile);
|
|
@@ -10827,7 +10904,7 @@ var ImageEditorController = (_class12 = class {
|
|
|
10827
10904
|
}, _class12);
|
|
10828
10905
|
function serializeAdjustments(adjustments) {
|
|
10829
10906
|
const out = { ...adjustments };
|
|
10830
|
-
if (_optionalChain([out, 'access',
|
|
10907
|
+
if (_optionalChain([out, 'access', _463 => _463.layers, 'optionalAccess', _464 => _464.length])) out.layers = JSON.parse(JSON.stringify(out.layers));
|
|
10831
10908
|
else delete out.layers;
|
|
10832
10909
|
if (_chunkQE7D7TZRcjs.normalizeProcessVersion.call(void 0, out.process) === _chunkQE7D7TZRcjs.LEGACY_PROCESS_VERSION) {
|
|
10833
10910
|
delete out.process;
|
|
@@ -10863,11 +10940,11 @@ function withDevelop(layer, partial) {
|
|
|
10863
10940
|
return { ...layer, filters };
|
|
10864
10941
|
}
|
|
10865
10942
|
function withBlur(layer, radius) {
|
|
10866
|
-
const existing = _optionalChain([layer, 'access',
|
|
10943
|
+
const existing = _optionalChain([layer, 'access', _465 => _465.filters, 'optionalAccess', _466 => _466.find, 'call', _467 => _467((f) => f.kind === "blur")]);
|
|
10867
10944
|
const filters = (_nullishCoalesce(layer.filters, () => ( []))).filter((f) => f.kind !== "blur");
|
|
10868
10945
|
if (radius > 0) {
|
|
10869
10946
|
filters.push({
|
|
10870
|
-
id: _nullishCoalesce(_optionalChain([existing, 'optionalAccess',
|
|
10947
|
+
id: _nullishCoalesce(_optionalChain([existing, 'optionalAccess', _468 => _468.id]), () => ( (layer.source === "document" ? _chunkQE7D7TZRcjs.BLUR_FILTER_ID : _chunkQE7D7TZRcjs.newLayerId.call(void 0, "flt")))),
|
|
10871
10948
|
kind: "blur",
|
|
10872
10949
|
enabled: true,
|
|
10873
10950
|
radius
|
|
@@ -10963,7 +11040,7 @@ function collectStateTiles(layers, into) {
|
|
|
10963
11040
|
if (l.type === "shape" || l.type === "type") _chunk474IQG74cjs.collectTiles.call(void 0, l.surface, into);
|
|
10964
11041
|
if (l.type === "smart") {
|
|
10965
11042
|
_chunk474IQG74cjs.collectTiles.call(void 0, l.surface, into);
|
|
10966
|
-
if (_optionalChain([l, 'access',
|
|
11043
|
+
if (_optionalChain([l, 'access', _469 => _469.smartFilters, 'optionalAccess', _470 => _470.mask])) _chunk474IQG74cjs.collectTiles.call(void 0, l.smartFilters.mask.surface, into);
|
|
10967
11044
|
if (l.contents.raster) _chunk474IQG74cjs.collectTiles.call(void 0, l.contents.raster, into);
|
|
10968
11045
|
if (l.contents.document) collectStateTiles(l.contents.document.layers, into);
|
|
10969
11046
|
}
|
|
@@ -10995,7 +11072,7 @@ function pixelsOnly(layers) {
|
|
|
10995
11072
|
for (const l of layers) {
|
|
10996
11073
|
if (l.type === "adjustment") continue;
|
|
10997
11074
|
if (l.type === "group") out.push({ ...l, children: pixelsOnly(l.children) });
|
|
10998
|
-
else if (l.type === "pixel" && _optionalChain([l, 'access',
|
|
11075
|
+
else if (l.type === "pixel" && _optionalChain([l, 'access', _471 => _471.filters, 'optionalAccess', _472 => _472.length])) {
|
|
10999
11076
|
const p = { ...l };
|
|
11000
11077
|
delete p.filters;
|
|
11001
11078
|
out.push(p);
|
|
@@ -11061,7 +11138,7 @@ function toHex(c) {
|
|
|
11061
11138
|
return "#" + [c[0], c[1], c[2]].map((v) => Math.round(v).toString(16).padStart(2, "0")).join("");
|
|
11062
11139
|
}
|
|
11063
11140
|
function normalizeSelection(mask) {
|
|
11064
|
-
return _optionalChain([mask, 'optionalAccess',
|
|
11141
|
+
return _optionalChain([mask, 'optionalAccess', _473 => _473.bounds]) ? mask : null;
|
|
11065
11142
|
}
|
|
11066
11143
|
function sameSelection(a, b) {
|
|
11067
11144
|
if (a.width !== b.width || a.height !== b.height) return false;
|
|
@@ -11271,7 +11348,7 @@ function loadImageEditorDocument(input) {
|
|
|
11271
11348
|
}
|
|
11272
11349
|
const state = { version: 1, ...result.value };
|
|
11273
11350
|
if (isV2) {
|
|
11274
|
-
if (_optionalChain([state, 'access',
|
|
11351
|
+
if (_optionalChain([state, 'access', _474 => _474.adjustments, 'access', _475 => _475.layers, 'optionalAccess', _476 => _476.length])) state.version = 2;
|
|
11275
11352
|
result.report.version = 2;
|
|
11276
11353
|
}
|
|
11277
11354
|
if (state.selection === void 0) delete state.selection;
|
|
@@ -11479,7 +11556,7 @@ function findAdjustmentControl(id) {
|
|
|
11479
11556
|
}
|
|
11480
11557
|
function findLayerControl(kind, id) {
|
|
11481
11558
|
if (id === "opacity") return ADJUSTMENT_LAYER_OPACITY_CONTROL;
|
|
11482
|
-
return _optionalChain([ADJUSTMENT_LAYER_CONTROLS, 'access',
|
|
11559
|
+
return _optionalChain([ADJUSTMENT_LAYER_CONTROLS, 'access', _477 => _477[kind], 'optionalAccess', _478 => _478.find, 'call', _479 => _479((c) => c.id === id)]);
|
|
11483
11560
|
}
|
|
11484
11561
|
function clampControlValue(spec, v) {
|
|
11485
11562
|
if (typeof v !== "number" || !Number.isFinite(v)) return spec.default;
|
|
@@ -11924,6 +12001,13 @@ var rectProperties = {
|
|
|
11924
12001
|
width: { type: "number", exclusiveMinimum: 0, description: "Width in natural image pixels." },
|
|
11925
12002
|
height: { type: "number", exclusiveMinimum: 0, description: "Height in natural image pixels." }
|
|
11926
12003
|
};
|
|
12004
|
+
var rectSchemaStrict = {
|
|
12005
|
+
type: "object",
|
|
12006
|
+
properties: rectProperties,
|
|
12007
|
+
required: ["x", "y", "width", "height"],
|
|
12008
|
+
additionalProperties: false,
|
|
12009
|
+
description: "A rectangle in natural image pixels."
|
|
12010
|
+
};
|
|
11927
12011
|
function shapeOptions(args) {
|
|
11928
12012
|
return { mode: _chunkQYLWG22Ncjs.parseSelectionMode.call(void 0, args.mode), feather: num2(args.feather, 0), antiAlias: args.antiAlias !== false };
|
|
11929
12013
|
}
|
|
@@ -11945,7 +12029,7 @@ function summary(controller) {
|
|
|
11945
12029
|
const area = _chunkQYLWG22Ncjs.selectionArea.call(void 0, sel);
|
|
11946
12030
|
return {
|
|
11947
12031
|
empty: !sel,
|
|
11948
|
-
bounds: _nullishCoalesce(_optionalChain([sel, 'optionalAccess',
|
|
12032
|
+
bounds: _nullishCoalesce(_optionalChain([sel, 'optionalAccess', _480 => _480.bounds]), () => ( null)),
|
|
11949
12033
|
/** Σ coverage in pixels. */
|
|
11950
12034
|
area: Math.round(area),
|
|
11951
12035
|
percent: Math.round(area / Math.max(1, width * height) * 1e4) / 100,
|
|
@@ -12021,7 +12105,7 @@ function createImageSelectionTools(controller) {
|
|
|
12021
12105
|
break;
|
|
12022
12106
|
}
|
|
12023
12107
|
case "polygon": {
|
|
12024
|
-
const list = Array.isArray(points) ? points.map((p) => ({ x: num2(_optionalChain([p, 'optionalAccess',
|
|
12108
|
+
const list = Array.isArray(points) ? points.map((p) => ({ x: num2(_optionalChain([p, 'optionalAccess', _481 => _481.x]), NaN), y: num2(_optionalChain([p, 'optionalAccess', _482 => _482.y]), NaN) })) : [];
|
|
12025
12109
|
if (list.length < 3 || !list.every((p) => Number.isFinite(p.x) && Number.isFinite(p.y))) {
|
|
12026
12110
|
throw new Error("polygon needs points: at least 3 { x, y } vertices.");
|
|
12027
12111
|
}
|
|
@@ -12149,7 +12233,7 @@ function createImageSelectionTools(controller) {
|
|
|
12149
12233
|
},
|
|
12150
12234
|
annotations: writeAnnotations("Refine the selection edge"),
|
|
12151
12235
|
handler: async (params) => {
|
|
12152
|
-
const edits = Array.isArray(params.edits) ? params.edits.map((e) => e.kind === "object" ? { ...e } : { ...e, points: (_nullishCoalesce(e.points, () => ( []))).map((p) => ({ x: num2(_optionalChain([p, 'optionalAccess',
|
|
12236
|
+
const edits = Array.isArray(params.edits) ? params.edits.map((e) => e.kind === "object" ? { ...e } : { ...e, points: (_nullishCoalesce(e.points, () => ( []))).map((p) => ({ x: num2(_optionalChain([p, 'optionalAccess', _483 => _483.x]), NaN), y: num2(_optionalChain([p, 'optionalAccess', _484 => _484.y]), NaN) })) }) : [];
|
|
12153
12237
|
for (const e of edits) {
|
|
12154
12238
|
if (e.kind === "object") {
|
|
12155
12239
|
if (!e.rect === !e.point) throw new Error("An object edit takes rect (a box around the object) or point (on it).");
|
|
@@ -12313,7 +12397,7 @@ function createImageSelectionTools(controller) {
|
|
|
12313
12397
|
},
|
|
12314
12398
|
annotations: writeAnnotations("Select a polygon (lasso)", true),
|
|
12315
12399
|
handler: async (args) => {
|
|
12316
|
-
const list = Array.isArray(args.points) ? args.points.map((p) => ({ x: num2(_optionalChain([p, 'optionalAccess',
|
|
12400
|
+
const list = Array.isArray(args.points) ? args.points.map((p) => ({ x: num2(_optionalChain([p, 'optionalAccess', _485 => _485.x]), NaN), y: num2(_optionalChain([p, 'optionalAccess', _486 => _486.y]), NaN) })) : [];
|
|
12317
12401
|
if (list.length < 3 || !list.every((p) => Number.isFinite(p.x) && Number.isFinite(p.y))) {
|
|
12318
12402
|
throw new Error("points needs at least 3 { x, y } vertices in natural image pixels.");
|
|
12319
12403
|
}
|
|
@@ -12350,7 +12434,7 @@ function createImageSelectionTools(controller) {
|
|
|
12350
12434
|
},
|
|
12351
12435
|
annotations: writeAnnotations("Quick Selection"),
|
|
12352
12436
|
handler: async (args, context) => {
|
|
12353
|
-
const strokes = Array.isArray(args.strokes) ? args.strokes.map((s) => Array.isArray(s) ? s.map((p) => ({ x: num2(_optionalChain([p, 'optionalAccess',
|
|
12437
|
+
const strokes = Array.isArray(args.strokes) ? args.strokes.map((s) => Array.isArray(s) ? s.map((p) => ({ x: num2(_optionalChain([p, 'optionalAccess', _487 => _487.x]), NaN), y: num2(_optionalChain([p, 'optionalAccess', _488 => _488.y]), NaN) })) : []) : [];
|
|
12354
12438
|
if (!strokes.length || strokes.some((s) => !s.length || !s.every((p) => Number.isFinite(p.x) && Number.isFinite(p.y)))) {
|
|
12355
12439
|
throw new Error("strokes needs at least one stroke of { x, y } points in natural image pixels.");
|
|
12356
12440
|
}
|
|
@@ -12359,7 +12443,7 @@ function createImageSelectionTools(controller) {
|
|
|
12359
12443
|
mode: _chunkQYLWG22Ncjs.parseSelectionMode.call(void 0, args.mode),
|
|
12360
12444
|
sampleAllLayers: args.sampleAllLayers,
|
|
12361
12445
|
enhanceEdge: args.enhanceEdge,
|
|
12362
|
-
signal: _optionalChain([context, 'optionalAccess',
|
|
12446
|
+
signal: _optionalChain([context, 'optionalAccess', _489 => _489.signal])
|
|
12363
12447
|
});
|
|
12364
12448
|
return summary(controller);
|
|
12365
12449
|
}
|
|
@@ -12397,7 +12481,7 @@ function createImageSelectionTools(controller) {
|
|
|
12397
12481
|
sampleAllLayers: args.sampleAllLayers,
|
|
12398
12482
|
enhanceEdge: args.enhanceEdge,
|
|
12399
12483
|
useModel: args.useModel,
|
|
12400
|
-
signal: _optionalChain([context, 'optionalAccess',
|
|
12484
|
+
signal: _optionalChain([context, 'optionalAccess', _490 => _490.signal])
|
|
12401
12485
|
};
|
|
12402
12486
|
const { method } = rect ? await controller.selectObject({ rect: { x: num2(rect.x, NaN), y: num2(rect.y, NaN), width: num2(rect.width, NaN), height: num2(rect.height, NaN) } }, options) : await controller.selectObject({ point: { x: num2(point.x, NaN), y: num2(point.y, NaN) } }, options);
|
|
12403
12487
|
return { ...summary(controller), method };
|
|
@@ -12426,7 +12510,7 @@ function createImageSelectionTools(controller) {
|
|
|
12426
12510
|
softness: args.softness === void 0 ? void 0 : num2(args.softness, 4),
|
|
12427
12511
|
mode: _chunkQYLWG22Ncjs.parseSelectionMode.call(void 0, args.mode),
|
|
12428
12512
|
sampleAllLayers: args.sampleAllLayers,
|
|
12429
|
-
signal: _optionalChain([context, 'optionalAccess',
|
|
12513
|
+
signal: _optionalChain([context, 'optionalAccess', _491 => _491.signal])
|
|
12430
12514
|
});
|
|
12431
12515
|
return { ...summary(controller), noiseLevel };
|
|
12432
12516
|
}
|
|
@@ -12454,7 +12538,7 @@ function createImageSelectionTools(controller) {
|
|
|
12454
12538
|
mode: _chunkQYLWG22Ncjs.parseSelectionMode.call(void 0, args.mode),
|
|
12455
12539
|
sampleAllLayers: args.sampleAllLayers,
|
|
12456
12540
|
useModel: args.useModel,
|
|
12457
|
-
signal: _optionalChain([context, 'optionalAccess',
|
|
12541
|
+
signal: _optionalChain([context, 'optionalAccess', _492 => _492.signal])
|
|
12458
12542
|
});
|
|
12459
12543
|
return { ...summary(controller), method, ...note ? { note } : {} };
|
|
12460
12544
|
}
|
|
@@ -12552,7 +12636,7 @@ function createImageSelectionTools(controller) {
|
|
|
12552
12636
|
await controller.selectColorRangePreset(args.preset, { ...common, falloff: num2(args.fuzziness, 20) });
|
|
12553
12637
|
} else {
|
|
12554
12638
|
const samples = args.samples.map((s, i) => {
|
|
12555
|
-
if (typeof _optionalChain([s, 'optionalAccess',
|
|
12639
|
+
if (typeof _optionalChain([s, 'optionalAccess', _493 => _493.color]) !== "string" || !/^#?[0-9a-f]{6}$/i.test(s.color.trim())) throw new Error(`samples[${i}].color must be #rrggbb.`);
|
|
12556
12640
|
const at = typeof s.x === "number" && typeof s.y === "number" ? { x: s.x, y: s.y } : void 0;
|
|
12557
12641
|
return at ? { color: s.color, at } : { color: s.color };
|
|
12558
12642
|
});
|
|
@@ -12777,25 +12861,33 @@ function createImageSelectionTools(controller) {
|
|
|
12777
12861
|
const fillTool = {
|
|
12778
12862
|
name: "content_aware_fill",
|
|
12779
12863
|
title: "Content-Aware Fill",
|
|
12780
|
-
description: "Edit \u203A Content-Aware Fill: removes what is selected by filling it with texture and edges synthesised from around it (on a pixel layer, default the active one). Select the object with a small margin (expand 2\u20134 px) first. output current paints into the layer; new-layer puts the fill on its own layer above it, so it can be masked or removed (recommended). sampleRadius limits where it samples from. Deterministic for a seed. 8-bit documents. One undo step. Returns the layer id and filled bounds.",
|
|
12864
|
+
description: "Edit \u203A Content-Aware Fill: removes what is selected by filling it with texture and edges synthesised from around it (on a pixel layer, default the active one). Select the object with a small margin (expand 2\u20134 px) first. output current paints into the layer; new-layer puts the fill on its own layer above it, so it can be masked or removed (recommended). sampleRadius limits where it samples from; sampleRects (only these areas), samplingChannelId (a saved alpha channel) and excludeRects (never these, e.g. another object that would be copied in) set the sampling area as the Content-Aware Fill workspace does. Deterministic for a seed. 8-bit documents. One undo step. Returns the layer id and filled bounds.",
|
|
12781
12865
|
inputSchema: {
|
|
12782
12866
|
type: "object",
|
|
12783
12867
|
properties: {
|
|
12784
12868
|
output: { type: "string", enum: ["new-layer", "current"], description: "new-layer or current (default current)." },
|
|
12785
12869
|
sampleRadius: { type: "number", minimum: 32, maximum: 4e3, description: "Sample within this many pixels of the selection (default its larger side)." },
|
|
12786
12870
|
seed: { type: "integer", minimum: 0, description: "Random seed; another seed gives another fill to choose from (default 0)." },
|
|
12871
|
+
sampleRects: { type: "array", minItems: 1, items: rectSchemaStrict, description: "Sample only from these rectangles (natural image pixels), instead of the ring around the selection." },
|
|
12872
|
+
excludeRects: { type: "array", minItems: 1, items: rectSchemaStrict, description: "Never sample from these rectangles (natural image pixels)." },
|
|
12873
|
+
samplingChannelId: { type: "string", description: "Sample only where this alpha channel is selected (see list_channels)." },
|
|
12787
12874
|
layerId: layerIdSchema
|
|
12788
12875
|
},
|
|
12789
12876
|
additionalProperties: false
|
|
12790
12877
|
},
|
|
12791
12878
|
annotations: writeAnnotations("Content-Aware Fill"),
|
|
12792
|
-
handler: (args) => {
|
|
12879
|
+
handler: async (args, context) => {
|
|
12793
12880
|
if (!controller.getSelection()) throw new Error("Nothing is selected; select what to remove first.");
|
|
12794
|
-
|
|
12881
|
+
const rects = (v) => Array.isArray(v) ? v.map((r) => ({ x: num2(_optionalChain([r, 'optionalAccess', _494 => _494.x]), NaN), y: num2(_optionalChain([r, 'optionalAccess', _495 => _495.y]), NaN), width: num2(_optionalChain([r, 'optionalAccess', _496 => _496.width]), NaN), height: num2(_optionalChain([r, 'optionalAccess', _497 => _497.height]), NaN) })) : void 0;
|
|
12882
|
+
return controller.contentAwareFillAsync({
|
|
12795
12883
|
output: args.output,
|
|
12796
12884
|
sampleRadius: args.sampleRadius,
|
|
12797
12885
|
seed: args.seed,
|
|
12798
|
-
layerId: requireLayerId(args.layerId)
|
|
12886
|
+
layerId: requireLayerId(args.layerId),
|
|
12887
|
+
sampleRects: rects(args.sampleRects),
|
|
12888
|
+
excludeRects: rects(args.excludeRects),
|
|
12889
|
+
samplingChannelId: typeof args.samplingChannelId === "string" ? args.samplingChannelId : void 0,
|
|
12890
|
+
signal: _optionalChain([context, 'optionalAccess', _498 => _498.signal])
|
|
12799
12891
|
});
|
|
12800
12892
|
}
|
|
12801
12893
|
};
|
|
@@ -13073,13 +13165,13 @@ function createImageSubjectSelectionTool(controller) {
|
|
|
13073
13165
|
handler: async ({ target, maxSegments, mode, feather, enhanceEdge }, context) => {
|
|
13074
13166
|
if (target !== void 0 && typeof target !== "string") throw new Error("target must be a description in words.");
|
|
13075
13167
|
if (controller.segmentationProvider && !String(_nullishCoalesce(target, () => ( ""))).trim()) throw new Error("target must describe what to select (a model is set, and it selects by description).");
|
|
13076
|
-
const perform = _optionalChain([context, 'optionalAccess',
|
|
13168
|
+
const perform = _optionalChain([context, 'optionalAccess', _499 => _499.perform]);
|
|
13077
13169
|
const { segments, method, note } = await controller.selectSubject(String(_nullishCoalesce(target, () => ( ""))), {
|
|
13078
13170
|
mode: _chunkQYLWG22Ncjs.parseSelectionMode.call(void 0, mode),
|
|
13079
13171
|
feather: num2(feather, 0),
|
|
13080
13172
|
maxSegments: typeof maxSegments === "number" ? Math.max(1, Math.round(maxSegments)) : void 0,
|
|
13081
13173
|
enhanceEdge: enhanceEdge === true,
|
|
13082
|
-
signal: _optionalChain([context, 'optionalAccess',
|
|
13174
|
+
signal: _optionalChain([context, 'optionalAccess', _500 => _500.signal]),
|
|
13083
13175
|
// Under playback the cursor traces what the model found, as a lasso, before it is selected.
|
|
13084
13176
|
beforeApply: perform ? (outlines) => perform(planOutlineTrace(outlines)) : void 0
|
|
13085
13177
|
});
|
|
@@ -13157,7 +13249,7 @@ async function renderImageRegion(controller, request) {
|
|
|
13157
13249
|
const maskView = maskViewCanvas(controller, document);
|
|
13158
13250
|
if (maskView) context.drawImage(maskView, rect.x, rect.y, rect.width, rect.height, 0, 0, out.width, out.height);
|
|
13159
13251
|
const selection = state.selection;
|
|
13160
|
-
if (_optionalChain([selection, 'optionalAccess',
|
|
13252
|
+
if (_optionalChain([selection, 'optionalAccess', _501 => _501.bounds]) && selection.width === state.imageDimensions.width && selection.height === state.imageDimensions.height) {
|
|
13161
13253
|
const shade = selectionShade(selection, document);
|
|
13162
13254
|
if (shade) context.drawImage(shade, rect.x, rect.y, rect.width, rect.height, 0, 0, out.width, out.height);
|
|
13163
13255
|
}
|
|
@@ -13182,7 +13274,7 @@ function createImageCaptureSurface(controller) {
|
|
|
13182
13274
|
return {
|
|
13183
13275
|
units: "image pixels",
|
|
13184
13276
|
content: whole,
|
|
13185
|
-
selection: () => ({ rect: _nullishCoalesce(_optionalChain([controller, 'access',
|
|
13277
|
+
selection: () => ({ rect: _nullishCoalesce(_optionalChain([controller, 'access', _502 => _502.getState, 'call', _503 => _503(), 'access', _504 => _504.selection, 'optionalAccess', _505 => _505.bounds]), () => ( null)) }),
|
|
13186
13278
|
overlays: "a shade over unselected pixels, the crop box outline and a layer mask view (set_mask_view)",
|
|
13187
13279
|
maxScale: 8,
|
|
13188
13280
|
render: (request) => renderImageRegion(controller, request)
|
|
@@ -13516,7 +13608,7 @@ function describeLayer(layer, activeId, boundsOf) {
|
|
|
13516
13608
|
out.bounds = boundsOf(layer);
|
|
13517
13609
|
out.fillOpacity = round3(_nullishCoalesce(layer.fillOpacity, () => ( 1)));
|
|
13518
13610
|
out.shape = {
|
|
13519
|
-
components: layer.components.map((c) => ({ op: c.op, kind: _nullishCoalesce(_optionalChain([c, 'access',
|
|
13611
|
+
components: layer.components.map((c) => ({ op: c.op, kind: _nullishCoalesce(_optionalChain([c, 'access', _506 => _506.live, 'optionalAccess', _507 => _507.kind]), () => ( "path")) })),
|
|
13520
13612
|
fill: layer.fill ? layer.fill.type : null,
|
|
13521
13613
|
stroke: layer.stroke ? { width: layer.stroke.width, paint: layer.stroke.paint.type } : null
|
|
13522
13614
|
};
|
|
@@ -13539,8 +13631,8 @@ function describeLayer(layer, activeId, boundsOf) {
|
|
|
13539
13631
|
out.bounds = boundsOf(layer);
|
|
13540
13632
|
out.fillOpacity = round3(_nullishCoalesce(layer.fillOpacity, () => ( 1)));
|
|
13541
13633
|
out.contents = { id: layer.contents.id, name: layer.contents.name, kind: layer.contents.kind, width: layer.contents.width, height: layer.contents.height };
|
|
13542
|
-
out.smartFilters = (_nullishCoalesce(_optionalChain([layer, 'access',
|
|
13543
|
-
out.filterMask = maskSummary(_optionalChain([layer, 'access',
|
|
13634
|
+
out.smartFilters = (_nullishCoalesce(_optionalChain([layer, 'access', _508 => _508.smartFilters, 'optionalAccess', _509 => _509.filters]), () => ( []))).map((f) => ({ id: f.id, kind: f.kind, enabled: f.enabled }));
|
|
13635
|
+
out.filterMask = maskSummary(_optionalChain([layer, 'access', _510 => _510.smartFilters, 'optionalAccess', _511 => _511.mask]));
|
|
13544
13636
|
break;
|
|
13545
13637
|
}
|
|
13546
13638
|
return out;
|
|
@@ -13568,7 +13660,7 @@ function createImageLayerTools(controller) {
|
|
|
13568
13660
|
if (!loc) return null;
|
|
13569
13661
|
return {
|
|
13570
13662
|
...describeLayer(loc.layer, s.activeLayerId, (x) => controller.getLayerBounds(x.id)),
|
|
13571
|
-
parentId: _nullishCoalesce(_optionalChain([loc, 'access',
|
|
13663
|
+
parentId: _nullishCoalesce(_optionalChain([loc, 'access', _512 => _512.parent, 'optionalAccess', _513 => _513.id]), () => ( null)),
|
|
13572
13664
|
index: loc.index
|
|
13573
13665
|
};
|
|
13574
13666
|
};
|
|
@@ -13891,7 +13983,7 @@ function createImageLayerTools(controller) {
|
|
|
13891
13983
|
if (view !== "gray" && view !== "overlay" && view !== "off") throw new Error(`Unknown view "${String(view)}". Use gray, overlay or off.`);
|
|
13892
13984
|
const id = view === "off" || layerId === void 0 ? void 0 : exists(layerId);
|
|
13893
13985
|
const shown = controller.setMaskView(view, id);
|
|
13894
|
-
return { view: _nullishCoalesce(_optionalChain([shown, 'optionalAccess',
|
|
13986
|
+
return { view: _nullishCoalesce(_optionalChain([shown, 'optionalAccess', _514 => _514.mode]), () => ( "off")), layerId: _nullishCoalesce(_optionalChain([shown, 'optionalAccess', _515 => _515.layerId]), () => ( null)) };
|
|
13895
13987
|
}
|
|
13896
13988
|
};
|
|
13897
13989
|
const maskProps = {
|
|
@@ -14424,14 +14516,14 @@ var SelectionGesture = (_class13 = class {
|
|
|
14424
14516
|
if (!this.start || !this.current) return null;
|
|
14425
14517
|
const { tool } = this.getOptions();
|
|
14426
14518
|
if (tool === "lasso" || tool === "quick") return this.points.length > 1 ? this.points.slice() : null;
|
|
14427
|
-
const rect =
|
|
14519
|
+
const rect = _chunkL52VMQZScjs.normalizeRect.call(void 0, {
|
|
14428
14520
|
x: this.start.x,
|
|
14429
14521
|
y: this.start.y,
|
|
14430
14522
|
width: this.current.x - this.start.x,
|
|
14431
14523
|
height: this.current.y - this.start.y
|
|
14432
14524
|
});
|
|
14433
14525
|
if (rect.width < 1 && rect.height < 1) return null;
|
|
14434
|
-
if (tool === "ellipse") return
|
|
14526
|
+
if (tool === "ellipse") return _chunkL52VMQZScjs.ellipsePoints.call(void 0, rect);
|
|
14435
14527
|
return [
|
|
14436
14528
|
{ x: rect.x, y: rect.y },
|
|
14437
14529
|
{ x: rect.x + rect.width, y: rect.y },
|
|
@@ -14579,7 +14671,7 @@ var SelectionGesture = (_class13 = class {
|
|
|
14579
14671
|
const options = this.getOptions();
|
|
14580
14672
|
const mode = selectionModeFromModifiers(_nullishCoalesce(modifiers, () => ( this.modifiers)), options.mode);
|
|
14581
14673
|
if (options.tool === "object") {
|
|
14582
|
-
const rect2 =
|
|
14674
|
+
const rect2 = _chunkL52VMQZScjs.normalizeRect.call(void 0, { x: this.start.x, y: this.start.y, width: this.current.x - this.start.x, height: this.current.y - this.start.y });
|
|
14583
14675
|
this.start = null;
|
|
14584
14676
|
this.current = null;
|
|
14585
14677
|
this.points = [];
|
|
@@ -14612,7 +14704,7 @@ var SelectionGesture = (_class13 = class {
|
|
|
14612
14704
|
return false;
|
|
14613
14705
|
}
|
|
14614
14706
|
const path = this.draftPath;
|
|
14615
|
-
const rect =
|
|
14707
|
+
const rect = _chunkL52VMQZScjs.normalizeRect.call(void 0, {
|
|
14616
14708
|
x: this.start.x,
|
|
14617
14709
|
y: this.start.y,
|
|
14618
14710
|
width: this.current.x - this.start.x,
|
|
@@ -14753,7 +14845,7 @@ function handleSelectionShortcut(controller, e, onError) {
|
|
|
14753
14845
|
try {
|
|
14754
14846
|
fn();
|
|
14755
14847
|
} catch (err) {
|
|
14756
|
-
_optionalChain([onError, 'optionalCall',
|
|
14848
|
+
_optionalChain([onError, 'optionalCall', _516 => _516(err instanceof Error ? err.message : String(err))]);
|
|
14757
14849
|
}
|
|
14758
14850
|
return true;
|
|
14759
14851
|
};
|
|
@@ -14768,9 +14860,9 @@ function handleMaskViewKey(controller, e) {
|
|
|
14768
14860
|
if (e.ctrlKey || e.metaKey || e.altKey || e.key !== "\\") return false;
|
|
14769
14861
|
const id = controller.getState().activeLayerId;
|
|
14770
14862
|
const layer = id ? controller.getLayer(id) : null;
|
|
14771
|
-
if (!_optionalChain([layer, 'optionalAccess',
|
|
14863
|
+
if (!_optionalChain([layer, 'optionalAccess', _517 => _517.mask]) || layer.mask.source) return false;
|
|
14772
14864
|
const view = controller.getMaskView();
|
|
14773
|
-
controller.setMaskView(_optionalChain([view, 'optionalAccess',
|
|
14865
|
+
controller.setMaskView(_optionalChain([view, 'optionalAccess', _518 => _518.layerId]) === layer.id && view.mode === "overlay" ? "off" : "overlay", layer.id);
|
|
14774
14866
|
return true;
|
|
14775
14867
|
}
|
|
14776
14868
|
function handleQuickMaskKey(controller, e) {
|
|
@@ -14984,7 +15076,7 @@ var PaintGesture = (_class14 = class {
|
|
|
14984
15076
|
const layer = this.controller.getActiveLayer();
|
|
14985
15077
|
if (!layer) throw new Error("Select a layer to move in the Layers panel.");
|
|
14986
15078
|
if (layer.type !== "pixel" && layer.type !== "shape" && layer.type !== "smart") throw new Error(`Only pixel, shape and smart object layers move; "${layer.name}" is a ${layer.type} layer.`);
|
|
14987
|
-
if (_optionalChain([layer, 'access',
|
|
15079
|
+
if (_optionalChain([layer, 'access', _519 => _519.locks, 'optionalAccess', _520 => _520.all]) || _optionalChain([layer, 'access', _521 => _521.locks, 'optionalAccess', _522 => _522.position])) throw new Error(`Layer "${layer.name}" has its position locked.`);
|
|
14988
15080
|
const origin = layer.type === "pixel" ? { ...layer.offset } : layer.type === "smart" ? { ...layer.placement.corners[0] } : (() => {
|
|
14989
15081
|
const b = _chunkQE7D7TZRcjs.shapeGeometryBounds.call(void 0, layer);
|
|
14990
15082
|
return b ? { x: b.x, y: b.y } : { x: 0, y: 0 };
|
|
@@ -15041,7 +15133,7 @@ var PaintGesture = (_class14 = class {
|
|
|
15041
15133
|
this.move = null;
|
|
15042
15134
|
}
|
|
15043
15135
|
cancel() {
|
|
15044
|
-
_optionalChain([this, 'access',
|
|
15136
|
+
_optionalChain([this, 'access', _523 => _523.stroke, 'optionalAccess', _524 => _524.cancel, 'call', _525 => _525()]);
|
|
15045
15137
|
this.stroke = null;
|
|
15046
15138
|
this.move = null;
|
|
15047
15139
|
}
|
|
@@ -15451,7 +15543,7 @@ var TARGET2 = {
|
|
|
15451
15543
|
};
|
|
15452
15544
|
var SAMPLE = {
|
|
15453
15545
|
type: "string",
|
|
15454
|
-
enum: [...
|
|
15546
|
+
enum: [..._chunkYF3YZZ6Gcjs.RETOUCH_SAMPLES],
|
|
15455
15547
|
description: "What is sampled: current (default: the target layer), current-below (the composite of this layer and everything under it), or all (the composite of every layer). Sample current-below or all to retouch onto an empty layer above the image."
|
|
15456
15548
|
};
|
|
15457
15549
|
function readTarget2(args) {
|
|
@@ -15530,7 +15622,7 @@ function createImageRetouchTools(controller) {
|
|
|
15530
15622
|
type: "object",
|
|
15531
15623
|
properties: {
|
|
15532
15624
|
points: POINTS,
|
|
15533
|
-
type: { type: "string", enum: [...
|
|
15625
|
+
type: { type: "string", enum: [..._chunkYF3YZZ6Gcjs.SPOT_HEAL_TYPES], description: "proximity-match (default the current option), content-aware or smooth." },
|
|
15534
15626
|
sample: SAMPLE,
|
|
15535
15627
|
brush: BRUSH2,
|
|
15536
15628
|
...TARGET2
|
|
@@ -15563,7 +15655,7 @@ function createImageRetouchTools(controller) {
|
|
|
15563
15655
|
type: "object",
|
|
15564
15656
|
properties: {
|
|
15565
15657
|
points: POINTS,
|
|
15566
|
-
range: { type: "string", enum: [...
|
|
15658
|
+
range: { type: "string", enum: [..._chunkYF3YZZ6Gcjs.TONE_RANGES], description: `Which tones to ${verb} most: shadows, midtones (default the current option, midtones) or highlights.` },
|
|
15567
15659
|
exposure: { type: "number", minimum: 0, maximum: 1, description: "Strength 0..1 (default the current option, 0.5). Overlapping dabs in one stroke never go past it; another stroke builds on it." },
|
|
15568
15660
|
protectTones: { type: "boolean", description: "Change luma only, keeping hue and saturation (default true)." },
|
|
15569
15661
|
brush: BRUSH2,
|
|
@@ -15672,8 +15764,8 @@ function createImageRetouchTools(controller) {
|
|
|
15672
15764
|
properties: {
|
|
15673
15765
|
aligned: { type: "boolean", description: "Clone / heal: keep the offset from stroke to stroke (default true)." },
|
|
15674
15766
|
sample: SAMPLE,
|
|
15675
|
-
spotType: { type: "string", enum: [...
|
|
15676
|
-
range: { type: "string", enum: [...
|
|
15767
|
+
spotType: { type: "string", enum: [..._chunkYF3YZZ6Gcjs.SPOT_HEAL_TYPES], description: "Spot heal: proximity-match (default), content-aware or smooth." },
|
|
15768
|
+
range: { type: "string", enum: [..._chunkYF3YZZ6Gcjs.TONE_RANGES], description: "Dodge / burn: shadows, midtones (default) or highlights." },
|
|
15677
15769
|
exposure: { type: "number", minimum: 0, maximum: 1, description: "Dodge / burn strength 0..1 (default 0.5)." },
|
|
15678
15770
|
protectTones: { type: "boolean", description: "Dodge / burn: keep hue and saturation (default true)." },
|
|
15679
15771
|
spongeMode: { type: "string", enum: ["desaturate", "saturate"], description: "Sponge: desaturate (default) or saturate." },
|
|
@@ -16122,7 +16214,7 @@ function createImageSmartObjectTools(controller) {
|
|
|
16122
16214
|
const layerSummary = (id) => {
|
|
16123
16215
|
const s = controller.getState();
|
|
16124
16216
|
const loc = _chunkUOGKSVRQcjs.findLayer.call(void 0, s.layers, id);
|
|
16125
|
-
return loc ? { ...describeLayer(loc.layer, s.activeLayerId, (x) => controller.getLayerBounds(x.id)), parentId: _nullishCoalesce(_optionalChain([loc, 'access',
|
|
16217
|
+
return loc ? { ...describeLayer(loc.layer, s.activeLayerId, (x) => controller.getLayerBounds(x.id)), parentId: _nullishCoalesce(_optionalChain([loc, 'access', _526 => _526.parent, 'optionalAccess', _527 => _527.id]), () => ( null)), index: loc.index } : null;
|
|
16126
16218
|
};
|
|
16127
16219
|
const getSmart = {
|
|
16128
16220
|
name: "get_smart_object",
|
|
@@ -16679,7 +16771,7 @@ function createImageShapeTools(controller) {
|
|
|
16679
16771
|
const layerSummary = (id) => {
|
|
16680
16772
|
const s = controller.getState();
|
|
16681
16773
|
const loc = _chunkUOGKSVRQcjs.findLayer.call(void 0, s.layers, id);
|
|
16682
|
-
return loc ? { ...describeLayer(loc.layer, s.activeLayerId, (x) => controller.getLayerBounds(x.id)), parentId: _nullishCoalesce(_optionalChain([loc, 'access',
|
|
16774
|
+
return loc ? { ...describeLayer(loc.layer, s.activeLayerId, (x) => controller.getLayerBounds(x.id)), parentId: _nullishCoalesce(_optionalChain([loc, 'access', _528 => _528.parent, 'optionalAccess', _529 => _529.id]), () => ( null)), index: loc.index } : null;
|
|
16683
16775
|
};
|
|
16684
16776
|
const get = {
|
|
16685
16777
|
name: "get_shape_layer",
|
|
@@ -16896,7 +16988,7 @@ function createImageShapeTools(controller) {
|
|
|
16896
16988
|
const mode = args.mode;
|
|
16897
16989
|
controller.pathToSelection(pathSpec(args), { feather: args.feather, antiAlias: args.antiAlias, mode });
|
|
16898
16990
|
const sel = controller.getSelection();
|
|
16899
|
-
return { empty: !sel, bounds: _nullishCoalesce(_optionalChain([sel, 'optionalAccess',
|
|
16991
|
+
return { empty: !sel, bounds: _nullishCoalesce(_optionalChain([sel, 'optionalAccess', _530 => _530.bounds]), () => ( null)), area: Math.round(sel ? _chunkQYLWG22Ncjs.selectionArea.call(void 0, sel) : 0) };
|
|
16900
16992
|
}
|
|
16901
16993
|
};
|
|
16902
16994
|
const getVectorMask = {
|
|
@@ -16927,7 +17019,7 @@ function createImageShapeTools(controller) {
|
|
|
16927
17019
|
handler: (args) => {
|
|
16928
17020
|
const id = layerArg(args.layerId);
|
|
16929
17021
|
const spec = pathSpec(args);
|
|
16930
|
-
const hasPath = _optionalChain([spec, 'access',
|
|
17022
|
+
const hasPath = _optionalChain([spec, 'access', _531 => _531.components, 'optionalAccess', _532 => _532.length]) || spec.shape !== void 0 || spec.subpaths !== void 0;
|
|
16931
17023
|
const from = _nullishCoalesce(args.from, () => ( (hasPath ? "path" : "reveal-all")));
|
|
16932
17024
|
if (from !== "selection" && TRACE_KEYS.some((k) => args[k] !== void 0)) throw new Error("tolerance, cornerRoundness and minArea apply only to from selection.");
|
|
16933
17025
|
controller.addVectorMask(id, from, spec, traceOptions(args));
|
|
@@ -17047,7 +17139,7 @@ function createImageTypeTools(controller) {
|
|
|
17047
17139
|
const layerSummary = (id) => {
|
|
17048
17140
|
const s = controller.getState();
|
|
17049
17141
|
const loc = _chunkUOGKSVRQcjs.findLayer.call(void 0, s.layers, id);
|
|
17050
|
-
return loc ? { ...describeLayer(loc.layer, s.activeLayerId, (x) => controller.getLayerBounds(x.id)), parentId: _nullishCoalesce(_optionalChain([loc, 'access',
|
|
17142
|
+
return loc ? { ...describeLayer(loc.layer, s.activeLayerId, (x) => controller.getLayerBounds(x.id)), parentId: _nullishCoalesce(_optionalChain([loc, 'access', _533 => _533.parent, 'optionalAccess', _534 => _534.id]), () => ( null)), index: loc.index } : null;
|
|
17051
17143
|
};
|
|
17052
17144
|
const range = (args) => ({ start: args.start, end: args.end });
|
|
17053
17145
|
const listFonts = {
|
|
@@ -17056,7 +17148,7 @@ function createImageTypeTools(controller) {
|
|
|
17056
17148
|
description: "Returns the font families type layers can use here (generic families such as sans-serif always work). Changes nothing.",
|
|
17057
17149
|
inputSchema: { type: "object", properties: {}, additionalProperties: false },
|
|
17058
17150
|
annotations: { title: "List fonts", ...READ11 },
|
|
17059
|
-
handler: () => ({ families: controller.listFonts(), shaper: _nullishCoalesce(_optionalChain([controller, 'access',
|
|
17151
|
+
handler: () => ({ families: controller.listFonts(), shaper: _nullishCoalesce(_optionalChain([controller, 'access', _535 => _535.getTextShaper, 'call', _536 => _536(), 'optionalAccess', _537 => _537.id]), () => ( null)) })
|
|
17060
17152
|
};
|
|
17061
17153
|
const get = {
|
|
17062
17154
|
name: "get_text_layer",
|
|
@@ -17212,7 +17304,7 @@ function createImageTypeTools(controller) {
|
|
|
17212
17304
|
const init = pick2(args, ["text", "x", "y", "orientation", "box", "style", "paragraph", "rotation", "mode", "feather", "antiAlias"]);
|
|
17213
17305
|
controller.selectTextShape(init);
|
|
17214
17306
|
const sel = controller.getSelection();
|
|
17215
|
-
return { empty: !sel, bounds: _nullishCoalesce(_optionalChain([sel, 'optionalAccess',
|
|
17307
|
+
return { empty: !sel, bounds: _nullishCoalesce(_optionalChain([sel, 'optionalAccess', _538 => _538.bounds]), () => ( null)), area: Math.round(sel ? _chunkQYLWG22Ncjs.selectionArea.call(void 0, sel) : 0) };
|
|
17216
17308
|
}
|
|
17217
17309
|
};
|
|
17218
17310
|
return [listFonts, get, add2, setText, setStyle, setParagraph, setFrame, setOrientation, toShape, typeMask];
|
|
@@ -17391,7 +17483,7 @@ function createImageEditorToolProvider(controller, options = {}) {
|
|
|
17391
17483
|
for (const ref of [aboveId, parentId]) {
|
|
17392
17484
|
if (ref !== void 0 && !controller.getLayer(ref)) throw new Error(`Unknown layer "${ref}". Call list_layers for ids.`);
|
|
17393
17485
|
}
|
|
17394
|
-
if (parentId !== void 0 && _optionalChain([controller, 'access',
|
|
17486
|
+
if (parentId !== void 0 && _optionalChain([controller, 'access', _539 => _539.getLayer, 'call', _540 => _540(parentId), 'optionalAccess', _541 => _541.type]) !== "group") throw new Error(`Layer "${parentId}" is not a group.`);
|
|
17395
17487
|
const id = controller.addAdjustmentLayer({ kind, params, opacity, blend, name, aboveId, parentId, useSelection: useSelection !== false });
|
|
17396
17488
|
const layer = controller.getAdjustmentLayer(id);
|
|
17397
17489
|
return { layer: JSON.parse(JSON.stringify(layer)), index: controller.getAdjustmentLayers().findIndex((l) => l.id === id), masked: Boolean(layer.mask) };
|
|
@@ -17580,7 +17672,7 @@ var SELECT_AND_MASK_TOOLS = [
|
|
|
17580
17672
|
{ id: "zoom", label: "Zoom", key: "z" }
|
|
17581
17673
|
];
|
|
17582
17674
|
var DEFAULT_SELECT_AND_MASK_SETTINGS = {
|
|
17583
|
-
params: { ...
|
|
17675
|
+
params: { ..._chunkL52VMQZScjs.DEFAULT_REFINE_EDGE_PARAMS },
|
|
17584
17676
|
output: "selection",
|
|
17585
17677
|
decontaminate: 0,
|
|
17586
17678
|
refineMode: "color",
|
|
@@ -17708,7 +17800,7 @@ var SelectAndMaskSession = (_class15 = class {
|
|
|
17708
17800
|
const w = Math.max(1, Math.round(px2.width * s));
|
|
17709
17801
|
const h = Math.max(1, Math.round(px2.height * s));
|
|
17710
17802
|
this.previewPixels = scalePixels(px2, w, h);
|
|
17711
|
-
this.baseMask = _optionalChain([this, 'access',
|
|
17803
|
+
this.baseMask = _optionalChain([this, 'access', _542 => _542.base, 'optionalAccess', _543 => _543.bounds]) ? s === 1 ? this.base : _chunkQYLWG22Ncjs.resizeSelection.call(void 0, this.base, w, h) : null;
|
|
17712
17804
|
}
|
|
17713
17805
|
/**
|
|
17714
17806
|
* Recomputes the preview mask from the base selection, the strokes and the settings: at once on
|
|
@@ -17725,8 +17817,8 @@ var SelectAndMaskSession = (_class15 = class {
|
|
|
17725
17817
|
const { scale } = this.previewSize;
|
|
17726
17818
|
const edits = [...this.editsList, ...this.live ? [this.live] : []].map((e) => scaleEdit(e, scale));
|
|
17727
17819
|
try {
|
|
17728
|
-
const { selection, refineBrush } =
|
|
17729
|
-
this.previewMask = _optionalChain([selection, 'optionalAccess',
|
|
17820
|
+
const { selection, refineBrush } = _chunkL52VMQZScjs.applyRefineEdits.call(void 0, px2, this.baseMask, edits, px2.width, px2.height);
|
|
17821
|
+
this.previewMask = _optionalChain([selection, 'optionalAccess', _544 => _544.bounds]) ? _chunkL52VMQZScjs.refineSelection.call(void 0, px2, selection, scaleParams(this.settingsValue.params, scale), refineBrush) : null;
|
|
17730
17822
|
this.error = null;
|
|
17731
17823
|
} catch (err) {
|
|
17732
17824
|
this.previewMask = null;
|
|
@@ -17747,7 +17839,7 @@ var SelectAndMaskSession = (_class15 = class {
|
|
|
17747
17839
|
const edits = [...this.editsList, ...this.live ? [this.live] : []].map((e) => scaleEdit(e, scale));
|
|
17748
17840
|
try {
|
|
17749
17841
|
const { mask } = await this.controller.runSelectionJob(
|
|
17750
|
-
{ op: "refine-preview", base: this.baseMask ?
|
|
17842
|
+
{ op: "refine-preview", base: this.baseMask ? _chunkL52VMQZScjs.serializeMask.call(void 0, this.baseMask) : null, edits, params: scaleParams(this.settingsValue.params, scale) },
|
|
17751
17843
|
px2
|
|
17752
17844
|
);
|
|
17753
17845
|
this.previewMask = mask.bounds ? mask : null;
|
|
@@ -18114,7 +18206,7 @@ function maskThumbnailClick(controller, layer, e) {
|
|
|
18114
18206
|
} else if (e.altKey && !layer.mask.source) {
|
|
18115
18207
|
const mode = e.shiftKey ? "overlay" : "gray";
|
|
18116
18208
|
const view = controller.getMaskView();
|
|
18117
|
-
controller.setMaskView(_optionalChain([view, 'optionalAccess',
|
|
18209
|
+
controller.setMaskView(_optionalChain([view, 'optionalAccess', _545 => _545.layerId]) === layer.id && view.mode === mode ? "off" : mode, layer.id);
|
|
18118
18210
|
} else if (e.shiftKey) {
|
|
18119
18211
|
controller.setLayerMaskProps(layer.id, { enabled: layer.mask.enabled === false });
|
|
18120
18212
|
} else {
|
|
@@ -18178,7 +18270,7 @@ function layerHasThumbnail(layer) {
|
|
|
18178
18270
|
return layer.type === "pixel" || layer.type === "shape" || layer.type === "type";
|
|
18179
18271
|
}
|
|
18180
18272
|
function layerWarning(layer) {
|
|
18181
|
-
if (layer.type === "type" && _optionalChain([layer, 'access',
|
|
18273
|
+
if (layer.type === "type" && _optionalChain([layer, 'access', _546 => _546.missingFonts, 'optionalAccess', _547 => _547.length])) {
|
|
18182
18274
|
return `Missing ${layer.missingFonts.length === 1 ? "font" : "fonts"}: ${layer.missingFonts.join(", ")}. ${layer.rendering === "stored" ? "Showing the saved pixels until the text is edited." : "Drawn with a fallback font."}`;
|
|
18183
18275
|
}
|
|
18184
18276
|
return null;
|
|
@@ -18201,16 +18293,16 @@ function layerMenu(controller) {
|
|
|
18201
18293
|
const siblings = loc ? loc.parent ? loc.parent.children : s.layers : [];
|
|
18202
18294
|
const below = loc ? siblings[loc.index - 1] : void 0;
|
|
18203
18295
|
const hasSel = controller.hasSelection;
|
|
18204
|
-
const isPixel = _optionalChain([active, 'optionalAccess',
|
|
18205
|
-
const hasOwnPixels = _optionalChain([active, 'optionalAccess',
|
|
18296
|
+
const isPixel = _optionalChain([active, 'optionalAccess', _548 => _548.type]) === "pixel";
|
|
18297
|
+
const hasOwnPixels = _optionalChain([active, 'optionalAccess', _549 => _549.type]) === "pixel" || _optionalChain([active, 'optionalAccess', _550 => _550.type]) === "shape" || _optionalChain([active, 'optionalAccess', _551 => _551.type]) === "type" || _optionalChain([active, 'optionalAccess', _552 => _552.type]) === "smart";
|
|
18206
18298
|
return [
|
|
18207
18299
|
{ action: "new-layer", label: "New Layer", enabled: true },
|
|
18208
18300
|
{ action: "new-group", label: "New Group", enabled: true },
|
|
18209
18301
|
{ action: "duplicate", label: "Duplicate Layer", enabled: Boolean(active) },
|
|
18210
18302
|
{ action: "delete", label: "Delete Layer", enabled: Boolean(active) },
|
|
18211
18303
|
{ action: "group-selected", label: "Group Layer", enabled: Boolean(active) },
|
|
18212
|
-
{ action: "ungroup", label: "Ungroup", enabled: _optionalChain([active, 'optionalAccess',
|
|
18213
|
-
{ action: "merge-down", label: "Merge Down", enabled: Boolean(_optionalChain([active, 'optionalAccess',
|
|
18304
|
+
{ action: "ungroup", label: "Ungroup", enabled: _optionalChain([active, 'optionalAccess', _553 => _553.type]) === "group" },
|
|
18305
|
+
{ action: "merge-down", label: "Merge Down", enabled: Boolean(_optionalChain([active, 'optionalAccess', _554 => _554.visible]) && _optionalChain([below, 'optionalAccess', _555 => _555.type]) === "pixel") },
|
|
18214
18306
|
{ action: "merge-visible", label: "Merge Visible", enabled: s.layers.some((l) => l.visible) },
|
|
18215
18307
|
{ action: "flatten", label: "Flatten Image", enabled: s.layers.length > 0 },
|
|
18216
18308
|
{ action: "via-copy", label: "Layer via Copy", enabled: isPixel && hasSel },
|
|
@@ -18220,27 +18312,27 @@ function layerMenu(controller) {
|
|
|
18220
18312
|
{ action: "add-mask-hide-selection", label: "Add Mask Hiding Selection", enabled: Boolean(active) && hasSel },
|
|
18221
18313
|
{ action: "add-mask-transparency", label: "Add Mask from Transparency", enabled: hasOwnPixels },
|
|
18222
18314
|
{ action: "select-transparency", label: "Select Layer Pixels", enabled: hasOwnPixels },
|
|
18223
|
-
{ action: "apply-mask", label: "Apply Layer Mask", enabled: isPixel && Boolean(_optionalChain([active, 'optionalAccess',
|
|
18224
|
-
{ action: "delete-mask", label: "Delete Layer Mask", enabled: Boolean(_optionalChain([active, 'optionalAccess',
|
|
18225
|
-
{ action: "toggle-mask", label: _optionalChain([active, 'optionalAccess',
|
|
18226
|
-
{ action: "toggle-mask-link", label: _optionalChain([active, 'optionalAccess',
|
|
18227
|
-
{ action: "add-vector-mask", label: "Add Vector Mask (Reveal All)", enabled: Boolean(active && active.type !== "shape" && !_optionalChain([active, 'access',
|
|
18228
|
-
{ action: "add-vector-mask-hide", label: "Add Vector Mask (Hide All)", enabled: Boolean(active && active.type !== "shape" && !_optionalChain([active, 'access',
|
|
18229
|
-
{ action: "add-vector-mask-selection", label: "Add Vector Mask from Selection", enabled: Boolean(active && active.type !== "shape" && !_optionalChain([active, 'access',
|
|
18230
|
-
{ action: "delete-vector-mask", label: "Delete Vector Mask", enabled: Boolean(_optionalChain([active, 'optionalAccess',
|
|
18231
|
-
{ action: "toggle-vector-mask", label: _optionalChain([active, 'optionalAccess',
|
|
18232
|
-
{ action: "rasterize-vector-mask", label: "Rasterize Vector Mask", enabled: Boolean(_optionalChain([active, 'optionalAccess',
|
|
18233
|
-
{ action: "rasterize", label: "Rasterize Layer", enabled: _optionalChain([active, 'optionalAccess',
|
|
18315
|
+
{ action: "apply-mask", label: "Apply Layer Mask", enabled: isPixel && Boolean(_optionalChain([active, 'optionalAccess', _556 => _556.mask])) },
|
|
18316
|
+
{ action: "delete-mask", label: "Delete Layer Mask", enabled: Boolean(_optionalChain([active, 'optionalAccess', _557 => _557.mask])) },
|
|
18317
|
+
{ action: "toggle-mask", label: _optionalChain([active, 'optionalAccess', _558 => _558.mask, 'optionalAccess', _559 => _559.enabled]) === false ? "Enable Layer Mask" : "Disable Layer Mask", enabled: Boolean(_optionalChain([active, 'optionalAccess', _560 => _560.mask])) },
|
|
18318
|
+
{ action: "toggle-mask-link", label: _optionalChain([active, 'optionalAccess', _561 => _561.mask, 'optionalAccess', _562 => _562.linked]) === false ? "Link Layer Mask" : "Unlink Layer Mask", enabled: Boolean(_optionalChain([active, 'optionalAccess', _563 => _563.mask]) && !active.mask.source) },
|
|
18319
|
+
{ action: "add-vector-mask", label: "Add Vector Mask (Reveal All)", enabled: Boolean(active && active.type !== "shape" && !_optionalChain([active, 'access', _564 => _564.mask, 'optionalAccess', _565 => _565.source])) },
|
|
18320
|
+
{ action: "add-vector-mask-hide", label: "Add Vector Mask (Hide All)", enabled: Boolean(active && active.type !== "shape" && !_optionalChain([active, 'access', _566 => _566.mask, 'optionalAccess', _567 => _567.source])) },
|
|
18321
|
+
{ action: "add-vector-mask-selection", label: "Add Vector Mask from Selection", enabled: Boolean(active && active.type !== "shape" && !_optionalChain([active, 'access', _568 => _568.mask, 'optionalAccess', _569 => _569.source])) && hasSel },
|
|
18322
|
+
{ action: "delete-vector-mask", label: "Delete Vector Mask", enabled: Boolean(_optionalChain([active, 'optionalAccess', _570 => _570.vectorMask])) },
|
|
18323
|
+
{ action: "toggle-vector-mask", label: _optionalChain([active, 'optionalAccess', _571 => _571.vectorMask, 'optionalAccess', _572 => _572.enabled]) === false ? "Enable Vector Mask" : "Disable Vector Mask", enabled: Boolean(_optionalChain([active, 'optionalAccess', _573 => _573.vectorMask])) },
|
|
18324
|
+
{ action: "rasterize-vector-mask", label: "Rasterize Vector Mask", enabled: Boolean(_optionalChain([active, 'optionalAccess', _574 => _574.vectorMask])) },
|
|
18325
|
+
{ action: "rasterize", label: "Rasterize Layer", enabled: _optionalChain([active, 'optionalAccess', _575 => _575.type]) === "annotation" || _optionalChain([active, 'optionalAccess', _576 => _576.type]) === "smart" || _optionalChain([active, 'optionalAccess', _577 => _577.type]) === "shape" || _optionalChain([active, 'optionalAccess', _578 => _578.type]) === "type" || isPixel && Boolean(_optionalChain([active, 'optionalAccess', _579 => _579.type]) === "pixel" && _optionalChain([active, 'access', _580 => _580.filters, 'optionalAccess', _581 => _581.length])) },
|
|
18234
18326
|
{ action: "convert-smart", label: "Convert to Smart Object", enabled: Boolean(active && active.type !== "annotation") },
|
|
18235
|
-
{ action: "edit-contents", label: "Edit Contents", enabled: _optionalChain([active, 'optionalAccess',
|
|
18236
|
-
{ action: "smart-via-copy", label: "New Smart Object via Copy", enabled: _optionalChain([active, 'optionalAccess',
|
|
18237
|
-
{ action: "add-filter-mask", label: "Add Smart Filter Mask", enabled: _optionalChain([active, 'optionalAccess',
|
|
18238
|
-
{ action: "toggle-clip", label: _optionalChain([active, 'optionalAccess',
|
|
18327
|
+
{ action: "edit-contents", label: "Edit Contents", enabled: _optionalChain([active, 'optionalAccess', _582 => _582.type]) === "smart" },
|
|
18328
|
+
{ action: "smart-via-copy", label: "New Smart Object via Copy", enabled: _optionalChain([active, 'optionalAccess', _583 => _583.type]) === "smart" },
|
|
18329
|
+
{ action: "add-filter-mask", label: "Add Smart Filter Mask", enabled: _optionalChain([active, 'optionalAccess', _584 => _584.type]) === "smart" && !_optionalChain([active, 'access', _585 => _585.smartFilters, 'optionalAccess', _586 => _586.mask]) },
|
|
18330
|
+
{ action: "toggle-clip", label: _optionalChain([active, 'optionalAccess', _587 => _587.clipped]) ? "Release Clipping Mask" : "Create Clipping Mask", enabled: Boolean(loc && loc.index > 0) }
|
|
18239
18331
|
];
|
|
18240
18332
|
}
|
|
18241
18333
|
async function runLayerMenuAction(controller, action) {
|
|
18242
18334
|
const active = controller.getActiveLayer();
|
|
18243
|
-
const id = _optionalChain([active, 'optionalAccess',
|
|
18335
|
+
const id = _optionalChain([active, 'optionalAccess', _588 => _588.id]);
|
|
18244
18336
|
try {
|
|
18245
18337
|
switch (action) {
|
|
18246
18338
|
case "new-layer":
|
|
@@ -18296,10 +18388,10 @@ async function runLayerMenuAction(controller, action) {
|
|
|
18296
18388
|
if (id) controller.removeLayerMask(id);
|
|
18297
18389
|
break;
|
|
18298
18390
|
case "toggle-mask":
|
|
18299
|
-
if (id && _optionalChain([active, 'optionalAccess',
|
|
18391
|
+
if (id && _optionalChain([active, 'optionalAccess', _589 => _589.mask])) controller.setLayerMaskProps(id, { enabled: active.mask.enabled === false });
|
|
18300
18392
|
break;
|
|
18301
18393
|
case "toggle-mask-link":
|
|
18302
|
-
if (id && _optionalChain([active, 'optionalAccess',
|
|
18394
|
+
if (id && _optionalChain([active, 'optionalAccess', _590 => _590.mask])) controller.setLayerMaskProps(id, { linked: active.mask.linked === false });
|
|
18303
18395
|
break;
|
|
18304
18396
|
case "add-vector-mask":
|
|
18305
18397
|
case "add-vector-mask-hide":
|
|
@@ -18312,7 +18404,7 @@ async function runLayerMenuAction(controller, action) {
|
|
|
18312
18404
|
if (id) controller.removeVectorMask(id);
|
|
18313
18405
|
break;
|
|
18314
18406
|
case "toggle-vector-mask":
|
|
18315
|
-
if (id && _optionalChain([active, 'optionalAccess',
|
|
18407
|
+
if (id && _optionalChain([active, 'optionalAccess', _591 => _591.vectorMask])) controller.setVectorMaskProps(id, { enabled: active.vectorMask.enabled === false });
|
|
18316
18408
|
break;
|
|
18317
18409
|
case "rasterize-vector-mask":
|
|
18318
18410
|
if (id) controller.rasterizeVectorMask(id);
|
|
@@ -18333,7 +18425,7 @@ async function runLayerMenuAction(controller, action) {
|
|
|
18333
18425
|
if (id) controller.setSmartFilterMask(id, "reveal-all");
|
|
18334
18426
|
break;
|
|
18335
18427
|
case "toggle-clip":
|
|
18336
|
-
if (id) controller.setLayerProperties(id, { clipped: !_optionalChain([active, 'optionalAccess',
|
|
18428
|
+
if (id) controller.setLayerProperties(id, { clipped: !_optionalChain([active, 'optionalAccess', _592 => _592.clipped]) });
|
|
18337
18429
|
break;
|
|
18338
18430
|
}
|
|
18339
18431
|
return null;
|
|
@@ -18343,7 +18435,7 @@ async function runLayerMenuAction(controller, action) {
|
|
|
18343
18435
|
}
|
|
18344
18436
|
function smartFilterRows(layer) {
|
|
18345
18437
|
if (layer.type !== "smart") return [];
|
|
18346
|
-
const list = _nullishCoalesce(_optionalChain([layer, 'access',
|
|
18438
|
+
const list = _nullishCoalesce(_optionalChain([layer, 'access', _593 => _593.smartFilters, 'optionalAccess', _594 => _594.filters]), () => ( []));
|
|
18347
18439
|
const rows = list.map((f, index) => ({
|
|
18348
18440
|
filter: f,
|
|
18349
18441
|
index,
|
|
@@ -18369,8 +18461,8 @@ function extractNormalizedLayerItems(controller, fallbackImageUrl = "") {
|
|
|
18369
18461
|
};
|
|
18370
18462
|
collectSerialized(_nullishCoalesce(serialized.layers, () => ( [])));
|
|
18371
18463
|
const sLayerMap = new Map(allSerializedLayers.map((sl) => [sl.id, sl]));
|
|
18372
|
-
const imgW = _optionalChain([state, 'access',
|
|
18373
|
-
const imgH = _optionalChain([state, 'access',
|
|
18464
|
+
const imgW = _optionalChain([state, 'access', _595 => _595.imageDimensions, 'optionalAccess', _596 => _596.width]) || 1;
|
|
18465
|
+
const imgH = _optionalChain([state, 'access', _597 => _597.imageDimensions, 'optionalAccess', _598 => _598.height]) || 1;
|
|
18374
18466
|
return ctrlLayers.map((l) => {
|
|
18375
18467
|
const bounds = controller.getLayerBounds(l.id) || {
|
|
18376
18468
|
x: 0,
|
|
@@ -18379,8 +18471,8 @@ function extractNormalizedLayerItems(controller, fallbackImageUrl = "") {
|
|
|
18379
18471
|
height: imgH
|
|
18380
18472
|
};
|
|
18381
18473
|
const sLayer = sLayerMap.get(l.id);
|
|
18382
|
-
const assetKey = _optionalChain([sLayer, 'optionalAccess',
|
|
18383
|
-
const layerDataUrl = assetKey && assets[assetKey] || assets[l.id] || (_optionalChain([sLayer, 'optionalAccess',
|
|
18474
|
+
const assetKey = _optionalChain([sLayer, 'optionalAccess', _599 => _599.asset]);
|
|
18475
|
+
const layerDataUrl = assetKey && assets[assetKey] || assets[l.id] || (_optionalChain([sLayer, 'optionalAccess', _600 => _600.source]) === "document" ? fallbackImageUrl : "");
|
|
18384
18476
|
return {
|
|
18385
18477
|
id: l.id,
|
|
18386
18478
|
name: l.name || "Untitled Layer",
|
|
@@ -18434,9 +18526,9 @@ async function addLayerOfKind(controller, id, init) {
|
|
|
18434
18526
|
const cx = Math.round(canvas.width / 2);
|
|
18435
18527
|
const cy = Math.round(canvas.height / 2);
|
|
18436
18528
|
return controller.addTextLayer({
|
|
18437
|
-
text: _optionalChain([init, 'optionalAccess',
|
|
18438
|
-
x: typeof _optionalChain([init, 'optionalAccess',
|
|
18439
|
-
y: typeof _optionalChain([init, 'optionalAccess',
|
|
18529
|
+
text: _optionalChain([init, 'optionalAccess', _601 => _601.text]) || "New Text",
|
|
18530
|
+
x: typeof _optionalChain([init, 'optionalAccess', _602 => _602.x]) === "number" ? init.x : cx - 100,
|
|
18531
|
+
y: typeof _optionalChain([init, 'optionalAccess', _603 => _603.y]) === "number" ? init.y : cy,
|
|
18440
18532
|
...init
|
|
18441
18533
|
});
|
|
18442
18534
|
}
|
|
@@ -18449,10 +18541,10 @@ async function addLayerOfKind(controller, id, init) {
|
|
|
18449
18541
|
return controller.addShapeLayer({
|
|
18450
18542
|
shape: {
|
|
18451
18543
|
kind: "rect",
|
|
18452
|
-
x: typeof _optionalChain([init, 'optionalAccess',
|
|
18453
|
-
y: typeof _optionalChain([init, 'optionalAccess',
|
|
18454
|
-
width: typeof _optionalChain([init, 'optionalAccess',
|
|
18455
|
-
height: typeof _optionalChain([init, 'optionalAccess',
|
|
18544
|
+
x: typeof _optionalChain([init, 'optionalAccess', _604 => _604.x]) === "number" ? init.x : cx - Math.round(w / 2),
|
|
18545
|
+
y: typeof _optionalChain([init, 'optionalAccess', _605 => _605.y]) === "number" ? init.y : cy - Math.round(h / 2),
|
|
18546
|
+
width: typeof _optionalChain([init, 'optionalAccess', _606 => _606.width]) === "number" ? init.width : w,
|
|
18547
|
+
height: typeof _optionalChain([init, 'optionalAccess', _607 => _607.height]) === "number" ? init.height : h
|
|
18456
18548
|
},
|
|
18457
18549
|
name: "Rectangle",
|
|
18458
18550
|
...init
|
|
@@ -18467,10 +18559,10 @@ async function addLayerOfKind(controller, id, init) {
|
|
|
18467
18559
|
return controller.addShapeLayer({
|
|
18468
18560
|
shape: {
|
|
18469
18561
|
kind: "ellipse",
|
|
18470
|
-
x: typeof _optionalChain([init, 'optionalAccess',
|
|
18471
|
-
y: typeof _optionalChain([init, 'optionalAccess',
|
|
18472
|
-
width: typeof _optionalChain([init, 'optionalAccess',
|
|
18473
|
-
height: typeof _optionalChain([init, 'optionalAccess',
|
|
18562
|
+
x: typeof _optionalChain([init, 'optionalAccess', _608 => _608.x]) === "number" ? init.x : cx - Math.round(w / 2),
|
|
18563
|
+
y: typeof _optionalChain([init, 'optionalAccess', _609 => _609.y]) === "number" ? init.y : cy - Math.round(h / 2),
|
|
18564
|
+
width: typeof _optionalChain([init, 'optionalAccess', _610 => _610.width]) === "number" ? init.width : w,
|
|
18565
|
+
height: typeof _optionalChain([init, 'optionalAccess', _611 => _611.height]) === "number" ? init.height : h
|
|
18474
18566
|
},
|
|
18475
18567
|
name: "Ellipse",
|
|
18476
18568
|
...init
|
|
@@ -18531,18 +18623,18 @@ function layerEffectsPanel(layer) {
|
|
|
18531
18623
|
if (!layer) return { ...empty, available: false, reason: "Select a layer to add a layer style." };
|
|
18532
18624
|
if (layer.type === "adjustment") return { ...empty, available: false, reason: "Adjustment layers cannot have a layer style." };
|
|
18533
18625
|
const fx = layer.effects;
|
|
18534
|
-
const readOnly = Boolean(_optionalChain([layer, 'access',
|
|
18626
|
+
const readOnly = Boolean(_optionalChain([layer, 'access', _612 => _612.locks, 'optionalAccess', _613 => _613.all]));
|
|
18535
18627
|
return {
|
|
18536
18628
|
available: true,
|
|
18537
18629
|
readOnly,
|
|
18538
18630
|
reason: readOnly ? "The layer is locked; unlock it to change its layer style." : void 0,
|
|
18539
|
-
enabled: _nullishCoalesce(_optionalChain([fx, 'optionalAccess',
|
|
18540
|
-
scale: _nullishCoalesce(_optionalChain([fx, 'optionalAccess',
|
|
18541
|
-
rows: (_nullishCoalesce(_optionalChain([fx, 'optionalAccess',
|
|
18631
|
+
enabled: _nullishCoalesce(_optionalChain([fx, 'optionalAccess', _614 => _614.enabled]), () => ( true)),
|
|
18632
|
+
scale: _nullishCoalesce(_optionalChain([fx, 'optionalAccess', _615 => _615.scale]), () => ( 1)),
|
|
18633
|
+
rows: (_nullishCoalesce(_optionalChain([fx, 'optionalAccess', _616 => _616.items]), () => ( []))).map((e) => ({ id: e.id, kind: e.kind, label: _chunkUOGKSVRQcjs.layerEffectLabel.call(void 0, e.kind), enabled: e.enabled }))
|
|
18542
18634
|
};
|
|
18543
18635
|
}
|
|
18544
18636
|
function layerEffectsBadge(layer) {
|
|
18545
|
-
if (!_optionalChain([layer, 'access',
|
|
18637
|
+
if (!_optionalChain([layer, 'access', _617 => _617.effects, 'optionalAccess', _618 => _618.items, 'access', _619 => _619.length])) return null;
|
|
18546
18638
|
return _chunkUOGKSVRQcjs.hasActiveEffects.call(void 0, layer.effects) ? "on" : "off";
|
|
18547
18639
|
}
|
|
18548
18640
|
var LAYER_EFFECT_MENU = _chunkUOGKSVRQcjs.LAYER_EFFECT_KINDS.map((kind) => ({ kind, label: _chunkUOGKSVRQcjs.layerEffectLabel.call(void 0, kind) }));
|
|
@@ -18587,8 +18679,8 @@ function fillControls(f, allowPattern, patterns) {
|
|
|
18587
18679
|
}
|
|
18588
18680
|
function gradientControls(prefix, g) {
|
|
18589
18681
|
return [
|
|
18590
|
-
{ key: `${prefix}.stops.0.color`, label: "Start colour", type: "color", value: _nullishCoalesce(_optionalChain([g, 'access',
|
|
18591
|
-
{ key: `${prefix}.stops.last.color`, label: "End colour", type: "color", value: _nullishCoalesce(_optionalChain([g, 'access',
|
|
18682
|
+
{ key: `${prefix}.stops.0.color`, label: "Start colour", type: "color", value: _nullishCoalesce(_optionalChain([g, 'access', _620 => _620.stops, 'access', _621 => _621[0], 'optionalAccess', _622 => _622.color]), () => ( "#000000")) },
|
|
18683
|
+
{ key: `${prefix}.stops.last.color`, label: "End colour", type: "color", value: _nullishCoalesce(_optionalChain([g, 'access', _623 => _623.stops, 'access', _624 => _624[g.stops.length - 1], 'optionalAccess', _625 => _625.color]), () => ( "#ffffff")) },
|
|
18592
18684
|
{ key: `${prefix}.style`, label: "Style", type: "select", value: g.style, options: opt(["linear", "Linear"], ["radial", "Radial"], ["angle", "Angle"], ["reflected", "Reflected"], ["diamond", "Diamond"]) },
|
|
18593
18685
|
{ key: `${prefix}.angle`, label: "Angle", type: "range", min: -180, max: 180, step: 1, value: g.angle, unit: "\xB0" },
|
|
18594
18686
|
{ key: `${prefix}.scale`, label: "Scale", type: "range", min: 0.1, max: 1.5, step: 0.01, value: g.scale, percent: true, unit: "%" },
|
|
@@ -18680,19 +18772,19 @@ function layerEffectControls(e, patterns = []) {
|
|
|
18680
18772
|
}
|
|
18681
18773
|
function fillOfType(current, type, patterns) {
|
|
18682
18774
|
if (type === "gradient") return { type: "gradient", gradient: _chunkUOGKSVRQcjs.defaultEffectGradient.call(void 0, ) };
|
|
18683
|
-
if (type === "pattern") return { type: "pattern", patternId: _nullishCoalesce(_optionalChain([patterns, 'access',
|
|
18775
|
+
if (type === "pattern") return { type: "pattern", patternId: _nullishCoalesce(_optionalChain([patterns, 'access', _626 => _626[0], 'optionalAccess', _627 => _627.id]), () => ( "checker")), scale: 1 };
|
|
18684
18776
|
return { type: "color", color: current.type === "color" ? current.color : "#000000" };
|
|
18685
18777
|
}
|
|
18686
18778
|
function effectControlChange(effect, key, value, patterns = []) {
|
|
18687
18779
|
const [top, ...rest] = key.split(".");
|
|
18688
18780
|
if (top === "fill" && rest[0] === "type") return { fill: fillOfType(effect.fill, String(value), patterns) };
|
|
18689
18781
|
if (top === "patternId" && !rest.length) {
|
|
18690
|
-
const name = _optionalChain([patternOptions, 'call',
|
|
18782
|
+
const name = _optionalChain([patternOptions, 'call', _628 => _628(patterns), 'access', _629 => _629.find, 'call', _630 => _630((o) => o.value === value), 'optionalAccess', _631 => _631.label]);
|
|
18691
18783
|
return name ? { patternId: value, name } : { patternId: value };
|
|
18692
18784
|
}
|
|
18693
18785
|
if (!rest.length) return { [top]: value };
|
|
18694
18786
|
if (top === "fill" && rest[0] === "patternId") {
|
|
18695
|
-
const name = _optionalChain([patternOptions, 'call',
|
|
18787
|
+
const name = _optionalChain([patternOptions, 'call', _632 => _632(patterns), 'access', _633 => _633.find, 'call', _634 => _634((o) => o.value === value), 'optionalAccess', _635 => _635.label]);
|
|
18696
18788
|
return { fill: { ...effect.fill, patternId: value, ...name ? { name } : {} } };
|
|
18697
18789
|
}
|
|
18698
18790
|
return { [top]: setPath(getPath(effect, top), rest, value) };
|
|
@@ -18719,7 +18811,7 @@ function colorPanelView(controller) {
|
|
|
18719
18811
|
profileName: profile.name,
|
|
18720
18812
|
workingSpace: profile.builtin,
|
|
18721
18813
|
mode: profile.mode,
|
|
18722
|
-
cmykProfileName: _nullishCoalesce(_optionalChain([profile, 'access',
|
|
18814
|
+
cmykProfileName: _nullishCoalesce(_optionalChain([profile, 'access', _636 => _636.cmykProfile, 'optionalAccess', _637 => _637.name]), () => ( null)),
|
|
18723
18815
|
proof: proof ? { id: _nullishCoalesce(proof.profile.builtin, () => ( null)), name: proof.profile.name, intent: proof.intent, simulatePaper: proof.simulatePaper, gamutWarning: proof.gamutWarning, bpc: proof.bpc } : null
|
|
18724
18816
|
};
|
|
18725
18817
|
}
|
|
@@ -18927,7 +19019,7 @@ var FreeTransformTool = (_class16 = class {
|
|
|
18927
19019
|
__init142() {this.error = null}
|
|
18928
19020
|
__init143() {this.lastResult = null}
|
|
18929
19021
|
get active() {
|
|
18930
|
-
return Boolean(_optionalChain([this, 'access',
|
|
19022
|
+
return Boolean(_optionalChain([this, 'access', _638 => _638.sessionRef, 'optionalAccess', _639 => _639.isOpen]));
|
|
18931
19023
|
}
|
|
18932
19024
|
get session() {
|
|
18933
19025
|
return this.active ? this.sessionRef : null;
|
|
@@ -18936,7 +19028,7 @@ var FreeTransformTool = (_class16 = class {
|
|
|
18936
19028
|
return this.modeValue;
|
|
18937
19029
|
}
|
|
18938
19030
|
get interpolation() {
|
|
18939
|
-
return _nullishCoalesce(_optionalChain([this, 'access',
|
|
19031
|
+
return _nullishCoalesce(_optionalChain([this, 'access', _640 => _640.sessionRef, 'optionalAccess', _641 => _641.interpolation]), () => ( "bicubic"));
|
|
18940
19032
|
}
|
|
18941
19033
|
/** Whether the open transform has changed anything yet (a commit would add an undo step). */
|
|
18942
19034
|
get modified() {
|
|
@@ -18955,7 +19047,7 @@ var FreeTransformTool = (_class16 = class {
|
|
|
18955
19047
|
};
|
|
18956
19048
|
}
|
|
18957
19049
|
changed() {
|
|
18958
|
-
_optionalChain([this, 'access',
|
|
19050
|
+
_optionalChain([this, 'access', _642 => _642.options, 'access', _643 => _643.onChange, 'optionalCall', _644 => _644()]);
|
|
18959
19051
|
for (const l of this.listeners) l();
|
|
18960
19052
|
}
|
|
18961
19053
|
/** Opens a Free Transform (default: the selected pixels of the active layer, or the whole layer). Returns an error message or `null`. */
|
|
@@ -19348,7 +19440,7 @@ var FreeTransformTool = (_class16 = class {
|
|
|
19348
19440
|
}
|
|
19349
19441
|
/** Abandons the transform and restores everything. */
|
|
19350
19442
|
cancel() {
|
|
19351
|
-
_optionalChain([this, 'access',
|
|
19443
|
+
_optionalChain([this, 'access', _645 => _645.sessionRef, 'optionalAccess', _646 => _646.cancel, 'call', _647 => _647()]);
|
|
19352
19444
|
this.sessionRef = null;
|
|
19353
19445
|
this.corners = null;
|
|
19354
19446
|
this.mesh = null;
|
|
@@ -19404,7 +19496,7 @@ function imageLayerAppliedEffects(layer) {
|
|
|
19404
19496
|
const ref = (r) => ({ effect: r.effect, ...r.name ? { name: r.name } : {}, ...r.provider ? { provider: r.provider } : {} });
|
|
19405
19497
|
if (layer.type === "pixel" && layer.generator) out.push({ id: "generator", ...ref(layer.generator), role: "effect layer", enabled: true, values: layer.generator.values, ...layer.generator.time ? { time: layer.generator.time } : {}, ...layer.generator.animate ? { animate: layer.generator.animate } : {} });
|
|
19406
19498
|
if (layer.type === "smart")
|
|
19407
|
-
(_nullishCoalesce(_optionalChain([layer, 'access',
|
|
19499
|
+
(_nullishCoalesce(_optionalChain([layer, 'access', _648 => _648.smartFilters, 'optionalAccess', _649 => _649.filters]), () => ( []))).forEach((f, index) => {
|
|
19408
19500
|
if (f.kind === "effect") out.push({ id: f.id, ...ref(f), role: "smart filter", enabled: f.enabled && layer.smartFilters.enabled, opacity: f.opacity, blend: f.blend, values: f.values, index });
|
|
19409
19501
|
});
|
|
19410
19502
|
return out;
|
|
@@ -19556,7 +19648,7 @@ var OTHER_TOOL_LABELS = {
|
|
|
19556
19648
|
watermark: "Watermark"
|
|
19557
19649
|
};
|
|
19558
19650
|
function imageToolLabel(tool) {
|
|
19559
|
-
return _nullishCoalesce(_nullishCoalesce(_optionalChain([PAINT_TOOLS, 'access',
|
|
19651
|
+
return _nullishCoalesce(_nullishCoalesce(_optionalChain([PAINT_TOOLS, 'access', _650 => _650.find, 'call', _651 => _651((t) => t.id === tool), 'optionalAccess', _652 => _652.label]), () => ( OTHER_TOOL_LABELS[tool])), () => ( tool));
|
|
19560
19652
|
}
|
|
19561
19653
|
var IMAGE_TOOL_SHORTCUTS = {
|
|
19562
19654
|
...Object.fromEntries(PAINT_TOOLS.filter((t) => t.shortcut).map((t) => [t.id, t.shortcut])),
|
|
@@ -19623,6 +19715,282 @@ function createImageEditorDocument(controller, options = {}) {
|
|
|
19623
19715
|
});
|
|
19624
19716
|
}
|
|
19625
19717
|
|
|
19718
|
+
// src/image-editor/content-aware-fill-session.ts
|
|
19719
|
+
var CONTENT_AWARE_FILL_TOOLS = [
|
|
19720
|
+
{ id: "sampling-brush", label: "Sampling Brush", key: "b" },
|
|
19721
|
+
{ id: "hand", label: "Hand", key: "h" },
|
|
19722
|
+
{ id: "zoom", label: "Zoom", key: "z" }
|
|
19723
|
+
];
|
|
19724
|
+
var CONTENT_AWARE_FILL_SAMPLING = [
|
|
19725
|
+
{ id: "auto", label: "Auto" },
|
|
19726
|
+
{ id: "rectangular", label: "Rectangular" },
|
|
19727
|
+
{ id: "custom", label: "Custom" }
|
|
19728
|
+
];
|
|
19729
|
+
var DEFAULT_CONTENT_AWARE_FILL_SETTINGS = {
|
|
19730
|
+
sampling: "auto",
|
|
19731
|
+
showSampling: true,
|
|
19732
|
+
opacity: 0.5,
|
|
19733
|
+
tool: "sampling-brush",
|
|
19734
|
+
brushSize: 40,
|
|
19735
|
+
brushMode: "add",
|
|
19736
|
+
seed: 0,
|
|
19737
|
+
output: "new-layer",
|
|
19738
|
+
livePreview: true
|
|
19739
|
+
};
|
|
19740
|
+
var ContentAwareFillSession = (_class17 = class {
|
|
19741
|
+
constructor(controller) {;_class17.prototype.__init145.call(this);_class17.prototype.__init146.call(this);_class17.prototype.__init147.call(this);_class17.prototype.__init148.call(this);_class17.prototype.__init149.call(this);_class17.prototype.__init150.call(this);_class17.prototype.__init151.call(this);_class17.prototype.__init152.call(this);_class17.prototype.__init153.call(this);_class17.prototype.__init154.call(this);_class17.prototype.__init155.call(this);_class17.prototype.__init156.call(this);_class17.prototype.__init157.call(this);_class17.prototype.__init158.call(this);
|
|
19742
|
+
this.controller = controller;
|
|
19743
|
+
}
|
|
19744
|
+
|
|
19745
|
+
__init145() {this.settingsValue = { ...DEFAULT_CONTENT_AWARE_FILL_SETTINGS }}
|
|
19746
|
+
__init146() {this.plan = null}
|
|
19747
|
+
/** The source view's window (document pixels): the selection with room around it to sample. */
|
|
19748
|
+
__init147() {this.win = null}
|
|
19749
|
+
__init148() {this.before = null}
|
|
19750
|
+
__init149() {this.hole = null}
|
|
19751
|
+
/** 1 where the fill may copy from, per window pixel. */
|
|
19752
|
+
__init150() {this.area = null}
|
|
19753
|
+
__init151() {this.after = null}
|
|
19754
|
+
__init152() {this.lastPoint = null}
|
|
19755
|
+
__init153() {this.listeners = /* @__PURE__ */ new Set()}
|
|
19756
|
+
__init154() {this.dirty = false}
|
|
19757
|
+
/** Why the workspace can't fill (nothing selected, not a pixel layer), for the UI. */
|
|
19758
|
+
__init155() {this.error = null}
|
|
19759
|
+
__init156() {this.computing = false}
|
|
19760
|
+
__init157() {this.revision = 0}
|
|
19761
|
+
get settings() {
|
|
19762
|
+
return this.settingsValue;
|
|
19763
|
+
}
|
|
19764
|
+
/** The source view's window in document pixels (`null` until opened). */
|
|
19765
|
+
get window() {
|
|
19766
|
+
return this.win;
|
|
19767
|
+
}
|
|
19768
|
+
subscribe(listener) {
|
|
19769
|
+
this.listeners.add(listener);
|
|
19770
|
+
return () => this.listeners.delete(listener);
|
|
19771
|
+
}
|
|
19772
|
+
emit() {
|
|
19773
|
+
this.revision++;
|
|
19774
|
+
for (const l of this.listeners) l();
|
|
19775
|
+
}
|
|
19776
|
+
/**
|
|
19777
|
+
* Reads the layer around the selection and makes the first preview. The window holds the
|
|
19778
|
+
* selection and room around it to sample from (its larger side, at least 64 px, each way).
|
|
19779
|
+
*/
|
|
19780
|
+
async open() {
|
|
19781
|
+
try {
|
|
19782
|
+
const sel = this.controller.getSelection();
|
|
19783
|
+
const b = _optionalChain([sel, 'optionalAccess', _653 => _653.bounds]);
|
|
19784
|
+
const margin = b ? Math.max(64, Math.max(b.width, b.height)) : 64;
|
|
19785
|
+
this.plan = this.controller.prepareContentAwareFill({ sampleRadius: margin });
|
|
19786
|
+
} catch (err) {
|
|
19787
|
+
this.error = err instanceof Error ? err.message : String(err);
|
|
19788
|
+
this.emit();
|
|
19789
|
+
return false;
|
|
19790
|
+
}
|
|
19791
|
+
this.win = this.plan.window;
|
|
19792
|
+
this.before = this.plan.before;
|
|
19793
|
+
this.hole = this.plan.hole;
|
|
19794
|
+
this.applySampling("auto");
|
|
19795
|
+
this.emit();
|
|
19796
|
+
await this.refresh();
|
|
19797
|
+
return true;
|
|
19798
|
+
}
|
|
19799
|
+
/** Sets the area to a preset: Auto (a band around the selection), Rectangular (the whole window). */
|
|
19800
|
+
applySampling(mode) {
|
|
19801
|
+
const win = this.win;
|
|
19802
|
+
const hole = this.hole;
|
|
19803
|
+
const n = win.width * win.height;
|
|
19804
|
+
const area = this.area && mode === "custom" ? this.area : new Uint8Array(n);
|
|
19805
|
+
if (mode === "rectangular") {
|
|
19806
|
+
for (let i = 0; i < n; i++) area[i] = hole[i] ? 0 : 1;
|
|
19807
|
+
} else if (mode === "auto") {
|
|
19808
|
+
const b = this.plan.bounds;
|
|
19809
|
+
const reach = Math.max(24, Math.max(b.width, b.height) / 2);
|
|
19810
|
+
const d = _chunkQYLWG22Ncjs.distanceTransform.call(void 0, hole, win.width, win.height);
|
|
19811
|
+
for (let i = 0; i < n; i++) area[i] = !hole[i] && d[i] <= reach ? 1 : 0;
|
|
19812
|
+
}
|
|
19813
|
+
this.area = area;
|
|
19814
|
+
}
|
|
19815
|
+
/** Changes settings; a sampling preset replaces the area, and the preview follows when live. */
|
|
19816
|
+
update(changes) {
|
|
19817
|
+
const prev = this.settingsValue;
|
|
19818
|
+
this.settingsValue = { ...prev, ...changes };
|
|
19819
|
+
if (!this.win) {
|
|
19820
|
+
this.emit();
|
|
19821
|
+
return;
|
|
19822
|
+
}
|
|
19823
|
+
if (changes.sampling && changes.sampling !== prev.sampling && changes.sampling !== "custom") this.applySampling(changes.sampling);
|
|
19824
|
+
this.emit();
|
|
19825
|
+
const fillChanged = changes.sampling !== void 0 || changes.seed !== void 0;
|
|
19826
|
+
if (fillChanged && this.settingsValue.livePreview) void this.refresh();
|
|
19827
|
+
}
|
|
19828
|
+
/** The sampling area as a selection of the whole image (what OK samples from). */
|
|
19829
|
+
samplingMask() {
|
|
19830
|
+
if (!this.win || !this.area) return null;
|
|
19831
|
+
const { width, height } = this.controller.getState().imageDimensions;
|
|
19832
|
+
const bytes = new Uint8Array(this.area.length);
|
|
19833
|
+
for (let i = 0; i < bytes.length; i++) bytes[i] = this.area[i] ? 255 : 0;
|
|
19834
|
+
return _chunkQYLWG22Ncjs.selectionFromRegion.call(void 0, width, height, this.win, bytes);
|
|
19835
|
+
}
|
|
19836
|
+
/** Whether (x, y) in document pixels is in the sampling area. */
|
|
19837
|
+
samplesAt(x, y) {
|
|
19838
|
+
const win = this.win;
|
|
19839
|
+
if (!win || !this.area) return false;
|
|
19840
|
+
const xi = Math.floor(x - win.x);
|
|
19841
|
+
const yi = Math.floor(y - win.y);
|
|
19842
|
+
if (xi < 0 || yi < 0 || xi >= win.width || yi >= win.height) return false;
|
|
19843
|
+
return this.area[yi * win.width + xi] === 1;
|
|
19844
|
+
}
|
|
19845
|
+
/** Paints the sampling area with the brush along a stroke segment (document pixels). */
|
|
19846
|
+
paint(from, to, add2) {
|
|
19847
|
+
const win = this.win;
|
|
19848
|
+
const area = this.area;
|
|
19849
|
+
const hole = this.hole;
|
|
19850
|
+
const r = Math.max(0.5, this.settingsValue.brushSize / 2);
|
|
19851
|
+
const x0 = Math.max(0, Math.floor(Math.min(from.x, to.x) - r - win.x));
|
|
19852
|
+
const y0 = Math.max(0, Math.floor(Math.min(from.y, to.y) - r - win.y));
|
|
19853
|
+
const x1 = Math.min(win.width - 1, Math.ceil(Math.max(from.x, to.x) + r - win.x));
|
|
19854
|
+
const y1 = Math.min(win.height - 1, Math.ceil(Math.max(from.y, to.y) + r - win.y));
|
|
19855
|
+
const dx = to.x - from.x;
|
|
19856
|
+
const dy = to.y - from.y;
|
|
19857
|
+
const len2 = dx * dx + dy * dy;
|
|
19858
|
+
for (let y = y0; y <= y1; y++) {
|
|
19859
|
+
for (let x = x0; x <= x1; x++) {
|
|
19860
|
+
const px2 = win.x + x + 0.5 - from.x;
|
|
19861
|
+
const py = win.y + y + 0.5 - from.y;
|
|
19862
|
+
const t = len2 > 0 ? Math.min(1, Math.max(0, (px2 * dx + py * dy) / len2)) : 0;
|
|
19863
|
+
if ((px2 - t * dx) ** 2 + (py - t * dy) ** 2 > r * r) continue;
|
|
19864
|
+
const i = y * win.width + x;
|
|
19865
|
+
area[i] = add2 && !hole[i] ? 1 : 0;
|
|
19866
|
+
}
|
|
19867
|
+
}
|
|
19868
|
+
}
|
|
19869
|
+
/** Pointer down with the Sampling Brush (Alt flips add and subtract). Returns false for other tools. */
|
|
19870
|
+
begin(point, modifiers = {}) {
|
|
19871
|
+
if (this.settingsValue.tool !== "sampling-brush" || !this.win) return false;
|
|
19872
|
+
const add2 = this.settingsValue.brushMode === "add" !== Boolean(modifiers.altKey);
|
|
19873
|
+
this.settingsValue = { ...this.settingsValue, sampling: "custom" };
|
|
19874
|
+
this.lastPoint = point;
|
|
19875
|
+
this.strokeAdds = add2;
|
|
19876
|
+
this.paint(point, point, add2);
|
|
19877
|
+
this.emit();
|
|
19878
|
+
return true;
|
|
19879
|
+
}
|
|
19880
|
+
__init158() {this.strokeAdds = true}
|
|
19881
|
+
move(point) {
|
|
19882
|
+
if (!this.lastPoint) return;
|
|
19883
|
+
this.paint(this.lastPoint, point, this.strokeAdds);
|
|
19884
|
+
this.lastPoint = point;
|
|
19885
|
+
this.emit();
|
|
19886
|
+
}
|
|
19887
|
+
/** Pointer up: the preview follows the new area when live. */
|
|
19888
|
+
end() {
|
|
19889
|
+
if (!this.lastPoint) return;
|
|
19890
|
+
this.lastPoint = null;
|
|
19891
|
+
if (this.settingsValue.livePreview) void this.refresh();
|
|
19892
|
+
}
|
|
19893
|
+
/** Recomputes the preview: one at a time, the newest area following when one is running. */
|
|
19894
|
+
async refresh() {
|
|
19895
|
+
if (!this.win) return;
|
|
19896
|
+
if (this.computing) {
|
|
19897
|
+
this.dirty = true;
|
|
19898
|
+
return;
|
|
19899
|
+
}
|
|
19900
|
+
this.computing = true;
|
|
19901
|
+
this.emit();
|
|
19902
|
+
do {
|
|
19903
|
+
this.dirty = false;
|
|
19904
|
+
try {
|
|
19905
|
+
const area = this.samplingMask();
|
|
19906
|
+
if (!_optionalChain([area, 'optionalAccess', _654 => _654.bounds])) throw new Error("The sampling area is empty; paint where the fill may copy from.");
|
|
19907
|
+
const { plan, after } = await this.controller.previewContentAwareFill({ layerId: this.plan.layerId, samplingArea: area, seed: this.settingsValue.seed });
|
|
19908
|
+
const win = this.win;
|
|
19909
|
+
const out = Uint8ClampedArray.from(this.before);
|
|
19910
|
+
const pw = plan.window;
|
|
19911
|
+
for (let y = 0; y < pw.height; y++) {
|
|
19912
|
+
out.set(after.subarray(y * pw.width * 4, (y + 1) * pw.width * 4), ((pw.y - win.y + y) * win.width + (pw.x - win.x)) * 4);
|
|
19913
|
+
}
|
|
19914
|
+
this.after = out;
|
|
19915
|
+
this.error = null;
|
|
19916
|
+
} catch (err) {
|
|
19917
|
+
this.after = null;
|
|
19918
|
+
this.error = err instanceof Error ? err.message : String(err);
|
|
19919
|
+
}
|
|
19920
|
+
this.emit();
|
|
19921
|
+
} while (this.dirty);
|
|
19922
|
+
this.computing = false;
|
|
19923
|
+
this.emit();
|
|
19924
|
+
}
|
|
19925
|
+
/** Resolves once no preview is being computed. */
|
|
19926
|
+
async idle() {
|
|
19927
|
+
while (this.computing) await new Promise((r) => setTimeout(r, 5));
|
|
19928
|
+
}
|
|
19929
|
+
/** The source view: the layer's pixels, the selection tinted red, the sampling area green. RGBA at the window's size. */
|
|
19930
|
+
renderSource() {
|
|
19931
|
+
if (!this.before || !this.area || !this.hole) return new Uint8ClampedArray(0);
|
|
19932
|
+
const out = Uint8ClampedArray.from(this.before);
|
|
19933
|
+
const k = this.settingsValue.showSampling ? Math.min(1, Math.max(0, this.settingsValue.opacity)) : 0;
|
|
19934
|
+
for (let i = 0; i < this.area.length; i++) {
|
|
19935
|
+
const p = i * 4;
|
|
19936
|
+
if (this.hole[i]) {
|
|
19937
|
+
out[p] = out[p] + (220 - out[p]) * 0.5;
|
|
19938
|
+
out[p + 1] *= 0.5;
|
|
19939
|
+
out[p + 2] *= 0.5;
|
|
19940
|
+
} else if (this.area[i] && k) {
|
|
19941
|
+
out[p] *= 1 - k;
|
|
19942
|
+
out[p + 1] = out[p + 1] + (200 - out[p + 1]) * k;
|
|
19943
|
+
out[p + 2] *= 1 - k;
|
|
19944
|
+
}
|
|
19945
|
+
out[p + 3] = 255;
|
|
19946
|
+
}
|
|
19947
|
+
return out;
|
|
19948
|
+
}
|
|
19949
|
+
/** The preview: the window with the fill in place (the source until the first preview). */
|
|
19950
|
+
renderPreview() {
|
|
19951
|
+
const src = _nullishCoalesce(this.after, () => ( this.before));
|
|
19952
|
+
if (!src) return new Uint8ClampedArray(0);
|
|
19953
|
+
const out = Uint8ClampedArray.from(src);
|
|
19954
|
+
for (let i = 3; i < out.length; i += 4) out[i] = 255;
|
|
19955
|
+
return out;
|
|
19956
|
+
}
|
|
19957
|
+
/** Clears painting and goes back to Auto. */
|
|
19958
|
+
reset() {
|
|
19959
|
+
if (!this.win) return;
|
|
19960
|
+
this.settingsValue = { ...DEFAULT_CONTENT_AWARE_FILL_SETTINGS, tool: this.settingsValue.tool };
|
|
19961
|
+
this.applySampling("auto");
|
|
19962
|
+
this.emit();
|
|
19963
|
+
if (this.settingsValue.livePreview) void this.refresh();
|
|
19964
|
+
}
|
|
19965
|
+
/**
|
|
19966
|
+
* Keys: B, H, Z for the tools, [ and ] for the brush size. Returns true when the key was used.
|
|
19967
|
+
*/
|
|
19968
|
+
handleKey(key) {
|
|
19969
|
+
const k = key.toLowerCase();
|
|
19970
|
+
const tool = CONTENT_AWARE_FILL_TOOLS.find((t) => t.key === k);
|
|
19971
|
+
if (tool) {
|
|
19972
|
+
this.update({ tool: tool.id });
|
|
19973
|
+
return true;
|
|
19974
|
+
}
|
|
19975
|
+
if (k === "[" || k === "]") {
|
|
19976
|
+
const size = this.settingsValue.brushSize;
|
|
19977
|
+
this.update({ brushSize: Math.max(1, Math.round(k === "]" ? size * 1.25 : size / 1.25)) });
|
|
19978
|
+
return true;
|
|
19979
|
+
}
|
|
19980
|
+
return false;
|
|
19981
|
+
}
|
|
19982
|
+
/** OK: fills with this sampling area, seed and output as one undo step. */
|
|
19983
|
+
async commit(options = {}) {
|
|
19984
|
+
const area = this.samplingMask();
|
|
19985
|
+
if (!this.plan || !_optionalChain([area, 'optionalAccess', _655 => _655.bounds])) throw new Error(_nullishCoalesce(this.error, () => ( "The sampling area is empty; paint where the fill may copy from.")));
|
|
19986
|
+
return this.controller.contentAwareFillAsync({ layerId: this.plan.layerId, samplingArea: area, seed: this.settingsValue.seed, output: this.settingsValue.output, signal: options.signal });
|
|
19987
|
+
}
|
|
19988
|
+
}, _class17);
|
|
19989
|
+
|
|
19990
|
+
|
|
19991
|
+
|
|
19992
|
+
|
|
19993
|
+
|
|
19626
19994
|
|
|
19627
19995
|
|
|
19628
19996
|
|
|
@@ -20708,4 +21076,4 @@ function createImageEditorDocument(controller, options = {}) {
|
|
|
20708
21076
|
|
|
20709
21077
|
|
|
20710
21078
|
|
|
20711
|
-
exports.ADJUSTMENT_KEYS = _chunkQE7D7TZRcjs.ADJUSTMENT_KEYS; exports.ADJUSTMENT_KINDS = _chunkQE7D7TZRcjs.ADJUSTMENT_KINDS; exports.ADJUSTMENT_LAYER_CONTROLS = ADJUSTMENT_LAYER_CONTROLS; exports.ADJUSTMENT_LAYER_OPACITY_CONTROL = ADJUSTMENT_LAYER_OPACITY_CONTROL; exports.ADJUSTMENT_LUT_SIZE = _chunkQE7D7TZRcjs.ADJUSTMENT_LUT_SIZE; exports.ANCHOR_FRACTION = _chunkQE7D7TZRcjs.ANCHOR_FRACTION; exports.AS_SHOT_KELVIN = _chunkQE7D7TZRcjs.AS_SHOT_KELVIN; exports.BACKGROUND_LAYER_ID = _chunkQE7D7TZRcjs.BACKGROUND_LAYER_ID; exports.BACKGROUND_LAYER_NAME = _chunkQE7D7TZRcjs.BACKGROUND_LAYER_NAME; exports.BIT_DEPTHS = _chunkOLNIPTB3cjs.BIT_DEPTHS; exports.BIT_DEPTH_OPTIONS = BIT_DEPTH_OPTIONS; exports.BLEND_MODES = _chunkOLNIPTB3cjs.BLEND_MODES; exports.BLUR_FILTER_ID = _chunkQE7D7TZRcjs.BLUR_FILTER_ID; exports.BODY_SCATTER = _chunkKWNMBMKGcjs.BODY_SCATTER; exports.BRUSHSTROKE_MAX_SCALE = _chunkYQGCPL5Xcjs.BRUSHSTROKE_MAX_SCALE; exports.BRUSHSTROKE_MIN_SCALE = _chunkYQGCPL5Xcjs.BRUSHSTROKE_MIN_SCALE; exports.BRUSH_OPTION_CONTROLS = BRUSH_OPTION_CONTROLS; exports.BUILTIN_PROFILES = _chunkBROJYMWUcjs.BUILTIN_PROFILES; exports.BrushstrokeCache = _chunkPQ3H2AANcjs.BrushstrokeCache; exports.CANVAS_SIZE_PRESETS = CANVAS_SIZE_PRESETS; exports.CLONE_TRANSFORM_CONTROLS = CLONE_TRANSFORM_CONTROLS; exports.COLOR_MODE_OPTIONS = COLOR_MODE_OPTIONS; exports.COLOR_RANGE_PRESETS = COLOR_RANGE_PRESETS; exports.COLOR_RANGE_PRESET_LABELS = COLOR_RANGE_PRESET_LABELS; exports.ColorGmm = _chunkX4LUGTQXcjs.ColorGmm; exports.CoverageMap = _chunkPQ3H2AANcjs.CoverageMap; exports.D50 = _chunkQE7D7TZRcjs.D50; exports.D65 = _chunkQE7D7TZRcjs.D65; exports.DEFAULT_ADJUSTMENTS = DEFAULT_ADJUSTMENTS; exports.DEFAULT_AUTO_LEADING = _chunkQAUIZPYIcjs.DEFAULT_AUTO_LEADING; exports.DEFAULT_BLENDER = _chunkPQ3H2AANcjs.DEFAULT_BLENDER; exports.DEFAULT_BRUSH = _chunkPQ3H2AANcjs.DEFAULT_BRUSH; exports.DEFAULT_CANVAS_VIEWPORT = DEFAULT_CANVAS_VIEWPORT; exports.DEFAULT_CHANNEL_COLOR = DEFAULT_CHANNEL_COLOR; exports.DEFAULT_DEPTH_MASK = DEFAULT_DEPTH_MASK; exports.DEFAULT_FLOW = _chunkKWNMBMKGcjs.DEFAULT_FLOW; exports.DEFAULT_GLOBAL_LIGHT = _chunkUOGKSVRQcjs.DEFAULT_GLOBAL_LIGHT; exports.DEFAULT_MITER_LIMIT = _chunkQE7D7TZRcjs.DEFAULT_MITER_LIMIT; exports.DEFAULT_MIXER = _chunkPQ3H2AANcjs.DEFAULT_MIXER; exports.DEFAULT_PAINT_GRADIENT = _chunkPQ3H2AANcjs.DEFAULT_PAINT_GRADIENT; exports.DEFAULT_PAINT_GRADIENT_MAPPING = _chunkPQ3H2AANcjs.DEFAULT_PAINT_GRADIENT_MAPPING; exports.DEFAULT_PROOF = DEFAULT_PROOF; exports.DEFAULT_REFINE_EDGE_PARAMS = _chunkX4LUGTQXcjs.DEFAULT_REFINE_EDGE_PARAMS; exports.DEFAULT_RETOUCH = _chunk3EHPLDFQcjs.DEFAULT_RETOUCH; exports.DEFAULT_SELECTION_TOOL_OPTIONS = DEFAULT_SELECTION_TOOL_OPTIONS; exports.DEFAULT_SELECT_AND_MASK_SETTINGS = DEFAULT_SELECT_AND_MASK_SETTINGS; exports.DEFAULT_SHAPE_TOOL_OPTIONS = DEFAULT_SHAPE_TOOL_OPTIONS; exports.DEFAULT_SMUDGE = _chunkPQ3H2AANcjs.DEFAULT_SMUDGE; exports.DEFAULT_TEXT_STYLE = _chunkQAUIZPYIcjs.DEFAULT_TEXT_STYLE; exports.DEFAULT_TRANSFORM = DEFAULT_TRANSFORM; exports.DEFAULT_TYPE_TOOL_OPTIONS = DEFAULT_TYPE_TOOL_OPTIONS; exports.DEFAULT_WET_PAPER = _chunkKWNMBMKGcjs.DEFAULT_WET_PAPER; exports.DEFAULT_WET_PARAMS = _chunkKWNMBMKGcjs.DEFAULT_WET_PARAMS; exports.DEPTH_MASK_CONTROLS = DEPTH_MASK_CONTROLS; exports.DEVELOP_FILTER_ID = _chunkQE7D7TZRcjs.DEVELOP_FILTER_ID; exports.DIRECT_GAUSSIAN_MAX_SIGMA = _chunkK6PXS6DOcjs.DIRECT_GAUSSIAN_MAX_SIGMA; exports.DRY_EPS = _chunkKWNMBMKGcjs.DRY_EPS; exports.DabWalker = _chunkPQ3H2AANcjs.DabWalker; exports.EFFECT_LAYER_USES = EFFECT_LAYER_USES; exports.EMPTY_DISTANCE = _chunkQYLWG22Ncjs.EMPTY_DISTANCE; exports.EMPTY_MIXER_LOAD = _chunkPQ3H2AANcjs.EMPTY_MIXER_LOAD; exports.EX = _chunkKWNMBMKGcjs.EX; exports.EY = _chunkKWNMBMKGcjs.EY; exports.EdgeMap = EdgeMap; exports.FLAG_ALIVE = _chunkKWNMBMKGcjs.FLAG_ALIVE; exports.FLAG_BOTTOM = _chunkKWNMBMKGcjs.FLAG_BOTTOM; exports.FLAG_LEFT = _chunkKWNMBMKGcjs.FLAG_LEFT; exports.FLAG_RIGHT = _chunkKWNMBMKGcjs.FLAG_RIGHT; exports.FLAG_TOP = _chunkKWNMBMKGcjs.FLAG_TOP; exports.FLAG_WET = _chunkKWNMBMKGcjs.FLAG_WET; exports.FLAT = _chunkKWNMBMKGcjs.FLAT; exports.FREE_INTERVAL = _chunkKWNMBMKGcjs.FREE_INTERVAL; exports.FREE_TRANSFORM_CONTENTS = FREE_TRANSFORM_CONTENTS; exports.FREE_TRANSFORM_FIELDS = FREE_TRANSFORM_FIELDS; exports.FREE_TRANSFORM_MODES = _chunkQE7D7TZRcjs.FREE_TRANSFORM_MODES; exports.FREE_TRANSFORM_MODE_OPTIONS = FREE_TRANSFORM_MODE_OPTIONS; exports.FreeTransformSession = FreeTransformSession; exports.FreeTransformTool = FreeTransformTool; exports.GAMMA = _chunkX4LUGTQXcjs.GAMMA; exports.GRAIN_PATTERNS = _chunkPQ3H2AANcjs.GRAIN_PATTERNS; exports.GRAIN_TILE = _chunkPQ3H2AANcjs.GRAIN_TILE; exports.GUIDED_FILTER_EPS = _chunkX4LUGTQXcjs.GUIDED_FILTER_EPS; exports.GridGraph = _chunkX4LUGTQXcjs.GridGraph; exports.HIDE = _chunkKWNMBMKGcjs.HIDE; exports.HISTOGRAM_BINS = HISTOGRAM_BINS; exports.HUE_RANGE_LABELS = _chunkQE7D7TZRcjs.HUE_RANGE_LABELS; exports.HUE_RANGE_PRESETS = HUE_RANGE_PRESETS; exports.IDENTITY_CLONE_TRANSFORM = _chunk3EHPLDFQcjs.IDENTITY_CLONE_TRANSFORM; exports.IDENTITY_MATRIX3 = _chunkQE7D7TZRcjs.IDENTITY_MATRIX3; exports.IMAGE_ADJUSTMENT_CONTROLS = IMAGE_ADJUSTMENT_CONTROLS; exports.IMAGE_CROP_PRESETS = IMAGE_CROP_PRESETS; exports.IMAGE_EDITOR_SCHEMA_VERSION = IMAGE_EDITOR_SCHEMA_VERSION; exports.IMAGE_EDITOR_STATE_VERSION = IMAGE_EDITOR_STATE_VERSION; exports.IMAGE_EFFECT_PLACES = IMAGE_EFFECT_PLACES; exports.IMAGE_FILTER_PRESETS = IMAGE_FILTER_PRESETS; exports.IMAGE_PLAYBACK_KIND = IMAGE_PLAYBACK_KIND; exports.IMAGE_TOOL_GROUPS = IMAGE_TOOL_GROUPS; exports.IMAGE_TOOL_SHORTCUTS = IMAGE_TOOL_SHORTCUTS; exports.INTENTS = _chunkBROJYMWUcjs.INTENTS; exports.INTENT_OPTIONS = INTENT_OPTIONS; exports.INTERPOLATIONS = _chunkUOGKSVRQcjs.INTERPOLATIONS; exports.ImageEditorController = ImageEditorController; exports.ImageEditorRenderer = ImageEditorRenderer; exports.ImageEffectsEngine = ImageEffectsEngine; exports.LATEST_PROCESS_VERSION = _chunkQE7D7TZRcjs.LATEST_PROCESS_VERSION; exports.LAYERED_SCHEMA_VERSION = _chunkQE7D7TZRcjs.LAYERED_SCHEMA_VERSION; exports.LAYER_EFFECT_KINDS = _chunkUOGKSVRQcjs.LAYER_EFFECT_KINDS; exports.LAYER_EFFECT_MENU = LAYER_EFFECT_MENU; exports.LEGACY_PROCESS_VERSION = _chunkQE7D7TZRcjs.LEGACY_PROCESS_VERSION; exports.LIVE_SHAPE_KINDS = _chunkQE7D7TZRcjs.LIVE_SHAPE_KINDS; exports.LUMA_709 = _chunkQE7D7TZRcjs.LUMA_709; exports.LayerCompositor = _chunkQE7D7TZRcjs.LayerCompositor; exports.LayerEffectError = _chunkUOGKSVRQcjs.LayerEffectError; exports.LayerOperationError = _chunkQE7D7TZRcjs.LayerOperationError; exports.MARCHING_ANTS_STEP_MS = MARCHING_ANTS_STEP_MS; exports.MASK_FILE_ACCEPT = MASK_FILE_ACCEPT; exports.MAX_BATCH = _chunkKWNMBMKGcjs.MAX_BATCH; exports.MAX_BRUSH_SIZE = _chunkPQ3H2AANcjs.MAX_BRUSH_SIZE; exports.MAX_CANVAS_BACKING_SIDE = MAX_CANVAS_BACKING_SIDE; exports.MAX_EFFECT_ANIMATION_MS = _chunkQE7D7TZRcjs.MAX_EFFECT_ANIMATION_MS; exports.MAX_EFFECT_REACH = _chunkUOGKSVRQcjs.MAX_EFFECT_REACH; exports.MAX_KELVIN = _chunkQE7D7TZRcjs.MAX_KELVIN; exports.MAX_TILT_ACCEL = _chunkKWNMBMKGcjs.MAX_TILT_ACCEL; exports.MAX_TRANSFORM_PIXELS = _chunkUOGKSVRQcjs.MAX_TRANSFORM_PIXELS; exports.MAX_WET_LANES = _chunkKWNMBMKGcjs.MAX_WET_LANES; exports.MAX_WET_SLOTS = _chunkKWNMBMKGcjs.MAX_WET_SLOTS; exports.MIN_KELVIN = _chunkQE7D7TZRcjs.MIN_KELVIN; exports.MIRED_PER_TEMPERATURE_UNIT = _chunkQE7D7TZRcjs.MIRED_PER_TEMPERATURE_UNIT; exports.MIXER_DRAIN = _chunkPQ3H2AANcjs.MIXER_DRAIN; exports.MIXER_MIXING_OPTIONS = MIXER_MIXING_OPTIONS; exports.MIXER_OPTION_CONTROLS = MIXER_OPTION_CONTROLS; exports.MIXER_PICKUP_RATE = _chunkPQ3H2AANcjs.MIXER_PICKUP_RATE; exports.MIXING_MODELS = _chunkPQ3H2AANcjs.MIXING_MODELS; exports.MixerStroke = _chunkPQ3H2AANcjs.MixerStroke; exports.OPP = _chunkKWNMBMKGcjs.OPP; exports.PAINTERLY_BLEND_MODES = _chunkOLNIPTB3cjs.PAINTERLY_BLEND_MODES; exports.PAINT_COLOR_JSON_SCHEMA = _chunkPQ3H2AANcjs.PAINT_COLOR_JSON_SCHEMA; exports.PAINT_GRADIENT_FULL_SPEED = _chunkPQ3H2AANcjs.PAINT_GRADIENT_FULL_SPEED; exports.PAINT_GRADIENT_JSON_SCHEMA = _chunkPQ3H2AANcjs.PAINT_GRADIENT_JSON_SCHEMA; exports.PAINT_GRADIENT_KIT = _chunkPQ3H2AANcjs.PAINT_GRADIENT_KIT; exports.PAINT_GRADIENT_MAPPINGS = _chunkPQ3H2AANcjs.PAINT_GRADIENT_MAPPINGS; exports.PAINT_GRADIENT_MAPPING_LABELS = _chunkPQ3H2AANcjs.PAINT_GRADIENT_MAPPING_LABELS; exports.PAINT_GRADIENT_PRESETS = _chunkPQ3H2AANcjs.PAINT_GRADIENT_PRESETS; exports.PAINT_GRADIENT_REPEATS = _chunkPQ3H2AANcjs.PAINT_GRADIENT_REPEATS; exports.PAINT_GRADIENT_REPEAT_LABELS = _chunkPQ3H2AANcjs.PAINT_GRADIENT_REPEAT_LABELS; exports.PAINT_GRADIENT_SPACES = _chunkPQ3H2AANcjs.PAINT_GRADIENT_SPACES; exports.PAINT_GRADIENT_SPACE_LABELS = _chunkPQ3H2AANcjs.PAINT_GRADIENT_SPACE_LABELS; exports.PAINT_SOURCE_JSON_SCHEMA = _chunkPQ3H2AANcjs.PAINT_SOURCE_JSON_SCHEMA; exports.PAINT_TOOLS = PAINT_TOOLS; exports.PAPER_CAPACITY = _chunkKWNMBMKGcjs.PAPER_CAPACITY; exports.PARAGRAPH_STYLE_FIELDS = _chunkQE7D7TZRcjs.PARAGRAPH_STYLE_FIELDS; exports.PARAM = _chunkKWNMBMKGcjs.PARAM; exports.PARAM_FLOATS = _chunkKWNMBMKGcjs.PARAM_FLOATS; exports.PASTE_MODES = PASTE_MODES; exports.PATTERN_BLOCK_KEYS = _chunkQE7D7TZRcjs.PATTERN_BLOCK_KEYS; exports.PIGMENT_BANDS = _chunkOLNIPTB3cjs.PIGMENT_BANDS; exports.PIGMENT_CHANNELS = _chunkKWNMBMKGcjs.PIGMENT_CHANNELS; exports.PIGMENT_LAMBDA_MIN = _chunkOLNIPTB3cjs.PIGMENT_LAMBDA_MIN; exports.PIGMENT_LAMBDA_STEP = _chunkOLNIPTB3cjs.PIGMENT_LAMBDA_STEP; exports.PIGMENT_UNIT = _chunkKWNMBMKGcjs.PIGMENT_UNIT; exports.PIGMENT_WAVELENGTHS = _chunkOLNIPTB3cjs.PIGMENT_WAVELENGTHS; exports.PLANE = _chunkKWNMBMKGcjs.PLANE; exports.PLANE_BYTES = _chunkKWNMBMKGcjs.PLANE_BYTES; exports.PREVIEW_SIZE = PREVIEW_SIZE; exports.PROOF_PROFILE_OPTIONS = PROOF_PROFILE_OPTIONS; exports.PSD_BLEND_KEYS = _chunkQE7D7TZRcjs.PSD_BLEND_KEYS; exports.PSD_FILE_ACCEPT = PSD_FILE_ACCEPT; exports.P_D0 = _chunkKWNMBMKGcjs.P_D0; exports.P_EDGE = _chunkKWNMBMKGcjs.P_EDGE; exports.P_FX = _chunkKWNMBMKGcjs.P_FX; exports.P_FY = _chunkKWNMBMKGcjs.P_FY; exports.P_H = _chunkKWNMBMKGcjs.P_H; exports.P_P0 = _chunkKWNMBMKGcjs.P_P0; exports.P_RHO = _chunkKWNMBMKGcjs.P_RHO; exports.P_SW = _chunkKWNMBMKGcjs.P_SW; exports.P_UX = _chunkKWNMBMKGcjs.P_UX; exports.P_UY = _chunkKWNMBMKGcjs.P_UY; exports.PaintExchange = _chunkPQ3H2AANcjs.PaintExchange; exports.PaintGesture = PaintGesture; exports.PaintGradientSampler = _chunkPQ3H2AANcjs.PaintGradientSampler; exports.PaintSourceError = _chunkPQ3H2AANcjs.PaintSourceError; exports.PaintStrokeSession = PaintStrokeSession; exports.PaperGrain = _chunkPQ3H2AANcjs.PaperGrain; exports.PatternPlacement = _chunkUOGKSVRQcjs.PatternPlacement; exports.PatternTile = _chunkUOGKSVRQcjs.PatternTile; exports.PsdError = _chunkQE7D7TZRcjs.PsdError; exports.QUICK_MASK_TARGET = QUICK_MASK_TARGET; exports.REFINE_EDGE_CONTROLS = REFINE_EDGE_CONTROLS; exports.REFINE_EDIT_KINDS = _chunkX4LUGTQXcjs.REFINE_EDIT_KINDS; exports.REFINE_OUTPUTS = REFINE_OUTPUTS; exports.RETOUCH_CHOICES = RETOUCH_CHOICES; exports.RETOUCH_OPTION_CONTROLS = RETOUCH_OPTION_CONTROLS; exports.RETOUCH_SAMPLES = _chunk3EHPLDFQcjs.RETOUCH_SAMPLES; exports.RETOUCH_TOGGLES = RETOUCH_TOGGLES; exports.RETOUCH_TOOLS = RETOUCH_TOOLS; exports.RegionPixelSource = _chunk3EHPLDFQcjs.RegionPixelSource; exports.RetouchDabStroke = _chunk3EHPLDFQcjs.RetouchDabStroke; exports.SELECTION_MODES = _chunkQYLWG22Ncjs.SELECTION_MODES; exports.SELECTION_MODE_LABELS = SELECTION_MODE_LABELS; exports.SELECTION_MODIFY_OPS = _chunkQYLWG22Ncjs.SELECTION_MODIFY_OPS; exports.SELECTION_TOOLS = SELECTION_TOOLS; exports.SELECT_AND_MASK_TOOLS = SELECT_AND_MASK_TOOLS; exports.SELECT_AND_MASK_VIEWS = SELECT_AND_MASK_VIEWS; exports.SET_PLANES = _chunkKWNMBMKGcjs.SET_PLANES; exports.SHADOW_AMBIENT = _chunkOLNIPTB3cjs.SHADOW_AMBIENT; exports.SHAPE_KIND_LABELS = SHAPE_KIND_LABELS; exports.SHAPE_OPERATIONS = _chunkQE7D7TZRcjs.SHAPE_OPERATIONS; exports.SHAPE_RENDER_MARGIN = _chunkQE7D7TZRcjs.SHAPE_RENDER_MARGIN; exports.SLOT_BYTES = _chunkKWNMBMKGcjs.SLOT_BYTES; exports.SLOT_PLANES = _chunkKWNMBMKGcjs.SLOT_PLANES; exports.SLOT_SIDE = _chunkKWNMBMKGcjs.SLOT_SIDE; exports.SMART_RENDER_MARGIN = _chunkQE7D7TZRcjs.SMART_RENDER_MARGIN; exports.SPOT_HEAL_TYPES = _chunk3EHPLDFQcjs.SPOT_HEAL_TYPES; exports.SRGB_TO_LINEAR = _chunkKWNMBMKGcjs.SRGB_TO_LINEAR; exports.STRIP = _chunkKWNMBMKGcjs.STRIP; exports.SUPPORTED_ADJUSTMENT_KEYS = _chunkQE7D7TZRcjs.SUPPORTED_ADJUSTMENT_KEYS; exports.SelectAndMaskSession = SelectAndMaskSession; exports.SelectionGesture = SelectionGesture; exports.SelectionWorkerClient = _chunkX4LUGTQXcjs.SelectionWorkerClient; exports.ShapeDrawGesture = ShapeDrawGesture; exports.SmudgeTip = _chunkPQ3H2AANcjs.SmudgeTip; exports.StrokeCoverage = _chunkPQ3H2AANcjs.StrokeCoverage; exports.SurfaceDraft = _chunk474IQG74cjs.SurfaceDraft; exports.TEXT_ALIGNS = _chunkQE7D7TZRcjs.TEXT_ALIGNS; exports.TEXT_ORIENTATIONS = _chunkQE7D7TZRcjs.TEXT_ORIENTATIONS; exports.TEXT_RENDER_MARGIN = _chunkQE7D7TZRcjs.TEXT_RENDER_MARGIN; exports.TEXT_STYLE_FIELDS = _chunkQE7D7TZRcjs.TEXT_STYLE_FIELDS; exports.TILE = _chunk474IQG74cjs.TILE; exports.TILE_SHIFT = _chunk474IQG74cjs.TILE_SHIFT; exports.TINT_SCALE = _chunkQE7D7TZRcjs.TINT_SCALE; exports.TIP_GRADIENT_STEPS = _chunkPQ3H2AANcjs.TIP_GRADIENT_STEPS; exports.TONE_LUT_SIZE = _chunkQE7D7TZRcjs.TONE_LUT_SIZE; exports.TONE_RANGES = _chunk3EHPLDFQcjs.TONE_RANGES; exports.TONE_RANGE_PRESETS = TONE_RANGE_PRESETS; exports.TRANSFORM_ANCHORS = _chunkQE7D7TZRcjs.TRANSFORM_ANCHORS; exports.TRANSFORM_ROTATE_HANDLE_OFFSET = TRANSFORM_ROTATE_HANDLE_OFFSET; exports.TextEditSession = TextEditSession; exports.TileMedium = _chunkPQ3H2AANcjs.TileMedium; exports.TilePixelSource = _chunk3EHPLDFQcjs.TilePixelSource; exports.TileableNoise = _chunkPQ3H2AANcjs.TileableNoise; exports.TiledSurface = _chunk474IQG74cjs.TiledSurface; exports.TransformTooLargeError = _chunkUOGKSVRQcjs.TransformTooLargeError; exports.TransformedPixelSource = _chunk3EHPLDFQcjs.TransformedPixelSource; exports.TypeToolGesture = TypeToolGesture; exports.UNITS = _chunkX4LUGTQXcjs.UNITS; exports.U_MAX = _chunkKWNMBMKGcjs.U_MAX; exports.VIBRANCE_GREY = _chunkQE7D7TZRcjs.VIBRANCE_GREY; exports.W9 = _chunkKWNMBMKGcjs.W9; exports.WARP_GRID_OPTIONS = WARP_GRID_OPTIONS; exports.WARP_STYLES = _chunkQAUIZPYIcjs.WARP_STYLES; exports.WARP_STYLE_LABELS = _chunkQAUIZPYIcjs.WARP_STYLE_LABELS; exports.WARP_STYLE_OPTIONS = WARP_STYLE_OPTIONS; exports.WET_FLOW_KINDS = _chunkKWNMBMKGcjs.WET_FLOW_KINDS; exports.WET_PARAM_KEYS = _chunkKWNMBMKGcjs.WET_PARAM_KEYS; exports.WET_TILE = _chunkKWNMBMKGcjs.WET_TILE; exports.WGSL_HALO = _chunkKWNMBMKGcjs.WGSL_HALO; exports.WGSL_SHADE = _chunkKWNMBMKGcjs.WGSL_SHADE; exports.WGSL_STEP = _chunkKWNMBMKGcjs.WGSL_STEP; exports.WORKING_SPACE_OPTIONS = WORKING_SPACE_OPTIONS; exports.WORK_SIZE = _chunkX4LUGTQXcjs.WORK_SIZE; exports.WetGpuEngine = _chunkKWNMBMKGcjs.WetGpuEngine; exports.WetMedium = _chunkKWNMBMKGcjs.WetMedium; exports.WetWorkerPool = _chunkKWNMBMKGcjs.WetWorkerPool; exports.WetWorld = _chunkKWNMBMKGcjs.WetWorld; exports.WetWorldError = _chunkKWNMBMKGcjs.WetWorldError; exports.XYZ_D50_TO_SRGB = _chunkQE7D7TZRcjs.XYZ_D50_TO_SRGB; exports.ZlibError = _chunkXFM3OCHUcjs.ZlibError; exports.activeAdjustmentLayers = _chunkQE7D7TZRcjs.activeAdjustmentLayers; exports.activeEffectSmartFilters = _chunkQE7D7TZRcjs.activeEffectSmartFilters; exports.activeLayerAfterRemoval = _chunkQE7D7TZRcjs.activeLayerAfterRemoval; exports.activeSmartFilters = _chunkQE7D7TZRcjs.activeSmartFilters; exports.addLayerEffect = _chunkQE7D7TZRcjs.addLayerEffect; exports.addLayerFilter = _chunkQE7D7TZRcjs.addLayerFilter; exports.addLayerOfKind = addLayerOfKind; exports.addPaintGradientStop = _chunkPQ3H2AANcjs.addPaintGradientStop; exports.addSmartFilter = _chunkQE7D7TZRcjs.addSmartFilter; exports.addToHistogram = addToHistogram; exports.adjustmentKindLabel = _chunkQE7D7TZRcjs.adjustmentKindLabel; exports.adjustmentLayersKey = _chunkQE7D7TZRcjs.adjustmentLayersKey; exports.adjustmentNodeAsLayer = _chunkQE7D7TZRcjs.adjustmentNodeAsLayer; exports.adjustmentNodeFromLegacy = _chunkQE7D7TZRcjs.adjustmentNodeFromLegacy; exports.adler32 = _chunkXFM3OCHUcjs.adler32; exports.agentDragDraft = agentDragDraft; exports.anchorPoint = _chunkQE7D7TZRcjs.anchorPoint; exports.annotationBlend = _chunkQE7D7TZRcjs.annotationBlend; exports.annotationLayerFor = _chunkQE7D7TZRcjs.annotationLayerFor; exports.annotationLayerName = _chunkQE7D7TZRcjs.annotationLayerName; exports.annotationOfLayer = _chunkQE7D7TZRcjs.annotationOfLayer; exports.annotationOfShape = _chunkQE7D7TZRcjs.annotationOfShape; exports.annotationOfType = _chunkQE7D7TZRcjs.annotationOfType; exports.applyAdjustmentLayers = _chunkQE7D7TZRcjs.applyAdjustmentLayers; exports.applyAdjustmentLayersFloat = _chunkQE7D7TZRcjs.applyAdjustmentLayersFloat; exports.applyAdjustments = _chunkQE7D7TZRcjs.applyAdjustments; exports.applyBoxBlur = _chunkQE7D7TZRcjs.applyBoxBlur; exports.applyBoxBlurFloat = _chunkQE7D7TZRcjs.applyBoxBlurFloat; exports.applyDepthMask = _chunkQE7D7TZRcjs.applyDepthMask; exports.applyHomography = _chunkQT26RHKKcjs.applyHomography; exports.applyImageProjectionToContext = _chunkQE7D7TZRcjs.applyImageProjectionToContext; exports.applyLegacyAdjustments = _chunkQE7D7TZRcjs.applyLegacyAdjustments; exports.applyLegacyFloat = _chunkQE7D7TZRcjs.applyLegacyFloat; exports.applyMatrix3 = _chunkQE7D7TZRcjs.applyMatrix3; exports.applyOutputStage = applyOutputStage; exports.applyParams = _chunkQE7D7TZRcjs.applyParams; exports.applyProcess2Adjustments = _chunkQE7D7TZRcjs.applyProcess2Adjustments; exports.applyProcess2Float = _chunkQE7D7TZRcjs.applyProcess2Float; exports.applyRefineEdits = _chunkX4LUGTQXcjs.applyRefineEdits; exports.applyRegionBlur = applyRegionBlur; exports.applyRegionMosaic = applyRegionMosaic; exports.applyRetouchToTile = _chunk3EHPLDFQcjs.applyRetouchToTile; exports.applyShapeOptions = applyShapeOptions; exports.applySmartFilters = _chunkQE7D7TZRcjs.applySmartFilters; exports.applyStrokeToDeepTile = _chunkPQ3H2AANcjs.applyStrokeToDeepTile; exports.applyStrokeToTile = _chunkPQ3H2AANcjs.applyStrokeToTile; exports.applyToneToDeepTile = _chunk3EHPLDFQcjs.applyToneToDeepTile; exports.backgroundLayer = _chunkQE7D7TZRcjs.backgroundLayer; exports.base64ToBytes = _chunkOLNIPTB3cjs.base64ToBytes; exports.baseProjection = baseProjection; exports.bestOffset = _chunk3EHPLDFQcjs.bestOffset; exports.blackWhiteGray = _chunkQE7D7TZRcjs.blackWhiteGray; exports.blendChannel = _chunkOLNIPTB3cjs.blendChannel; exports.blendImageData = _chunkOLNIPTB3cjs.blendImageData; exports.blendLum = _chunkOLNIPTB3cjs.blendLum; exports.blendPixel = _chunkOLNIPTB3cjs.blendPixel; exports.blendRadius = _chunkPQ3H2AANcjs.blendRadius; exports.blendRgb = _chunkOLNIPTB3cjs.blendRgb; exports.blendTile = _chunkUOGKSVRQcjs.blendTile; exports.blenderDab = _chunkPQ3H2AANcjs.blenderDab; exports.blurFilter = _chunkQE7D7TZRcjs.blurFilter; exports.borderCoverage = _chunkQYLWG22Ncjs.borderCoverage; exports.boxBlur = _chunkX4LUGTQXcjs.boxBlur; exports.boxBlurPixels = _chunk3EHPLDFQcjs.boxBlurPixels; exports.boxFrameHit = boxFrameHit; exports.boxFrameOverlay = boxFrameOverlay; exports.boxMean = _chunkX4LUGTQXcjs.boxMean; exports.boxPointOf = _chunkQE7D7TZRcjs.boxPointOf; exports.boxQuad = _chunkQT26RHKKcjs.boxQuad; exports.boxToCurvePoint = boxToCurvePoint; exports.bradfordAdaptation = _chunkQE7D7TZRcjs.bradfordAdaptation; exports.brushStrokeMask = _chunkX4LUGTQXcjs.brushStrokeMask; exports.brushstrokeDataUrl = _chunkPQ3H2AANcjs.brushstrokeDataUrl; exports.brushstrokeKey = _chunkPQ3H2AANcjs.brushstrokeKey; exports.brushstrokeSamples = _chunkPQ3H2AANcjs.brushstrokeSamples; exports.brushstrokeScaleBucket = _chunkYQGCPL5Xcjs.brushstrokeScaleBucket; exports.brushstrokeStrokeOptions = _chunkPQ3H2AANcjs.brushstrokeStrokeOptions; exports.brushstrokeToCanvas = _chunkPQ3H2AANcjs.brushstrokeToCanvas; exports.buildLayerMaskPlanes = _chunkQE7D7TZRcjs.buildLayerMaskPlanes; exports.buildToneLut = _chunkQE7D7TZRcjs.buildToneLut; exports.builtinPattern = _chunkUOGKSVRQcjs.builtinPattern; exports.builtinPatternIds = _chunkUOGKSVRQcjs.builtinPatternIds; exports.bytesToBase64 = _chunkOLNIPTB3cjs.bytesToBase64; exports.calculateCropDrag = _chunkQE7D7TZRcjs.calculateCropDrag; exports.canShareMemory = _chunkKWNMBMKGcjs.canShareMemory; exports.canvasCompositeOperation = _chunkOLNIPTB3cjs.canvasCompositeOperation; exports.canvasToImagePoint = _chunkQE7D7TZRcjs.canvasToImagePoint; exports.caretAt = _chunkQAUIZPYIcjs.caretAt; exports.changedTiles = _chunkUOGKSVRQcjs.changedTiles; exports.channelThumbnail = channelThumbnail; exports.checkEffectAnimation = checkEffectAnimation; exports.checkEffectTime = checkEffectTime; exports.checkImageEffectPlace = checkImageEffectPlace; exports.clampControlValue = clampControlValue; exports.clampCropToImage = _chunkQE7D7TZRcjs.clampCropToImage; exports.cleanMixer = _chunkPQ3H2AANcjs.cleanMixer; exports.cloneSamplePoint = _chunk3EHPLDFQcjs.cloneSamplePoint; exports.cloneSourceLabel = cloneSourceLabel; exports.cloneTransformView = cloneTransformView; exports.collectTiles = _chunk474IQG74cjs.collectTiles; exports.colorBalanceChannel = _chunkQE7D7TZRcjs.colorBalanceChannel; exports.colorModePlanes = colorModePlanes; exports.colorModePlanes16 = colorModePlanes16; exports.colorPanelView = colorPanelView; exports.colorRange = colorRange; exports.colorRangePreset = colorRangePreset; exports.combineSelections = _chunkQYLWG22Ncjs.combineSelections; exports.compileAdjustmentLayer = _chunkQE7D7TZRcjs.compileAdjustmentLayer; exports.componentPath = _chunkQE7D7TZRcjs.componentPath; exports.componentsCoverage = _chunkQE7D7TZRcjs.componentsCoverage; exports.compositeDeep = _chunkQE7D7TZRcjs.compositeDeep; exports.compositeSurfaceOver = _chunkUOGKSVRQcjs.compositeSurfaceOver; exports.computeHistogram = computeHistogram; exports.computeSelectionBounds = _chunkQYLWG22Ncjs.computeSelectionBounds; exports.contentAwareFill = _chunk3EHPLDFQcjs.contentAwareFill; exports.contentBounds = _chunk474IQG74cjs.contentBounds; exports.contentsBox = _chunkQE7D7TZRcjs.contentsBox; exports.contentsSurface = _chunkQE7D7TZRcjs.contentsSurface; exports.contractCoverage = _chunkQYLWG22Ncjs.contractCoverage; exports.controlPosition = controlPosition; exports.controlTrackBackground = controlTrackBackground; exports.convertColorFields = convertColorFields; exports.convertHex = convertHex; exports.convertSurfaceColors = convertSurfaceColors; exports.convertSurfaceDepth = _chunkOLNIPTB3cjs.convertSurfaceDepth; exports.convertToSmartObject = _chunkQE7D7TZRcjs.convertToSmartObject; exports.copySmartObject = _chunkQE7D7TZRcjs.copySmartObject; exports.cornersFromMatrix = _chunkQE7D7TZRcjs.cornersFromMatrix; exports.coverageTileCoord = _chunkPQ3H2AANcjs.coverageTileCoord; exports.coverageToByte = _chunkQYLWG22Ncjs.coverageToByte; exports.coveringRect = coveringRect; exports.createAdjustmentLayer = _chunkQE7D7TZRcjs.createAdjustmentLayer; exports.createBlenderScratch = _chunkPQ3H2AANcjs.createBlenderScratch; exports.createCanvasTextShaper = _chunkQAUIZPYIcjs.createCanvasTextShaper; exports.createImageCaptureSurface = createImageCaptureSurface; exports.createImageColorTools = createImageColorTools; exports.createImageEditTools = createImageEditTools; exports.createImageEditorDocument = createImageEditorDocument; exports.createImageEditorToolProvider = createImageEditorToolProvider; exports.createImageEffectTools = createImageEffectTools; exports.createImageEffectsToolProvider = createImageEffectsToolProvider; exports.createImageLayerTools = createImageLayerTools; exports.createImagePaintTools = createImagePaintTools; exports.createImagePlaybackLocator = createImagePlaybackLocator; exports.createImagePsdTools = createImagePsdTools; exports.createImageRetouchTools = createImageRetouchTools; exports.createImageSegmentationToolProvider = createImageSegmentationToolProvider; exports.createImageSelectionTools = createImageSelectionTools; exports.createImageShapeTools = createImageShapeTools; exports.createImageSmartObjectTools = createImageSmartObjectTools; exports.createImageSubjectSelectionTool = createImageSubjectSelectionTool; exports.createImageTransformTools = createImageTransformTools; exports.createImageTypeTools = createImageTypeTools; exports.createMetricTextShaper = _chunkQAUIZPYIcjs.createMetricTextShaper; exports.createOutlineTextShaper = _chunkQAUIZPYIcjs.createOutlineTextShaper; exports.createPigment = _chunkOLNIPTB3cjs.createPigment; exports.createPigmentTools = _chunkKWNMBMKGcjs.createPigmentTools; exports.createSelectionMask = _chunkQYLWG22Ncjs.createSelectionMask; exports.createShapeLayer = _chunkQE7D7TZRcjs.createShapeLayer; exports.createTypeLayer = _chunkQE7D7TZRcjs.createTypeLayer; exports.createWetGpuEngine = _chunkKWNMBMKGcjs.createWetGpuEngine; exports.cssFont = _chunkQAUIZPYIcjs.cssFont; exports.cssFontFamily = _chunkQAUIZPYIcjs.cssFontFamily; exports.curveLut = _chunkUOGKSVRQcjs.curveLut; exports.curveLutFromLevels = _chunkQE7D7TZRcjs.curveLutFromLevels; exports.curvePointToBox = curvePointToBox; exports.curveSvgPath = curveSvgPath; exports.dabCoverage = _chunkPQ3H2AANcjs.dabCoverage; exports.dabRect = _chunkPQ3H2AANcjs.dabRect; exports.decodeDeepSurface = _chunkQE7D7TZRcjs.decodeDeepSurface; exports.decodeLayerChannel = _chunkQE7D7TZRcjs.decodeLayerChannel; exports.decodeLayerMask = _chunkQE7D7TZRcjs.decodeLayerMask; exports.decodeMergedImage = _chunkQE7D7TZRcjs.decodeMergedImage; exports.decodePlanes = _chunkQE7D7TZRcjs.decodePlanes; exports.decodePng = _chunkOLNIPTB3cjs.decodePng; exports.decodePngDataUrl = _chunkQE7D7TZRcjs.decodePngDataUrl; exports.decodeSelectionRle = _chunkQYLWG22Ncjs.decodeSelectionRle; exports.decontaminateColors = _chunkX4LUGTQXcjs.decontaminateColors; exports.deepBytes = _chunkOLNIPTB3cjs.deepBytes; exports.deepTile = _chunkOLNIPTB3cjs.deepTile; exports.defaultActiveLayerId = _chunkQE7D7TZRcjs.defaultActiveLayerId; exports.defaultAdjustmentParams = _chunkQE7D7TZRcjs.defaultAdjustmentParams; exports.defaultEffectGradient = _chunkUOGKSVRQcjs.defaultEffectGradient; exports.defaultLayerEffect = _chunkUOGKSVRQcjs.defaultLayerEffect; exports.defaultShapeName = _chunkQE7D7TZRcjs.defaultShapeName; exports.deflate = _chunkXFM3OCHUcjs.deflate; exports.deflateRaw = _chunkXFM3OCHUcjs.deflateRaw; exports.depthMaskAlpha = _chunkQE7D7TZRcjs.depthMaskAlpha; exports.depthOf = _chunkOLNIPTB3cjs.depthOf; exports.depthRasterMask = _chunkQE7D7TZRcjs.depthRasterMask; exports.describeChannel = describeChannel; exports.describeLayer = describeLayer; exports.describeLayerEffects = describeLayerEffects; exports.describeSelection = describeSelection; exports.describeTransform = _chunkQE7D7TZRcjs.describeTransform; exports.deserializeChannels = deserializeChannels; exports.deserializeColorMode = deserializeColorMode; exports.deserializeColorProfile = deserializeColorProfile; exports.deserializeEffects = _chunkQE7D7TZRcjs.deserializeEffects; exports.deserializeLayer = _chunkQE7D7TZRcjs.deserializeLayer; exports.deserializeLayers = _chunkQE7D7TZRcjs.deserializeLayers; exports.deserializeMask = _chunkX4LUGTQXcjs.deserializeMask; exports.deserializePatterns = _chunkQE7D7TZRcjs.deserializePatterns; exports.deserializeSelection = _chunkQYLWG22Ncjs.deserializeSelection; exports.developFilter = _chunkQE7D7TZRcjs.developFilter; exports.developFromAdjustments = _chunkQE7D7TZRcjs.developFromAdjustments; exports.developTarget = _chunkQE7D7TZRcjs.developTarget; exports.dexp = _chunkKWNMBMKGcjs.dexp; exports.dilateMask = _chunk3EHPLDFQcjs.dilateMask; exports.displayTransform = displayTransform; exports.distanceTransform = _chunkQYLWG22Ncjs.distanceTransform; exports.dlog = _chunkKWNMBMKGcjs.dlog; exports.documentContents = _chunkQE7D7TZRcjs.documentContents; exports.documentProfile = documentProfile; exports.dodgeBurn = _chunk3EHPLDFQcjs.dodgeBurn; exports.dodgeBurnCurve = _chunk3EHPLDFQcjs.dodgeBurnCurve; exports.downloadMaskImage = downloadMaskImage; exports.downloadPsd = downloadPsd; exports.dpow = _chunkKWNMBMKGcjs.dpow; exports.dragWarpMeshPoint = _chunkQAUIZPYIcjs.dragWarpMeshPoint; exports.dropPlacement = dropPlacement; exports.dropZone = dropZone; exports.dsincos = _chunkKWNMBMKGcjs.dsincos; exports.duplicateLayer = _chunkQE7D7TZRcjs.duplicateLayer; exports.edgeBits = _chunkKWNMBMKGcjs.edgeBits; exports.edgeWidth = _chunkX4LUGTQXcjs.edgeWidth; exports.effectColorHex = _chunkUOGKSVRQcjs.effectColorHex; exports.effectControlChange = effectControlChange; exports.effectLayerTiming = effectLayerTiming; exports.effectPixelsToSurface = effectPixelsToSurface; exports.effectReach = _chunkUOGKSVRQcjs.effectReach; exports.effectiveLayerMask = _chunkQE7D7TZRcjs.effectiveLayerMask; exports.effectiveProof = effectiveProof; exports.effectsFingerprint = _chunkUOGKSVRQcjs.effectsFingerprint; exports.effectsMargin = _chunkUOGKSVRQcjs.effectsMargin; exports.effectsScale = _chunkUOGKSVRQcjs.effectsScale; exports.ellipsePoints = _chunkX4LUGTQXcjs.ellipsePoints; exports.ellipseSelection = _chunkX4LUGTQXcjs.ellipseSelection; exports.emptyHistogram = emptyHistogram; exports.emptySurface = _chunk474IQG74cjs.emptySurface; exports.encodeDeepSurface = _chunkQE7D7TZRcjs.encodeDeepSurface; exports.encodePng = _chunkOLNIPTB3cjs.encodePng; exports.encodeRle = _chunkQE7D7TZRcjs.encodeRle; exports.encodeSelectionRle = _chunkQYLWG22Ncjs.encodeSelectionRle; exports.encodeSurface = _chunkQE7D7TZRcjs.encodeSurface; exports.evalWarpMesh = _chunkQAUIZPYIcjs.evalWarpMesh; exports.evaluateAdjustmentLayers = _chunkQE7D7TZRcjs.evaluateAdjustmentLayers; exports.exchangeRates = _chunkPQ3H2AANcjs.exchangeRates; exports.expNeg = _chunkKWNMBMKGcjs.expNeg; exports.expandCoverage = _chunkQYLWG22Ncjs.expandCoverage; exports.exportPsd = _chunkQE7D7TZRcjs.exportPsd; exports.extractNormalizedLayerItems = extractNormalizedLayerItems; exports.featherCoverage = _chunkQYLWG22Ncjs.featherCoverage; exports.fillRect = _chunk474IQG74cjs.fillRect; exports.filmPixel = _chunkKWNMBMKGcjs.filmPixel; exports.filmReflectance = _chunkKWNMBMKGcjs.filmReflectance; exports.filterMaskCoverage = _chunkQE7D7TZRcjs.filterMaskCoverage; exports.findAdjustmentControl = findAdjustmentControl; exports.findLayer = _chunkUOGKSVRQcjs.findLayer; exports.findLayerControl = findLayerControl; exports.findSky = _chunkX4LUGTQXcjs.findSky; exports.findSubject = _chunkX4LUGTQXcjs.findSubject; exports.findWebGpu = _chunkKWNMBMKGcjs.findWebGpu; exports.finishTile = _chunk474IQG74cjs.finishTile; exports.fitParagraphRuns = _chunkQAUIZPYIcjs.fitParagraphRuns; exports.fitRuns = _chunkQAUIZPYIcjs.fitRuns; exports.flattenLayers = _chunkUOGKSVRQcjs.flattenLayers; exports.flattenPath = _chunkQE7D7TZRcjs.flattenPath; exports.flipCorners = _chunkQE7D7TZRcjs.flipCorners; exports.flowField = _chunkKWNMBMKGcjs.flowField; exports.focusArea = _chunkX4LUGTQXcjs.focusArea; exports.followLayerMove = _chunkQE7D7TZRcjs.followLayerMove; exports.fontOf = _chunkQAUIZPYIcjs.fontOf; exports.forgetSelectAndMaskSettings = forgetSelectAndMaskSettings; exports.formatControlValue = formatControlValue; exports.fullSelection = _chunkQYLWG22Ncjs.fullSelection; exports.gaussianBlur = _chunkK6PXS6DOcjs.gaussianBlur; exports.geometryHomography = _chunkQE7D7TZRcjs.geometryHomography; exports.getAnnotationBounds = _chunkQE7D7TZRcjs.getAnnotationBounds; exports.getControlPath = getControlPath; exports.getCropCursor = _chunkQE7D7TZRcjs.getCropCursor; exports.getRotatedSize = _chunkQE7D7TZRcjs.getRotatedSize; exports.getViewportMetrics = _chunkQE7D7TZRcjs.getViewportMetrics; exports.getViewportProjection = _chunkQE7D7TZRcjs.getViewportProjection; exports.globalImageCache = globalImageCache; exports.grabCutLabels = _chunkX4LUGTQXcjs.grabCutLabels; exports.gradientDabColor = _chunkPQ3H2AANcjs.gradientDabColor; exports.grainCatch = _chunkPQ3H2AANcjs.grainCatch; exports.grainHeights = _chunkPQ3H2AANcjs.grainHeights; exports.greyMorphology = _chunkQYLWG22Ncjs.greyMorphology; exports.groupLayers = _chunkQE7D7TZRcjs.groupLayers; exports.growSelection = growSelection; exports.guidePlanes = _chunkX4LUGTQXcjs.guidePlanes; exports.guidedFilterColor = _chunkX4LUGTQXcjs.guidedFilterColor; exports.handleMaskViewKey = handleMaskViewKey; exports.handlePaintShortcut = handlePaintShortcut; exports.handleQuickMaskKey = handleQuickMaskKey; exports.handleSelectionShortcut = handleSelectionShortcut; exports.hasActiveEffects = _chunkUOGKSVRQcjs.hasActiveEffects; exports.hasLayersBelow = hasLayersBelow; exports.hasResampledLegacyMask = _chunkQE7D7TZRcjs.hasResampledLegacyMask; exports.hasSurface = _chunkQE7D7TZRcjs.hasSurface; exports.hasWarp = _chunkQE7D7TZRcjs.hasWarp; exports.hash2 = _chunkPQ3H2AANcjs.hash2; exports.hashMaskContent = _chunkQYLWG22Ncjs.hashMaskContent; exports.hashNoise = _chunkUOGKSVRQcjs.hashNoise; exports.healPixels = _chunk3EHPLDFQcjs.healPixels; exports.hexToPaintRgb = _chunkPQ3H2AANcjs.hexToPaintRgb; exports.hexToRgb = _chunkQE7D7TZRcjs.hexToRgb; exports.histogramPath = histogramPath; exports.hitTestAnnotation = _chunkQE7D7TZRcjs.hitTestAnnotation; exports.hitTestCrop = _chunkQE7D7TZRcjs.hitTestCrop; exports.hitTestCurvePoint = hitTestCurvePoint; exports.homographyFromAffine = _chunkQT26RHKKcjs.homographyFromAffine; exports.homographyFromPoints = _chunkQT26RHKKcjs.homographyFromPoints; exports.hslToRgb = _chunkQE7D7TZRcjs.hslToRgb; exports.hueRange = hueRange; exports.hueRangeTables = _chunkQE7D7TZRcjs.hueRangeTables; exports.hueRangeWeight = _chunkQE7D7TZRcjs.hueRangeWeight; exports.hueSaturation = _chunkQE7D7TZRcjs.hueSaturation; exports.identityCurve = _chunkQE7D7TZRcjs.identityCurve; exports.identityLevels = _chunkQE7D7TZRcjs.identityLevels; exports.identityTransform = _chunkQE7D7TZRcjs.identityTransform; exports.identityWarpMesh = _chunkQAUIZPYIcjs.identityWarpMesh; exports.imageEditorStateMigrations = imageEditorStateMigrations; exports.imageLayerAppliedEffects = imageLayerAppliedEffects; exports.imagePanelTool = imagePanelTool; exports.imagePlaybackPanel = imagePlaybackPanel; exports.imageToCanvasPoint = _chunkQE7D7TZRcjs.imageToCanvasPoint; exports.imageToolCanvasMode = imageToolCanvasMode; exports.imageToolForShortcut = imageToolForShortcut; exports.imageToolGroup = imageToolGroup; exports.imageToolLabel = imageToolLabel; exports.imageToolPanel = imageToolPanel; exports.importPsd = _chunkQE7D7TZRcjs.importPsd; exports.inflate = _chunkXFM3OCHUcjs.inflate; exports.inflateRaw = _chunkXFM3OCHUcjs.inflateRaw; exports.insertCurvePoint = insertCurvePoint; exports.insertLayer = _chunkUOGKSVRQcjs.insertLayer; exports.instancesOf = _chunkQE7D7TZRcjs.instancesOf; exports.invertHomography = _chunkQT26RHKKcjs.invertHomography; exports.invertMatrix3 = _chunkQE7D7TZRcjs.invertMatrix3; exports.invertSelection = _chunkQYLWG22Ncjs.invertSelection; exports.isActiveFilter = _chunkQE7D7TZRcjs.isActiveFilter; exports.isActiveVectorMask = _chunkQE7D7TZRcjs.isActiveVectorMask; exports.isAdjustmentKind = _chunkQE7D7TZRcjs.isAdjustmentKind; exports.isBitDepth = _chunkOLNIPTB3cjs.isBitDepth; exports.isBlendMode = _chunkOLNIPTB3cjs.isBlendMode; exports.isBrushstrokeBrush = _chunkPQ3H2AANcjs.isBrushstrokeBrush; exports.isColorRangePreset = isColorRangePreset; exports.isContentsDecoded = _chunkQE7D7TZRcjs.isContentsDecoded; exports.isDefaultDepthMask = _chunkQE7D7TZRcjs.isDefaultDepthMask; exports.isGradientPaint = _chunkPQ3H2AANcjs.isGradientPaint; exports.isIdentityCloneTransform = _chunk3EHPLDFQcjs.isIdentityCloneTransform; exports.isIdentityTransform = _chunkQE7D7TZRcjs.isIdentityTransform; exports.isInterpolation = _chunkUOGKSVRQcjs.isInterpolation; exports.isLayerEffectKind = _chunkUOGKSVRQcjs.isLayerEffectKind; exports.isLayerLocked = _chunkUOGKSVRQcjs.isLayerLocked; exports.isLegacyShape = _chunkQE7D7TZRcjs.isLegacyShape; exports.isPaintTool = isPaintTool; exports.isPaintableLayer = _chunkQE7D7TZRcjs.isPaintableLayer; exports.isPainterlyBlendMode = _chunkOLNIPTB3cjs.isPainterlyBlendMode; exports.isPng = _chunkOLNIPTB3cjs.isPng; exports.isQuarterTurn = isQuarterTurn; exports.isQuarterTurnSwapped = _chunkQE7D7TZRcjs.isQuarterTurnSwapped; exports.isRenderedLayer = _chunkQE7D7TZRcjs.isRenderedLayer; exports.isRetouchPaintTool = isRetouchPaintTool; exports.isRetouchTool = isRetouchTool; exports.isSelectionEmpty = _chunkQYLWG22Ncjs.isSelectionEmpty; exports.isSelectionMode = _chunkQYLWG22Ncjs.isSelectionMode; exports.isSeparableBlendMode = _chunkOLNIPTB3cjs.isSeparableBlendMode; exports.isSmartSurfaceIncomplete = _chunkQE7D7TZRcjs.isSmartSurfaceIncomplete; exports.isSpatialFilter = _chunkQE7D7TZRcjs.isSpatialFilter; exports.isSrgb = isSrgb; exports.isTransformAnchor = _chunkQE7D7TZRcjs.isTransformAnchor; exports.isValidWarp = _chunkQE7D7TZRcjs.isValidWarp; exports.keepDeepSamples = _chunkOLNIPTB3cjs.keepDeepSamples; exports.keepMainPieces = _chunkX4LUGTQXcjs.keepMainPieces; exports.kelvinToTemperature = _chunkQE7D7TZRcjs.kelvinToTemperature; exports.keysWeight = _chunkUOGKSVRQcjs.keysWeight; exports.latticeViscosity = _chunkKWNMBMKGcjs.latticeViscosity; exports.layerBadge = layerBadge; exports.layerEffectControls = layerEffectControls; exports.layerEffectFields = _chunkUOGKSVRQcjs.layerEffectFields; exports.layerEffectLabel = _chunkUOGKSVRQcjs.layerEffectLabel; exports.layerEffectsBadge = layerEffectsBadge; exports.layerEffectsOf = _chunkQE7D7TZRcjs.layerEffectsOf; exports.layerEffectsPanel = layerEffectsPanel; exports.layerHasThumbnail = layerHasThumbnail; exports.layerLabel = layerLabel; exports.layerMaskCoverage = _chunkQE7D7TZRcjs.layerMaskCoverage; exports.layerMaskFromSelection = _chunkQE7D7TZRcjs.layerMaskFromSelection; exports.layerMaskKey = _chunkQE7D7TZRcjs.layerMaskKey; exports.layerMaskSelection = _chunkQE7D7TZRcjs.layerMaskSelection; exports.layerMenu = layerMenu; exports.layerName = _chunkQE7D7TZRcjs.layerName; exports.layerPanelRows = layerPanelRows; exports.layerPanels = layerPanels; exports.layerThumbnailClick = layerThumbnailClick; exports.layerTree = _chunkQE7D7TZRcjs.layerTree; exports.layerTypeLabel = _chunkQE7D7TZRcjs.layerTypeLabel; exports.layerWarning = layerWarning; exports.layersFromLegacy = _chunkQE7D7TZRcjs.layersFromLegacy; exports.layoutText = _chunkQAUIZPYIcjs.layoutText; exports.legacyAdjustmentLayer = _chunkQE7D7TZRcjs.legacyAdjustmentLayer; exports.legacyMaskOf = _chunkQE7D7TZRcjs.legacyMaskOf; exports.legacyView = _chunkQE7D7TZRcjs.legacyView; exports.lerpPigment = _chunkOLNIPTB3cjs.lerpPigment; exports.lerpPigmentInto = _chunkOLNIPTB3cjs.lerpPigmentInto; exports.levelsValue = _chunkQE7D7TZRcjs.levelsValue; exports.linearSrgbToXy = _chunkQE7D7TZRcjs.linearSrgbToXy; exports.linearToSrgb = _chunkQE7D7TZRcjs.linearToSrgb; exports.linearToSrgb8 = _chunkKWNMBMKGcjs.linearToSrgb8; exports.liveComponent = _chunkQE7D7TZRcjs.liveComponent; exports.liveShapeForDrag = liveShapeForDrag; exports.liveShapeSubpaths = _chunkQE7D7TZRcjs.liveShapeSubpaths; exports.liveWire = liveWire; exports.loadImageEditorDocument = loadImageEditorDocument; exports.loadMixer = _chunkPQ3H2AANcjs.loadMixer; exports.loadOpenTypeFont = _chunk3T5VCDIVcjs.loadOpenTypeFont; exports.loadWetKernel = _chunkKWNMBMKGcjs.loadWetKernel; exports.luma = _chunk3EHPLDFQcjs.luma; exports.magicWand = magicWand; exports.magneticAnchorSpacing = magneticAnchorSpacing; exports.mapCropHandle = _chunkQE7D7TZRcjs.mapCropHandle; exports.mapLayer = _chunkUOGKSVRQcjs.mapLayer; exports.mapSubpaths = _chunkQE7D7TZRcjs.mapSubpaths; exports.maskBounds = _chunk3EHPLDFQcjs.maskBounds; exports.maskFileName = maskFileName; exports.maskNameFromFile = maskNameFromFile; exports.maskSummary = maskSummary; exports.maskThumbnailClick = maskThumbnailClick; exports.matrixFromCorners = _chunkQE7D7TZRcjs.matrixFromCorners; exports.matrixFromParams = _chunkQE7D7TZRcjs.matrixFromParams; exports.measureCanvasViewport = measureCanvasViewport; exports.membraneFill = _chunk3EHPLDFQcjs.membraneFill; exports.mergeLayerEffect = _chunkUOGKSVRQcjs.mergeLayerEffect; exports.mergeShapeComponents = _chunkQE7D7TZRcjs.mergeShapeComponents; exports.migrateSerializedImageEditorState = migrateSerializedImageEditorState; exports.migrateToLayeredState = migrateToLayeredState; exports.mix32 = _chunkPQ3H2AANcjs.mix32; exports.mixPigment8 = _chunkOLNIPTB3cjs.mixPigment8; exports.mixPigmentRgb = _chunkOLNIPTB3cjs.mixPigmentRgb; exports.mixPigments = _chunkOLNIPTB3cjs.mixPigments; exports.mixerLoadResult = mixerLoadResult; exports.mixerRates = _chunkPQ3H2AANcjs.mixerRates; exports.modifySelection = _chunkQYLWG22Ncjs.modifySelection; exports.moveCurvePoint = moveCurvePoint; exports.moveLayer = _chunkQE7D7TZRcjs.moveLayer; exports.moveSmartFilter = _chunkQE7D7TZRcjs.moveSmartFilter; exports.mulMatrix3 = _chunkQE7D7TZRcjs.mulMatrix3; exports.needsLegacyBase = needsLegacyBase; exports.neutralHueRange = _chunkQE7D7TZRcjs.neutralHueRange; exports.newContentsId = _chunkQE7D7TZRcjs.newContentsId; exports.newEffectId = _chunkUOGKSVRQcjs.newEffectId; exports.newLayerId = _chunkQE7D7TZRcjs.newLayerId; exports.newLayerOptions = newLayerOptions; exports.normalizeAdjustmentLayer = _chunkQE7D7TZRcjs.normalizeAdjustmentLayer; exports.normalizeAdjustmentLayers = _chunkQE7D7TZRcjs.normalizeAdjustmentLayers; exports.normalizeAngle = _chunkQE7D7TZRcjs.normalizeAngle; exports.normalizeBlendMode = _chunkOLNIPTB3cjs.normalizeBlendMode; exports.normalizeBlender = _chunkPQ3H2AANcjs.normalizeBlender; exports.normalizeBrush = _chunkPQ3H2AANcjs.normalizeBrush; exports.normalizeFilter = _chunkQE7D7TZRcjs.normalizeFilter; exports.normalizeFlow = _chunkKWNMBMKGcjs.normalizeFlow; exports.normalizeHexColor = _chunkPQ3H2AANcjs.normalizeHexColor; exports.normalizeLayerEffects = _chunkUOGKSVRQcjs.normalizeLayerEffects; exports.normalizeLayerMask = _chunkQE7D7TZRcjs.normalizeLayerMask; exports.normalizeLiveShape = _chunkQE7D7TZRcjs.normalizeLiveShape; exports.normalizeMixer = _chunkPQ3H2AANcjs.normalizeMixer; exports.normalizePlacement = _chunkQE7D7TZRcjs.normalizePlacement; exports.normalizeProcessVersion = _chunkQE7D7TZRcjs.normalizeProcessVersion; exports.normalizeRect = _chunkX4LUGTQXcjs.normalizeRect; exports.normalizeRefineEdgeParams = _chunkX4LUGTQXcjs.normalizeRefineEdgeParams; exports.normalizeRetouch = _chunk3EHPLDFQcjs.normalizeRetouch; exports.normalizeShapePaint = _chunkQE7D7TZRcjs.normalizeShapePaint; exports.normalizeShapeStroke = _chunkQE7D7TZRcjs.normalizeShapeStroke; exports.normalizeSmartFilter = _chunkQE7D7TZRcjs.normalizeSmartFilter; exports.normalizeSmudge = _chunkPQ3H2AANcjs.normalizeSmudge; exports.normalizeStoredAdjustments = normalizeStoredAdjustments; exports.normalizeSubpaths = _chunkQE7D7TZRcjs.normalizeSubpaths; exports.normalizeText = _chunkQE7D7TZRcjs.normalizeText; exports.normalizeTilt = _chunkKWNMBMKGcjs.normalizeTilt; exports.normalizeWetParams = _chunkKWNMBMKGcjs.normalizeWetParams; exports.offsetLayer = _chunkQE7D7TZRcjs.offsetLayer; exports.offsetShape = _chunkQE7D7TZRcjs.offsetShape; exports.offsetSmartObject = _chunkQE7D7TZRcjs.offsetSmartObject; exports.offsetVectorMask = _chunkQE7D7TZRcjs.offsetVectorMask; exports.openMaskFile = openMaskFile; exports.openPsdFile = openPsdFile; exports.otsuThreshold = _chunkX4LUGTQXcjs.otsuThreshold; exports.packRgba = _chunk474IQG74cjs.packRgba; exports.packWetParams = _chunkKWNMBMKGcjs.packWetParams; exports.paintGradientMappingFor = _chunkPQ3H2AANcjs.paintGradientMappingFor; exports.paintPathStroke = _chunkPQ3H2AANcjs.paintPathStroke; exports.paintSourceColor = _chunkPQ3H2AANcjs.paintSourceColor; exports.paintSourceCss = _chunkPQ3H2AANcjs.paintSourceCss; exports.paragraphRanges = _chunkQAUIZPYIcjs.paragraphRanges; exports.parseAdjustmentBlock = _chunkQE7D7TZRcjs.parseAdjustmentBlock; exports.parseBlend = _chunkQE7D7TZRcjs.parseBlend; exports.parseColor = parseColor; exports.parseCssColor = _chunkA2IS7EHEcjs.parseCssColor; exports.parseDataUrl = _chunkOLNIPTB3cjs.parseDataUrl; exports.parseEffectColor = _chunkUOGKSVRQcjs.parseEffectColor; exports.parseLfx2 = _chunkQE7D7TZRcjs.parseLfx2; exports.parseLrfx = _chunkQE7D7TZRcjs.parseLrfx; exports.parseOpenTypeFont = _chunk3T5VCDIVcjs.parseOpenTypeFont; exports.parsePaintSource = _chunkPQ3H2AANcjs.parsePaintSource; exports.parsePatternBlock = _chunkQE7D7TZRcjs.parsePatternBlock; exports.parseSelectionMode = _chunkQYLWG22Ncjs.parseSelectionMode; exports.parseVersionedDescriptor = _chunkQE7D7TZRcjs.parseVersionedDescriptor; exports.patchParagraphStyle = _chunkQE7D7TZRcjs.patchParagraphStyle; exports.patchTextStyle = _chunkQE7D7TZRcjs.patchTextStyle; exports.pathStrokeCoverage = _chunkPQ3H2AANcjs.pathStrokeCoverage; exports.pathStrokeDabs = _chunkPQ3H2AANcjs.pathStrokeDabs; exports.pathToSelection = pathToSelection; exports.perDabStrength = _chunk3EHPLDFQcjs.perDabStrength; exports.photoFilterMatrix = _chunkQE7D7TZRcjs.photoFilterMatrix; exports.pigment8 = _chunkOLNIPTB3cjs.pigment8; exports.pigmentColor = _chunkKWNMBMKGcjs.pigmentColor; exports.pigmentOf = _chunkKWNMBMKGcjs.pigmentOf; exports.pixelLayerBounds = _chunkQE7D7TZRcjs.pixelLayerBounds; exports.pixelLayers = _chunkQE7D7TZRcjs.pixelLayers; exports.pixelPigment = _chunkKWNMBMKGcjs.pixelPigment; exports.placeContents = _chunkQE7D7TZRcjs.placeContents; exports.placeLayer = _chunkQE7D7TZRcjs.placeLayer; exports.placementAt = _chunkQE7D7TZRcjs.placementAt; exports.placementBounds = _chunkQE7D7TZRcjs.placementBounds; exports.placementGeometry = _chunkQE7D7TZRcjs.placementGeometry; exports.planImageToolPlayback = planImageToolPlayback; exports.planOutlineTrace = planOutlineTrace; exports.pngDataUrl = _chunkOLNIPTB3cjs.pngDataUrl; exports.pointerPressure = _chunkKWNMBMKGcjs.pointerPressure; exports.pointerStrokeSample = _chunkKWNMBMKGcjs.pointerStrokeSample; exports.pointerStrokeSamples = _chunkKWNMBMKGcjs.pointerStrokeSamples; exports.polygonCoverage = _chunkX4LUGTQXcjs.polygonCoverage; exports.polygonCoverageBox = _chunkX4LUGTQXcjs.polygonCoverageBox; exports.polygonSelection = _chunkX4LUGTQXcjs.polygonSelection; exports.posterizeValue = _chunkQE7D7TZRcjs.posterizeValue; exports.presetWarp = _chunkQE7D7TZRcjs.presetWarp; exports.previewStep = previewStep; exports.profileBytes = profileBytes; exports.projectImagePoint = _chunkQE7D7TZRcjs.projectImagePoint; exports.projectImageRect = _chunkQE7D7TZRcjs.projectImageRect; exports.projectMaskCoverage = _chunkQE7D7TZRcjs.projectMaskCoverage; exports.projectQuarterTurn = projectQuarterTurn; exports.proxyOf = _chunkOLNIPTB3cjs.proxyOf; exports.psdBytesFromBase64 = psdBytesFromBase64; exports.psdFileName = psdFileName; exports.psdPatternToEffectPattern = _chunkQE7D7TZRcjs.psdPatternToEffectPattern; exports.psdToLayers = _chunkQE7D7TZRcjs.psdToLayers; exports.pullWarpMesh = _chunkQAUIZPYIcjs.pullWarpMesh; exports.put255 = _chunkPQ3H2AANcjs.put255; exports.quadFrameOverlay = quadFrameOverlay; exports.quickMaskPixels = quickMaskPixels; exports.quickSelectStroke = _chunkX4LUGTQXcjs.quickSelectStroke; exports.rand01 = _chunkPQ3H2AANcjs.rand01; exports.randSigned = _chunkPQ3H2AANcjs.randSigned; exports.rangeLightness = _chunkQE7D7TZRcjs.rangeLightness; exports.rasterContents = _chunkQE7D7TZRcjs.rasterContents; exports.rasterMaskFromLegacy = _chunkQE7D7TZRcjs.rasterMaskFromLegacy; exports.rasterizeCoverage = _chunkQE7D7TZRcjs.rasterizeCoverage; exports.rasterizeDab = _chunkPQ3H2AANcjs.rasterizeDab; exports.rasterizeSmartObject = _chunkQE7D7TZRcjs.rasterizeSmartObject; exports.readAdjustmentControls = readAdjustmentControls; exports.readDeepRegion = _chunkOLNIPTB3cjs.readDeepRegion; exports.readPaintSource = _chunkPQ3H2AANcjs.readPaintSource; exports.readPixel = _chunk474IQG74cjs.readPixel; exports.readPsd = _chunkQE7D7TZRcjs.readPsd; exports.readRegion = _chunk474IQG74cjs.readRegion; exports.readSourceRegion = _chunk3EHPLDFQcjs.readSourceRegion; exports.rectSelection = _chunkX4LUGTQXcjs.rectSelection; exports.rectToQuad = _chunkQT26RHKKcjs.rectToQuad; exports.reduceSurface = _chunkUOGKSVRQcjs.reduceSurface; exports.referencePoint = _chunkQE7D7TZRcjs.referencePoint; exports.refineCoverage = _chunkX4LUGTQXcjs.refineCoverage; exports.refineEdgeHalo = _chunkX4LUGTQXcjs.refineEdgeHalo; exports.refineSelection = _chunkX4LUGTQXcjs.refineSelection; exports.reflectanceToRgb = _chunkOLNIPTB3cjs.reflectanceToRgb; exports.removeAlpha = _chunkQE7D7TZRcjs.removeAlpha; exports.removeCurvePoint = removeCurvePoint; exports.removeLayer = _chunkQE7D7TZRcjs.removeLayer; exports.removeLayerEffect = _chunkQE7D7TZRcjs.removeLayerEffect; exports.removeLayerFilter = _chunkQE7D7TZRcjs.removeLayerFilter; exports.removePaintGradientStop = _chunkPQ3H2AANcjs.removePaintGradientStop; exports.removeSmartFilter = _chunkQE7D7TZRcjs.removeSmartFilter; exports.renderBrushstroke = _chunkPQ3H2AANcjs.renderBrushstroke; exports.renderLayerEffects = _chunkUOGKSVRQcjs.renderLayerEffects; exports.renderLayeredBase = renderLayeredBase; exports.renderShape = _chunkQE7D7TZRcjs.renderShape; exports.renderShapeRect = _chunkQE7D7TZRcjs.renderShapeRect; exports.renderSmartObject = _chunkQE7D7TZRcjs.renderSmartObject; exports.renderText = _chunkQE7D7TZRcjs.renderText; exports.replaceContents = _chunkQE7D7TZRcjs.replaceContents; exports.replaceTextRange = _chunkQE7D7TZRcjs.replaceTextRange; exports.requireLayer = _chunkQE7D7TZRcjs.requireLayer; exports.requireOperation = _chunkQE7D7TZRcjs.requireOperation; exports.requireShapeLayer = _chunkQE7D7TZRcjs.requireShapeLayer; exports.requireSmartObject = _chunkQE7D7TZRcjs.requireSmartObject; exports.requireTypeLayer = _chunkQE7D7TZRcjs.requireTypeLayer; exports.requireUnlocked = _chunkQE7D7TZRcjs.requireUnlocked; exports.rerender = _chunkQE7D7TZRcjs.rerender; exports.rerenderShape = _chunkQE7D7TZRcjs.rerenderShape; exports.rerenderText = _chunkQE7D7TZRcjs.rerenderText; exports.resizePixels = resizePixels; exports.resizeSelection = _chunkQYLWG22Ncjs.resizeSelection; exports.resizeWarpMesh = _chunkQAUIZPYIcjs.resizeWarpMesh; exports.resolveExternalAssets = _chunkQE7D7TZRcjs.resolveExternalAssets; exports.resolveMosaicRegionBounds = resolveMosaicRegionBounds; exports.resolvePaintGradient = _chunkPQ3H2AANcjs.resolvePaintGradient; exports.resolveProfile = resolveProfile; exports.resolveVectorMasks = _chunkQE7D7TZRcjs.resolveVectorMasks; exports.restyleRange = _chunkQAUIZPYIcjs.restyleRange; exports.retouchFilter = _chunk3EHPLDFQcjs.retouchFilter; exports.reversePaintGradient = _chunkPQ3H2AANcjs.reversePaintGradient; exports.rgbToGray = _chunkQE7D7TZRcjs.rgbToGray; exports.rgbToHsl = _chunkQE7D7TZRcjs.rgbToHsl; exports.rgbToReflectance = _chunkOLNIPTB3cjs.rgbToReflectance; exports.rgbUnitToHex = rgbUnitToHex; exports.rgbaViewOfGrey = _chunk3EHPLDFQcjs.rgbaViewOfGrey; exports.runLayerFilters = _chunkQE7D7TZRcjs.runLayerFilters; exports.runLayerFiltersFloat = _chunkQE7D7TZRcjs.runLayerFiltersFloat; exports.runLayerMenuAction = runLayerMenuAction; exports.runSelectionJob = _chunkX4LUGTQXcjs.runSelectionJob; exports.sameCanvasViewport = sameCanvasViewport; exports.sampleLut = _chunkQE7D7TZRcjs.sampleLut; exports.sampleToneLut = _chunkQE7D7TZRcjs.sampleToneLut; exports.saturationOf = _chunk3EHPLDFQcjs.saturationOf; exports.scaleLayerEffect = _chunkUOGKSVRQcjs.scaleLayerEffect; exports.scalePaintGradient = _chunkPQ3H2AANcjs.scalePaintGradient; exports.seamlessClone = _chunk3EHPLDFQcjs.seamlessClone; exports.seedFromString = _chunkPQ3H2AANcjs.seedFromString; exports.segmentToSelection = segmentToSelection; exports.segmentationOutlines = segmentationOutlines; exports.segmentsToSelection = segmentsToSelection; exports.selectObjectIn = _chunkX4LUGTQXcjs.selectObjectIn; exports.selectSimilar = selectSimilar; exports.selectionArea = _chunkQYLWG22Ncjs.selectionArea; exports.selectionFromCoverage = _chunkQYLWG22Ncjs.selectionFromCoverage; exports.selectionFromPixels = _chunkQYLWG22Ncjs.selectionFromPixels; exports.selectionFromRegion = _chunkQYLWG22Ncjs.selectionFromRegion; exports.selectionFromTiles = _chunkQYLWG22Ncjs.selectionFromTiles; exports.selectionModeFromModifiers = selectionModeFromModifiers; exports.selectionOutline = selectionOutline; exports.selectionRing = selectionRing; exports.selectionToCoverage = _chunkQYLWG22Ncjs.selectionToCoverage; exports.selectionToPixels = _chunkQYLWG22Ncjs.selectionToPixels; exports.selectionToSubpaths = selectionToSubpaths; exports.selectionValueAt = _chunkQYLWG22Ncjs.selectionValueAt; exports.serializeChannels = serializeChannels; exports.serializeColorMode = serializeColorMode; exports.serializeColorProfile = serializeColorProfile; exports.serializeContents = _chunkQE7D7TZRcjs.serializeContents; exports.serializeEffects = _chunkQE7D7TZRcjs.serializeEffects; exports.serializeLayer = _chunkQE7D7TZRcjs.serializeLayer; exports.serializeLayers = _chunkQE7D7TZRcjs.serializeLayers; exports.serializeLayersExternal = _chunkQE7D7TZRcjs.serializeLayersExternal; exports.serializeMask = _chunkX4LUGTQXcjs.serializeMask; exports.serializePatterns = _chunkQE7D7TZRcjs.serializePatterns; exports.serializeSelection = _chunkQYLWG22Ncjs.serializeSelection; exports.setCloneTransformValue = setCloneTransformValue; exports.setControlPath = setControlPath; exports.setLayerEffects = _chunkQE7D7TZRcjs.setLayerEffects; exports.setLayerEffectsEnabled = _chunkQE7D7TZRcjs.setLayerEffectsEnabled; exports.setLayerMask = _chunkQE7D7TZRcjs.setLayerMask; exports.setLayerProperties = _chunkQE7D7TZRcjs.setLayerProperties; exports.setLum = _chunkOLNIPTB3cjs.setLum; exports.setPigmentColor = _chunkOLNIPTB3cjs.setPigmentColor; exports.setRetouchChoice = setRetouchChoice; exports.setSmartFilterMask = _chunkQE7D7TZRcjs.setSmartFilterMask; exports.setSmartFiltersEnabled = _chunkQE7D7TZRcjs.setSmartFiltersEnabled; exports.setSmartPlacement = _chunkQE7D7TZRcjs.setSmartPlacement; exports.shadeTile = _chunkKWNMBMKGcjs.shadeTile; exports.shapeAsPixelLayer = _chunkQE7D7TZRcjs.shapeAsPixelLayer; exports.shapeFromAnnotation = _chunkQE7D7TZRcjs.shapeFromAnnotation; exports.shapeGeometryBounds = _chunkQE7D7TZRcjs.shapeGeometryBounds; exports.shapeLayers = _chunkQE7D7TZRcjs.shapeLayers; exports.shapeOutline = _chunkQE7D7TZRcjs.shapeOutline; exports.shapeRenderClip = _chunkQE7D7TZRcjs.shapeRenderClip; exports.shiftCoverage = _chunkQYLWG22Ncjs.shiftCoverage; exports.simplifyPixelPath = simplifyPixelPath; exports.skinToneRange = skinToneRange; exports.slicSuperpixels = _chunkX4LUGTQXcjs.slicSuperpixels; exports.smartFilterRows = smartFilterRows; exports.smartObjectLayers = _chunkQE7D7TZRcjs.smartObjectLayers; exports.smoothCoverage = _chunkQYLWG22Ncjs.smoothCoverage; exports.smoothPoints = _chunkPQ3H2AANcjs.smoothPoints; exports.smoothnessWeights = _chunkX4LUGTQXcjs.smoothnessWeights; exports.smudgeEffect = _chunk3EHPLDFQcjs.smudgeEffect; exports.snapPolygonToEdges = snapPolygonToEdges; exports.snapTo45 = snapTo45; exports.snapToEdge = snapToEdge; exports.softMaskToSelection = _chunkX4LUGTQXcjs.softMaskToSelection; exports.solidPaint = _chunkPQ3H2AANcjs.solidPaint; exports.solidSurface = _chunk474IQG74cjs.solidSurface; exports.solveMembrane = _chunk3EHPLDFQcjs.solveMembrane; exports.spliceRuns = _chunkQAUIZPYIcjs.spliceRuns; exports.splitOverlayAnnotations = splitOverlayAnnotations; exports.sponge = _chunk3EHPLDFQcjs.sponge; exports.spongeEffect = _chunk3EHPLDFQcjs.spongeEffect; exports.spotHealPixels = _chunk3EHPLDFQcjs.spotHealPixels; exports.spotHealWindow = _chunk3EHPLDFQcjs.spotHealWindow; exports.srgb8ToLab = srgb8ToLab; exports.srgbByteToLinear = _chunkKWNMBMKGcjs.srgbByteToLinear; exports.srgbDecode = _chunkOLNIPTB3cjs.srgbDecode; exports.srgbEncode = _chunkOLNIPTB3cjs.srgbEncode; exports.srgbToLinear = _chunkQE7D7TZRcjs.srgbToLinear; exports.standardBlendMode = _chunkOLNIPTB3cjs.standardBlendMode; exports.startMarchingAnts = startMarchingAnts; exports.startSelectionWorker = _chunkX4LUGTQXcjs.startSelectionWorker; exports.stepSlotTs = _chunkKWNMBMKGcjs.stepSlotTs; exports.strokeGrainCatch = _chunkPQ3H2AANcjs.strokeGrainCatch; exports.styleAt = _chunkQAUIZPYIcjs.styleAt; exports.subpathsToSvgPath = subpathsToSvgPath; exports.sumHistograms = sumHistograms; exports.superpixelSaliency = _chunkX4LUGTQXcjs.superpixelSaliency; exports.surfaceBytes = _chunk474IQG74cjs.surfaceBytes; exports.surfaceDepth = _chunkOLNIPTB3cjs.surfaceDepth; exports.surfaceFromDeepPixels = _chunkOLNIPTB3cjs.surfaceFromDeepPixels; exports.surfaceFromPixels = _chunk474IQG74cjs.surfaceFromPixels; exports.surfacesEqual = _chunk474IQG74cjs.surfacesEqual; exports.tempTintToXy = _chunkQE7D7TZRcjs.tempTintToXy; exports.temperatureToKelvin = _chunkQE7D7TZRcjs.temperatureToKelvin; exports.textIndexAt = _chunkQAUIZPYIcjs.textIndexAt; exports.textMatrix = _chunkQE7D7TZRcjs.textMatrix; exports.textOrientation = _chunkQE7D7TZRcjs.textOrientation; exports.textOutlines = _chunkQE7D7TZRcjs.textOutlines; exports.textRange = _chunkQE7D7TZRcjs.textRange; exports.tileCoord = _chunk474IQG74cjs.tileCoord; exports.tileKey = _chunk474IQG74cjs.tileKey; exports.tileRect = _chunk474IQG74cjs.tileRect; exports.tileSamples = _chunkOLNIPTB3cjs.tileSamples; exports.tileSamples16 = _chunkOLNIPTB3cjs.tileSamples16; exports.tileSamples32 = _chunkOLNIPTB3cjs.tileSamples32; exports.tilesInRect = _chunk474IQG74cjs.tilesInRect; exports.tipFalloff = _chunkPQ3H2AANcjs.tipFalloff; exports.tipReach = _chunkPQ3H2AANcjs.tipReach; exports.tipShape = _chunkPQ3H2AANcjs.tipShape; exports.to16From32 = _chunkOLNIPTB3cjs.to16From32; exports.to16From8 = _chunkOLNIPTB3cjs.to16From8; exports.to32From16 = _chunkOLNIPTB3cjs.to32From16; exports.to32From8 = _chunkOLNIPTB3cjs.to32From8; exports.to8From16 = _chunkOLNIPTB3cjs.to8From16; exports.to8From32 = _chunkOLNIPTB3cjs.to8From32; exports.toHex = toHex; exports.toTextSpace = _chunkQE7D7TZRcjs.toTextSpace; exports.toneCurve = _chunkQE7D7TZRcjs.toneCurve; exports.toneLuts = _chunkQE7D7TZRcjs.toneLuts; exports.toneOf = _chunk3EHPLDFQcjs.toneOf; exports.toneRange = toneRange; exports.transformHomography = _chunkQE7D7TZRcjs.transformHomography; exports.transformMap = _chunkQE7D7TZRcjs.transformMap; exports.transformShapeComponents = _chunkQE7D7TZRcjs.transformShapeComponents; exports.transformSurface = _chunkUOGKSVRQcjs.transformSurface; exports.transformTypeLayer = _chunkQE7D7TZRcjs.transformTypeLayer; exports.transformVectorMask = _chunkQE7D7TZRcjs.transformVectorMask; exports.transformedBounds = _chunkUOGKSVRQcjs.transformedBounds; exports.transformedBox = _chunkQE7D7TZRcjs.transformedBox; exports.transformedPoint = _chunkQE7D7TZRcjs.transformedPoint; exports.translateLayer = _chunkQE7D7TZRcjs.translateLayer; exports.translateSurface = _chunk474IQG74cjs.translateSurface; exports.typeAsPixelLayer = _chunkQE7D7TZRcjs.typeAsPixelLayer; exports.typeFrame = _chunkQE7D7TZRcjs.typeFrame; exports.typeFromAnnotation = _chunkQE7D7TZRcjs.typeFromAnnotation; exports.typeLayerAt = typeLayerAt; exports.typeLayerName = _chunkQE7D7TZRcjs.typeLayerName; exports.ungroupLayer = _chunkQE7D7TZRcjs.ungroupLayer; exports.uniformTile = _chunk474IQG74cjs.uniformTile; exports.unionRect = _chunkQE7D7TZRcjs.unionRect; exports.unprojectCanvasPoint = _chunkQE7D7TZRcjs.unprojectCanvasPoint; exports.updateLayerEffect = _chunkQE7D7TZRcjs.updateLayerEffect; exports.updateLayerFilter = _chunkQE7D7TZRcjs.updateLayerFilter; exports.updateLayerMaskProps = _chunkQE7D7TZRcjs.updateLayerMaskProps; exports.updatePaintGradientStop = _chunkPQ3H2AANcjs.updatePaintGradientStop; exports.updateShapeLayer = _chunkQE7D7TZRcjs.updateShapeLayer; exports.updateSmartFilter = _chunkQE7D7TZRcjs.updateSmartFilter; exports.updateTypeLayer = _chunkQE7D7TZRcjs.updateTypeLayer; exports.upscaleRegion = _chunkX4LUGTQXcjs.upscaleRegion; exports.userErrorMessage = _chunkQE7D7TZRcjs.userErrorMessage; exports.uvToXy = _chunkQE7D7TZRcjs.uvToXy; exports.validateEffectGradient = _chunkUOGKSVRQcjs.validateEffectGradient; exports.validateLayerEffect = _chunkUOGKSVRQcjs.validateLayerEffect; exports.validateLayerEffects = _chunkUOGKSVRQcjs.validateLayerEffects; exports.vectorMaskBounds = _chunkQE7D7TZRcjs.vectorMaskBounds; exports.vectorMaskCoverage = _chunkQE7D7TZRcjs.vectorMaskCoverage; exports.vectorMaskThumbnail = _chunkQE7D7TZRcjs.vectorMaskThumbnail; exports.vectorMaskThumbnailClick = vectorMaskThumbnailClick; exports.versionedDescriptorBytes = _chunkQE7D7TZRcjs.versionedDescriptorBytes; exports.vibranceLinear = _chunkQE7D7TZRcjs.vibranceLinear; exports.vibrancePixel = _chunkQE7D7TZRcjs.vibrancePixel; exports.walkDabs = _chunkPQ3H2AANcjs.walkDabs; exports.warpMeshEditPoints = _chunkQAUIZPYIcjs.warpMeshEditPoints; exports.warpMeshGridCurves = _chunkQAUIZPYIcjs.warpMeshGridCurves; exports.warpMeshParamAt = _chunkQAUIZPYIcjs.warpMeshParamAt; exports.warpPresetMesh = _chunkQAUIZPYIcjs.warpPresetMesh; exports.warpSurface = _chunkUOGKSVRQcjs.warpSurface; exports.watchCanvasViewport = watchCanvasViewport; exports.wbMatrix = _chunkQE7D7TZRcjs.wbMatrix; exports.wetGpuSupport = _chunkKWNMBMKGcjs.wetGpuSupport; exports.wetSimdSupported = _chunkKWNMBMKGcjs.wetSimdSupported; exports.wetSupport = _chunkKWNMBMKGcjs.wetSupport; exports.whiteBalanceFromSample = _chunkQE7D7TZRcjs.whiteBalanceFromSample; exports.whiteBalanceMatrix = _chunkQE7D7TZRcjs.whiteBalanceMatrix; exports.withBackgroundOpacity = withBackgroundOpacity; exports.withFilterMaskSurface = _chunkQE7D7TZRcjs.withFilterMaskSurface; exports.withImagePlayback = withImagePlayback; exports.withNewIds = _chunkQE7D7TZRcjs.withNewIds; exports.workImage = _chunkX4LUGTQXcjs.workImage; exports.workLuma = _chunkX4LUGTQXcjs.workLuma; exports.workPlanes = _chunkX4LUGTQXcjs.workPlanes; exports.writeAdjustmentBlock = _chunkQE7D7TZRcjs.writeAdjustmentBlock; exports.writeDeepRegion = _chunkOLNIPTB3cjs.writeDeepRegion; exports.writeLfx2 = _chunkQE7D7TZRcjs.writeLfx2; exports.writePatternBlock = _chunkQE7D7TZRcjs.writePatternBlock; exports.writePsd = _chunkQE7D7TZRcjs.writePsd; exports.writeRegion = _chunk474IQG74cjs.writeRegion; exports.xyToTempTint = _chunkQE7D7TZRcjs.xyToTempTint; exports.xyToUv = _chunkQE7D7TZRcjs.xyToUv;
|
|
21079
|
+
exports.ADJUSTMENT_KEYS = _chunkQE7D7TZRcjs.ADJUSTMENT_KEYS; exports.ADJUSTMENT_KINDS = _chunkQE7D7TZRcjs.ADJUSTMENT_KINDS; exports.ADJUSTMENT_LAYER_CONTROLS = ADJUSTMENT_LAYER_CONTROLS; exports.ADJUSTMENT_LAYER_OPACITY_CONTROL = ADJUSTMENT_LAYER_OPACITY_CONTROL; exports.ADJUSTMENT_LUT_SIZE = _chunkQE7D7TZRcjs.ADJUSTMENT_LUT_SIZE; exports.ANCHOR_FRACTION = _chunkQE7D7TZRcjs.ANCHOR_FRACTION; exports.AS_SHOT_KELVIN = _chunkQE7D7TZRcjs.AS_SHOT_KELVIN; exports.BACKGROUND_LAYER_ID = _chunkQE7D7TZRcjs.BACKGROUND_LAYER_ID; exports.BACKGROUND_LAYER_NAME = _chunkQE7D7TZRcjs.BACKGROUND_LAYER_NAME; exports.BIT_DEPTHS = _chunkOLNIPTB3cjs.BIT_DEPTHS; exports.BIT_DEPTH_OPTIONS = BIT_DEPTH_OPTIONS; exports.BLEND_MODES = _chunkOLNIPTB3cjs.BLEND_MODES; exports.BLUR_FILTER_ID = _chunkQE7D7TZRcjs.BLUR_FILTER_ID; exports.BODY_SCATTER = _chunkKWNMBMKGcjs.BODY_SCATTER; exports.BRUSHSTROKE_MAX_SCALE = _chunkYQGCPL5Xcjs.BRUSHSTROKE_MAX_SCALE; exports.BRUSHSTROKE_MIN_SCALE = _chunkYQGCPL5Xcjs.BRUSHSTROKE_MIN_SCALE; exports.BRUSH_OPTION_CONTROLS = BRUSH_OPTION_CONTROLS; exports.BUILTIN_PROFILES = _chunkBROJYMWUcjs.BUILTIN_PROFILES; exports.BrushstrokeCache = _chunkPQ3H2AANcjs.BrushstrokeCache; exports.CANVAS_SIZE_PRESETS = CANVAS_SIZE_PRESETS; exports.CLONE_TRANSFORM_CONTROLS = CLONE_TRANSFORM_CONTROLS; exports.COLOR_MODE_OPTIONS = COLOR_MODE_OPTIONS; exports.COLOR_RANGE_PRESETS = COLOR_RANGE_PRESETS; exports.COLOR_RANGE_PRESET_LABELS = COLOR_RANGE_PRESET_LABELS; exports.CONTENT_AWARE_FILL_SAMPLING = CONTENT_AWARE_FILL_SAMPLING; exports.CONTENT_AWARE_FILL_TOOLS = CONTENT_AWARE_FILL_TOOLS; exports.ColorGmm = _chunkL52VMQZScjs.ColorGmm; exports.ContentAwareFillSession = ContentAwareFillSession; exports.CoverageMap = _chunkPQ3H2AANcjs.CoverageMap; exports.D50 = _chunkQE7D7TZRcjs.D50; exports.D65 = _chunkQE7D7TZRcjs.D65; exports.DEFAULT_ADJUSTMENTS = DEFAULT_ADJUSTMENTS; exports.DEFAULT_AUTO_LEADING = _chunkQAUIZPYIcjs.DEFAULT_AUTO_LEADING; exports.DEFAULT_BLENDER = _chunkPQ3H2AANcjs.DEFAULT_BLENDER; exports.DEFAULT_BRUSH = _chunkPQ3H2AANcjs.DEFAULT_BRUSH; exports.DEFAULT_CANVAS_VIEWPORT = DEFAULT_CANVAS_VIEWPORT; exports.DEFAULT_CHANNEL_COLOR = DEFAULT_CHANNEL_COLOR; exports.DEFAULT_CONTENT_AWARE_FILL_SETTINGS = DEFAULT_CONTENT_AWARE_FILL_SETTINGS; exports.DEFAULT_DEPTH_MASK = DEFAULT_DEPTH_MASK; exports.DEFAULT_FLOW = _chunkKWNMBMKGcjs.DEFAULT_FLOW; exports.DEFAULT_GLOBAL_LIGHT = _chunkUOGKSVRQcjs.DEFAULT_GLOBAL_LIGHT; exports.DEFAULT_MITER_LIMIT = _chunkQE7D7TZRcjs.DEFAULT_MITER_LIMIT; exports.DEFAULT_MIXER = _chunkPQ3H2AANcjs.DEFAULT_MIXER; exports.DEFAULT_PAINT_GRADIENT = _chunkPQ3H2AANcjs.DEFAULT_PAINT_GRADIENT; exports.DEFAULT_PAINT_GRADIENT_MAPPING = _chunkPQ3H2AANcjs.DEFAULT_PAINT_GRADIENT_MAPPING; exports.DEFAULT_PROOF = DEFAULT_PROOF; exports.DEFAULT_REFINE_EDGE_PARAMS = _chunkL52VMQZScjs.DEFAULT_REFINE_EDGE_PARAMS; exports.DEFAULT_RETOUCH = _chunkYF3YZZ6Gcjs.DEFAULT_RETOUCH; exports.DEFAULT_SELECTION_TOOL_OPTIONS = DEFAULT_SELECTION_TOOL_OPTIONS; exports.DEFAULT_SELECT_AND_MASK_SETTINGS = DEFAULT_SELECT_AND_MASK_SETTINGS; exports.DEFAULT_SHAPE_TOOL_OPTIONS = DEFAULT_SHAPE_TOOL_OPTIONS; exports.DEFAULT_SMUDGE = _chunkPQ3H2AANcjs.DEFAULT_SMUDGE; exports.DEFAULT_TEXT_STYLE = _chunkQAUIZPYIcjs.DEFAULT_TEXT_STYLE; exports.DEFAULT_TRANSFORM = DEFAULT_TRANSFORM; exports.DEFAULT_TYPE_TOOL_OPTIONS = DEFAULT_TYPE_TOOL_OPTIONS; exports.DEFAULT_WET_PAPER = _chunkKWNMBMKGcjs.DEFAULT_WET_PAPER; exports.DEFAULT_WET_PARAMS = _chunkKWNMBMKGcjs.DEFAULT_WET_PARAMS; exports.DEPTH_MASK_CONTROLS = DEPTH_MASK_CONTROLS; exports.DEVELOP_FILTER_ID = _chunkQE7D7TZRcjs.DEVELOP_FILTER_ID; exports.DIRECT_GAUSSIAN_MAX_SIGMA = _chunkK6PXS6DOcjs.DIRECT_GAUSSIAN_MAX_SIGMA; exports.DRY_EPS = _chunkKWNMBMKGcjs.DRY_EPS; exports.DabWalker = _chunkPQ3H2AANcjs.DabWalker; exports.EFFECT_LAYER_USES = EFFECT_LAYER_USES; exports.EMPTY_DISTANCE = _chunkQYLWG22Ncjs.EMPTY_DISTANCE; exports.EMPTY_MIXER_LOAD = _chunkPQ3H2AANcjs.EMPTY_MIXER_LOAD; exports.EX = _chunkKWNMBMKGcjs.EX; exports.EY = _chunkKWNMBMKGcjs.EY; exports.EdgeMap = EdgeMap; exports.FLAG_ALIVE = _chunkKWNMBMKGcjs.FLAG_ALIVE; exports.FLAG_BOTTOM = _chunkKWNMBMKGcjs.FLAG_BOTTOM; exports.FLAG_LEFT = _chunkKWNMBMKGcjs.FLAG_LEFT; exports.FLAG_RIGHT = _chunkKWNMBMKGcjs.FLAG_RIGHT; exports.FLAG_TOP = _chunkKWNMBMKGcjs.FLAG_TOP; exports.FLAG_WET = _chunkKWNMBMKGcjs.FLAG_WET; exports.FLAT = _chunkKWNMBMKGcjs.FLAT; exports.FREE_INTERVAL = _chunkKWNMBMKGcjs.FREE_INTERVAL; exports.FREE_TRANSFORM_CONTENTS = FREE_TRANSFORM_CONTENTS; exports.FREE_TRANSFORM_FIELDS = FREE_TRANSFORM_FIELDS; exports.FREE_TRANSFORM_MODES = _chunkQE7D7TZRcjs.FREE_TRANSFORM_MODES; exports.FREE_TRANSFORM_MODE_OPTIONS = FREE_TRANSFORM_MODE_OPTIONS; exports.FreeTransformSession = FreeTransformSession; exports.FreeTransformTool = FreeTransformTool; exports.GAMMA = _chunkL52VMQZScjs.GAMMA; exports.GRAIN_PATTERNS = _chunkPQ3H2AANcjs.GRAIN_PATTERNS; exports.GRAIN_TILE = _chunkPQ3H2AANcjs.GRAIN_TILE; exports.GUIDED_FILTER_EPS = _chunkL52VMQZScjs.GUIDED_FILTER_EPS; exports.GridGraph = _chunkL52VMQZScjs.GridGraph; exports.HIDE = _chunkKWNMBMKGcjs.HIDE; exports.HISTOGRAM_BINS = HISTOGRAM_BINS; exports.HUE_RANGE_LABELS = _chunkQE7D7TZRcjs.HUE_RANGE_LABELS; exports.HUE_RANGE_PRESETS = HUE_RANGE_PRESETS; exports.IDENTITY_CLONE_TRANSFORM = _chunkYF3YZZ6Gcjs.IDENTITY_CLONE_TRANSFORM; exports.IDENTITY_MATRIX3 = _chunkQE7D7TZRcjs.IDENTITY_MATRIX3; exports.IMAGE_ADJUSTMENT_CONTROLS = IMAGE_ADJUSTMENT_CONTROLS; exports.IMAGE_CROP_PRESETS = IMAGE_CROP_PRESETS; exports.IMAGE_EDITOR_SCHEMA_VERSION = IMAGE_EDITOR_SCHEMA_VERSION; exports.IMAGE_EDITOR_STATE_VERSION = IMAGE_EDITOR_STATE_VERSION; exports.IMAGE_EFFECT_PLACES = IMAGE_EFFECT_PLACES; exports.IMAGE_FILTER_PRESETS = IMAGE_FILTER_PRESETS; exports.IMAGE_PLAYBACK_KIND = IMAGE_PLAYBACK_KIND; exports.IMAGE_TOOL_GROUPS = IMAGE_TOOL_GROUPS; exports.IMAGE_TOOL_SHORTCUTS = IMAGE_TOOL_SHORTCUTS; exports.INTENTS = _chunkBROJYMWUcjs.INTENTS; exports.INTENT_OPTIONS = INTENT_OPTIONS; exports.INTERPOLATIONS = _chunkUOGKSVRQcjs.INTERPOLATIONS; exports.ImageEditorController = ImageEditorController; exports.ImageEditorRenderer = ImageEditorRenderer; exports.ImageEffectsEngine = ImageEffectsEngine; exports.LATEST_PROCESS_VERSION = _chunkQE7D7TZRcjs.LATEST_PROCESS_VERSION; exports.LAYERED_SCHEMA_VERSION = _chunkQE7D7TZRcjs.LAYERED_SCHEMA_VERSION; exports.LAYER_EFFECT_KINDS = _chunkUOGKSVRQcjs.LAYER_EFFECT_KINDS; exports.LAYER_EFFECT_MENU = LAYER_EFFECT_MENU; exports.LEGACY_PROCESS_VERSION = _chunkQE7D7TZRcjs.LEGACY_PROCESS_VERSION; exports.LIVE_SHAPE_KINDS = _chunkQE7D7TZRcjs.LIVE_SHAPE_KINDS; exports.LUMA_709 = _chunkQE7D7TZRcjs.LUMA_709; exports.LayerCompositor = _chunkQE7D7TZRcjs.LayerCompositor; exports.LayerEffectError = _chunkUOGKSVRQcjs.LayerEffectError; exports.LayerOperationError = _chunkQE7D7TZRcjs.LayerOperationError; exports.MARCHING_ANTS_STEP_MS = MARCHING_ANTS_STEP_MS; exports.MASK_FILE_ACCEPT = MASK_FILE_ACCEPT; exports.MAX_BATCH = _chunkKWNMBMKGcjs.MAX_BATCH; exports.MAX_BRUSH_SIZE = _chunkPQ3H2AANcjs.MAX_BRUSH_SIZE; exports.MAX_CANVAS_BACKING_SIDE = MAX_CANVAS_BACKING_SIDE; exports.MAX_EFFECT_ANIMATION_MS = _chunkQE7D7TZRcjs.MAX_EFFECT_ANIMATION_MS; exports.MAX_EFFECT_REACH = _chunkUOGKSVRQcjs.MAX_EFFECT_REACH; exports.MAX_KELVIN = _chunkQE7D7TZRcjs.MAX_KELVIN; exports.MAX_TILT_ACCEL = _chunkKWNMBMKGcjs.MAX_TILT_ACCEL; exports.MAX_TRANSFORM_PIXELS = _chunkUOGKSVRQcjs.MAX_TRANSFORM_PIXELS; exports.MAX_WET_LANES = _chunkKWNMBMKGcjs.MAX_WET_LANES; exports.MAX_WET_SLOTS = _chunkKWNMBMKGcjs.MAX_WET_SLOTS; exports.MIN_KELVIN = _chunkQE7D7TZRcjs.MIN_KELVIN; exports.MIRED_PER_TEMPERATURE_UNIT = _chunkQE7D7TZRcjs.MIRED_PER_TEMPERATURE_UNIT; exports.MIXER_DRAIN = _chunkPQ3H2AANcjs.MIXER_DRAIN; exports.MIXER_MIXING_OPTIONS = MIXER_MIXING_OPTIONS; exports.MIXER_OPTION_CONTROLS = MIXER_OPTION_CONTROLS; exports.MIXER_PICKUP_RATE = _chunkPQ3H2AANcjs.MIXER_PICKUP_RATE; exports.MIXING_MODELS = _chunkPQ3H2AANcjs.MIXING_MODELS; exports.MixerStroke = _chunkPQ3H2AANcjs.MixerStroke; exports.OPP = _chunkKWNMBMKGcjs.OPP; exports.PAINTERLY_BLEND_MODES = _chunkOLNIPTB3cjs.PAINTERLY_BLEND_MODES; exports.PAINT_COLOR_JSON_SCHEMA = _chunkPQ3H2AANcjs.PAINT_COLOR_JSON_SCHEMA; exports.PAINT_GRADIENT_FULL_SPEED = _chunkPQ3H2AANcjs.PAINT_GRADIENT_FULL_SPEED; exports.PAINT_GRADIENT_JSON_SCHEMA = _chunkPQ3H2AANcjs.PAINT_GRADIENT_JSON_SCHEMA; exports.PAINT_GRADIENT_KIT = _chunkPQ3H2AANcjs.PAINT_GRADIENT_KIT; exports.PAINT_GRADIENT_MAPPINGS = _chunkPQ3H2AANcjs.PAINT_GRADIENT_MAPPINGS; exports.PAINT_GRADIENT_MAPPING_LABELS = _chunkPQ3H2AANcjs.PAINT_GRADIENT_MAPPING_LABELS; exports.PAINT_GRADIENT_PRESETS = _chunkPQ3H2AANcjs.PAINT_GRADIENT_PRESETS; exports.PAINT_GRADIENT_REPEATS = _chunkPQ3H2AANcjs.PAINT_GRADIENT_REPEATS; exports.PAINT_GRADIENT_REPEAT_LABELS = _chunkPQ3H2AANcjs.PAINT_GRADIENT_REPEAT_LABELS; exports.PAINT_GRADIENT_SPACES = _chunkPQ3H2AANcjs.PAINT_GRADIENT_SPACES; exports.PAINT_GRADIENT_SPACE_LABELS = _chunkPQ3H2AANcjs.PAINT_GRADIENT_SPACE_LABELS; exports.PAINT_SOURCE_JSON_SCHEMA = _chunkPQ3H2AANcjs.PAINT_SOURCE_JSON_SCHEMA; exports.PAINT_TOOLS = PAINT_TOOLS; exports.PAPER_CAPACITY = _chunkKWNMBMKGcjs.PAPER_CAPACITY; exports.PARAGRAPH_STYLE_FIELDS = _chunkQE7D7TZRcjs.PARAGRAPH_STYLE_FIELDS; exports.PARAM = _chunkKWNMBMKGcjs.PARAM; exports.PARAM_FLOATS = _chunkKWNMBMKGcjs.PARAM_FLOATS; exports.PASTE_MODES = PASTE_MODES; exports.PATTERN_BLOCK_KEYS = _chunkQE7D7TZRcjs.PATTERN_BLOCK_KEYS; exports.PIGMENT_BANDS = _chunkOLNIPTB3cjs.PIGMENT_BANDS; exports.PIGMENT_CHANNELS = _chunkKWNMBMKGcjs.PIGMENT_CHANNELS; exports.PIGMENT_LAMBDA_MIN = _chunkOLNIPTB3cjs.PIGMENT_LAMBDA_MIN; exports.PIGMENT_LAMBDA_STEP = _chunkOLNIPTB3cjs.PIGMENT_LAMBDA_STEP; exports.PIGMENT_UNIT = _chunkKWNMBMKGcjs.PIGMENT_UNIT; exports.PIGMENT_WAVELENGTHS = _chunkOLNIPTB3cjs.PIGMENT_WAVELENGTHS; exports.PLANE = _chunkKWNMBMKGcjs.PLANE; exports.PLANE_BYTES = _chunkKWNMBMKGcjs.PLANE_BYTES; exports.PREVIEW_SIZE = PREVIEW_SIZE; exports.PROOF_PROFILE_OPTIONS = PROOF_PROFILE_OPTIONS; exports.PSD_BLEND_KEYS = _chunkQE7D7TZRcjs.PSD_BLEND_KEYS; exports.PSD_FILE_ACCEPT = PSD_FILE_ACCEPT; exports.P_D0 = _chunkKWNMBMKGcjs.P_D0; exports.P_EDGE = _chunkKWNMBMKGcjs.P_EDGE; exports.P_FX = _chunkKWNMBMKGcjs.P_FX; exports.P_FY = _chunkKWNMBMKGcjs.P_FY; exports.P_H = _chunkKWNMBMKGcjs.P_H; exports.P_P0 = _chunkKWNMBMKGcjs.P_P0; exports.P_RHO = _chunkKWNMBMKGcjs.P_RHO; exports.P_SW = _chunkKWNMBMKGcjs.P_SW; exports.P_UX = _chunkKWNMBMKGcjs.P_UX; exports.P_UY = _chunkKWNMBMKGcjs.P_UY; exports.PaintExchange = _chunkPQ3H2AANcjs.PaintExchange; exports.PaintGesture = PaintGesture; exports.PaintGradientSampler = _chunkPQ3H2AANcjs.PaintGradientSampler; exports.PaintSourceError = _chunkPQ3H2AANcjs.PaintSourceError; exports.PaintStrokeSession = PaintStrokeSession; exports.PaperGrain = _chunkPQ3H2AANcjs.PaperGrain; exports.PatternPlacement = _chunkUOGKSVRQcjs.PatternPlacement; exports.PatternTile = _chunkUOGKSVRQcjs.PatternTile; exports.PsdError = _chunkQE7D7TZRcjs.PsdError; exports.QUICK_MASK_TARGET = QUICK_MASK_TARGET; exports.REFINE_EDGE_CONTROLS = REFINE_EDGE_CONTROLS; exports.REFINE_EDIT_KINDS = _chunkL52VMQZScjs.REFINE_EDIT_KINDS; exports.REFINE_OUTPUTS = REFINE_OUTPUTS; exports.RETOUCH_CHOICES = RETOUCH_CHOICES; exports.RETOUCH_OPTION_CONTROLS = RETOUCH_OPTION_CONTROLS; exports.RETOUCH_SAMPLES = _chunkYF3YZZ6Gcjs.RETOUCH_SAMPLES; exports.RETOUCH_TOGGLES = RETOUCH_TOGGLES; exports.RETOUCH_TOOLS = RETOUCH_TOOLS; exports.RegionPixelSource = _chunkYF3YZZ6Gcjs.RegionPixelSource; exports.RetouchDabStroke = _chunkYF3YZZ6Gcjs.RetouchDabStroke; exports.SELECTION_MODES = _chunkQYLWG22Ncjs.SELECTION_MODES; exports.SELECTION_MODE_LABELS = SELECTION_MODE_LABELS; exports.SELECTION_MODIFY_OPS = _chunkQYLWG22Ncjs.SELECTION_MODIFY_OPS; exports.SELECTION_TOOLS = SELECTION_TOOLS; exports.SELECT_AND_MASK_TOOLS = SELECT_AND_MASK_TOOLS; exports.SELECT_AND_MASK_VIEWS = SELECT_AND_MASK_VIEWS; exports.SET_PLANES = _chunkKWNMBMKGcjs.SET_PLANES; exports.SHADOW_AMBIENT = _chunkOLNIPTB3cjs.SHADOW_AMBIENT; exports.SHAPE_KIND_LABELS = SHAPE_KIND_LABELS; exports.SHAPE_OPERATIONS = _chunkQE7D7TZRcjs.SHAPE_OPERATIONS; exports.SHAPE_RENDER_MARGIN = _chunkQE7D7TZRcjs.SHAPE_RENDER_MARGIN; exports.SLOT_BYTES = _chunkKWNMBMKGcjs.SLOT_BYTES; exports.SLOT_PLANES = _chunkKWNMBMKGcjs.SLOT_PLANES; exports.SLOT_SIDE = _chunkKWNMBMKGcjs.SLOT_SIDE; exports.SMART_RENDER_MARGIN = _chunkQE7D7TZRcjs.SMART_RENDER_MARGIN; exports.SPOT_HEAL_TYPES = _chunkYF3YZZ6Gcjs.SPOT_HEAL_TYPES; exports.SRGB_TO_LINEAR = _chunkKWNMBMKGcjs.SRGB_TO_LINEAR; exports.STRIP = _chunkKWNMBMKGcjs.STRIP; exports.SUPPORTED_ADJUSTMENT_KEYS = _chunkQE7D7TZRcjs.SUPPORTED_ADJUSTMENT_KEYS; exports.SelectAndMaskSession = SelectAndMaskSession; exports.SelectionGesture = SelectionGesture; exports.SelectionWorkerClient = _chunkL52VMQZScjs.SelectionWorkerClient; exports.ShapeDrawGesture = ShapeDrawGesture; exports.SmudgeTip = _chunkPQ3H2AANcjs.SmudgeTip; exports.StrokeCoverage = _chunkPQ3H2AANcjs.StrokeCoverage; exports.SurfaceDraft = _chunk474IQG74cjs.SurfaceDraft; exports.TEXT_ALIGNS = _chunkQE7D7TZRcjs.TEXT_ALIGNS; exports.TEXT_ORIENTATIONS = _chunkQE7D7TZRcjs.TEXT_ORIENTATIONS; exports.TEXT_RENDER_MARGIN = _chunkQE7D7TZRcjs.TEXT_RENDER_MARGIN; exports.TEXT_STYLE_FIELDS = _chunkQE7D7TZRcjs.TEXT_STYLE_FIELDS; exports.TILE = _chunk474IQG74cjs.TILE; exports.TILE_SHIFT = _chunk474IQG74cjs.TILE_SHIFT; exports.TINT_SCALE = _chunkQE7D7TZRcjs.TINT_SCALE; exports.TIP_GRADIENT_STEPS = _chunkPQ3H2AANcjs.TIP_GRADIENT_STEPS; exports.TONE_LUT_SIZE = _chunkQE7D7TZRcjs.TONE_LUT_SIZE; exports.TONE_RANGES = _chunkYF3YZZ6Gcjs.TONE_RANGES; exports.TONE_RANGE_PRESETS = TONE_RANGE_PRESETS; exports.TRANSFORM_ANCHORS = _chunkQE7D7TZRcjs.TRANSFORM_ANCHORS; exports.TRANSFORM_ROTATE_HANDLE_OFFSET = TRANSFORM_ROTATE_HANDLE_OFFSET; exports.TextEditSession = TextEditSession; exports.TileMedium = _chunkPQ3H2AANcjs.TileMedium; exports.TilePixelSource = _chunkYF3YZZ6Gcjs.TilePixelSource; exports.TileableNoise = _chunkPQ3H2AANcjs.TileableNoise; exports.TiledSurface = _chunk474IQG74cjs.TiledSurface; exports.TransformTooLargeError = _chunkUOGKSVRQcjs.TransformTooLargeError; exports.TransformedPixelSource = _chunkYF3YZZ6Gcjs.TransformedPixelSource; exports.TypeToolGesture = TypeToolGesture; exports.UNITS = _chunkL52VMQZScjs.UNITS; exports.U_MAX = _chunkKWNMBMKGcjs.U_MAX; exports.VIBRANCE_GREY = _chunkQE7D7TZRcjs.VIBRANCE_GREY; exports.W9 = _chunkKWNMBMKGcjs.W9; exports.WARP_GRID_OPTIONS = WARP_GRID_OPTIONS; exports.WARP_STYLES = _chunkQAUIZPYIcjs.WARP_STYLES; exports.WARP_STYLE_LABELS = _chunkQAUIZPYIcjs.WARP_STYLE_LABELS; exports.WARP_STYLE_OPTIONS = WARP_STYLE_OPTIONS; exports.WET_FLOW_KINDS = _chunkKWNMBMKGcjs.WET_FLOW_KINDS; exports.WET_PARAM_KEYS = _chunkKWNMBMKGcjs.WET_PARAM_KEYS; exports.WET_TILE = _chunkKWNMBMKGcjs.WET_TILE; exports.WGSL_HALO = _chunkKWNMBMKGcjs.WGSL_HALO; exports.WGSL_SHADE = _chunkKWNMBMKGcjs.WGSL_SHADE; exports.WGSL_STEP = _chunkKWNMBMKGcjs.WGSL_STEP; exports.WORKING_SPACE_OPTIONS = WORKING_SPACE_OPTIONS; exports.WORK_SIZE = _chunkL52VMQZScjs.WORK_SIZE; exports.WetGpuEngine = _chunkKWNMBMKGcjs.WetGpuEngine; exports.WetMedium = _chunkKWNMBMKGcjs.WetMedium; exports.WetWorkerPool = _chunkKWNMBMKGcjs.WetWorkerPool; exports.WetWorld = _chunkKWNMBMKGcjs.WetWorld; exports.WetWorldError = _chunkKWNMBMKGcjs.WetWorldError; exports.XYZ_D50_TO_SRGB = _chunkQE7D7TZRcjs.XYZ_D50_TO_SRGB; exports.ZlibError = _chunkXFM3OCHUcjs.ZlibError; exports.activeAdjustmentLayers = _chunkQE7D7TZRcjs.activeAdjustmentLayers; exports.activeEffectSmartFilters = _chunkQE7D7TZRcjs.activeEffectSmartFilters; exports.activeLayerAfterRemoval = _chunkQE7D7TZRcjs.activeLayerAfterRemoval; exports.activeSmartFilters = _chunkQE7D7TZRcjs.activeSmartFilters; exports.addLayerEffect = _chunkQE7D7TZRcjs.addLayerEffect; exports.addLayerFilter = _chunkQE7D7TZRcjs.addLayerFilter; exports.addLayerOfKind = addLayerOfKind; exports.addPaintGradientStop = _chunkPQ3H2AANcjs.addPaintGradientStop; exports.addSmartFilter = _chunkQE7D7TZRcjs.addSmartFilter; exports.addToHistogram = addToHistogram; exports.adjustmentKindLabel = _chunkQE7D7TZRcjs.adjustmentKindLabel; exports.adjustmentLayersKey = _chunkQE7D7TZRcjs.adjustmentLayersKey; exports.adjustmentNodeAsLayer = _chunkQE7D7TZRcjs.adjustmentNodeAsLayer; exports.adjustmentNodeFromLegacy = _chunkQE7D7TZRcjs.adjustmentNodeFromLegacy; exports.adler32 = _chunkXFM3OCHUcjs.adler32; exports.agentDragDraft = agentDragDraft; exports.anchorPoint = _chunkQE7D7TZRcjs.anchorPoint; exports.annotationBlend = _chunkQE7D7TZRcjs.annotationBlend; exports.annotationLayerFor = _chunkQE7D7TZRcjs.annotationLayerFor; exports.annotationLayerName = _chunkQE7D7TZRcjs.annotationLayerName; exports.annotationOfLayer = _chunkQE7D7TZRcjs.annotationOfLayer; exports.annotationOfShape = _chunkQE7D7TZRcjs.annotationOfShape; exports.annotationOfType = _chunkQE7D7TZRcjs.annotationOfType; exports.applyAdjustmentLayers = _chunkQE7D7TZRcjs.applyAdjustmentLayers; exports.applyAdjustmentLayersFloat = _chunkQE7D7TZRcjs.applyAdjustmentLayersFloat; exports.applyAdjustments = _chunkQE7D7TZRcjs.applyAdjustments; exports.applyBoxBlur = _chunkQE7D7TZRcjs.applyBoxBlur; exports.applyBoxBlurFloat = _chunkQE7D7TZRcjs.applyBoxBlurFloat; exports.applyDepthMask = _chunkQE7D7TZRcjs.applyDepthMask; exports.applyHomography = _chunkQT26RHKKcjs.applyHomography; exports.applyImageProjectionToContext = _chunkQE7D7TZRcjs.applyImageProjectionToContext; exports.applyLegacyAdjustments = _chunkQE7D7TZRcjs.applyLegacyAdjustments; exports.applyLegacyFloat = _chunkQE7D7TZRcjs.applyLegacyFloat; exports.applyMatrix3 = _chunkQE7D7TZRcjs.applyMatrix3; exports.applyOutputStage = applyOutputStage; exports.applyParams = _chunkQE7D7TZRcjs.applyParams; exports.applyProcess2Adjustments = _chunkQE7D7TZRcjs.applyProcess2Adjustments; exports.applyProcess2Float = _chunkQE7D7TZRcjs.applyProcess2Float; exports.applyRefineEdits = _chunkL52VMQZScjs.applyRefineEdits; exports.applyRegionBlur = applyRegionBlur; exports.applyRegionMosaic = applyRegionMosaic; exports.applyRetouchToTile = _chunkYF3YZZ6Gcjs.applyRetouchToTile; exports.applyShapeOptions = applyShapeOptions; exports.applySmartFilters = _chunkQE7D7TZRcjs.applySmartFilters; exports.applyStrokeToDeepTile = _chunkPQ3H2AANcjs.applyStrokeToDeepTile; exports.applyStrokeToTile = _chunkPQ3H2AANcjs.applyStrokeToTile; exports.applyToneToDeepTile = _chunkYF3YZZ6Gcjs.applyToneToDeepTile; exports.backgroundLayer = _chunkQE7D7TZRcjs.backgroundLayer; exports.base64ToBytes = _chunkOLNIPTB3cjs.base64ToBytes; exports.baseProjection = baseProjection; exports.bestOffset = _chunkMQDIP4CFcjs.bestOffset; exports.blackWhiteGray = _chunkQE7D7TZRcjs.blackWhiteGray; exports.blendChannel = _chunkOLNIPTB3cjs.blendChannel; exports.blendImageData = _chunkOLNIPTB3cjs.blendImageData; exports.blendLum = _chunkOLNIPTB3cjs.blendLum; exports.blendPixel = _chunkOLNIPTB3cjs.blendPixel; exports.blendRadius = _chunkPQ3H2AANcjs.blendRadius; exports.blendRgb = _chunkOLNIPTB3cjs.blendRgb; exports.blendTile = _chunkUOGKSVRQcjs.blendTile; exports.blenderDab = _chunkPQ3H2AANcjs.blenderDab; exports.blurFilter = _chunkQE7D7TZRcjs.blurFilter; exports.borderCoverage = _chunkQYLWG22Ncjs.borderCoverage; exports.boxBlur = _chunkL52VMQZScjs.boxBlur; exports.boxBlurPixels = _chunkYF3YZZ6Gcjs.boxBlurPixels; exports.boxFrameHit = boxFrameHit; exports.boxFrameOverlay = boxFrameOverlay; exports.boxMean = _chunkL52VMQZScjs.boxMean; exports.boxPointOf = _chunkQE7D7TZRcjs.boxPointOf; exports.boxQuad = _chunkQT26RHKKcjs.boxQuad; exports.boxToCurvePoint = boxToCurvePoint; exports.bradfordAdaptation = _chunkQE7D7TZRcjs.bradfordAdaptation; exports.brushStrokeMask = _chunkL52VMQZScjs.brushStrokeMask; exports.brushstrokeDataUrl = _chunkPQ3H2AANcjs.brushstrokeDataUrl; exports.brushstrokeKey = _chunkPQ3H2AANcjs.brushstrokeKey; exports.brushstrokeSamples = _chunkPQ3H2AANcjs.brushstrokeSamples; exports.brushstrokeScaleBucket = _chunkYQGCPL5Xcjs.brushstrokeScaleBucket; exports.brushstrokeStrokeOptions = _chunkPQ3H2AANcjs.brushstrokeStrokeOptions; exports.brushstrokeToCanvas = _chunkPQ3H2AANcjs.brushstrokeToCanvas; exports.buildLayerMaskPlanes = _chunkQE7D7TZRcjs.buildLayerMaskPlanes; exports.buildToneLut = _chunkQE7D7TZRcjs.buildToneLut; exports.builtinPattern = _chunkUOGKSVRQcjs.builtinPattern; exports.builtinPatternIds = _chunkUOGKSVRQcjs.builtinPatternIds; exports.bytesToBase64 = _chunkOLNIPTB3cjs.bytesToBase64; exports.calculateCropDrag = _chunkQE7D7TZRcjs.calculateCropDrag; exports.canShareMemory = _chunkKWNMBMKGcjs.canShareMemory; exports.canvasCompositeOperation = _chunkOLNIPTB3cjs.canvasCompositeOperation; exports.canvasToImagePoint = _chunkQE7D7TZRcjs.canvasToImagePoint; exports.caretAt = _chunkQAUIZPYIcjs.caretAt; exports.changedTiles = _chunkUOGKSVRQcjs.changedTiles; exports.channelThumbnail = channelThumbnail; exports.checkEffectAnimation = checkEffectAnimation; exports.checkEffectTime = checkEffectTime; exports.checkImageEffectPlace = checkImageEffectPlace; exports.clampControlValue = clampControlValue; exports.clampCropToImage = _chunkQE7D7TZRcjs.clampCropToImage; exports.cleanMixer = _chunkPQ3H2AANcjs.cleanMixer; exports.cloneSamplePoint = _chunkYF3YZZ6Gcjs.cloneSamplePoint; exports.cloneSourceLabel = cloneSourceLabel; exports.cloneTransformView = cloneTransformView; exports.collectTiles = _chunk474IQG74cjs.collectTiles; exports.colorBalanceChannel = _chunkQE7D7TZRcjs.colorBalanceChannel; exports.colorModePlanes = colorModePlanes; exports.colorModePlanes16 = colorModePlanes16; exports.colorPanelView = colorPanelView; exports.colorRange = colorRange; exports.colorRangePreset = colorRangePreset; exports.combineSelections = _chunkQYLWG22Ncjs.combineSelections; exports.compileAdjustmentLayer = _chunkQE7D7TZRcjs.compileAdjustmentLayer; exports.componentPath = _chunkQE7D7TZRcjs.componentPath; exports.componentsCoverage = _chunkQE7D7TZRcjs.componentsCoverage; exports.compositeDeep = _chunkQE7D7TZRcjs.compositeDeep; exports.compositeSurfaceOver = _chunkUOGKSVRQcjs.compositeSurfaceOver; exports.computeHistogram = computeHistogram; exports.computeSelectionBounds = _chunkQYLWG22Ncjs.computeSelectionBounds; exports.contentAwareFill = _chunkMQDIP4CFcjs.contentAwareFill; exports.contentBounds = _chunk474IQG74cjs.contentBounds; exports.contentsBox = _chunkQE7D7TZRcjs.contentsBox; exports.contentsSurface = _chunkQE7D7TZRcjs.contentsSurface; exports.contractCoverage = _chunkQYLWG22Ncjs.contractCoverage; exports.controlPosition = controlPosition; exports.controlTrackBackground = controlTrackBackground; exports.convertColorFields = convertColorFields; exports.convertHex = convertHex; exports.convertSurfaceColors = convertSurfaceColors; exports.convertSurfaceDepth = _chunkOLNIPTB3cjs.convertSurfaceDepth; exports.convertToSmartObject = _chunkQE7D7TZRcjs.convertToSmartObject; exports.copySmartObject = _chunkQE7D7TZRcjs.copySmartObject; exports.cornersFromMatrix = _chunkQE7D7TZRcjs.cornersFromMatrix; exports.coverageTileCoord = _chunkPQ3H2AANcjs.coverageTileCoord; exports.coverageToByte = _chunkQYLWG22Ncjs.coverageToByte; exports.coveringRect = coveringRect; exports.createAdjustmentLayer = _chunkQE7D7TZRcjs.createAdjustmentLayer; exports.createBlenderScratch = _chunkPQ3H2AANcjs.createBlenderScratch; exports.createCanvasTextShaper = _chunkQAUIZPYIcjs.createCanvasTextShaper; exports.createImageCaptureSurface = createImageCaptureSurface; exports.createImageColorTools = createImageColorTools; exports.createImageEditTools = createImageEditTools; exports.createImageEditorDocument = createImageEditorDocument; exports.createImageEditorToolProvider = createImageEditorToolProvider; exports.createImageEffectTools = createImageEffectTools; exports.createImageEffectsToolProvider = createImageEffectsToolProvider; exports.createImageLayerTools = createImageLayerTools; exports.createImagePaintTools = createImagePaintTools; exports.createImagePlaybackLocator = createImagePlaybackLocator; exports.createImagePsdTools = createImagePsdTools; exports.createImageRetouchTools = createImageRetouchTools; exports.createImageSegmentationToolProvider = createImageSegmentationToolProvider; exports.createImageSelectionTools = createImageSelectionTools; exports.createImageShapeTools = createImageShapeTools; exports.createImageSmartObjectTools = createImageSmartObjectTools; exports.createImageSubjectSelectionTool = createImageSubjectSelectionTool; exports.createImageTransformTools = createImageTransformTools; exports.createImageTypeTools = createImageTypeTools; exports.createMetricTextShaper = _chunkQAUIZPYIcjs.createMetricTextShaper; exports.createOutlineTextShaper = _chunkQAUIZPYIcjs.createOutlineTextShaper; exports.createPigment = _chunkOLNIPTB3cjs.createPigment; exports.createPigmentTools = _chunkKWNMBMKGcjs.createPigmentTools; exports.createSelectionMask = _chunkQYLWG22Ncjs.createSelectionMask; exports.createShapeLayer = _chunkQE7D7TZRcjs.createShapeLayer; exports.createTypeLayer = _chunkQE7D7TZRcjs.createTypeLayer; exports.createWetGpuEngine = _chunkKWNMBMKGcjs.createWetGpuEngine; exports.cssFont = _chunkQAUIZPYIcjs.cssFont; exports.cssFontFamily = _chunkQAUIZPYIcjs.cssFontFamily; exports.curveLut = _chunkUOGKSVRQcjs.curveLut; exports.curveLutFromLevels = _chunkQE7D7TZRcjs.curveLutFromLevels; exports.curvePointToBox = curvePointToBox; exports.curveSvgPath = curveSvgPath; exports.dabCoverage = _chunkPQ3H2AANcjs.dabCoverage; exports.dabRect = _chunkPQ3H2AANcjs.dabRect; exports.decodeDeepSurface = _chunkQE7D7TZRcjs.decodeDeepSurface; exports.decodeLayerChannel = _chunkQE7D7TZRcjs.decodeLayerChannel; exports.decodeLayerMask = _chunkQE7D7TZRcjs.decodeLayerMask; exports.decodeMergedImage = _chunkQE7D7TZRcjs.decodeMergedImage; exports.decodePlanes = _chunkQE7D7TZRcjs.decodePlanes; exports.decodePng = _chunkOLNIPTB3cjs.decodePng; exports.decodePngDataUrl = _chunkQE7D7TZRcjs.decodePngDataUrl; exports.decodeSelectionRle = _chunkQYLWG22Ncjs.decodeSelectionRle; exports.decontaminateColors = _chunkL52VMQZScjs.decontaminateColors; exports.deepBytes = _chunkOLNIPTB3cjs.deepBytes; exports.deepTile = _chunkOLNIPTB3cjs.deepTile; exports.defaultActiveLayerId = _chunkQE7D7TZRcjs.defaultActiveLayerId; exports.defaultAdjustmentParams = _chunkQE7D7TZRcjs.defaultAdjustmentParams; exports.defaultEffectGradient = _chunkUOGKSVRQcjs.defaultEffectGradient; exports.defaultLayerEffect = _chunkUOGKSVRQcjs.defaultLayerEffect; exports.defaultShapeName = _chunkQE7D7TZRcjs.defaultShapeName; exports.deflate = _chunkXFM3OCHUcjs.deflate; exports.deflateRaw = _chunkXFM3OCHUcjs.deflateRaw; exports.depthMaskAlpha = _chunkQE7D7TZRcjs.depthMaskAlpha; exports.depthOf = _chunkOLNIPTB3cjs.depthOf; exports.depthRasterMask = _chunkQE7D7TZRcjs.depthRasterMask; exports.describeChannel = describeChannel; exports.describeLayer = describeLayer; exports.describeLayerEffects = describeLayerEffects; exports.describeSelection = describeSelection; exports.describeTransform = _chunkQE7D7TZRcjs.describeTransform; exports.deserializeChannels = deserializeChannels; exports.deserializeColorMode = deserializeColorMode; exports.deserializeColorProfile = deserializeColorProfile; exports.deserializeEffects = _chunkQE7D7TZRcjs.deserializeEffects; exports.deserializeLayer = _chunkQE7D7TZRcjs.deserializeLayer; exports.deserializeLayers = _chunkQE7D7TZRcjs.deserializeLayers; exports.deserializeMask = _chunkL52VMQZScjs.deserializeMask; exports.deserializePatterns = _chunkQE7D7TZRcjs.deserializePatterns; exports.deserializeSelection = _chunkQYLWG22Ncjs.deserializeSelection; exports.developFilter = _chunkQE7D7TZRcjs.developFilter; exports.developFromAdjustments = _chunkQE7D7TZRcjs.developFromAdjustments; exports.developTarget = _chunkQE7D7TZRcjs.developTarget; exports.dexp = _chunkKWNMBMKGcjs.dexp; exports.dilateMask = _chunkMQDIP4CFcjs.dilateMask; exports.displayTransform = displayTransform; exports.distanceTransform = _chunkQYLWG22Ncjs.distanceTransform; exports.dlog = _chunkKWNMBMKGcjs.dlog; exports.documentContents = _chunkQE7D7TZRcjs.documentContents; exports.documentProfile = documentProfile; exports.dodgeBurn = _chunkYF3YZZ6Gcjs.dodgeBurn; exports.dodgeBurnCurve = _chunkYF3YZZ6Gcjs.dodgeBurnCurve; exports.downloadMaskImage = downloadMaskImage; exports.downloadPsd = downloadPsd; exports.dpow = _chunkKWNMBMKGcjs.dpow; exports.dragWarpMeshPoint = _chunkQAUIZPYIcjs.dragWarpMeshPoint; exports.dropPlacement = dropPlacement; exports.dropZone = dropZone; exports.dsincos = _chunkKWNMBMKGcjs.dsincos; exports.duplicateLayer = _chunkQE7D7TZRcjs.duplicateLayer; exports.edgeBits = _chunkKWNMBMKGcjs.edgeBits; exports.edgeWidth = _chunkL52VMQZScjs.edgeWidth; exports.effectColorHex = _chunkUOGKSVRQcjs.effectColorHex; exports.effectControlChange = effectControlChange; exports.effectLayerTiming = effectLayerTiming; exports.effectPixelsToSurface = effectPixelsToSurface; exports.effectReach = _chunkUOGKSVRQcjs.effectReach; exports.effectiveLayerMask = _chunkQE7D7TZRcjs.effectiveLayerMask; exports.effectiveProof = effectiveProof; exports.effectsFingerprint = _chunkUOGKSVRQcjs.effectsFingerprint; exports.effectsMargin = _chunkUOGKSVRQcjs.effectsMargin; exports.effectsScale = _chunkUOGKSVRQcjs.effectsScale; exports.ellipsePoints = _chunkL52VMQZScjs.ellipsePoints; exports.ellipseSelection = _chunkL52VMQZScjs.ellipseSelection; exports.emptyHistogram = emptyHistogram; exports.emptySurface = _chunk474IQG74cjs.emptySurface; exports.encodeDeepSurface = _chunkQE7D7TZRcjs.encodeDeepSurface; exports.encodePng = _chunkOLNIPTB3cjs.encodePng; exports.encodeRle = _chunkQE7D7TZRcjs.encodeRle; exports.encodeSelectionRle = _chunkQYLWG22Ncjs.encodeSelectionRle; exports.encodeSurface = _chunkQE7D7TZRcjs.encodeSurface; exports.evalWarpMesh = _chunkQAUIZPYIcjs.evalWarpMesh; exports.evaluateAdjustmentLayers = _chunkQE7D7TZRcjs.evaluateAdjustmentLayers; exports.exchangeRates = _chunkPQ3H2AANcjs.exchangeRates; exports.expNeg = _chunkKWNMBMKGcjs.expNeg; exports.expandCoverage = _chunkQYLWG22Ncjs.expandCoverage; exports.exportPsd = _chunkQE7D7TZRcjs.exportPsd; exports.extractNormalizedLayerItems = extractNormalizedLayerItems; exports.featherCoverage = _chunkQYLWG22Ncjs.featherCoverage; exports.fillRect = _chunk474IQG74cjs.fillRect; exports.filmPixel = _chunkKWNMBMKGcjs.filmPixel; exports.filmReflectance = _chunkKWNMBMKGcjs.filmReflectance; exports.filterMaskCoverage = _chunkQE7D7TZRcjs.filterMaskCoverage; exports.findAdjustmentControl = findAdjustmentControl; exports.findLayer = _chunkUOGKSVRQcjs.findLayer; exports.findLayerControl = findLayerControl; exports.findSky = _chunkL52VMQZScjs.findSky; exports.findSubject = _chunkL52VMQZScjs.findSubject; exports.findWebGpu = _chunkKWNMBMKGcjs.findWebGpu; exports.finishTile = _chunk474IQG74cjs.finishTile; exports.fitParagraphRuns = _chunkQAUIZPYIcjs.fitParagraphRuns; exports.fitRuns = _chunkQAUIZPYIcjs.fitRuns; exports.flattenLayers = _chunkUOGKSVRQcjs.flattenLayers; exports.flattenPath = _chunkQE7D7TZRcjs.flattenPath; exports.flipCorners = _chunkQE7D7TZRcjs.flipCorners; exports.flowField = _chunkKWNMBMKGcjs.flowField; exports.focusArea = _chunkL52VMQZScjs.focusArea; exports.followLayerMove = _chunkQE7D7TZRcjs.followLayerMove; exports.fontOf = _chunkQAUIZPYIcjs.fontOf; exports.forgetSelectAndMaskSettings = forgetSelectAndMaskSettings; exports.formatControlValue = formatControlValue; exports.fullSelection = _chunkQYLWG22Ncjs.fullSelection; exports.gaussianBlur = _chunkK6PXS6DOcjs.gaussianBlur; exports.geometryHomography = _chunkQE7D7TZRcjs.geometryHomography; exports.getAnnotationBounds = _chunkQE7D7TZRcjs.getAnnotationBounds; exports.getControlPath = getControlPath; exports.getCropCursor = _chunkQE7D7TZRcjs.getCropCursor; exports.getRotatedSize = _chunkQE7D7TZRcjs.getRotatedSize; exports.getViewportMetrics = _chunkQE7D7TZRcjs.getViewportMetrics; exports.getViewportProjection = _chunkQE7D7TZRcjs.getViewportProjection; exports.globalImageCache = globalImageCache; exports.grabCutLabels = _chunkL52VMQZScjs.grabCutLabels; exports.gradientDabColor = _chunkPQ3H2AANcjs.gradientDabColor; exports.grainCatch = _chunkPQ3H2AANcjs.grainCatch; exports.grainHeights = _chunkPQ3H2AANcjs.grainHeights; exports.greyMorphology = _chunkQYLWG22Ncjs.greyMorphology; exports.groupLayers = _chunkQE7D7TZRcjs.groupLayers; exports.growSelection = growSelection; exports.guidePlanes = _chunkL52VMQZScjs.guidePlanes; exports.guidedFilterColor = _chunkL52VMQZScjs.guidedFilterColor; exports.handleMaskViewKey = handleMaskViewKey; exports.handlePaintShortcut = handlePaintShortcut; exports.handleQuickMaskKey = handleQuickMaskKey; exports.handleSelectionShortcut = handleSelectionShortcut; exports.hasActiveEffects = _chunkUOGKSVRQcjs.hasActiveEffects; exports.hasLayersBelow = hasLayersBelow; exports.hasResampledLegacyMask = _chunkQE7D7TZRcjs.hasResampledLegacyMask; exports.hasSurface = _chunkQE7D7TZRcjs.hasSurface; exports.hasWarp = _chunkQE7D7TZRcjs.hasWarp; exports.hash2 = _chunkPQ3H2AANcjs.hash2; exports.hashMaskContent = _chunkQYLWG22Ncjs.hashMaskContent; exports.hashNoise = _chunkUOGKSVRQcjs.hashNoise; exports.healPixels = _chunkYF3YZZ6Gcjs.healPixels; exports.hexToPaintRgb = _chunkPQ3H2AANcjs.hexToPaintRgb; exports.hexToRgb = _chunkQE7D7TZRcjs.hexToRgb; exports.histogramPath = histogramPath; exports.hitTestAnnotation = _chunkQE7D7TZRcjs.hitTestAnnotation; exports.hitTestCrop = _chunkQE7D7TZRcjs.hitTestCrop; exports.hitTestCurvePoint = hitTestCurvePoint; exports.homographyFromAffine = _chunkQT26RHKKcjs.homographyFromAffine; exports.homographyFromPoints = _chunkQT26RHKKcjs.homographyFromPoints; exports.hslToRgb = _chunkQE7D7TZRcjs.hslToRgb; exports.hueRange = hueRange; exports.hueRangeTables = _chunkQE7D7TZRcjs.hueRangeTables; exports.hueRangeWeight = _chunkQE7D7TZRcjs.hueRangeWeight; exports.hueSaturation = _chunkQE7D7TZRcjs.hueSaturation; exports.identityCurve = _chunkQE7D7TZRcjs.identityCurve; exports.identityLevels = _chunkQE7D7TZRcjs.identityLevels; exports.identityTransform = _chunkQE7D7TZRcjs.identityTransform; exports.identityWarpMesh = _chunkQAUIZPYIcjs.identityWarpMesh; exports.imageEditorStateMigrations = imageEditorStateMigrations; exports.imageLayerAppliedEffects = imageLayerAppliedEffects; exports.imagePanelTool = imagePanelTool; exports.imagePlaybackPanel = imagePlaybackPanel; exports.imageToCanvasPoint = _chunkQE7D7TZRcjs.imageToCanvasPoint; exports.imageToolCanvasMode = imageToolCanvasMode; exports.imageToolForShortcut = imageToolForShortcut; exports.imageToolGroup = imageToolGroup; exports.imageToolLabel = imageToolLabel; exports.imageToolPanel = imageToolPanel; exports.importPsd = _chunkQE7D7TZRcjs.importPsd; exports.inflate = _chunkXFM3OCHUcjs.inflate; exports.inflateRaw = _chunkXFM3OCHUcjs.inflateRaw; exports.insertCurvePoint = insertCurvePoint; exports.insertLayer = _chunkUOGKSVRQcjs.insertLayer; exports.instancesOf = _chunkQE7D7TZRcjs.instancesOf; exports.invertHomography = _chunkQT26RHKKcjs.invertHomography; exports.invertMatrix3 = _chunkQE7D7TZRcjs.invertMatrix3; exports.invertSelection = _chunkQYLWG22Ncjs.invertSelection; exports.isActiveFilter = _chunkQE7D7TZRcjs.isActiveFilter; exports.isActiveVectorMask = _chunkQE7D7TZRcjs.isActiveVectorMask; exports.isAdjustmentKind = _chunkQE7D7TZRcjs.isAdjustmentKind; exports.isBitDepth = _chunkOLNIPTB3cjs.isBitDepth; exports.isBlendMode = _chunkOLNIPTB3cjs.isBlendMode; exports.isBrushstrokeBrush = _chunkPQ3H2AANcjs.isBrushstrokeBrush; exports.isColorRangePreset = isColorRangePreset; exports.isContentsDecoded = _chunkQE7D7TZRcjs.isContentsDecoded; exports.isDefaultDepthMask = _chunkQE7D7TZRcjs.isDefaultDepthMask; exports.isGradientPaint = _chunkPQ3H2AANcjs.isGradientPaint; exports.isIdentityCloneTransform = _chunkYF3YZZ6Gcjs.isIdentityCloneTransform; exports.isIdentityTransform = _chunkQE7D7TZRcjs.isIdentityTransform; exports.isInterpolation = _chunkUOGKSVRQcjs.isInterpolation; exports.isLayerEffectKind = _chunkUOGKSVRQcjs.isLayerEffectKind; exports.isLayerLocked = _chunkUOGKSVRQcjs.isLayerLocked; exports.isLegacyShape = _chunkQE7D7TZRcjs.isLegacyShape; exports.isPaintTool = isPaintTool; exports.isPaintableLayer = _chunkQE7D7TZRcjs.isPaintableLayer; exports.isPainterlyBlendMode = _chunkOLNIPTB3cjs.isPainterlyBlendMode; exports.isPng = _chunkOLNIPTB3cjs.isPng; exports.isQuarterTurn = isQuarterTurn; exports.isQuarterTurnSwapped = _chunkQE7D7TZRcjs.isQuarterTurnSwapped; exports.isRenderedLayer = _chunkQE7D7TZRcjs.isRenderedLayer; exports.isRetouchPaintTool = isRetouchPaintTool; exports.isRetouchTool = isRetouchTool; exports.isSelectionEmpty = _chunkQYLWG22Ncjs.isSelectionEmpty; exports.isSelectionMode = _chunkQYLWG22Ncjs.isSelectionMode; exports.isSeparableBlendMode = _chunkOLNIPTB3cjs.isSeparableBlendMode; exports.isSmartSurfaceIncomplete = _chunkQE7D7TZRcjs.isSmartSurfaceIncomplete; exports.isSpatialFilter = _chunkQE7D7TZRcjs.isSpatialFilter; exports.isSrgb = isSrgb; exports.isTransformAnchor = _chunkQE7D7TZRcjs.isTransformAnchor; exports.isValidWarp = _chunkQE7D7TZRcjs.isValidWarp; exports.keepDeepSamples = _chunkOLNIPTB3cjs.keepDeepSamples; exports.keepMainPieces = _chunkL52VMQZScjs.keepMainPieces; exports.kelvinToTemperature = _chunkQE7D7TZRcjs.kelvinToTemperature; exports.keysWeight = _chunkUOGKSVRQcjs.keysWeight; exports.latticeViscosity = _chunkKWNMBMKGcjs.latticeViscosity; exports.layerBadge = layerBadge; exports.layerEffectControls = layerEffectControls; exports.layerEffectFields = _chunkUOGKSVRQcjs.layerEffectFields; exports.layerEffectLabel = _chunkUOGKSVRQcjs.layerEffectLabel; exports.layerEffectsBadge = layerEffectsBadge; exports.layerEffectsOf = _chunkQE7D7TZRcjs.layerEffectsOf; exports.layerEffectsPanel = layerEffectsPanel; exports.layerHasThumbnail = layerHasThumbnail; exports.layerLabel = layerLabel; exports.layerMaskCoverage = _chunkQE7D7TZRcjs.layerMaskCoverage; exports.layerMaskFromSelection = _chunkQE7D7TZRcjs.layerMaskFromSelection; exports.layerMaskKey = _chunkQE7D7TZRcjs.layerMaskKey; exports.layerMaskSelection = _chunkQE7D7TZRcjs.layerMaskSelection; exports.layerMenu = layerMenu; exports.layerName = _chunkQE7D7TZRcjs.layerName; exports.layerPanelRows = layerPanelRows; exports.layerPanels = layerPanels; exports.layerThumbnailClick = layerThumbnailClick; exports.layerTree = _chunkQE7D7TZRcjs.layerTree; exports.layerTypeLabel = _chunkQE7D7TZRcjs.layerTypeLabel; exports.layerWarning = layerWarning; exports.layersFromLegacy = _chunkQE7D7TZRcjs.layersFromLegacy; exports.layoutText = _chunkQAUIZPYIcjs.layoutText; exports.legacyAdjustmentLayer = _chunkQE7D7TZRcjs.legacyAdjustmentLayer; exports.legacyMaskOf = _chunkQE7D7TZRcjs.legacyMaskOf; exports.legacyView = _chunkQE7D7TZRcjs.legacyView; exports.lerpPigment = _chunkOLNIPTB3cjs.lerpPigment; exports.lerpPigmentInto = _chunkOLNIPTB3cjs.lerpPigmentInto; exports.levelsValue = _chunkQE7D7TZRcjs.levelsValue; exports.linearSrgbToXy = _chunkQE7D7TZRcjs.linearSrgbToXy; exports.linearToSrgb = _chunkQE7D7TZRcjs.linearToSrgb; exports.linearToSrgb8 = _chunkKWNMBMKGcjs.linearToSrgb8; exports.liveComponent = _chunkQE7D7TZRcjs.liveComponent; exports.liveShapeForDrag = liveShapeForDrag; exports.liveShapeSubpaths = _chunkQE7D7TZRcjs.liveShapeSubpaths; exports.liveWire = liveWire; exports.loadImageEditorDocument = loadImageEditorDocument; exports.loadMixer = _chunkPQ3H2AANcjs.loadMixer; exports.loadOpenTypeFont = _chunk3T5VCDIVcjs.loadOpenTypeFont; exports.loadWetKernel = _chunkKWNMBMKGcjs.loadWetKernel; exports.luma = _chunkYF3YZZ6Gcjs.luma; exports.magicWand = magicWand; exports.magneticAnchorSpacing = magneticAnchorSpacing; exports.mapCropHandle = _chunkQE7D7TZRcjs.mapCropHandle; exports.mapLayer = _chunkUOGKSVRQcjs.mapLayer; exports.mapSubpaths = _chunkQE7D7TZRcjs.mapSubpaths; exports.maskBounds = _chunkMQDIP4CFcjs.maskBounds; exports.maskFileName = maskFileName; exports.maskNameFromFile = maskNameFromFile; exports.maskSummary = maskSummary; exports.maskThumbnailClick = maskThumbnailClick; exports.matrixFromCorners = _chunkQE7D7TZRcjs.matrixFromCorners; exports.matrixFromParams = _chunkQE7D7TZRcjs.matrixFromParams; exports.measureCanvasViewport = measureCanvasViewport; exports.membraneFill = _chunkMQDIP4CFcjs.membraneFill; exports.mergeLayerEffect = _chunkUOGKSVRQcjs.mergeLayerEffect; exports.mergeShapeComponents = _chunkQE7D7TZRcjs.mergeShapeComponents; exports.migrateSerializedImageEditorState = migrateSerializedImageEditorState; exports.migrateToLayeredState = migrateToLayeredState; exports.mix32 = _chunkPQ3H2AANcjs.mix32; exports.mixPigment8 = _chunkOLNIPTB3cjs.mixPigment8; exports.mixPigmentRgb = _chunkOLNIPTB3cjs.mixPigmentRgb; exports.mixPigments = _chunkOLNIPTB3cjs.mixPigments; exports.mixerLoadResult = mixerLoadResult; exports.mixerRates = _chunkPQ3H2AANcjs.mixerRates; exports.modifySelection = _chunkQYLWG22Ncjs.modifySelection; exports.moveCurvePoint = moveCurvePoint; exports.moveLayer = _chunkQE7D7TZRcjs.moveLayer; exports.moveSmartFilter = _chunkQE7D7TZRcjs.moveSmartFilter; exports.mulMatrix3 = _chunkQE7D7TZRcjs.mulMatrix3; exports.needsLegacyBase = needsLegacyBase; exports.neutralHueRange = _chunkQE7D7TZRcjs.neutralHueRange; exports.newContentsId = _chunkQE7D7TZRcjs.newContentsId; exports.newEffectId = _chunkUOGKSVRQcjs.newEffectId; exports.newLayerId = _chunkQE7D7TZRcjs.newLayerId; exports.newLayerOptions = newLayerOptions; exports.normalizeAdjustmentLayer = _chunkQE7D7TZRcjs.normalizeAdjustmentLayer; exports.normalizeAdjustmentLayers = _chunkQE7D7TZRcjs.normalizeAdjustmentLayers; exports.normalizeAngle = _chunkQE7D7TZRcjs.normalizeAngle; exports.normalizeBlendMode = _chunkOLNIPTB3cjs.normalizeBlendMode; exports.normalizeBlender = _chunkPQ3H2AANcjs.normalizeBlender; exports.normalizeBrush = _chunkPQ3H2AANcjs.normalizeBrush; exports.normalizeFilter = _chunkQE7D7TZRcjs.normalizeFilter; exports.normalizeFlow = _chunkKWNMBMKGcjs.normalizeFlow; exports.normalizeHexColor = _chunkPQ3H2AANcjs.normalizeHexColor; exports.normalizeLayerEffects = _chunkUOGKSVRQcjs.normalizeLayerEffects; exports.normalizeLayerMask = _chunkQE7D7TZRcjs.normalizeLayerMask; exports.normalizeLiveShape = _chunkQE7D7TZRcjs.normalizeLiveShape; exports.normalizeMixer = _chunkPQ3H2AANcjs.normalizeMixer; exports.normalizePlacement = _chunkQE7D7TZRcjs.normalizePlacement; exports.normalizeProcessVersion = _chunkQE7D7TZRcjs.normalizeProcessVersion; exports.normalizeRect = _chunkL52VMQZScjs.normalizeRect; exports.normalizeRefineEdgeParams = _chunkL52VMQZScjs.normalizeRefineEdgeParams; exports.normalizeRetouch = _chunkYF3YZZ6Gcjs.normalizeRetouch; exports.normalizeShapePaint = _chunkQE7D7TZRcjs.normalizeShapePaint; exports.normalizeShapeStroke = _chunkQE7D7TZRcjs.normalizeShapeStroke; exports.normalizeSmartFilter = _chunkQE7D7TZRcjs.normalizeSmartFilter; exports.normalizeSmudge = _chunkPQ3H2AANcjs.normalizeSmudge; exports.normalizeStoredAdjustments = normalizeStoredAdjustments; exports.normalizeSubpaths = _chunkQE7D7TZRcjs.normalizeSubpaths; exports.normalizeText = _chunkQE7D7TZRcjs.normalizeText; exports.normalizeTilt = _chunkKWNMBMKGcjs.normalizeTilt; exports.normalizeWetParams = _chunkKWNMBMKGcjs.normalizeWetParams; exports.offsetLayer = _chunkQE7D7TZRcjs.offsetLayer; exports.offsetShape = _chunkQE7D7TZRcjs.offsetShape; exports.offsetSmartObject = _chunkQE7D7TZRcjs.offsetSmartObject; exports.offsetVectorMask = _chunkQE7D7TZRcjs.offsetVectorMask; exports.openMaskFile = openMaskFile; exports.openPsdFile = openPsdFile; exports.otsuThreshold = _chunkL52VMQZScjs.otsuThreshold; exports.packRgba = _chunk474IQG74cjs.packRgba; exports.packWetParams = _chunkKWNMBMKGcjs.packWetParams; exports.paintGradientMappingFor = _chunkPQ3H2AANcjs.paintGradientMappingFor; exports.paintPathStroke = _chunkPQ3H2AANcjs.paintPathStroke; exports.paintSourceColor = _chunkPQ3H2AANcjs.paintSourceColor; exports.paintSourceCss = _chunkPQ3H2AANcjs.paintSourceCss; exports.paragraphRanges = _chunkQAUIZPYIcjs.paragraphRanges; exports.parseAdjustmentBlock = _chunkQE7D7TZRcjs.parseAdjustmentBlock; exports.parseBlend = _chunkQE7D7TZRcjs.parseBlend; exports.parseColor = parseColor; exports.parseCssColor = _chunkA2IS7EHEcjs.parseCssColor; exports.parseDataUrl = _chunkOLNIPTB3cjs.parseDataUrl; exports.parseEffectColor = _chunkUOGKSVRQcjs.parseEffectColor; exports.parseLfx2 = _chunkQE7D7TZRcjs.parseLfx2; exports.parseLrfx = _chunkQE7D7TZRcjs.parseLrfx; exports.parseOpenTypeFont = _chunk3T5VCDIVcjs.parseOpenTypeFont; exports.parsePaintSource = _chunkPQ3H2AANcjs.parsePaintSource; exports.parsePatternBlock = _chunkQE7D7TZRcjs.parsePatternBlock; exports.parseSelectionMode = _chunkQYLWG22Ncjs.parseSelectionMode; exports.parseVersionedDescriptor = _chunkQE7D7TZRcjs.parseVersionedDescriptor; exports.patchParagraphStyle = _chunkQE7D7TZRcjs.patchParagraphStyle; exports.patchTextStyle = _chunkQE7D7TZRcjs.patchTextStyle; exports.pathStrokeCoverage = _chunkPQ3H2AANcjs.pathStrokeCoverage; exports.pathStrokeDabs = _chunkPQ3H2AANcjs.pathStrokeDabs; exports.pathToSelection = pathToSelection; exports.perDabStrength = _chunkYF3YZZ6Gcjs.perDabStrength; exports.photoFilterMatrix = _chunkQE7D7TZRcjs.photoFilterMatrix; exports.pigment8 = _chunkOLNIPTB3cjs.pigment8; exports.pigmentColor = _chunkKWNMBMKGcjs.pigmentColor; exports.pigmentOf = _chunkKWNMBMKGcjs.pigmentOf; exports.pixelLayerBounds = _chunkQE7D7TZRcjs.pixelLayerBounds; exports.pixelLayers = _chunkQE7D7TZRcjs.pixelLayers; exports.pixelPigment = _chunkKWNMBMKGcjs.pixelPigment; exports.placeContents = _chunkQE7D7TZRcjs.placeContents; exports.placeLayer = _chunkQE7D7TZRcjs.placeLayer; exports.placementAt = _chunkQE7D7TZRcjs.placementAt; exports.placementBounds = _chunkQE7D7TZRcjs.placementBounds; exports.placementGeometry = _chunkQE7D7TZRcjs.placementGeometry; exports.planImageToolPlayback = planImageToolPlayback; exports.planOutlineTrace = planOutlineTrace; exports.pngDataUrl = _chunkOLNIPTB3cjs.pngDataUrl; exports.pointerPressure = _chunkKWNMBMKGcjs.pointerPressure; exports.pointerStrokeSample = _chunkKWNMBMKGcjs.pointerStrokeSample; exports.pointerStrokeSamples = _chunkKWNMBMKGcjs.pointerStrokeSamples; exports.polygonCoverage = _chunkL52VMQZScjs.polygonCoverage; exports.polygonCoverageBox = _chunkL52VMQZScjs.polygonCoverageBox; exports.polygonSelection = _chunkL52VMQZScjs.polygonSelection; exports.posterizeValue = _chunkQE7D7TZRcjs.posterizeValue; exports.presetWarp = _chunkQE7D7TZRcjs.presetWarp; exports.previewStep = previewStep; exports.profileBytes = profileBytes; exports.projectImagePoint = _chunkQE7D7TZRcjs.projectImagePoint; exports.projectImageRect = _chunkQE7D7TZRcjs.projectImageRect; exports.projectMaskCoverage = _chunkQE7D7TZRcjs.projectMaskCoverage; exports.projectQuarterTurn = projectQuarterTurn; exports.proxyOf = _chunkOLNIPTB3cjs.proxyOf; exports.psdBytesFromBase64 = psdBytesFromBase64; exports.psdFileName = psdFileName; exports.psdPatternToEffectPattern = _chunkQE7D7TZRcjs.psdPatternToEffectPattern; exports.psdToLayers = _chunkQE7D7TZRcjs.psdToLayers; exports.pullWarpMesh = _chunkQAUIZPYIcjs.pullWarpMesh; exports.put255 = _chunkPQ3H2AANcjs.put255; exports.quadFrameOverlay = quadFrameOverlay; exports.quickMaskPixels = quickMaskPixels; exports.quickSelectStroke = _chunkL52VMQZScjs.quickSelectStroke; exports.rand01 = _chunkPQ3H2AANcjs.rand01; exports.randSigned = _chunkPQ3H2AANcjs.randSigned; exports.rangeLightness = _chunkQE7D7TZRcjs.rangeLightness; exports.rasterContents = _chunkQE7D7TZRcjs.rasterContents; exports.rasterMaskFromLegacy = _chunkQE7D7TZRcjs.rasterMaskFromLegacy; exports.rasterizeCoverage = _chunkQE7D7TZRcjs.rasterizeCoverage; exports.rasterizeDab = _chunkPQ3H2AANcjs.rasterizeDab; exports.rasterizeSmartObject = _chunkQE7D7TZRcjs.rasterizeSmartObject; exports.readAdjustmentControls = readAdjustmentControls; exports.readDeepRegion = _chunkOLNIPTB3cjs.readDeepRegion; exports.readPaintSource = _chunkPQ3H2AANcjs.readPaintSource; exports.readPixel = _chunk474IQG74cjs.readPixel; exports.readPsd = _chunkQE7D7TZRcjs.readPsd; exports.readRegion = _chunk474IQG74cjs.readRegion; exports.readSourceRegion = _chunkYF3YZZ6Gcjs.readSourceRegion; exports.rectSelection = _chunkL52VMQZScjs.rectSelection; exports.rectToQuad = _chunkQT26RHKKcjs.rectToQuad; exports.reduceSurface = _chunkUOGKSVRQcjs.reduceSurface; exports.referencePoint = _chunkQE7D7TZRcjs.referencePoint; exports.refineCoverage = _chunkL52VMQZScjs.refineCoverage; exports.refineEdgeHalo = _chunkL52VMQZScjs.refineEdgeHalo; exports.refineSelection = _chunkL52VMQZScjs.refineSelection; exports.reflectanceToRgb = _chunkOLNIPTB3cjs.reflectanceToRgb; exports.removeAlpha = _chunkQE7D7TZRcjs.removeAlpha; exports.removeCurvePoint = removeCurvePoint; exports.removeLayer = _chunkQE7D7TZRcjs.removeLayer; exports.removeLayerEffect = _chunkQE7D7TZRcjs.removeLayerEffect; exports.removeLayerFilter = _chunkQE7D7TZRcjs.removeLayerFilter; exports.removePaintGradientStop = _chunkPQ3H2AANcjs.removePaintGradientStop; exports.removeSmartFilter = _chunkQE7D7TZRcjs.removeSmartFilter; exports.renderBrushstroke = _chunkPQ3H2AANcjs.renderBrushstroke; exports.renderLayerEffects = _chunkUOGKSVRQcjs.renderLayerEffects; exports.renderLayeredBase = renderLayeredBase; exports.renderShape = _chunkQE7D7TZRcjs.renderShape; exports.renderShapeRect = _chunkQE7D7TZRcjs.renderShapeRect; exports.renderSmartObject = _chunkQE7D7TZRcjs.renderSmartObject; exports.renderText = _chunkQE7D7TZRcjs.renderText; exports.replaceContents = _chunkQE7D7TZRcjs.replaceContents; exports.replaceTextRange = _chunkQE7D7TZRcjs.replaceTextRange; exports.requireLayer = _chunkQE7D7TZRcjs.requireLayer; exports.requireOperation = _chunkQE7D7TZRcjs.requireOperation; exports.requireShapeLayer = _chunkQE7D7TZRcjs.requireShapeLayer; exports.requireSmartObject = _chunkQE7D7TZRcjs.requireSmartObject; exports.requireTypeLayer = _chunkQE7D7TZRcjs.requireTypeLayer; exports.requireUnlocked = _chunkQE7D7TZRcjs.requireUnlocked; exports.rerender = _chunkQE7D7TZRcjs.rerender; exports.rerenderShape = _chunkQE7D7TZRcjs.rerenderShape; exports.rerenderText = _chunkQE7D7TZRcjs.rerenderText; exports.resizePixels = resizePixels; exports.resizeSelection = _chunkQYLWG22Ncjs.resizeSelection; exports.resizeWarpMesh = _chunkQAUIZPYIcjs.resizeWarpMesh; exports.resolveExternalAssets = _chunkQE7D7TZRcjs.resolveExternalAssets; exports.resolveMosaicRegionBounds = resolveMosaicRegionBounds; exports.resolvePaintGradient = _chunkPQ3H2AANcjs.resolvePaintGradient; exports.resolveProfile = resolveProfile; exports.resolveVectorMasks = _chunkQE7D7TZRcjs.resolveVectorMasks; exports.restyleRange = _chunkQAUIZPYIcjs.restyleRange; exports.retouchFilter = _chunkYF3YZZ6Gcjs.retouchFilter; exports.reversePaintGradient = _chunkPQ3H2AANcjs.reversePaintGradient; exports.rgbToGray = _chunkQE7D7TZRcjs.rgbToGray; exports.rgbToHsl = _chunkQE7D7TZRcjs.rgbToHsl; exports.rgbToReflectance = _chunkOLNIPTB3cjs.rgbToReflectance; exports.rgbUnitToHex = rgbUnitToHex; exports.rgbaViewOfGrey = _chunkYF3YZZ6Gcjs.rgbaViewOfGrey; exports.runLayerFilters = _chunkQE7D7TZRcjs.runLayerFilters; exports.runLayerFiltersFloat = _chunkQE7D7TZRcjs.runLayerFiltersFloat; exports.runLayerMenuAction = runLayerMenuAction; exports.runSelectionJob = _chunkL52VMQZScjs.runSelectionJob; exports.sameCanvasViewport = sameCanvasViewport; exports.sampleLut = _chunkQE7D7TZRcjs.sampleLut; exports.sampleToneLut = _chunkQE7D7TZRcjs.sampleToneLut; exports.saturationOf = _chunkYF3YZZ6Gcjs.saturationOf; exports.scaleLayerEffect = _chunkUOGKSVRQcjs.scaleLayerEffect; exports.scalePaintGradient = _chunkPQ3H2AANcjs.scalePaintGradient; exports.seamlessClone = _chunkMQDIP4CFcjs.seamlessClone; exports.seedFromString = _chunkPQ3H2AANcjs.seedFromString; exports.segmentToSelection = segmentToSelection; exports.segmentationOutlines = segmentationOutlines; exports.segmentsToSelection = segmentsToSelection; exports.selectObjectIn = _chunkL52VMQZScjs.selectObjectIn; exports.selectSimilar = selectSimilar; exports.selectionArea = _chunkQYLWG22Ncjs.selectionArea; exports.selectionFromCoverage = _chunkQYLWG22Ncjs.selectionFromCoverage; exports.selectionFromPixels = _chunkQYLWG22Ncjs.selectionFromPixels; exports.selectionFromRegion = _chunkQYLWG22Ncjs.selectionFromRegion; exports.selectionFromTiles = _chunkQYLWG22Ncjs.selectionFromTiles; exports.selectionModeFromModifiers = selectionModeFromModifiers; exports.selectionOutline = selectionOutline; exports.selectionRing = selectionRing; exports.selectionToCoverage = _chunkQYLWG22Ncjs.selectionToCoverage; exports.selectionToPixels = _chunkQYLWG22Ncjs.selectionToPixels; exports.selectionToSubpaths = selectionToSubpaths; exports.selectionValueAt = _chunkQYLWG22Ncjs.selectionValueAt; exports.serializeChannels = serializeChannels; exports.serializeColorMode = serializeColorMode; exports.serializeColorProfile = serializeColorProfile; exports.serializeContents = _chunkQE7D7TZRcjs.serializeContents; exports.serializeEffects = _chunkQE7D7TZRcjs.serializeEffects; exports.serializeLayer = _chunkQE7D7TZRcjs.serializeLayer; exports.serializeLayers = _chunkQE7D7TZRcjs.serializeLayers; exports.serializeLayersExternal = _chunkQE7D7TZRcjs.serializeLayersExternal; exports.serializeMask = _chunkL52VMQZScjs.serializeMask; exports.serializePatterns = _chunkQE7D7TZRcjs.serializePatterns; exports.serializeSelection = _chunkQYLWG22Ncjs.serializeSelection; exports.setCloneTransformValue = setCloneTransformValue; exports.setControlPath = setControlPath; exports.setLayerEffects = _chunkQE7D7TZRcjs.setLayerEffects; exports.setLayerEffectsEnabled = _chunkQE7D7TZRcjs.setLayerEffectsEnabled; exports.setLayerMask = _chunkQE7D7TZRcjs.setLayerMask; exports.setLayerProperties = _chunkQE7D7TZRcjs.setLayerProperties; exports.setLum = _chunkOLNIPTB3cjs.setLum; exports.setPigmentColor = _chunkOLNIPTB3cjs.setPigmentColor; exports.setRetouchChoice = setRetouchChoice; exports.setSmartFilterMask = _chunkQE7D7TZRcjs.setSmartFilterMask; exports.setSmartFiltersEnabled = _chunkQE7D7TZRcjs.setSmartFiltersEnabled; exports.setSmartPlacement = _chunkQE7D7TZRcjs.setSmartPlacement; exports.shadeTile = _chunkKWNMBMKGcjs.shadeTile; exports.shapeAsPixelLayer = _chunkQE7D7TZRcjs.shapeAsPixelLayer; exports.shapeFromAnnotation = _chunkQE7D7TZRcjs.shapeFromAnnotation; exports.shapeGeometryBounds = _chunkQE7D7TZRcjs.shapeGeometryBounds; exports.shapeLayers = _chunkQE7D7TZRcjs.shapeLayers; exports.shapeOutline = _chunkQE7D7TZRcjs.shapeOutline; exports.shapeRenderClip = _chunkQE7D7TZRcjs.shapeRenderClip; exports.shiftCoverage = _chunkQYLWG22Ncjs.shiftCoverage; exports.simplifyPixelPath = simplifyPixelPath; exports.skinToneRange = skinToneRange; exports.slicSuperpixels = _chunkL52VMQZScjs.slicSuperpixels; exports.smartFilterRows = smartFilterRows; exports.smartObjectLayers = _chunkQE7D7TZRcjs.smartObjectLayers; exports.smoothCoverage = _chunkQYLWG22Ncjs.smoothCoverage; exports.smoothPoints = _chunkPQ3H2AANcjs.smoothPoints; exports.smoothnessWeights = _chunkL52VMQZScjs.smoothnessWeights; exports.smudgeEffect = _chunkYF3YZZ6Gcjs.smudgeEffect; exports.snapPolygonToEdges = snapPolygonToEdges; exports.snapTo45 = snapTo45; exports.snapToEdge = snapToEdge; exports.softMaskToSelection = _chunkL52VMQZScjs.softMaskToSelection; exports.solidPaint = _chunkPQ3H2AANcjs.solidPaint; exports.solidSurface = _chunk474IQG74cjs.solidSurface; exports.solveMembrane = _chunkMQDIP4CFcjs.solveMembrane; exports.spliceRuns = _chunkQAUIZPYIcjs.spliceRuns; exports.splitOverlayAnnotations = splitOverlayAnnotations; exports.sponge = _chunkYF3YZZ6Gcjs.sponge; exports.spongeEffect = _chunkYF3YZZ6Gcjs.spongeEffect; exports.spotHealPixels = _chunkYF3YZZ6Gcjs.spotHealPixels; exports.spotHealWindow = _chunkYF3YZZ6Gcjs.spotHealWindow; exports.srgb8ToLab = srgb8ToLab; exports.srgbByteToLinear = _chunkKWNMBMKGcjs.srgbByteToLinear; exports.srgbDecode = _chunkOLNIPTB3cjs.srgbDecode; exports.srgbEncode = _chunkOLNIPTB3cjs.srgbEncode; exports.srgbToLinear = _chunkQE7D7TZRcjs.srgbToLinear; exports.standardBlendMode = _chunkOLNIPTB3cjs.standardBlendMode; exports.startMarchingAnts = startMarchingAnts; exports.startSelectionWorker = _chunkL52VMQZScjs.startSelectionWorker; exports.stepSlotTs = _chunkKWNMBMKGcjs.stepSlotTs; exports.strokeGrainCatch = _chunkPQ3H2AANcjs.strokeGrainCatch; exports.styleAt = _chunkQAUIZPYIcjs.styleAt; exports.subpathsToSvgPath = subpathsToSvgPath; exports.sumHistograms = sumHistograms; exports.superpixelSaliency = _chunkL52VMQZScjs.superpixelSaliency; exports.surfaceBytes = _chunk474IQG74cjs.surfaceBytes; exports.surfaceDepth = _chunkOLNIPTB3cjs.surfaceDepth; exports.surfaceFromDeepPixels = _chunkOLNIPTB3cjs.surfaceFromDeepPixels; exports.surfaceFromPixels = _chunk474IQG74cjs.surfaceFromPixels; exports.surfacesEqual = _chunk474IQG74cjs.surfacesEqual; exports.tempTintToXy = _chunkQE7D7TZRcjs.tempTintToXy; exports.temperatureToKelvin = _chunkQE7D7TZRcjs.temperatureToKelvin; exports.textIndexAt = _chunkQAUIZPYIcjs.textIndexAt; exports.textMatrix = _chunkQE7D7TZRcjs.textMatrix; exports.textOrientation = _chunkQE7D7TZRcjs.textOrientation; exports.textOutlines = _chunkQE7D7TZRcjs.textOutlines; exports.textRange = _chunkQE7D7TZRcjs.textRange; exports.tileCoord = _chunk474IQG74cjs.tileCoord; exports.tileKey = _chunk474IQG74cjs.tileKey; exports.tileRect = _chunk474IQG74cjs.tileRect; exports.tileSamples = _chunkOLNIPTB3cjs.tileSamples; exports.tileSamples16 = _chunkOLNIPTB3cjs.tileSamples16; exports.tileSamples32 = _chunkOLNIPTB3cjs.tileSamples32; exports.tilesInRect = _chunk474IQG74cjs.tilesInRect; exports.tipFalloff = _chunkPQ3H2AANcjs.tipFalloff; exports.tipReach = _chunkPQ3H2AANcjs.tipReach; exports.tipShape = _chunkPQ3H2AANcjs.tipShape; exports.to16From32 = _chunkOLNIPTB3cjs.to16From32; exports.to16From8 = _chunkOLNIPTB3cjs.to16From8; exports.to32From16 = _chunkOLNIPTB3cjs.to32From16; exports.to32From8 = _chunkOLNIPTB3cjs.to32From8; exports.to8From16 = _chunkOLNIPTB3cjs.to8From16; exports.to8From32 = _chunkOLNIPTB3cjs.to8From32; exports.toHex = toHex; exports.toTextSpace = _chunkQE7D7TZRcjs.toTextSpace; exports.toneCurve = _chunkQE7D7TZRcjs.toneCurve; exports.toneLuts = _chunkQE7D7TZRcjs.toneLuts; exports.toneOf = _chunkYF3YZZ6Gcjs.toneOf; exports.toneRange = toneRange; exports.transformHomography = _chunkQE7D7TZRcjs.transformHomography; exports.transformMap = _chunkQE7D7TZRcjs.transformMap; exports.transformShapeComponents = _chunkQE7D7TZRcjs.transformShapeComponents; exports.transformSurface = _chunkUOGKSVRQcjs.transformSurface; exports.transformTypeLayer = _chunkQE7D7TZRcjs.transformTypeLayer; exports.transformVectorMask = _chunkQE7D7TZRcjs.transformVectorMask; exports.transformedBounds = _chunkUOGKSVRQcjs.transformedBounds; exports.transformedBox = _chunkQE7D7TZRcjs.transformedBox; exports.transformedPoint = _chunkQE7D7TZRcjs.transformedPoint; exports.translateLayer = _chunkQE7D7TZRcjs.translateLayer; exports.translateSurface = _chunk474IQG74cjs.translateSurface; exports.typeAsPixelLayer = _chunkQE7D7TZRcjs.typeAsPixelLayer; exports.typeFrame = _chunkQE7D7TZRcjs.typeFrame; exports.typeFromAnnotation = _chunkQE7D7TZRcjs.typeFromAnnotation; exports.typeLayerAt = typeLayerAt; exports.typeLayerName = _chunkQE7D7TZRcjs.typeLayerName; exports.ungroupLayer = _chunkQE7D7TZRcjs.ungroupLayer; exports.uniformTile = _chunk474IQG74cjs.uniformTile; exports.unionRect = _chunkQE7D7TZRcjs.unionRect; exports.unprojectCanvasPoint = _chunkQE7D7TZRcjs.unprojectCanvasPoint; exports.updateLayerEffect = _chunkQE7D7TZRcjs.updateLayerEffect; exports.updateLayerFilter = _chunkQE7D7TZRcjs.updateLayerFilter; exports.updateLayerMaskProps = _chunkQE7D7TZRcjs.updateLayerMaskProps; exports.updatePaintGradientStop = _chunkPQ3H2AANcjs.updatePaintGradientStop; exports.updateShapeLayer = _chunkQE7D7TZRcjs.updateShapeLayer; exports.updateSmartFilter = _chunkQE7D7TZRcjs.updateSmartFilter; exports.updateTypeLayer = _chunkQE7D7TZRcjs.updateTypeLayer; exports.upscaleRegion = _chunkL52VMQZScjs.upscaleRegion; exports.userErrorMessage = _chunkQE7D7TZRcjs.userErrorMessage; exports.uvToXy = _chunkQE7D7TZRcjs.uvToXy; exports.validateEffectGradient = _chunkUOGKSVRQcjs.validateEffectGradient; exports.validateLayerEffect = _chunkUOGKSVRQcjs.validateLayerEffect; exports.validateLayerEffects = _chunkUOGKSVRQcjs.validateLayerEffects; exports.vectorMaskBounds = _chunkQE7D7TZRcjs.vectorMaskBounds; exports.vectorMaskCoverage = _chunkQE7D7TZRcjs.vectorMaskCoverage; exports.vectorMaskThumbnail = _chunkQE7D7TZRcjs.vectorMaskThumbnail; exports.vectorMaskThumbnailClick = vectorMaskThumbnailClick; exports.versionedDescriptorBytes = _chunkQE7D7TZRcjs.versionedDescriptorBytes; exports.vibranceLinear = _chunkQE7D7TZRcjs.vibranceLinear; exports.vibrancePixel = _chunkQE7D7TZRcjs.vibrancePixel; exports.walkDabs = _chunkPQ3H2AANcjs.walkDabs; exports.warpMeshEditPoints = _chunkQAUIZPYIcjs.warpMeshEditPoints; exports.warpMeshGridCurves = _chunkQAUIZPYIcjs.warpMeshGridCurves; exports.warpMeshParamAt = _chunkQAUIZPYIcjs.warpMeshParamAt; exports.warpPresetMesh = _chunkQAUIZPYIcjs.warpPresetMesh; exports.warpSurface = _chunkUOGKSVRQcjs.warpSurface; exports.watchCanvasViewport = watchCanvasViewport; exports.wbMatrix = _chunkQE7D7TZRcjs.wbMatrix; exports.wetGpuSupport = _chunkKWNMBMKGcjs.wetGpuSupport; exports.wetSimdSupported = _chunkKWNMBMKGcjs.wetSimdSupported; exports.wetSupport = _chunkKWNMBMKGcjs.wetSupport; exports.whiteBalanceFromSample = _chunkQE7D7TZRcjs.whiteBalanceFromSample; exports.whiteBalanceMatrix = _chunkQE7D7TZRcjs.whiteBalanceMatrix; exports.withBackgroundOpacity = withBackgroundOpacity; exports.withFilterMaskSurface = _chunkQE7D7TZRcjs.withFilterMaskSurface; exports.withImagePlayback = withImagePlayback; exports.withNewIds = _chunkQE7D7TZRcjs.withNewIds; exports.workImage = _chunkL52VMQZScjs.workImage; exports.workLuma = _chunkL52VMQZScjs.workLuma; exports.workPlanes = _chunkL52VMQZScjs.workPlanes; exports.writeAdjustmentBlock = _chunkQE7D7TZRcjs.writeAdjustmentBlock; exports.writeDeepRegion = _chunkOLNIPTB3cjs.writeDeepRegion; exports.writeLfx2 = _chunkQE7D7TZRcjs.writeLfx2; exports.writePatternBlock = _chunkQE7D7TZRcjs.writePatternBlock; exports.writePsd = _chunkQE7D7TZRcjs.writePsd; exports.writeRegion = _chunk474IQG74cjs.writeRegion; exports.xyToTempTint = _chunkQE7D7TZRcjs.xyToTempTint; exports.xyToUv = _chunkQE7D7TZRcjs.xyToUv;
|