@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.
@@ -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 _chunkX4LUGTQXcjs = require('../chunk-X4LUGTQX.cjs');
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
- var _chunk3EHPLDFQcjs = require('../chunk-3EHPLDFQ.cjs');
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, _chunkX4LUGTQXcjs.polygonSelection.call(void 0, width, height, ring), "add");
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 = _chunk3EHPLDFQcjs.rgbaViewOfGrey.call(void 0, this.mixerPixels());
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 = _chunk3EHPLDFQcjs.applyRetouchToTile.call(void 0, this.stroke.coverage, _nullishCoalesce(read, () => ( new Float32Array(_chunk474IQG74cjs.TILE * _chunk474IQG74cjs.TILE * 4))), 4, tx, ty, paint, r.apply, options);
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 _chunk3EHPLDFQcjs.applyRetouchToTile.call(void 0, this.stroke.coverage, src, this.base.channels, tx, ty, _nullishCoalesce(paint, () => ( r.paint())), r.apply, options);
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" ? _chunk3EHPLDFQcjs.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);
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, _chunkX4LUGTQXcjs.SelectionWorkerClient)(options.selectionWorker);
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: { ..._chunk3EHPLDFQcjs.DEFAULT_RETOUCH }, cloneSource: null, cloneTransform: { ..._chunk3EHPLDFQcjs.IDENTITY_CLONE_TRANSFORM } },
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, _chunkX4LUGTQXcjs.SelectionWorkerClient)(factory) : null;
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 = _chunkX4LUGTQXcjs.runSelectionJob.call(void 0, job, pixels, options.onProgress);
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 ? _chunk3EHPLDFQcjs.normalizeRetouch.call(void 0, options.retouch, cur.retouch) : cur.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 } : { ..._chunk3EHPLDFQcjs.IDENTITY_CLONE_TRANSFORM };
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 = _chunk3EHPLDFQcjs.normalizeRetouch.call(void 0, _nullishCoalesce(init.retouch, () => ( {})), this.state.paint.retouch);
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, _chunk3EHPLDFQcjs.RetouchDabStroke)(brush, pixels, _chunk3EHPLDFQcjs.smudgeEffect.call(void 0, brush, settings.strength)) };
7660
- if (tool === "sponge") return { kind: "dabs", create: (pixels) => new (0, _chunk3EHPLDFQcjs.RetouchDabStroke)(brush, pixels, _chunk3EHPLDFQcjs.spongeEffect.call(void 0, brush, settings.spongeMode === "saturate", settings.vibrance)) };
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: _chunk3EHPLDFQcjs.toneOf.call(void 0, tool, settings) };
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, _chunk3EHPLDFQcjs.TilePixelSource)(
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
- _chunk3EHPLDFQcjs.retouchFilter.call(void 0, d, r.width, r.height, n, tool, 2, 1.2);
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, _chunk3EHPLDFQcjs.TilePixelSource)((tx, ty) => workTileOf(surface.tiles.get(_chunk474IQG74cjs.tileKey.call(void 0, tx, ty))), 4, offset2) : this.surfaceSource(surface, offset2);
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, _chunk3EHPLDFQcjs.TilePixelSource)((tx, ty) => workTileOf(target.surface.tiles.get(_chunk474IQG74cjs.tileKey.call(void 0, tx, ty))), 4, target.offset) : this.surfaceSource(target.surface, target.offset);
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 = _chunk3EHPLDFQcjs.spotHealWindow.call(void 0, cov.bounds, { width, height });
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 = _chunk3EHPLDFQcjs.readSourceRegion.call(void 0, source, win);
7736
+ const img = _chunkYF3YZZ6Gcjs.readSourceRegion.call(void 0, source, win);
7735
7737
  const hole = covered(cov, win);
7736
- const healed = _chunk3EHPLDFQcjs.spotHealPixels.call(void 0, win.width, win.height, img, hole, brush.size, settings.spotType, (off) => {
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, _chunk3EHPLDFQcjs.RegionPixelSource)(win, healed), dx: 0, dy: 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 = _chunk3EHPLDFQcjs.isIdentityCloneTransform.call(void 0, xf) ? null : new (0, _chunk3EHPLDFQcjs.TransformedPixelSource)(source, (x, y) => _chunk3EHPLDFQcjs.cloneSamplePoint.call(void 0, xf, cs, { x: cs.x - offset.x, y: cs.y - offset.y }, x, y));
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 ? _chunk3EHPLDFQcjs.readSourceRegion.call(void 0, transformed, g) : _chunk3EHPLDFQcjs.readSourceRegion.call(void 0, source, g, offset.x, offset.y);
7766
- const dst = _chunk3EHPLDFQcjs.readSourceRegion.call(void 0, source, g);
7767
- return { kind: "source", source: new (0, _chunk3EHPLDFQcjs.RegionPixelSource)(g, _chunk3EHPLDFQcjs.healPixels.call(void 0, g.width, g.height, src, dst, covered(cov, g))), dx: 0, dy: 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, _chunk3EHPLDFQcjs.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);
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, _chunk3EHPLDFQcjs.TilePixelSource)((tx, ty) => {
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, _chunk3EHPLDFQcjs.TilePixelSource)((tx, ty) => compositor.tile(layers, tx, ty, sources), 4);
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. 8-bit documents only for now.
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
- const margin = Math.max(32, Math.round(_nullishCoalesce(options.sampleRadius, () => ( Math.max(b.width, b.height)))));
7918
- const x0 = Math.max(0, b.x - margin);
7919
- const y0 = Math.max(0, b.y - margin);
7920
- const 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 };
7921
- 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 lower sampleRadius.");
7922
- const layerRect = { x: win.x - target.offset.x, y: win.y - target.offset.y, width: win.width, height: win.height };
7923
- const before = _chunk474IQG74cjs.readRegion.call(void 0, target.surface, layerRect);
7924
- const img = new Float32Array(before.length);
7925
- for (let i = 0; i < before.length; i++) img[i] = before[i];
7926
- const coverage = new Float32Array(win.width * win.height);
7927
- const hole = new Uint8Array(win.width * win.height);
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 = sel.data[(win.y + y) * sel.width + win.x + x] / 255;
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
- const filled = _chunk3EHPLDFQcjs.contentAwareFill.call(void 0, win.width, win.height, 4, img, hole, { seed: _nullishCoalesce(options.seed, () => ( 0)) });
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', _305 => _305.state, 'access', _306 => _306.selection, 'optionalAccess', _307 => _307.bounds]) ? this.state.selection : null;
7976
- const rect = _nullishCoalesce(_optionalChain([sel, 'optionalAccess', _308 => _308.bounds]), () => ( { x: 0, y: 0, width, height }));
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', _309 => _309.state, 'access', _310 => _310.selection, 'optionalAccess', _311 => _311.bounds]) ? this.state.selection : null;
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', _312 => _312.bounds]), () => ( { x: 0, y: 0, width, height }));
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', _313 => _313.state, 'access', _314 => _314.selection, 'optionalAccess', _315 => _315.bounds]) ? this.state.selection : null)));
8043
- const region = _nullishCoalesce(_optionalChain([sel, 'optionalAccess', _316 => _316.bounds]), () => ( { x: 0, y: 0, width, height }));
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', _317 => _317.parent, 'optionalAccess', _318 => _318.id]), () => ( null)), loc.index + 1);
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', _319 => _319.parent, 'optionalAccess', _320 => _320.id]), () => ( null)), loc.index);
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', _321 => _321.parent, 'optionalAccess', _322 => _322.id]), () => ( null)), loc.index + 1);
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', _323 => _323.state, 'access', _324 => _324.selection, 'optionalAccess', _325 => _325.bounds]) ? _chunkQE7D7TZRcjs.layerMaskFromSelection.call(void 0, this.state.selection) : void 0)))
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', _326 => _326.parent, 'optionalAccess', _327 => _327.id]), () => ( null)), to > from ? loc.index + 1 : loc.index);
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', _328 => _328.state, 'access', _329 => _329.selection, 'optionalAccess', _330 => _330.bounds]));
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', _331 => _331.bounds])) this.lastSelection = prev;
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(_chunkX4LUGTQXcjs.rectSelection.call(void 0, width, height, rect, { antiAlias: false }), options);
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', _332 => _332.bounds])) return false;
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', _333 => _333.bounds])) return false;
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(_chunkX4LUGTQXcjs.rectSelection.call(void 0, width, height, rect, options), options);
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(_chunkX4LUGTQXcjs.ellipseSelection.call(void 0, width, height, rect, options), options);
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(_chunkX4LUGTQXcjs.polygonSelection.call(void 0, width, height, points, options), options);
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', _334 => _334.bounds]) ? _chunkX4LUGTQXcjs.serializeMask.call(void 0, sel) : null
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', _335 => _335.signal, 'optionalAccess', _336 => _336.throwIfAborted, 'call', _337 => _337()]);
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', _338 => _338.bounds])) continue;
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 = _chunkX4LUGTQXcjs.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 });
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', _339 => _339.bounds])) return { selection: _nullishCoalesce(this.state.selection, () => ( null)), method: "model", note: "The segmentation model found no sky." };
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', _340 => _340.getImageData, 'optionalCall', _341 => _341(0, 0, width, height)]);
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', _342 => _342.bounds])) return false;
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', _343 => _343.bounds])) return false;
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(_chunkX4LUGTQXcjs.refineSelection.call(void 0, pixels, sel, params));
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', _344 => _344.state, 'access', _345 => _345.selection, 'optionalAccess', _346 => _346.bounds]) && !edits.length) throw new Error("Nothing is selected; select first, or pass edits that paint a selection.");
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 = _chunkX4LUGTQXcjs.applyRefineEdits.call(void 0, pixels, _nullishCoalesce(this.state.selection, () => ( null)), edits, width, height);
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', _347 => _347.bounds])) throw new Error("The edits leave nothing selected; paint with mode add first.");
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', _348 => _348.bounds])) throw new Error("The segmentation model found no object in the selection; use refineMode color.");
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 = _chunkX4LUGTQXcjs.refineSelection.call(void 0, pixels, sel, params, edited.refineBrush);
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 = _chunkX4LUGTQXcjs.decontaminateColors.call(void 0, original, cov, box.width, box.height, amount, radius);
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', _349 => _349.bounds])) throw new (0, _chunkQE7D7TZRcjs.LayerOperationError)("Nothing is selected; select first, or export a channel or a layer mask.");
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', _350 => _350.getImageData, 'optionalCall', _351 => _351(0, 0, w, h)]);
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', _352 => _352.signal, 'optionalAccess', _353 => _353.throwIfAborted, 'call', _354 => _354()]);
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', _355 => _355.bounds]), () => ( null)), ...r.score !== void 0 ? { score: r.score } : {} };
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', _356 => _356[i], 'optionalAccess', _357 => _357.bounds]);
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', _358 => _358.signal, 'optionalAccess', _359 => _359.throwIfAborted, 'call', _360 => _360()]);
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', _361 => _361.mask]) && !layer.mask.source ? view : null;
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', _362 => _362.layerId]) !== id || cur.mode !== mode) {
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', _363 => _363.state, 'access', _364 => _364.channels, 'optionalAccess', _365 => _365.find, 'call', _366 => _366((c) => c.id === id)]), () => ( null));
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', _367 => _367.bounds])) throw new (0, _chunkQE7D7TZRcjs.LayerOperationError)("Nothing is selected; select first, then save the selection to a channel.");
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', _368 => _368.name, 'optionalAccess', _369 => _369.trim, 'call', _370 => _370()]) ? { name: options.name.trim() } : {} };
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', _371 => _371.trim, 'call', _372 => _372()]) || `Alpha ${channels.length + 1}`,
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', _373 => _373.trim, 'call', _374 => _374()]) || `${channel.name} copy` };
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', _375 => _375.bounds])) return _chunk474IQG74cjs.emptySurface.call(void 0, 1, 0);
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', _376 => _376.bounds]) || !this.getAdjustmentLayer(layerId)) return false;
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', _377 => _377.mask]) || layer.mask.source) return null;
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', _378 => _378.mask, 'optionalAccess', _379 => _379.source])) delete next.mask;
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', _380 => _380.mask, 'optionalAccess', _381 => _381.source])) {
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', _382 => _382.id]) === id);
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', _383 => _383.parent, 'optionalAccess', _384 => _384.id]), () => ( null)), loc.index + 1) : _chunkUOGKSVRQcjs.insertLayer.call(void 0, this.state.layers, layer, null);
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] = _chunk3EHPLDFQcjs.cloneSamplePoint.call(void 0, s.paint.cloneTransform, cs, { x: cs.x - cs.offset.x, y: cs.y - cs.offset.y }, cursor.x, cursor.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', _385 => _385.cloneSourceMarker]) !== void 0 ? options.cloneSourceMarker : _optionalChain([options, 'optionalAccess', _386 => _386.brushCursor]) ? this.cloneSourceMarker(options.brushCursor) : null,
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', _387 => _387.layerIds])) {
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', _388 => _388.state, 'access', _389 => _389.selection, 'optionalAccess', _390 => _390.bounds]) ? this.state.selection : null;
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', _391 => _391.getTextShaper, 'call', _392 => _392(), 'optionalAccess', _393 => _393.families, 'optionalCall', _394 => _394()]), () => ( ["sans-serif", "serif", "monospace"]));
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', _395 => _395.x]), () => ( 0)));
9746
- const y0 = Math.max(0, _nullishCoalesce(_optionalChain([b, 'optionalAccess', _396 => _396.y]), () => ( 0)));
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', _397 => _397.runs, 'access', _398 => _398.find, 'call', _399 => _399((r) => r.length > 0), 'optionalAccess', _400 => _400.style]), () => ( _chunkQAUIZPYIcjs.DEFAULT_TEXT_STYLE));
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', _401 => _401.state, 'access', _402 => _402.patterns, 'optionalAccess', _403 => _403.find, 'call', _404 => _404((p) => p.id === id)]), () => ( null)) };
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', _405 => _405.components, 'optionalAccess', _406 => _406.length]) ? init.components : [init];
10000
- if (_optionalChain([init, 'access', _407 => _407.components, 'optionalAccess', _408 => _408.length]) && (init.shape !== void 0 || init.subpaths !== void 0)) throw new (0, _chunkQE7D7TZRcjs.LayerOperationError)("Give components, or shape / subpaths, not both.");
10001
- const components = specs.map((c, i) => this.componentFrom(c, _optionalChain([init, 'access', _409 => _409.components, 'optionalAccess', _410 => _410.length]) ? `components[${i}].` : ""));
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', _411 => _411.filters, 'optionalAccess', _412 => _412.length])) throw new (0, _chunkQE7D7TZRcjs.LayerOperationError)(`Layer "${layer.name || id}" is already pixels with no filters to bake.`);
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', _413 => _413.annotation, 'optionalAccess', _414 => _414.id])) this.state.selectedAnnotationId = null;
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', _415 => _415.name]), () => ( p.description)), builtin: doc ? _nullishCoalesce(doc.builtin, () => ( null)) : "srgb", colorSpace: p.colorSpace, srgb: isSrgb(doc), mode: _nullishCoalesce(_optionalChain([m, 'optionalAccess', _416 => _416.mode]), () => ( "rgb")) };
10146
- if (_optionalChain([m, 'optionalAccess', _417 => _417.mode]) === "cmyk") out.cmykProfile = { name: m.profile.name, builtin: _nullishCoalesce(m.profile.builtin, () => ( null)), intent: m.intent };
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', _418 => _418.effects, 'optionalAccess', _419 => _419.items, 'access', _420 => _420.length])) next2 = { ...next2, effects: convertColorFields(l.effects, hex) };
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', _421 => _421.sourceMode, 'optionalAccess', _422 => _422.mode]) === "cmyk") s.colorMode = { mode: "cmyk", profile: result.sourceMode.profile, intent: "relative" };
10421
- else if (_optionalChain([result, 'access', _423 => _423.sourceMode, 'optionalAccess', _424 => _424.mode]) === "lab") s.colorMode = { mode: "lab" };
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', _425 => _425.source])) return mask;
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', _426 => _426.blend]) === "pigment") add2("The Pigment blend mode has no PSD equivalent and was written as Normal", layer.name);
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', _427 => _427.missingFonts, 'optionalAccess', _428 => _428.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);
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', _429 => _429.filters, 'optionalAccess', _430 => _430.filter, 'call', _431 => _431(_chunkQE7D7TZRcjs.isActiveFilter)]), () => ( []));
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', _432 => _432.filters, 'optionalAccess', _433 => _433.some, 'call', _434 => _434((f) => !f.enabled)])) add2("Disabled layer filters were left out", layer.name);
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', _435 => _435.state, 'access', _436 => _436.patterns, 'optionalAccess', _437 => _437.find, 'call', _438 => _438((p) => p.id === pid)]), () => ( null)) };
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', _439 => _439.components]), () => ( _chunkQE7D7TZRcjs.transformShapeComponents.call(void 0, l.components, (p) => ({ x: p.x * sx, y: p.y * sy }), m)));
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', _440 => _440.contentsStack, 'access', _441 => _441[0], 'optionalAccess', _442 => _442.saved]);
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', _443 => _443.state, 'access', _444 => _444.selection, 'optionalAccess', _445 => _445.bounds])) out.selection = _chunkQYLWG22Ncjs.serializeSelection.call(void 0, this.state.selection);
10678
- if (_optionalChain([this, 'access', _446 => _446.state, 'access', _447 => _447.channels, 'optionalAccess', _448 => _448.length])) out.channels = serializeChannels(this.state.channels);
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', _449 => _449.state, 'access', _450 => _450.patterns, 'optionalAccess', _451 => _451.length]) && this.bitDepth === 8 && !this.state.colorProfile && !this.state.colorMode) {
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', _452 => _452.adjustments, 'access', _453 => _453.layers, 'optionalAccess', _454 => _454.length]) ? 2 : 1,
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', _455 => _455.state, 'access', _456 => _456.patterns, 'optionalAccess', _457 => _457.length])) out.patterns = _chunkQE7D7TZRcjs.serializePatterns.call(void 0, this.state.patterns);
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', _458 => _458.layers, 'optionalAccess', _459 => _459.length])) out.layers = JSON.parse(JSON.stringify(out.layers));
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', _460 => _460.filters, 'optionalAccess', _461 => _461.find, 'call', _462 => _462((f) => f.kind === "blur")]);
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', _463 => _463.id]), () => ( (layer.source === "document" ? _chunkQE7D7TZRcjs.BLUR_FILTER_ID : _chunkQE7D7TZRcjs.newLayerId.call(void 0, "flt")))),
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', _464 => _464.smartFilters, 'optionalAccess', _465 => _465.mask])) _chunk474IQG74cjs.collectTiles.call(void 0, l.smartFilters.mask.surface, into);
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', _466 => _466.filters, 'optionalAccess', _467 => _467.length])) {
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', _468 => _468.bounds]) ? mask : null;
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', _469 => _469.adjustments, 'access', _470 => _470.layers, 'optionalAccess', _471 => _471.length])) state.version = 2;
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', _472 => _472[kind], 'optionalAccess', _473 => _473.find, 'call', _474 => _474((c) => c.id === id)]);
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', _475 => _475.bounds]), () => ( null)),
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', _476 => _476.x]), NaN), y: num2(_optionalChain([p, 'optionalAccess', _477 => _477.y]), NaN) })) : [];
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', _478 => _478.x]), NaN), y: num2(_optionalChain([p, 'optionalAccess', _479 => _479.y]), NaN) })) }) : [];
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', _480 => _480.x]), NaN), y: num2(_optionalChain([p, 'optionalAccess', _481 => _481.y]), NaN) })) : [];
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', _482 => _482.x]), NaN), y: num2(_optionalChain([p, 'optionalAccess', _483 => _483.y]), NaN) })) : []) : [];
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', _484 => _484.signal])
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', _485 => _485.signal])
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', _486 => _486.signal])
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', _487 => _487.signal])
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', _488 => _488.color]) !== "string" || !/^#?[0-9a-f]{6}$/i.test(s.color.trim())) throw new Error(`samples[${i}].color must be #rrggbb.`);
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
- return controller.contentAwareFill({
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', _489 => _489.perform]);
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', _490 => _490.signal]),
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', _491 => _491.bounds]) && selection.width === state.imageDimensions.width && selection.height === state.imageDimensions.height) {
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', _492 => _492.getState, 'call', _493 => _493(), 'access', _494 => _494.selection, 'optionalAccess', _495 => _495.bounds]), () => ( null)) }),
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', _496 => _496.live, 'optionalAccess', _497 => _497.kind]), () => ( "path")) })),
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', _498 => _498.smartFilters, 'optionalAccess', _499 => _499.filters]), () => ( []))).map((f) => ({ id: f.id, kind: f.kind, enabled: f.enabled }));
13543
- out.filterMask = maskSummary(_optionalChain([layer, 'access', _500 => _500.smartFilters, 'optionalAccess', _501 => _501.mask]));
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', _502 => _502.parent, 'optionalAccess', _503 => _503.id]), () => ( null)),
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', _504 => _504.mode]), () => ( "off")), layerId: _nullishCoalesce(_optionalChain([shown, 'optionalAccess', _505 => _505.layerId]), () => ( null)) };
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 = _chunkX4LUGTQXcjs.normalizeRect.call(void 0, {
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 _chunkX4LUGTQXcjs.ellipsePoints.call(void 0, rect);
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 = _chunkX4LUGTQXcjs.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 });
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 = _chunkX4LUGTQXcjs.normalizeRect.call(void 0, {
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', _506 => _506(err instanceof Error ? err.message : String(err))]);
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', _507 => _507.mask]) || layer.mask.source) return false;
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', _508 => _508.layerId]) === layer.id && view.mode === "overlay" ? "off" : "overlay", layer.id);
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', _509 => _509.locks, 'optionalAccess', _510 => _510.all]) || _optionalChain([layer, 'access', _511 => _511.locks, 'optionalAccess', _512 => _512.position])) throw new Error(`Layer "${layer.name}" has its position locked.`);
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', _513 => _513.stroke, 'optionalAccess', _514 => _514.cancel, 'call', _515 => _515()]);
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: [..._chunk3EHPLDFQcjs.RETOUCH_SAMPLES],
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: [..._chunk3EHPLDFQcjs.SPOT_HEAL_TYPES], description: "proximity-match (default the current option), content-aware or smooth." },
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: [..._chunk3EHPLDFQcjs.TONE_RANGES], description: `Which tones to ${verb} most: shadows, midtones (default the current option, midtones) or highlights.` },
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: [..._chunk3EHPLDFQcjs.SPOT_HEAL_TYPES], description: "Spot heal: proximity-match (default), content-aware or smooth." },
15676
- range: { type: "string", enum: [..._chunk3EHPLDFQcjs.TONE_RANGES], description: "Dodge / burn: shadows, midtones (default) or highlights." },
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', _516 => _516.parent, 'optionalAccess', _517 => _517.id]), () => ( null)), index: loc.index } : null;
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', _518 => _518.parent, 'optionalAccess', _519 => _519.id]), () => ( null)), index: loc.index } : null;
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', _520 => _520.bounds]), () => ( null)), area: Math.round(sel ? _chunkQYLWG22Ncjs.selectionArea.call(void 0, sel) : 0) };
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', _521 => _521.components, 'optionalAccess', _522 => _522.length]) || spec.shape !== void 0 || spec.subpaths !== void 0;
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', _523 => _523.parent, 'optionalAccess', _524 => _524.id]), () => ( null)), index: loc.index } : null;
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', _525 => _525.getTextShaper, 'call', _526 => _526(), 'optionalAccess', _527 => _527.id]), () => ( null)) })
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', _528 => _528.bounds]), () => ( null)), area: Math.round(sel ? _chunkQYLWG22Ncjs.selectionArea.call(void 0, sel) : 0) };
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', _529 => _529.getLayer, 'call', _530 => _530(parentId), 'optionalAccess', _531 => _531.type]) !== "group") throw new Error(`Layer "${parentId}" is not a group.`);
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: { ..._chunkX4LUGTQXcjs.DEFAULT_REFINE_EDGE_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', _532 => _532.base, 'optionalAccess', _533 => _533.bounds]) ? s === 1 ? this.base : _chunkQYLWG22Ncjs.resizeSelection.call(void 0, this.base, w, h) : null;
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 } = _chunkX4LUGTQXcjs.applyRefineEdits.call(void 0, px2, this.baseMask, edits, px2.width, px2.height);
17729
- this.previewMask = _optionalChain([selection, 'optionalAccess', _534 => _534.bounds]) ? _chunkX4LUGTQXcjs.refineSelection.call(void 0, px2, selection, scaleParams(this.settingsValue.params, scale), refineBrush) : null;
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 ? _chunkX4LUGTQXcjs.serializeMask.call(void 0, this.baseMask) : null, edits, params: scaleParams(this.settingsValue.params, scale) },
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', _535 => _535.layerId]) === layer.id && view.mode === mode ? "off" : mode, layer.id);
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', _536 => _536.missingFonts, 'optionalAccess', _537 => _537.length])) {
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', _538 => _538.type]) === "pixel";
18205
- const hasOwnPixels = _optionalChain([active, 'optionalAccess', _539 => _539.type]) === "pixel" || _optionalChain([active, 'optionalAccess', _540 => _540.type]) === "shape" || _optionalChain([active, 'optionalAccess', _541 => _541.type]) === "type" || _optionalChain([active, 'optionalAccess', _542 => _542.type]) === "smart";
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', _543 => _543.type]) === "group" },
18213
- { action: "merge-down", label: "Merge Down", enabled: Boolean(_optionalChain([active, 'optionalAccess', _544 => _544.visible]) && _optionalChain([below, 'optionalAccess', _545 => _545.type]) === "pixel") },
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', _546 => _546.mask])) },
18224
- { action: "delete-mask", label: "Delete Layer Mask", enabled: Boolean(_optionalChain([active, 'optionalAccess', _547 => _547.mask])) },
18225
- { action: "toggle-mask", label: _optionalChain([active, 'optionalAccess', _548 => _548.mask, 'optionalAccess', _549 => _549.enabled]) === false ? "Enable Layer Mask" : "Disable Layer Mask", enabled: Boolean(_optionalChain([active, 'optionalAccess', _550 => _550.mask])) },
18226
- { action: "toggle-mask-link", label: _optionalChain([active, 'optionalAccess', _551 => _551.mask, 'optionalAccess', _552 => _552.linked]) === false ? "Link Layer Mask" : "Unlink Layer Mask", enabled: Boolean(_optionalChain([active, 'optionalAccess', _553 => _553.mask]) && !active.mask.source) },
18227
- { action: "add-vector-mask", label: "Add Vector Mask (Reveal All)", enabled: Boolean(active && active.type !== "shape" && !_optionalChain([active, 'access', _554 => _554.mask, 'optionalAccess', _555 => _555.source])) },
18228
- { action: "add-vector-mask-hide", label: "Add Vector Mask (Hide All)", enabled: Boolean(active && active.type !== "shape" && !_optionalChain([active, 'access', _556 => _556.mask, 'optionalAccess', _557 => _557.source])) },
18229
- { action: "add-vector-mask-selection", label: "Add Vector Mask from Selection", enabled: Boolean(active && active.type !== "shape" && !_optionalChain([active, 'access', _558 => _558.mask, 'optionalAccess', _559 => _559.source])) && hasSel },
18230
- { action: "delete-vector-mask", label: "Delete Vector Mask", enabled: Boolean(_optionalChain([active, 'optionalAccess', _560 => _560.vectorMask])) },
18231
- { action: "toggle-vector-mask", label: _optionalChain([active, 'optionalAccess', _561 => _561.vectorMask, 'optionalAccess', _562 => _562.enabled]) === false ? "Enable Vector Mask" : "Disable Vector Mask", enabled: Boolean(_optionalChain([active, 'optionalAccess', _563 => _563.vectorMask])) },
18232
- { action: "rasterize-vector-mask", label: "Rasterize Vector Mask", enabled: Boolean(_optionalChain([active, 'optionalAccess', _564 => _564.vectorMask])) },
18233
- { action: "rasterize", label: "Rasterize Layer", enabled: _optionalChain([active, 'optionalAccess', _565 => _565.type]) === "annotation" || _optionalChain([active, 'optionalAccess', _566 => _566.type]) === "smart" || _optionalChain([active, 'optionalAccess', _567 => _567.type]) === "shape" || _optionalChain([active, 'optionalAccess', _568 => _568.type]) === "type" || isPixel && Boolean(_optionalChain([active, 'optionalAccess', _569 => _569.type]) === "pixel" && _optionalChain([active, 'access', _570 => _570.filters, 'optionalAccess', _571 => _571.length])) },
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', _572 => _572.type]) === "smart" },
18236
- { action: "smart-via-copy", label: "New Smart Object via Copy", enabled: _optionalChain([active, 'optionalAccess', _573 => _573.type]) === "smart" },
18237
- { action: "add-filter-mask", label: "Add Smart Filter Mask", enabled: _optionalChain([active, 'optionalAccess', _574 => _574.type]) === "smart" && !_optionalChain([active, 'access', _575 => _575.smartFilters, 'optionalAccess', _576 => _576.mask]) },
18238
- { action: "toggle-clip", label: _optionalChain([active, 'optionalAccess', _577 => _577.clipped]) ? "Release Clipping Mask" : "Create Clipping Mask", enabled: Boolean(loc && loc.index > 0) }
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', _578 => _578.id]);
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', _579 => _579.mask])) controller.setLayerMaskProps(id, { enabled: active.mask.enabled === false });
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', _580 => _580.mask])) controller.setLayerMaskProps(id, { linked: active.mask.linked === false });
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', _581 => _581.vectorMask])) controller.setVectorMaskProps(id, { enabled: active.vectorMask.enabled === false });
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', _582 => _582.clipped]) });
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', _583 => _583.smartFilters, 'optionalAccess', _584 => _584.filters]), () => ( []));
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', _585 => _585.imageDimensions, 'optionalAccess', _586 => _586.width]) || 1;
18373
- const imgH = _optionalChain([state, 'access', _587 => _587.imageDimensions, 'optionalAccess', _588 => _588.height]) || 1;
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', _589 => _589.asset]);
18383
- const layerDataUrl = assetKey && assets[assetKey] || assets[l.id] || (_optionalChain([sLayer, 'optionalAccess', _590 => _590.source]) === "document" ? fallbackImageUrl : "");
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', _591 => _591.text]) || "New Text",
18438
- x: typeof _optionalChain([init, 'optionalAccess', _592 => _592.x]) === "number" ? init.x : cx - 100,
18439
- y: typeof _optionalChain([init, 'optionalAccess', _593 => _593.y]) === "number" ? init.y : cy,
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', _594 => _594.x]) === "number" ? init.x : cx - Math.round(w / 2),
18453
- y: typeof _optionalChain([init, 'optionalAccess', _595 => _595.y]) === "number" ? init.y : cy - Math.round(h / 2),
18454
- width: typeof _optionalChain([init, 'optionalAccess', _596 => _596.width]) === "number" ? init.width : w,
18455
- height: typeof _optionalChain([init, 'optionalAccess', _597 => _597.height]) === "number" ? init.height : h
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', _598 => _598.x]) === "number" ? init.x : cx - Math.round(w / 2),
18471
- y: typeof _optionalChain([init, 'optionalAccess', _599 => _599.y]) === "number" ? init.y : cy - Math.round(h / 2),
18472
- width: typeof _optionalChain([init, 'optionalAccess', _600 => _600.width]) === "number" ? init.width : w,
18473
- height: typeof _optionalChain([init, 'optionalAccess', _601 => _601.height]) === "number" ? init.height : h
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', _602 => _602.locks, 'optionalAccess', _603 => _603.all]));
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', _604 => _604.enabled]), () => ( true)),
18540
- scale: _nullishCoalesce(_optionalChain([fx, 'optionalAccess', _605 => _605.scale]), () => ( 1)),
18541
- rows: (_nullishCoalesce(_optionalChain([fx, 'optionalAccess', _606 => _606.items]), () => ( []))).map((e) => ({ id: e.id, kind: e.kind, label: _chunkUOGKSVRQcjs.layerEffectLabel.call(void 0, e.kind), enabled: e.enabled }))
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', _607 => _607.effects, 'optionalAccess', _608 => _608.items, 'access', _609 => _609.length])) return null;
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', _610 => _610.stops, 'access', _611 => _611[0], 'optionalAccess', _612 => _612.color]), () => ( "#000000")) },
18591
- { key: `${prefix}.stops.last.color`, label: "End colour", type: "color", value: _nullishCoalesce(_optionalChain([g, 'access', _613 => _613.stops, 'access', _614 => _614[g.stops.length - 1], 'optionalAccess', _615 => _615.color]), () => ( "#ffffff")) },
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', _616 => _616[0], 'optionalAccess', _617 => _617.id]), () => ( "checker")), scale: 1 };
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', _618 => _618(patterns), 'access', _619 => _619.find, 'call', _620 => _620((o) => o.value === value), 'optionalAccess', _621 => _621.label]);
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', _622 => _622(patterns), 'access', _623 => _623.find, 'call', _624 => _624((o) => o.value === value), 'optionalAccess', _625 => _625.label]);
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', _626 => _626.cmykProfile, 'optionalAccess', _627 => _627.name]), () => ( null)),
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', _628 => _628.sessionRef, 'optionalAccess', _629 => _629.isOpen]));
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', _630 => _630.sessionRef, 'optionalAccess', _631 => _631.interpolation]), () => ( "bicubic"));
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', _632 => _632.options, 'access', _633 => _633.onChange, 'optionalCall', _634 => _634()]);
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', _635 => _635.sessionRef, 'optionalAccess', _636 => _636.cancel, 'call', _637 => _637()]);
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', _638 => _638.smartFilters, 'optionalAccess', _639 => _639.filters]), () => ( []))).forEach((f, index) => {
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', _640 => _640.find, 'call', _641 => _641((t) => t.id === tool), 'optionalAccess', _642 => _642.label]), () => ( OTHER_TOOL_LABELS[tool])), () => ( tool));
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;